1. Trang chủ
  2. » Luận Văn - Báo Cáo

NGHIÊN cứu, ĐÁNH GIÁ AN TOÀN THÔNG TIN mã NGUỒN hệ điều HÀNH ANDROID tùy BIẾN

93 201 6

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 93
Dung lượng 9,62 MB

Nội dung

hưởng đến tính riêng tư của người dùng như thông tin vị trí, danh bạ, thông tin thiết bị đang sử dụng, truy cập Internet, truy xuất bộ nhớ, gởi tin nhắn sms, tự động tải các thông tin nà

Trang 1

ĐẠI HỌC QUỐC GIA THÀNH PHỐ HỒ CHÍ MINH

TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN



Lê Đức Thịnh

NGHIÊN C ỨU, ĐÁNH GIÁ AN TOÀN THÔNG TIN MÃ NGUỒN

H Ệ ĐIỀU HÀNH ANDROID TÙY BIẾN

Trang 2

L ỜI CẢM ƠN

Để hoàn thành khóa luận tốt nghiệp này, dựa trên những cố gắng của tôi, nhưng

Đặc biệt tôi xin gởi lời cảm ơn sâu sắc nhất đến Tiến sĩ Phạm Văn Hậu, người

Đồng nghiệp, bạn bè, các bạn sinh viên đã chia sẻ kinh nghiệm, kiến thức quí

như tinh thần cho chúng tôi học tập và nghiên cứu

gia đình những lời chúc tốt đẹp, thành công trong công việc và cuộc sống

Lê Đức Thịnh

Trang 3

L ỜI CAM ĐOAN

được chú thích và liệt kê rõ ràng thành các tài liệu tham khảo

cáo

Lê Đức Thịnh

Trang 4

M ỤC LỤC

LỜI CẢM ƠN 1

LỜI CAM ĐOAN 2

MỤC LỤC 3

DANH MỤC KÝ HIỆU VÀ CHỮ VIẾT TẮT 6

DANH MỤC BẢNG 7

DANH MỤC CÁC SƠ ĐỒ 8

DANH MỤC HÌNH 9

MỞ ĐẦU 10

CHƯƠNG 1 - TỔNG QUAN 16

1.1 Tình hình nghiên cứu trong nước 16

1.2 Tình hình nghiên cứu ở nước ngoài 17

1.3 Kết luận 20

CHƯƠNG 2 – HIỂU VỀ KIẾN TRÚC, MÃ NGUỒN ANDROID (AOSP) 21

2.1 Kiến trúc Android 21

2.2 Bảo mật Android 24

2.3 Bảo mật kernel 26

2.4 Các lời gọi hệ thống (System calls) 26

2.5 Tương tác với mã nguồn Android (AOSP) 27

2.6 Hiểu về cấu trúc cơ bản mã nguồn Android 31

2.7 Hiểu về cấu trúc cơ bản kernel Android 38

2.8 Kết luận 43

CHƯƠNG 3 – CÁC PHƯƠNG PHÁP SO SÁNH MÃ NGUỒN 44

3.1 Các công cụ thương mại 44

Trang 5

https://www.devart.com/codecompare/ 44

Công cụ Beyond Compare: https://www.scootersoftware.com/ 47

3.2 Các công cụ mã nguồn mở, miễn phí 50

GNU Diffutils: https://www.gnu.org/software/diffutils/ 50

KDiff3: http://kdiff3.sourceforge.net/ 52

3.3 Kết luận 57

CHƯƠNG 4 – CÁC KỊCH BẢN CHỈNH SỬA MÃ NGUỒN AOSP CHO VIỆC THỬ NGHIỆM PHƯƠNG PHÁP ĐÁNH GIÁ 58

4.1 Tổng quan 58

4.2 Chỉnh sửa trong Activity 59

Kịch bản 1: chỉnh sửa trong Activity lấy IMEI điện thoại gởi qua SMS 61 4.3 Chỉnh sửa trong Services 62

Kịch bản 2: Lấy thông tin vị trí gởi qua sms từ Services 64

4.4 Kết luận 65

CHƯƠNG 5 – ĐỀ XUẤT PHƯƠNG PHÁP ĐÁNH GIÁ MÃ NGUỒN ANDROID DỰA TRÊN PHÂN TÍCH TĨNH 66

5.1 Tập dữ liệu sử dụng trong phương pháp phân tích tĩnh trong Android 66

5.2 Hướng tiếp cận và phạm vi 68

5.3 Phương pháp đề xuất 69

Module General 71

Module Compare 72

5.3.2.1 Thử nghiệm trên Beyond Compare 73

5.3.2.2 Thử nghiệm trên diffutils (thử nghiệm trên linux) 76

Module Analysis 78

5.4 Cài đặt và thử nghiệm 82

Trang 6

Cài đặt môi trường và thiết lập cấu hình 82

Thử nghiệm kịch bản 1 (được trình bài ở 4.2.1) 83

Thử nghiệm kịch bản 1 và 2 (được trình bày ở 4.2.1 và 4.3.1) 85

5.5 Kết luận 87

CHƯƠNG 6 – KẾT LUẬN, KHUYẾN NGHỊ VÀ HƯỚNG PHÁT TRIỂN 88

6.1 Kết luận 88

6.2 Hướng phát triển 89

