Chương 1: Phát biểu van đề 1.1 Những vẫn đề về bảo mật của điện thoại Android Smartphone ngày càng trở thành phương tiện gan gũi và quan trọng đối với người dùng vì tính tiện lợi của nó. Smartphone không chỉ có chức năng của điện thoại thông thường, mà người dùng còn có thê thực hiện hau hêt các công việc cá nhân như kiêm tra email, tham gia mạng xã hội, giao dịch với ngân hàng (banking). - _ Hệ điều hành Android hiện đang là hệ điều hành chiếm thị phan cao nhật [7] trong số các hệ điêu hành trên thiệt bị di động (Android, 1OS, BlackBerry, Windows Phone. He điều hành 2011 2015 2015/2011 Market Share Market Share Evolution Android 39.9% Cac loai khac 3.6% Bang 1 Smartphone Operating System Market Share 2011 và 2015 - Tuy nhiên, người sử dung Android cũng đứng trước nhiều nguy cơ bị tan công, như mât thông tin cá nhân, quá trình sử dụng điện thoại gặp trở ngại, thậm chí là thiệt hại vê tài chính.
Một sô kiêu tân công phô biên như: v Nghe lén (Eavesdropping): hacker tìm cách xâm nhập vào cuộc gọi của người dùng để ghi âm lại cuộc nói chuyện. v Availability Attacks: hacker làm tắt nghẽn các dịch vụ của điện thoại khiến cho các tín hiệu truyền nhận đến các dịch vụ đó bị nghẽn lại. v Đánh cắp thông tin cá nhân (Privacy Attacks): hacker đánh cắp các thông tin cá nhân như địa chỉ liên lạc, email, vi trí hiện tại.và truyền đến các third-party server cho mục đích quảng cáo hoặc nơi chuyên tạo ra malware. Impersonation attacks : các ứng dung malware thực hiện các hành động dẫn đến làm thiệt hại về tài chính cho người dùng như tự động gửi tin nhăn nhiều lần.
Tần công từ chối dịch vụ (Denial of Service Attacks): ứng dụng gây hai làm cho người dùng không thể sử dụng các chức năng của điện thoại. Botnet: điện thoại nhiễm virus bị điều khiển từ bên ngoài thông qua các kênh giao tiếp của điện thoại như Bluetooth, Infrared. Proof-of-concept : mục tiêu của loại tân công này làm cho người dùng hoảng sợ và tin rằng điện thoại bị tan công. Unsolicitated information flow: hacker gửi liên tục ngày càng nhiều tin nhăn đến điện thoại, có thể dẫn đến từ chối dịch vụ.2 Các phương pháp giải hiện tại Hiện tại đã có rat nhiều công trình nghiên cứu về van dé này với rất nhiều hướng tiếp cận (xem chi tiệt trong phan 3.
Tông thuật các công trình liên quan). Vẻ hình thức, các công trình hiện tại hoặc ở dạng middleware cho Android platform (như Sorbet, TaintDroid, XmainDroid.), hoặc là một chương trình riêng để kiểm tra các chương trình được cài đặt trên điện thoại Android để thông báo thông tin cho người dùng (Scandal, Android leaks,.), hoặc là chương trình hỗ trợ người phát triển ứng dụng kiểm tra ứng dụng của họ có đạt tiêu chuẩn nào đó về bảo mật không (ScanDroid, WoodPecker, Stowaway,. Mục tiêu của các công trình là hỗ trợ người dùng phát hiện những bất thường của các ứng dụng trong quá trình sử dụng điện thoại (kiểm tra động), kiểm tra ứng dụng có phải là malware, kiểm tra khả năng xảy ra rò rỉ thông tin cá nhân của người dùng khi các ứng dụng được chạy thực tế (kiểm tra tinh). Mỗi phương pháp hiện tại đều có những ưu điểm và hạn chế (xem chỉ tiết trong phan 3.2 Thảo luận về các hướng nghiên cứu).
Đối với phương pháp kiểm tra tĩnh, một trong những điểm hạn chế là tính khả thi không cao của các công trình đó khi chương trình ứng dụng có kích thước lớn với nhiều đường thực thi (execution path), vì các phương pháp này phải tìm ra tất cả các đường thực thi của ứng dụng trước khi bắt đầu kiêm tra.3 Mục tiêu của luận văn Luận văn này cũng hướng đên cùng mục tiêu với các công trình hiện tại: thực hiện kiêm tra ứng dụng trên điện thoại, nhăm tìm ra các 161 bảo mật có thê có. Luận văn muốn giới thiệu một phương pháp khác để giải quyết van dé, cũng năm trong nhóm kiêm tra tĩnh, chưa được đê cập trong các công trình hiện tại và cũng không kém phân hiệu quả, đó là “kiêm tra mô hình”. Phương pháp kiểm tra mô hình ngày nay thường được áp dụng với kĩ thuật kiểm tra on- the-fly. Đó là cách kiểm tra mà không can phải tìm ra tat cả các đường thực thi ngay từ dau, thay vào đó các trạng thái (hoặc đường thực thi) của ứng dụng được tạo ra và kiểm tra một cách dan dan, những trạng thái đã xử lí qua rồi có thể giải phóng khỏi bộ nhớ.
Với kĩ thuật này, chúng tôi hi vọng có thé đáp ứng được cho các ứng dụng Android có kích thước lớn, và khắc phục được một trong những hạn chế nói trên của các phương pháp hiện tại.4 Đóng góp của luận văn - Chung tôi đã áp dụng và thử nghiệm độ hiệu quả của kiểm tra mô hình với kĩ thuật on- the-fly cho ứng dụng end-user trên Android, điều mà hiện tại vẫn chưa được áp dụng nhiều. - Qua luận văn nay chúng tôi đã đóng góp thêm module kiểm tra ứng dụng Android vào công cu PAT. Hiện tại chỉ hoàn thành một phan của module, nhưng trong tương lai nếu tiếp tục phát triển các phan còn lại, PAT sẽ có một module day đủ dành cho Android.5 Câu trúc luận văn Phan còn lại của luận văn bao gồm các phan như sau : phan 2 trình bày về cơ sở lí thuyết, phân 3 trình bày về các công trình liên quan và những ý kiến thảo luận của chúng tôi, phần 4 trình bay framework của chúng tôi va phan 5 trình bay kết quả thực nghiệm. Chương 2: Những cơ sở lý thuyết nên tảng 2.1 Tổng quan về Android 2.1 Cấu trúc hệ điều hành Android APPLICATIONS Contacts Phone Browser APPLICATION FRAMEWORK Activity Window Content View Notification Manager Manager Providers System Manager Package Telephony Resource Location XMPP Manager Manager Manager Manager Service surface ` “ Meda' ch Core Manager Framework Libraries LINUX KERNEL.
Display Play Camera Bluetooth Flash Memory) Binder (IPC) Driver Driver Driver Driver Driver USB Keypad WiFi Audio Power Driver Driver Driver Drivers Management Hình 1 Cau Trúc Hệ Điều Hanh Android - Linux kernel: Hệ điều hành Android bao gồm nhiều lớp, trong cùng là Linux kernel 2. Phan nhân Linux chịu trách nhiệm tương tác với phan cứng va chứa tat cả các hardware driver. Tat cả các core functionality của Android như quản lí vùng nhớ, quan lí process, networking, security setting,. đều xây dựng dựa trên các chức năng tương ứng trong Linux kernel - Libraries: Bao bọc bên ngoài Linux kernel là lớp thư viện.
Day là lớp cho phép các thiệt bi quản lý các lọai dữ liệu đặc trưng riêng. Cac thư viện gôm có : surface manager, media framework, SQLite, WebKit, OpenGL. Android Runtime: Bên trên Linux kernel là lớp Android Runtime, chứa Dalvik Virtual machine và các core java libraries. Dalvik virtual machine là một dang của JVM dùng dé chạy ứng dung Android (.dex file) và được tối uu dé ít tốn năng lượng xử lí và bộ nhớ nhất.
Phan core java libraries bao gồm hau hết các chức năng định nghĩa trong Java SE libraries, tuy nhiên nó không phải là Java SE hay Java ME. Application Framework: chứa các dịch vụ quản lý các chức năng cơ bản của điện thoai như quan lý tài nguyên, quan lý cuộc gọi, quan lý định vi, quản lý life cycle của ứng dụng, quan lý việc chia xẻ dữ liệu giữa các ứng dụng. đề lớp ứng dụng trên cùng sử dụng. Applition layer: Day là lớp ngoài cùng trong cầu trúc của hệ điều hành Android.
Nó bao gồm tat cả các ứng dụng cho người dùng. Một số ứng dụng được cai đặt sẵn cho người dùng như: SMS client, dialer, web-browser, contact manager.2 Android Security Framework 2.1 Application Sanbox Mỗi ứng có một UID (user ID) duy nhất và được chạy trong một quá trình (process) tách biệt. Cac ứng dụng không được phép truy xuât dit liệu của nhau và bi hạn chê truy xuât đên hệ thông. Thi dụ: như một ứng dụng A không thể đọc đữ liệu của ung dung B hoặc không được gọi đên một sô điện thoai nào đó nêu không được hệ điêu hành cap quyên.2 Permission Do tính chất sandbox, các ứng dụng gần như tách biệt lẫn nhau.
Mỗi ứng dụng khai báo các lọai quyền cần có khi chạy và người dùng sẽ xác nhận việc cấp các quyền này khi cài đặt ứng dụng. Android định nghĩa các quyên truy cập tới các tài nguyên chung trong hệ thống. Thí dụ: android.CALL _EMERGENCY_NUMBERS android.READ_OWNER_DATA android.SET WALLPAPER android. DEVICE POWER Ung dung cũng có thé đặc tả các quyền mà ứng dung khác phải có để truy cập tài nguyên của nó.
Android cũng ho trợ ứng dụng câp/ thu hôi/ kiêm tra động các quyên trên các tài nguyên.3 Sơ lược về một ung dụng trên Android - _ Một ứng dụng trên Android bao gồm các thành phan (component) và một manifest file chứa các thông tin quan trong Android can có dé có thé chạy ứng dụng. - - Các thành phan giao tiếp với nhau và giao tiếp với hệ thống thông qua thông điệp (intent-based) Manifest file <?xml version="1.0" encoding="utf-8"?> <manifest> <uses-permission /> <permission /> <permission-tree /> <permission-group /> <instrumentation /> <uses-sdk /> <uses-configuration /> <uses-feature /> <supports-screens /> <compatible-screens /> <supports-gl-texture /> <application> <activity> <intent-filter> <action /> <category /> <data /> </intent-filter> vymata-dasts /» Hình 2: Cấu trúc manifest file - _ Một số thành phan cần lưu ý : > <application> : định nghĩa các thành phan (component) trong ứng dụng > <use-permission> : định nghĩa các quyền (permission) ứng dụng can có để truy xuất đến system API hay là interface của các ứng dụng khác > <permission> :Các quyền mà ứng dụng khác cần có dé truy xuất tới các component bên trong nó. Intent Các thành phân (component) trong ứng dung và giữa các ứng dụng tương tác với nhau theo cơ chế trao đối thông tin (messaging) hoặc gọi là intent. Intent là một thông điệp thể hiện yêu cầu muốn làm một việc gì đó.
Thí dụ, nếu ứng dụng muốn hiển thị một trang web, nó sẽ thé hiện ý muốn bằng cach tạo ra một intent gửi đến hệ thống. Hệ thống sẽ tìm đọan code tương ứng (trường hợp này là browser) và chạy nó. Intent là một câu trúc đữ liệu chứa hành động (action) can thực hiện và các dữ liệu đầu vào cho hành động đó. Intent có 2 loại là ân tang (implicit) và và tường minh (explicit).
Đối với implicit intent, noi gol dén (tên cua component đích) không được chỉ định rõ, hệ điều hành sẽ tự suy ra dựa trên nhữnng ứng dụng cai đặt sẵn trên hệ thống. Component Có 4 loại component, mỗi component có một định danh riêng. > Activity : tương ứng với một màn hình trong ứng dụng > Service: các dịch vụ chạy ngầm bên dưới ứng dụng, cung cấp interface cho các ứng dụng khác giao tiếp.