Chương 1: Tổng quan Trinh bày tổng quan về hệ điều hành Android, ứng dụng di động Android, các phương pháp kiểm thử xâm nhập, các công cụ hỗ trợ kiểm thử ứng dụng di động Android. Chương 2: Xây dựng qui trình kiểm thử xâm nhập trên ứng dụng di động Android Giới thiệu về các lỗ hồng phô biến thường tôn tại trên ứng dụng Android, các qui trình kiểm thử xâm nhập hiện có trên thế giới, xây dựng một qui trình kiểm thử xâm nhập mới dựa trên các qui trình sẵn có. Chương 3: Thực nghiệm kiểm thử ứng dụng android theo qui trình và công cụ đề xuất Giới thiệu công cụ kiểm thử xây dựng, thực hiện áp dụng công cụ kiểm thử, đưa ra đánh giá về công cụ mới. Kết luận Dua ra kết luận về những nghiên cứu của đồ án và phương hướng phat trién.
Dang Kiều Phong — B19DCAT137 1 Đồ án tốt nghiệp CHUONG 1: TONG QUAN VE UNG DỤNG VA KIEM THU UNG DUNG TREN HE DIEU HANH ANDROID Chương | giới thiệu tong quan về kiến trúc của hệ điều hành Android, các thành phần trong ứng dụng Android, các khái niệm liên quan đến kiểm thử xâm nhập, cùng với các công cụ hỗ trợ kiểm thử xâm nhập ứng dụng Android. Giới thiệu về hệ điều hành Android Android là một hệ điều hành dựa trên Linux mã nguồn mở dành cho các thiết bị di động (điện thoại thông minh và máy tính bảng). Nó được phát triển bởi Open Handset Alliance, do Google và các công ty khác lãnh đạo. Hệ điều hành Android dựa trên Linux, và nó có thé được lập trình bằng C/C++, nhưng phần lớn việc phát triển ứng dụng được thực hiện bằng Java (Java truy cập vào thư viện C thông qua JNI, viết tắt của Java Native Interface) [1].
Hệ điều hành Android được chia thành năm tang chính. Do là Linux Kernel (Hạt nhân linux), Libraries (Thư viện), Android Runtime (Môi trường thực thi Android), Application Framework (Khung ứng dụng), và Applications (Ứng dụng). APPLICATIONS Phone APPLICATION FRAMEWORK Telephony Manager LIBRARIES ANDROID RUNTIME LINUX KERNEL Fiash Hình 1. Kiến trúc hệ điều hành Android Linux Kernel (Hạt nhân Linux): Là tang dưới cùng và hoạt động như một tầng trừu tượng giữa phần mềm và phần cứng của thiết bị.
Hạt nhân chịu trách nhiệm quản lý các yêu cầu vào và ra từ phần mềm. Hạt nhân chứa các trình điều khiển Dang Kiều Phong — B19DCAT137 2 Đồ án tốt nghiệp dé xử lý phần cứng đầu vào. Hạt nhân cũng xử lý các chức năng hệ thống như quản lý các tiễn trình và bộ nhớ, cũng như bảo mật và mạng. Libraries (Thư viện): Bao gồm các thư viện C/C++ được cung cấp với nhiều công cụ mã nguồn mở.
Vi du như WebKit một engine trình duyệt web mã nguồn mở cung cấp các chức năng duyệt web, OpenGL cung cấp một giao diện ứng dụng đa nền tang dé tạo đồ họa máy tinh 2D và 3D, và còn có SSL (Secure Socket Layer) giúp cung cấp giao tiếp Internet an toàn. Android Runtime (Môi trường thực thi Android): Cung cấp một môi trường thực thi ứng dụng cho hệ điều hành băng cách dịch bytecode thành các chỉ thị cơ bản mà môi trường thực thi của thiết bị thực hiện. Máy ảo Dalvik đã dựa trên máy ảo Java dé phù hợp tốt hơn với hệ điều hành Android, nhưng sau đó đã được thay thế bởi Android Runtime trong các phiên bản sau của hệ điều hành. Điều này cung cấp cho các nhà phát triển các chức năng đã được xây dựng sẵn cho ứng dụng của họ.
Ví dụ, View System xây dựng giao diện người dùng và xử lý các chế độ xem và bố cục. Application (Ứng dụng): Là tầng cao nhất của kiến trúc Android và đây là nơi ứng dụng được viết và cài đặt. Các ứng dụng có thể bao gồm từ các ứng dụng được cài sẵn đến các cài đặt từ bên thứ ba [2]. Giới thiệu về ứng dụng Android Các ứng dụng Android có thể được viết bằng các ngôn ngữ Java, Kotlin hoặc C++.
Các công cụ SDK Android có thể được sử dụng để biên dịch mã nguồn và tài nguyên thành một gói ứng dụng Android, gọi là APK (Android Package). Tập tin APK là một tệp lưu trữ chứa tất cả nội dung của ứng dụng và là tệp được sử dụng để cài đặt ứng dụng trên các thiết bị Android. Tap tin APK bao gom một thư mục classes.dex chứa các lớp ma nguồn đã được biên dịch thành định dạng tệp dex, mà Android Runtime có thể hiểu được, một thư mục resources chứa chuỗi va hình anh cùng với giao diện XML. Tập tin APK cũng còn gồm một tệp AndroidManifest.
xml chứa thông tin về ứng dụng như tên gói ứng dụng, các thành phần, các quyền ứng dụng cần yêu cầu và các tính năng phần mềm và phần cứng mà ứng dụng cần. Có bốn loại thành phần trong các ứng dung Android: Activities, Services, Broadcast Receivers va Content Providers. Dang Kiều Phong — B19DCAT137 3 Đồ án tốt nghiệp Activities: Đại diện cho một man hình đơn với giao diện người dùng và là điểm khởi đầu cho tương tác của người dùng. Services: Là điểm đầu vào cho việc duy trì ứng dụng hoạt động ở nén.
Ví dụ, dich vụ có thé được sử dụng dé phat nhac trong nền hoặc truy xuất đữ liệu từ internet ma không làm gián đoạn hoạt động hiện tai của người dùng. Broadcast Receivers: Cho phép hệ thống gửi các sự kiện đến các ứng dụng ngoài luéng người dùng thông thường. Chúng có thé gửi phát sóng đến các ứng dụng ngay cả khi chúng không hoạt động. Rất nhiều phát sóng đến từ chính hệ thống như sự kiện tắt màn hình hoặc pin yếu.
Tuy nhiên, nó cũng có thê đến từ các ứng dụng, ví dụ, thông báo cho ứng dụng khác biết răng một hình ảnh đã được tải về và có thé được ứng dụng đó sử dụng. Content Providers: Quản lý một tập dữ liệu chia sẻ có thể được lưu trữ trong hệ thống tệp của thiết bị cũng như trên web bằng cách sử dụng ví dụ như cơ sở dữ liệu SQLite. Khi được cấp quyền, các ứng dụng khác có thé truy vấn và sửa đổi dữ liệu thông qua nhà cung cấp nội dung này. Dé kích hoạt các Activities, Services va Broadcast Receivers, người ta su dung Intents (Y định).
Intent là một mô ta trừu tượng cua | hoạt động sẽ được thực hiện. Intents có hai loại là Implicit Intents (Intents không tường minh) hoặc Explicit Intents (Intents tường minh). Một Intent không tường minh kích hoạt chỉ ra hành động cần được thực hiện và dit liệu cho hành động đó, trong khi một Intent tường minh xác định rõ và cụ thé các thành phần tham gia hành động. Content providers được kích hoạt thông qua ContentResolver [2].
Khái niệm về kiểm thử xâm nhập ứng dụng di động Kiểm thử xâm nhập ứng dụng di động, còn được gọi là Mobile Application Penetration Testing là quá trình đánh giá bảo mật của ứng dụng di động bằng cách tìm kiếm và khai thác các lỗ hồng bảo mật có thé được tan công bởi tin tặc hoặc kẻ xâm nhập. Mục tiêu của kiểm thử này là xác định các điểm yếu trong ứng dụng di động dé giúp nhà phát triển vá và cải thiện bảo mật của ứng dụng trước khi nó được phát hành. Các ứng dụng di động là một phần của hệ sinh thái di động lớn hơn, tương tác với mọi thứ từ thiết bị di động, cơ sở hạ tang mạng, máy chủ, và trung tâm dữ liệu. Bề mặt tấn công càng mở rộng hơn với việc sử dụng ngày cảng tăng của các thiết bị di động có khả năng cao.
Với sự tinh vi của các cuộc tấn công mạng các tô chức đã bắt đầu đầu tư vào việc kiểm thử xâm nhập ứng dụng di động [3]. Dang Kiều Phong — B19DCAT137 4 Đồ án tốt nghiệp 1. Các phương pháp kiểm thử xâm nhập Mọi sản phẩm phần mềm đều không thể tránh khỏi lỗi, bởi vì chúng được xây dựng bởi con người, không thể đảm bảo răng sản phẩm sẽ hoàn toàn không có khuyết điểm. Vi vậy, cần phải có người, nhóm hoặc tổ chức độc lập dé tiến hành kiểm thử xem sản phẩm có van đề hay lỗi gì không.
Dé thực hiện kiểm thử phần mềm, chúng ta cần xây dựng kế hoạch và chiến lược kiểm thử, cùng với việc áp dụng các kỹ thuật và phương pháp thích hợp cho mỗi cấp độ kiểm thử. Kiểm thử phần mềm bao gồm ba phương pháp cơ bản: kiểm thử hộp trắng và kiểm thử hộp đen và kiểm thử hộp xám, mỗi phương pháp đòi hỏi những kỹ năng riêng biệt [4]. Kiểm thử hộp trắng Kiểm thử hộp trắng là loại kiểm thử diễn ra khi nhóm kiểm thử có quyền truy nhập sơ đồ mạng, hồ sơ tài sản và các thông tin hữu ích khác. Tat cả các thông tin này có thé được sử dụng dé khởi tạo các cuộc tấn công nhắm vào một mục tiêu nhiều hơn là đối với hạ tang hệ thống.
Input Output WHITE BOX Hình 1. Phương pháp kiểm thr xâm nhập hộp trắng Kiểm thử xâm nhập hộp trắng, liên quan đến việc chia sẻ thông tin toàn bộ mạng và hệ thống với người kiểm thử, bao gồm bản đồ mạng và thông tin đăng nhập, thông tin về mã nguồn và kiến thức về cách hoạt động bên trong của phần mềm. Điều này giúp tiết kiệm thời gian và giảm chi phí tông cộng của một dự án. Kiểm thử xâm nhập hộp trắng hữu ích dé mô phỏng một cuộc tan công nhăm vào một hệ thống cụ thể, sử dụng càng nhiều phương thức tan công có thể.
Được thực hiện tốt nhất trong giai đoạn đầu của một sản phẩm, khi các nhà phát triển và kỹ sư đang xây dựng. Như vậy, người kiểm thử xâm nhập có thé tìm ra các lỗ hồng và lỗi trước khi sản phâm được công bố, va các nhà phát triển có thể làm việc trên nó trong thời gian thực. Uu điểm: + Kiểm thử toàn diện: Người kiểm thử xâm nhập có quyền truy cập mở đối với tất cả thông tin liên quan đến hệ thống và kiến trúc của nó. Điều này cho Dang Kiều Phong — B19DCAT137 5 Đồ án tốt nghiệp phép người kiểm thử đi qua tất cả các khu vực và phương pháp có thé dé tìm kiếm các lỗ hồng và điểm yếu.
+ Phương pháp này quan trọng cho các hệ thống phức tạp và quan trọng cần mức độ bảo mật cao. Đối với những loại tô chức này, mọi khu vực của hệ thong phải được kiêm thử dé đảm bao an ninh hàng dau. + Phát hiện sớm các lỗ hồng: Như đã đề cập ở trên, kiểm thử xâm nhập hộp trắng thường được thực hiện khi một ứng dụng đang được tạo ra, và điều này cho phép phát hiện sớm các lỗi và lỗ hồng.