TÀI LIỆU THAM KHẢO 90

Trang 7

DANH M ỤC KÝ HIỆU VÀ CHỮ VIẾT TẮT

Ch ữ viết tắt N ội dung chi tiết

Trang 8

DANH M ỤC BẢNG

Bảng 1: Thị phần các nền tảng di động đến quý 1/2017 10

Bảng 2: Các thành phần của AOSP 35

Bảng 3: Bảng chi tiết frameworks/base 38

Bảng 4: Các thành phần của kernel Android Goldfish 3.18 42

Bảng 5: Bảng tóm tắt các công cụ so sánh mã nguồn 57

Bảng 6: Phân nhóm Source Sink [10] 68

Trang 9

DANH M ỤC CÁC SƠ ĐỒ

Sơ đồ 1: Android System Services Pattern 63

Sơ đồ 2: Lớp service trong frameworks/base 64

Sơ đồ 3: Sơ đồ tổng quan giải pháp đánh giá mã nguồn Android 70

Sơ đồ 4: Sơ đồ hoạt động của của module Compare 72

Sơ đồ 5: Sơ đồ hoạt động của module Analysis 79

Sơ đồ 6: Sơ đồ kỹ thuật phân tích luồng dữ liệu nhạy cảm 81

Trang 10

DANH M ỤC HÌNH

Hình 1: Phân phối các firmware Android độc hại 19

Hình 2: Kiến trúc Android [23] 22

Hình 3: Điểm khác biệt giữa Linux truyền thống và Android [25] 27

Hình 4: Cấu trúc thư mục mã nguồn nguồn AOSP 30

Hình 5: Cấu trúc thư mục kernel Android goldfish-3.18 31

Hình 6: Kiến trúc Android ánh xạ với AOSP [26] 36

Hình 7: Cấu trúc kernel Android Goldfish 3.18 39

Hình 8: Kết quả so sánh 2 thư mục với công cụ Code Compare (theo thứ tự từ trên xuống tập tin bị chỉnh sửa, được thêm mới, bị xóa đi) 46

Hình 9: Kết quả so sánh 2 file với Code Compare 47

Hình 10: So sánh thư mục với Beyond Compare 48

Hình 11: So sánh tập tin với Beyond Compare 48

Hình 12: Xuất báo cáo so sánh với Beyond Compare 49

Hình 13: Hướng dẫn sử dụng công cụ diff 50

Hình 14: Kết quả so sánh tập tin với công cụ diff 52

Hình 15: Giao diện công cụ Kdiff3 53

Hình 16: Kết quả tổng quát so sánh 2 mã nguồn trong thư mục frameworks với Kdiff3 54

Hình 17: Kết quả chi tiết so sánh 2 mã nguồn trong thư mục frameworks với Kdiff3 55 Hình 18: Các thành phần chính của ứng dụng Android 59

Hình 19: Vòng đời của một Activity 60

Hình 20: Cơ chế hoạt động của SuSi 67

Hình 21: So sánh 2 thư mục trên Beyond Compare 73

Hình 22: Tóm tắt thông tin báo cáo so sánh trên Beyond Compare 74

Hình 23: Xuất báo cáo trên Beyond Compare 75

Hình 24: Định dạng báo cáo kết quả so sánh của Beyond Compare 76

Hình 25: Script thực thi diffutils 76

Hình 26: Thời gian thực hiện so sánh của công cụ diffutils 77

Hình 27: Định dạng báo cáo của công cụ diffutils 77

Hình 28: Cấu trúc công cụ đánh giá được đề xuất 82

Trang 11

M Ở ĐẦU

con người ngày càng mang tính di động cao, chính vì thế các thiết bị di động (điện thoại

nhau như iOS, Android, Windows Mobile, FireFox OS, BlackBerry OS, … Trong số

Trang 12

hưởng đến tính riêng tư của người dùng như thông tin vị trí, danh bạ, thông tin thiết bị đang sử dụng, truy cập Internet, truy xuất bộ nhớ, gởi tin nhắn (sms), tự động tải các

thông tin này ra bên ngoài mà không được sự đồng ý của người dùng hoặc người dùng

đánh dấu trước đó với tỉ lệ phát hiện sai sót thấp, tuy nhiên, công cụ này chỉ có khả năng

soát được các URI của các ứng dụng; công cụ Amandroid [5] phát hiện được rò rỉ thông

(call graph) để phân tích ứng dụng, …

có đến 99.6% có chứa lỗ hỏng giúp cho việc leo thang đặc quyền Java, 7.8% chứa mã độc theo dõi người dùng Bên cạnh đó, nghiên cứu [8] đã bước đầu tiếp xúc và đánh giá

Trang 13

hình là phương pháp phân tích tĩnh và phương pháp phân tích động Phương pháp phân

đòi hỏi phải thực thi mã lệnh mà chỉ đọc và phân tích mã ban đầu Phân tích động dựa

hành vi này truy ngược lại đoạn mã tương ứng, từ đó tiếp tục phân tích mở rộng Ngoài

ra, để khắc phục các yếu điểm của từng phương pháp trên, hiện nay nhiều công trình sử

pháp phân tích tĩnh Chúng tôi sử dụng phương pháp phân tích tĩnh bởi vì đối tượng

điều hành Android tùy biến, sử dụng các công cụ phân tích để tìm ra các đoạn mã khác

Trang 14

Tính khoa h ọc và tính mới của đề tài:

nguy cơ an toàn thông tin người dùng hay không Các công trình đánh giá an toàn của

đánh giá và khuyến cáo người dùng về nguy cơ bảo mật trên mã nguồn ban đầu (text)

Đề tài này sẽ tập trung vào việc nghiên cứu và đề xuất một phương pháp đánh

M ục tiêu, đối tượng và phạm vi nghiên cứu:

để đánh giá an toàn của mã nguồn hệ điều hành Android tùy biến, trong đó chú trọng

đến việc thất thoát thông tin

Đối tượng: mã nguồn hệ điều hành Android, bảo mật trên Android, các công cụ

- An toàn thông tin là một khái niệm rộng, theo Luật an toàn thông tin mạng của

Trang 15

Việt Nam, an toàn thông tin là sự bảo vệ thông tin, hệ thống thông tin trên mạng tránh

bị truy nhập, sử dụng, tiết lộ, gián đoạn, sửa đổi hoặc phá hoại trái phép nhằm bảo đảm tính nguyên vẹn, tính bảo mật và tính khả dụng của thông tin Hướng tiếp cận của đề tài này, tính an toàn thông tin bị vi phạm khi có thông tin người dùng bị rò rỉ ra bên ngoài

mà không được sự cho phép của người dùng Cụ thể, hành vi đọc thông tin từ 1 điểm (source) và thông tin này được gởi đến 1 điểm để gởi ra bên ngoài (sink) Hay nói cách khác, nếu tồn tại luồng thông tin đi từ source đến sink thì mã nguồn mất an toàn thông tin.4

- Đối với việc phân tích mã nguồn cả hệ điều hành Android là một đề tài rất rộng, trong phạm vi nghiên cứu này tập trung so sánh hai mã nguồn Android mà ta đã biết trước kết quả để đánh giá kết quả của phương pháp đề xuất Giả sử rằng, mã nguồn hệ điều hành Android do Google trực tiếp phân phối đã đạt chuẩn về an toàn thông tin, dựa vào đó đề tài có sự so sánh với mã nguồn khác và đưa ra các đánh giá Chúng tôi sẽ tải

bộ mã nguồn hệ điều hành Android được bản mã nguồn thứ nhất, chỉnh sửa mã nguồn trên, thêm vào một vài lỗ hỏng bảo mật để được mã nguồn thứ hai Áp dụng và đánh

giá phương pháp đề xuất ở những điểm cốt lõi, những khác biệt trên mã nguồn này

- Trước mắt, chúng tôi đề xuất phương pháp áp dụng trên ngôn ngữ Java và các đoạn mã độc nằm trên cùng một tập tin mã nguồn

Bước mở rộng của đề tài có thể được tiếp tục phát triển hơn dành cho nghiên cứu trong tương lai là đánh giá an toàn trên toàn bộ ngôn ngữ, đánh giá các đoạn mã nằm ở

C ấu trúc luận văn

Chương 1: trình bày tổng quan về tình hình nghiên cứu trong và ngoài nước liên quan đến chủ đề mà đề tài đang đề cập đến để tạo cơ sở nền tảng ban đầu, từ đó nêu ra

4https://blogs.uni-paderborn.de/sse/tools/susi/

Trang 16

được sử dụng trong Android, bảo mật mã nguồn AOSP, cách tương tác với mã nguồn

Chương 3: sẽ nói việc tìm hiểu, nghiên cứu các công cụ so sánh mã nguồn để tiến

Chương 4: chương này trình bày một số kịch bản chỉnh sửa mã nguồn căn cứ vào

Chương 5: sẽ dựa trên kết quả nghiên cứu từ các chương trước đặc biệt là chương 3

và chương 4 để giới hạn phạm vi của dữ liệu đầu vào cho phương pháp đánh giá được

đề xuất ngay sau đây Mã nguồn của AOSP rất lớn nếu không được giới hạn sẽ ảnh hưởng rất lớn đến hiệu suất đánh giá dẫn đến phương pháp đề xuất không hiệu quả Nội

đề xuất với dữ liệu đầu vào là mã nguồn AOSP do Google cung cấp và mã nguồn tùy

Chương 6: chương này sẽ đưa ra kết luận về phương pháp đề xuất, thảo luận hướng

Trang 17

CHƯƠNG 1 - TỔNG QUAN

Chương này tập trung trình bày tổng quan về tình hình nghiên cứu trong và ngoài nước liên quan đến chủ đề mà đề tài đang đề cập đến để tạo cơ sở nền tảng ban đầu, từ

đó nêu ra các phương án thực hiện một cách khái quát làm tiền đề cho quá trình nghiên

1.1 Tình hình nghiên c ứu trong nước

Ở Việt Nam, hiện tại, chưa có công trình nghiên cứu nào về phân tích, đánh giá độ

phân tích mã độc trên các ứng dụng trên Android, chưa phân tích cả hệ điều hành Chẳng

đề tài “Detecting privilege escalation attacks on android device” [11] nghiên cứu về phương pháp phân tích tĩnh trong phát hiện loại tấn công dựa vào các đặc quyền được

pháp đánh giá tính bảo mật của ứng dụng Android dựa trên phân tích CFG (Control

thông tin android application framework” [10], nhóm tác giả đã tách riêng phần

đạt chuẩn về an toàn thông tin, từ đó tác giả chỉnh sửa bản ROM đó tạo ra phiên bản không an toàn và đây là 02 dữ liệu đầu vào của công cụ, kết quả của công trình đã tạo

kernel android d ựa trên phương pháp phân tích tĩnh” [9] đã tập trung đánh giá Kernel

Trang 18

các phương pháp hiện tại và kết quả phân tích rất khả quan phát hiện được những điểm

có nguy cơ mất an toàn trong bản kernel Android đã được chỉnh sửa

ch ế phát hiện rò rĩ thông tin bằng phương pháp kết hợp phân tích tĩnh và động trên Android” [13] đã dựa trên 2 công cụ chính DidFail [14] và SmartDroid [15] xây dựng

1.2 Tình hình nghiên c ứu ở nước ngoài

vào đơn ứng dụng, đa ứng dụng Tham khảo các chủ đề và những công trình nghiên cứu

tích tĩnh trong lĩnh vực an toàn/bảo mật phần mềm như Model Checking, Control-flow analysis, Data-flow analysis, Symbolic analysis, Information-flow analysis Các công

Abstract Syntax Tree (AST); GraphMath hướng đến việc tạo ra System Dependence

Trang 19

tính chính xác, độ bảo mật, hiệu năng, khả năng tái sử dụng, cũng như đơn giản hóa source code giúp cho người khác dễ dàng hơn trong việc đọc hiểu source code Công

thông tin người dùng

đã có nhiều công cụ hỗ trợ, có thể tham khảo danh sách tại [18] Mã nguồn Android bao

ảnh hưởng đến tính an toàn, bảo mật của kernel Các tác giả so sánh hai công cụ dựa

đánh giá trên mã nguồn ban đầu (text) của kernel Android

tích tĩnh và phân tích động để phân tích cả tầng ứng dụng và tầng hệ thống của bản ROM Công trình đánh giá một firmware ở hai mức đó là mức ứng dụng được cài đặt

5http://developer.android.com/tools/help/lint.html

Trang 20

đặc quyền trên bản ROM Tuy nhiên, quá trình đánh giá còn khá đơn giản như dựa trên

để hạ giá thành của sản phẩm, đây là một khuyến cáo đáng quan tâm đối với những người dùng sản phẩm có giá thành rẻ hơn so với những thiết bị có cùng cấu hình, thể

Đối với cách tiếp cận của đề tài là so sánh mã nguồn, công trình so sánh mã nguồn

Đóng góp chính của công trình này là xây dựng một framework mở rộng phù hợp và

(class hierarchies)

Trang 21

WinMerge, diffutils, …

1.3 K ết luận

Chương đã trình bày khái quát về các công trình nghiên cứu liên quan đến hướng

đơn lẻ chưa áp dụng vào phân tích một bộ mã nguồn thuần túy (dạng text) một cách

được build, không phải là mã nguồn thuần túy ban đầu (Java, C, C++) Bởi vì, khi dịch ngược trở về mã nguồn ban đầu (Java, C, C++) sẽ cho kết quả không chuẩn

phương pháp đề xuất với các bước trình bày ở cuối phần mở đầu có tính khả thi để thực

Trang 22

CHƯƠNG 2 – HIỂU VỀ KIẾN TRÚC, MÃ NGUỒN ANDROID (AOSP)

Đây là bước đầu tiên trong giải pháp đề xuất để đánh giá những điểm quan trọng

AOSP, cách tương tác với mã nguồn AOSP, mã nguồn kernel Android, phân tích cấu trúc thư mục và mô tả chức năng các thành phần trong mã nguồn Android do Google

2.1 Ki ến trúc Android

6https://source.android.com/source/

Trang 23

Linux-kỳ loại thiết bị phần cứng nào

Các đóng góp của Google cho Linux kernel tập trung ở sửa lỗi, thêm phần

cứng mới, cải thiện quản lý năng lượng, cải thiện báo lỗi, cải thiện hiệu năng,

cải thiện bảo mật

HAL: HAL cho phép hệ thống tương tác với phần cứng thông qua một giao

diện giao tiếp bên trong cụ thể Với cách tiếp cận này, hệ thống Android không biết và cũng không cần biết phần cứng được truy cập hay được quản

lý như thế nào HAL như là một lớp trung gian giữa phần cứng và hệ thống,

nó được phát triển bằng C/C++ thuần và các share libraries Không có sự hạn

Trang 24

chế nào từ Google về cách chúng ta cần implement HAL và các trình điều khiển thiết bị (device drivers) của chúng ta

Libraries: là một tập các thư viện được tạo dành riêng để làm việc trên

Android, cho phép và làm việc với các thành hệ thống và việc phát triển ứng

dụng Quan trọng nhất là các thư viện

o SQLite: là một việc thực thi SQL rút gọn (tiny SQL implementation) được nhúng vào hệ thống và nó cung cấp các chuẩn để truy cập vào dữ liệu công khai được tạo bởi content providers hoặc cơ sở dữ liệu SQL được

tạo bởi người dùng

o SSL: cung cấp môi trường bảo mật chuẩn cho giao tiếp mạng

o OpenGL: các thư viện OpenGL được liên kết giữa Java (C/C++) và OpenGL/ES 3D graphics rendering API

o SGL: cung cấp cách truy xuất 2D rendering engine

o Media framework: cung cấp các codecs for rendering, recording, và playback cho các định dạng đa phương tiện phổ biến nhất

o Webkit: là một HTML rendering engine phổ biến

o Libc: là một BSD-derived implementation của thư viện C chuẩn, được

chỉnh sửa riêng để thực thi tốt nhất trên các thiết bị nhúng trên nền tảng Linux

Application framework: đây là cốt lõi của hệ sinh thái phần mềm Android

Nó cung cấp rất nhiều các manager thuận tiện cho các tác vụ phổ biến nhất

của các nhà phát triển Android và cho chính hệ thống Android Các thành

phần quan trọng nhất trong lớp này là:

o Activity manager: cung cấp việc điều hướng và quản lý vòng đời các Activity Android

o Resource manager: cung cấp việc truy cập đến các tài nguyên không phải

mã code chứa trong ứng dụng như graphics, localized string, styles, và colors

o Location manager: cung cấp thông tin chính xác nhất về thông tin vị trí,

sử dụng dữ liệu được thu thập từ cảm biến GPS, tháp di động và mạng không dây lân cận

Trang 25

o Notification manager: thông báo các cảnh báo trên thanh trạng thái

o Content providers: cung cấp cách tiếp cận phổ biến để chia sẻ dữ liệu giữa các ứng dụng khác nhau

o Views and widgets: bao gồm phần lõi giao diện người dùng (UI core) của Android

Binder IPC: Binder Inter-Process Communication (IPC) là một lớp ẩn, nó tạo

kênh giao tiếp trong suốt giữa Android API bậc cao, có thể truy xuất thông qua Android SDK và hệ thống Android thực

Applications: tất cả các ứng dụng được tạo bởi bên thứ ba, như các nhà sản

xuất smartphone, các lập trình viên Android, …

2.2 B ảo mật Android 7

đó, nó đòi hỏi một kiến trúc bảo mật mạnh mẽ và các chương trình bảo mật nghiêm

SandBox: mọi ứng dụng Android đều chạy trong một chế độ gọi là Application Sandbox Cũng giống như nằm trong một chiếc hộp chứa, bất kỳ ứng dụng nào đều được chứa bên trong một Sandbox ảo để giữ nó tách biệt với bất kỳ thứ nào khác bên

N ền tảng chính của Android được xây dựng thành các khối:

• Phần cứng thiết bị (Device Hardware): Android chạy trên một mảng các cấu hình thiết bị bao gồm smart phones, tablets, and set-top-boxes

7https://source.android.com/security/

Trang 26

• Hệ điều hành Android (Android Operating System): nhân của HĐH được dựng trên Linux Kernel Tất cả tài nguyên của thiết bị như chức năng camera, dữ liệu GPS, Bluetooth, điện thoại, kết nối mạng, … được truy cập thông qua hệ điều hành

• Môi trường thực thi ứng dụng Android (Android Application Runtime): các ứng

dụng Android hầu hết được viết bằng ngôn ngữ Java và chạy trong Android Runtime (ART) Tuy nhiên, nhiều ứng dụng, bao gồm cả dịch vụ lõi Android và các ứng dụng dành riêng (native applications) hoặc bao gồm các thư viện dành riêng (native libraries) Cả ART và các ứng dụng gốc chạy trong cùng một môi trường bảo mật chứa trong phạm vi ứng dụng SandBox

Các ứng dụng Android được mở rộng từ lõi của HĐH Android Có 2 mã nguồn ứng

d ụng chính:

• Pre-Installed Applications (các ứng dụng được cài đặt sẵn): Android bao gồm

một tập các ứng dụng được cài đặt sẵn như Phone, Email, Calendar, Web browser, Contacts, Đây là một phần của nền tảng Android hoặc chúng có thể được phát triển bởi một nhà sản xuất thiết bị cho một thiết bị cụ thể

• User-Installed Applications (các ứng dụng do người dùng cài đặt): Google cung

cấp nền tảng phát triển mở hỗ trợ cho bất kỳ ứng dụng của bên thứ ba nào

Ki ến trúc nền tảng bảo mật

Android tìm được một hệ điều hành bảo mật nhất và có thể sử dụng nhất cho hầu

• Bảo vệ dữ liệu người dùng

• Bảo vệ tài nguyên hệ thống (bao gồm cả tài nguyên mạng)

Trang 27

• Ứng dụng Sandbox bắt buộc đối với tất cả các ứng dụng

• Bảo mật giao tiếp liên tiến trình

• Ký vào ứng dụng

• Các quyền ứng dụng được định rõ và người dùng đạt được

2.3 B ảo mật kernel 8

Như đã trình bày ở trên, kernel được xem như “trái tim” của Android Tất cả

chính như module các quyền dựa trên người dùng, cô lập các tiến trình, cơ chế mở

Lời gọi hệ thống (System call) là rất quan trọng, giúp cho người dùng truy cập tài nguyên của hệ thống, nó là một tập các hàm giúp cho người dùng giao tiếp trực

tiếp với nhân (kernel) của hệ điều hành nhằm yêu cầu hệ thống cung cấp cho người dùng các tính năng cơ bản Chẳng hạn như đọc/ghi tập tin, kết nối mạng với socket, truy suất thư mục, khởi chạy một chuơng trình khác

8https://source.android.com/security/overview/kernel-security

Trang 28

2.5 Tương tác với mã nguồn Android (AOSP)

Mã nguồn của Android được Google cung cấp chính thức tất cả các phiên

bản tại https://source.android.com/source/ và hướng dẫn chi tiết cách thức để tương tác và tải mã nguồn này về, có thể tóm tắt như sau:

Trang 29

• Cài đặt các gói thư viện (Ubuntu 14.04)

sudo apt-get install git-core gnupg flex bison gperf build-essential zip curl zlib1g-dev gcc-multilib g++-multilib libc6-dev-i386

lib32ncurses5-dev x11proto-core-dev libx11-dev lib32z-dev ccache libgl1-mesa-dev libxml2-utils xsltproc unzip

Download 10 : AOSP được lưu trữ trên Git và để dễ dàng tương tác với bộ

mã nguồn này, Google cung cấp một công cụ đó là Repo

Cài đặt repo:

o Tạo thư mục /bin trong thư mục /home

mkdir ~/bin PATH=~/bin:$PATH

o Tải công cụ Repo

curl downloads/repo > ~/bin/repo

https://storage.googleapis.com/git-repo-chmod a+x ~/bin/repo

• Thi ết lập cho Repo truy cập được vào nơi lưu trữ AOSP trên Git:

o Tạo thư mục lưu trữ bộ mã nguồn

mkdir WORKING_DIRECTORY

cd WORKING_DIRECTORY

o Cấu hình Git

git config global user.name "Your Name"

git config global user.email "you@example.com"

o Cập nhật các phiên bản mới nhất

9https://source.android.com/source/initializing

10https://source.android.com/source/downloading

Trang 30

android-• Tải về

repo sync

lượng hơn 40 GB, có cấu trúc thư mục chi tiết như sau:

11https://source.android.com/source/build-numbers#source-code-tags-and-builds

Trang 31

• Trong bộ AOSP trên không bao gồm mã nguồn Kernel Android, chúng được cung cấp riêng tại https://android.googlesource.com/kernel Với

từng thiết bị cụ thể, chúng ta lựa chọn mã nguồn phù hợp để sử dụng Ví

dụ, chúng ta tải mã nguồn Kernel chạy trên máy ảo (emulator) như sau

git clone https://android.googlesource.com/kernel/goldfish

Hoặc vào trực tiếp đường dẫn trên bằng trình duyệt để tải file nén của

mã nguồn Kernel

Trang 32

2.6 Hi ểu về cấu trúc cơ bản mã nguồn Android

Một số lệnh cơ bản tương tác với mã nguồn AOSP

- Kiểm tra phiên bản Android của mã nguồn AOSP: xem tập tin /aosp/build/core/version_defaults.mk trong mã nguồn AOSP

- Kiểm tra phiên bản của kernel Android: vào thư mục chứa mã nguồn kernel gõ

lệnh make kernelversion

- Tìm kiếm trong mã nguồn: sử dụng lệnh build/envsetup.sh trước khi sử

Trang 33

dụng các lệnh tìm kiếm (nếu chưa thực hiện được các lệnh tìm kiếm thì thực

hiện tiếp lệnh make modules hoặc tiến hành build mã nguồn sau đó thực hiện

o godir: di chuyển tới một thư mục chứa tập tin, khi chạy lệnh này, nó sẽ thực

hiện index mã nguồn trước

o printconfig: in ra cấu hình hiện tại

- Android SDK Search: là 1 Extension trên Google Chrome: https://chrome.google.com/webstore/detail/android-sdk-

search/hgcbffeicehlpmgmnhnkjbjoldkfhoin

Bên trong mã nguồn AOSP gồm có [24, 26]:

Lưu ý: kích thước mỗi thư mục chỉ mang tính tương đối, tùy thuộc vào thời điểm

(Android 6.0)

art

được sử dụng từ phiên bản Android 5.0 thay thế cho Dakvin VM cũ dựa trên Just-In-Time (JIT) ART

18.7

bionic

và bionic là license, glibc được phân phối với GPL

18.2

Trang 34

bootable

được sử dụng bởi tất cả bootloader Android và ảnh

5.08

build

đó, nó chứa tập tin envsetup.sh, một đoạn script cho

Android

11.7

cts

đến người dùng Bộ CTS do Google phát triển và

460

dalvik

ứng dụng Android được thực thi trên máy ảo này

5.74

device

• Common: chứa các thông tin xác thực về GPS và các đoạn script cho phép trích xuất các phần nhị phân liên quan đến một thiết bị cụ thể để đưa vào image build

• Generic: chứa cấu hình của thiết bị chung được

gọi là “goldfish” và được sử dụng để build image cho máy ảo (emulator)

• Google: chứa các mã nguồn Accessory Development Kit (ADK) Nó chứa một DEMOKIT Android App cho phép chúng ta điều khiển ADK board ADK là một thực thi tham chiếu (reference implementation) cho các nhà

sản xuất phần cứng, đây có thể là điểm bắt đầu cho việc làm các phụ kiện Android (Android accessories)

• Sample: chứa các ví dụ mẫu hoàn chỉnh cho cách

105

12https://source.android.com/compatibility/cts/

Trang 35

viết thư viện chia sẻ riêng của người phát triển cho Android mà không cần chỉnh sửa Android Framework Nó cũng chỉ cách để viết JNI code được bao gồm trong thư viện và một ứng dụng client sử dụng như một thư viện

docs

thư mục con source.android.com, nơi đây chứa tất

tĩnh, chúng ta có thể xem kết quả của quá trình build

tại http://source.android.com

27.2

external

frameworks

Thư mục rất quan trọng, bởi vì nó chứa mã nguồn

Activity, Services, …

Ở đây cũng chứa các mapping giữa mã C, C++ và

mã Java

1.19 GB

hardware

mà thông qua các HAL modules, các thư viện chia

94.4

libcore

39.8

libnativehelper

134 KB

ndk

out

thư mục này sẽ chứa các file image sẵn sàng cho

13http://harmony.apache.org/

Trang 36

các thư mục con như out/product/generic/ cho

emulator image, thư mục out/host/linux-x86/ chứa

zipalign, dexdump, …

packages

Camera, Calculator, Dialer, Launcher, Settings, …

tương ứng với lớp Ứng dụng trong mô hình kiến trúc Android

303

pdk

506 KB

system

Đây được xem là lõi linux nhúng vào “trái tim” của Android Đây là hệ thống Linux thu nhỏ quản lý việc

23.9

vender

AOSP Thư mục này tương quan và tương ứng với thư mục ~aosp/device/

60.7

Để có cái nhìn tổng quan về ánh xạ các thư mục trên đến mô hình kiến trúc Android, ta xem xét hình 6:

Trang 37

Như vậy, ta có thể thấy rằng, trong cấu trúc các thư mục của AOSP chứa rất

Trang 38

Các thư mục khác là những bộ công cụ, thư viện hỗ trợ cho phát triển, build mã

Kích thước (~MB) (Android 6.0)

obex

trao đổi dữ liệu giữa các thiết bị dùng cổng giao tiếp

261 KB

packages

InputDevice, SystemUI (status bar, navigation bar,

…), Wallpaper, …

17.7

Trang 39

tools

Language), …

59.5

2.7 Hi ểu về cấu trúc cơ bản kernel Android

Như đã trình bày ở trên, kernel Android không được cung cấp chung với bộ

https://android.googlesource.com/kernel/, có thể vì các lý do như:

kernel Android

14 Building Kernels: https://source.android.com/source/building-kernels

15 Mã nguồn kernel goldfish: https://android.googlesource.com/kernel/goldfish

Trang 40

arch

89

block

969 KB

Ngày đăng: 23/12/2018, 06:14

Nguồn tham khảo

Tài liệu tham khảo Loại Chi tiết
[1] Sven Bugiel., et al. (2012), “Towards Taming Privilege-Escalation Attacks on Android” Sách, tạp chí
Tiêu đề: Towards Taming Privilege-Escalation Attacks on Android
Tác giả: Sven Bugiel., et al
Năm: 2012
[2] Long Lu, et al. (2012), “CHEX: Statically vetting Android apps for component hijacking vulnerabilities”, The 2012 ACM conference on Computer and communications security, New York, NY, USA. p. 229-240 Sách, tạp chí
Tiêu đề: CHEX: Statically vetting Android apps for component hijacking vulnerabilities”
Tác giả: Long Lu, et al
Năm: 2012
[3] Steven Arzt, S.R., et al. (2014), “FlowDroid: Precise Context, Flow, Field, Object-sensitive and Lifecycle-aware Taint Analysis for Android Apps” Sách, tạp chí
Tiêu đề: FlowDroid: Precise Context, Flow, Field, Object-sensitive and Lifecycle-aware Taint Analysis for Android Apps
Tác giả: Steven Arzt, S.R., et al
Năm: 2014
[4] Damien Octeau, et al. (2013), “Effective inter-component communication mapping in android with Epicc: An essential step towards holistic security analysis”, IEEE 13th International Conference on Trust, Security and Privacy in Computing and Communications, IEEE, Beijing. p. 388-397 Sách, tạp chí
Tiêu đề: Effective inter-component communication mapping in android with Epicc: An essential step towards holistic security analysis”
Tác giả: Damien Octeau, et al
Năm: 2013
[5] Fengguo Wei, et al. (2014), “Amandroid: A Precise and General Inter- component Data Flow Analysis Framework for Security Vetting of Android Apps”, The 2014 ACM SIGSAC Conference on Computer and Communications Security, New York, NY, USA. p. 1329-1341 Sách, tạp chí
Tiêu đề: Amandroid: A Precise and General Inter-component Data Flow Analysis Framework for Security Vetting of Android Apps”
Tác giả: Fengguo Wei, et al
Năm: 2014
[6] Zhemin Yang, Min Yang (2012), “LeakMiner: Detect Information Leakage on Android with Static Taint Analysis”, Software Engineering (WCSE), 2012 Third World Congress on, IEEE, Wuhan. p. 101 - 104 Sách, tạp chí
Tiêu đề: LeakMiner: Detect Information Leakage on Android with Static Taint Analysis”
Tác giả: Zhemin Yang, Min Yang
Năm: 2012
[7] Min Zheng, Mingshen Sun, John C.S. Lui (2014), “DroidRay: A Security Evaluation System for Customized Android Firmwares”. ASIA CCS’14, p. 1-12 Sách, tạp chí
Tiêu đề: DroidRay: A Security Evaluation System for Customized Android Firmwares”
Tác giả: Min Zheng, Mingshen Sun, John C.S. Lui
Năm: 2014
[8] Tao Liu, Ralf Huuck (2015), “Case Study: Static Security Analysis of the Android Goldfish Kernel”, Vol.9109, p. 589-592 Sách, tạp chí
Tiêu đề: Case Study: Static Security Analysis of the Android Goldfish Kernel”, Vol
Tác giả: Tao Liu, Ralf Huuck
Năm: 2015
[9] Tô Ứng Vũ , Ph ạm Văn Hậ u (2017), “Nghiên c ứu, đề xuất phương pháp đánh giá tính b ảo mật của kernel Android dựa trên phương pháp phân tích tĩnh ” , Đạ i h ọ c Công ngh ệ Thông tin - ĐHQG -HCM Sách, tạp chí
Tiêu đề: N"ghiên cứu, đề xuất phương pháp đánh giá tính bảo mật của kernel Android dựa trên phương pháp phân tích tĩnh
Tác giả: Tô Ứng Vũ , Ph ạm Văn Hậ u
Năm: 2017
[10] Hu ỳ nh Ng ọ c T ị nh, Nguy ễ n Thanh Truy ề n, Ph ạm Văn Hậ u (2017), “Phát tri ển công c ụ tự động so sánh và đánh giá an toàn thông tin Android application framework” , Đạ i h ọ c Công ngh ệ Thông tin - ĐHQG -HCM Sách, tạp chí
Tiêu đề: P"hát triển công cụ tự động so sánh và đánh giá an toàn thông tin Android application framework”
Tác giả: Hu ỳ nh Ng ọ c T ị nh, Nguy ễ n Thanh Truy ề n, Ph ạm Văn Hậ u
Năm: 2017
[11] Nguy ễ n Lê Thanh Trúc, Ph ạm Văn Hậ u (2012), “Detecting privilege escalation attacks on android device” , Đạ i h ọ c Qu ố c t ế Sách, tạp chí
Tiêu đề: Detecting privilege escalation attacks on android device
Tác giả: Nguy ễ n Lê Thanh Trúc, Ph ạm Văn Hậ u
Năm: 2012
[12] Nguy ễ n Qu ố c Ki ệ n, Tr ầ n Quang Duy, Ph ạm Văn Hậ u (2016), “Security assessment of android application basing on CFG analysis” , Đạ i h ọ c Công ngh ệ Thông tin Sách, tạp chí
Tiêu đề: Security assessment of android application basing on CFG analysis
Tác giả: Nguy ễ n Qu ố c Ki ệ n, Tr ầ n Quang Duy, Ph ạm Văn Hậ u
Năm: 2016
[13] Lý Hoàng Tu ấ n, Ph ạm Văn Hậ u (2016), “Nghiên c ứu cơ chế phát hiện rõ rĩ thông tin b ằng phương pháp kết hợp phân tích tĩnh và động trên Adriod”, Đạ i h ọ c Công ngh ệ Thông tin - ĐHQG -HCM Sách, tạp chí
Tiêu đề: Nghiên cứu cơ chế phát hiện rõ rĩ thông tin bằng phương pháp kết hợp phân tích tĩnh và động trên Adriod”
Tác giả: Lý Hoàng Tu ấ n, Ph ạm Văn Hậ u
Năm: 2016
[14] William Klieber, et al. (2014), “Android Taint Flow Analysis for App Sets” Sách, tạp chí
Tiêu đề: Android Taint Flow Analysis for App Sets
Tác giả: William Klieber, et al
Năm: 2014
[15] Cong Zheng, et al. (2012), “SmartDroid: an Automatic System for Revealing UI- based Trigger Conditions in Android Applications” Sách, tạp chí
Tiêu đề: SmartDroid: an Automatic System for Revealing UI-based Trigger Conditions in Android Applications
Tác giả: Cong Zheng, et al
Năm: 2012
[17] Zeineb Zhioua, Stuart Short, Yves Roudier (2014), “Static Code Analysis for Software Security Verification: Problems and Approaches”, Computer Software and Applications Conference Workshops (COMPSACW), IEEE 38th International, IEEE, Vasteras, p. 102 - 109 Sách, tạp chí
Tiêu đề: Static Code Analysis for Software Security Verification: Problems and Approaches”
Tác giả: Zeineb Zhioua, Stuart Short, Yves Roudier
Năm: 2014
[19] Collin McMillan, Mark Grechanik, Denys Poshyvanyk (2012), “Detecting Similar Software Applications”, ICSE, p. 364-374 Sách, tạp chí
Tiêu đề: Detecting Similar Software Applications”
Tác giả: Collin McMillan, Mark Grechanik, Denys Poshyvanyk
Năm: 2012
[18] Wikipedia, List of tools for static code analysis (Nov. 2017), https://en.wikipedia.org/wiki/List_of_tools_for_static_code_analysis Link
[20] 25+ Useful Document and File Comparison Tools (Aug.2011), http://www.noupe.com/business-online/25-useful-document-and-file-comparison-tools.html Link
[23] Google. Android Open Source Project. (Nov 2017), https://source.android.com Link

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w