- Từ các ý tưởng ban đầu đã đưa ra, chúng tôi sẽ đi vào triển khai thực hiện code cáccặp ứng dụng Android đối với từng kỹ thuật đã tìm hiểu được, từ đó chúng tôi sẽnghiên cứu về cách mà
Trang 1ĐẠI HỌC QUOC GIA TP HO CHÍ MINH TRUONG DAI HOC CONG NGHE THONG TIN KHOA MANG MAY TINH VA TRUYEN THONG
NGUYEN CHÍ ĐỨC
NGUYÊN QUỐC BẢO
KHÓA LUẬN TÓT NGHIỆP
NGHIÊN CỨU CAC GIAO TIẾP PHI CHÍNH THONG
Trang 2ĐẠI HỌC QUOC GIA TP HO CHÍ MINH TRUONG DAI HOC CONG NGHE THONG TIN KHOA MANG MAY TINH VA TRUYEN THONG
NGUYEN CHi DUC - 17520361 NGUYEN QUOC BAO - 17520274
KHOA LUAN TOT NGHIEP
NGHIÊN CỨU CAC GIAO TIEP PHI CHÍNH THONG
TRONG CAC UNG DUNG ANDROID
A STUDY ON COVERT CHANNELS IN ANDROID
APPLICATIONS
KY SU NGANH AN TOAN THONG TIN
GIANG VIEN HUONG DAN
TS NGUYEN TAN CAM
TP HO CHi MINH, 2021
Trang 3DANH SÁCH HỘI DONG BẢO VỆ KHÓA LUẬN
Trang 4LỜI CẢM ƠN
Để có được kết quả luận văn này, ngoài những nỗ lực cá nhân mà chúng em
đã bỏ ra thì phải kể đến công sức của bạn bè, người thân, gia đình, thầy cô đã đóng góp một phan công nhỏ giá trị cả về tri thức và tinh thần cho khóa luận này Vì vậy
mà chúng em xin giành ra đôi dòng tâm sự để viết ra lời cảm ơn đến bạn bè, thầy cô
và người thân của mình, những người đã quân tâm chúng em trong suốt thời gian qua.
Đầu tiên, chúng em xin gửi lời cảm ơn chân thành đến toàn thể quý Thầy/Cô
của Trường Dai học Công nghệ Thông tin — Đại học Quốc gia Thành phố Hồ Chí Minh, đặc biệt nhất là quý Thầy/Cô khoa Mạng máy tính và Truyền thông, những
người đã giảng dạy những kiến thức và bài học bồ ích trong suốt thời gian ngồi trên
ghế nhà trường Các thầy cô không chỉ dạy dỗ chúng em về mặt tri thức mà còn dạy
dỗ về đạo đức nghề nghiệp dé tránh xa con đường chúng em lỗi rat dé mắc phải khi
theo học an toàn thông tin.
Chúng em cũng xin đặc biệt cảm ơn TS Nguyễn Tan Cầm, giảng viên hướng
dẫn đã chỉ dẫn chúng em hoàn thành khóa luận Và cũng chân thành cảm ơn Thầy Cầm đã dạy dỗ nhóm cũng như truyền đạt kiến thức, kinh nghiệm lại cho chúng em,
giúp chúng em trưởng thành hơn trong nghề và trong cuộc sóng.
Cuối cùng, nhóm xin cảm ơn những giá trị tỉnh thần đã mang đến cho nhóm trong suốt quá trình học tập và nghiên cứu Cám ơn gia đình đã làm điểm tựa vững
chắc cho chúng em được theo học dưới mái trường UIT Cám ơn những người bạn đồng hành, những sinh viên của lớp ANTT2017 đã cùng nhau trải qua một chặng đường day chông gai, vat vả Xin chân thành cảm ơn tat cả!
Nhóm tác giả
Trang 5Chương 1 TONG QUAN - - S3 1 1 1511 111511111111111111111 111111111111 11111101111 11011111 re 2
1.1 Giới thiệu Chung - - - s6 s1 1111911911 11T HH it 2
2.1.4 Thưywiện C/C++ thuần -c:2ct 2x22 tri 9
2.1.5 Java APL oo 9
2.1.6 Các ứng dụng của hệ thong ccsccssesscsscssessessessessessessessessessessessessessesssssssessessusaeeseeaes 9 2.2 Giao tiếp giữa các tiến trình ¿6-5252 21 21 1521511212121121111121111111 1111111111 1 re 12 2.3 Giới thiệu về kỹ thuật kênh truyền bí mậtt 2-2 + 2E +E+EE+E£EE+E£EESEEZEeEEEErEererrerxred 13
2.3.1 Storage Channn€Ì§ - - - c1 HH HH HH it 13
2.3.2 Timing ChanneÌS - - 5 5 3 E111 11993111 111 99101 1n tư n 14
Chương 3 TRIEN KHAI MOT SO KÊNH GIAO TIẾP PHI CHÍNH THONG TREN
3.2.1 Tổng quan về ứng dụng - + 2 +S2+E£SE+EE+E£EE£EEEEEEEEEEEEEEEEEEEE21E 1E cer 20
3.2.2 Xây dựng Ứng dụng, - c2 +1 TT HT TH HH nh nh HH nh 20 3.2.3 Phân tích cấu trúc và hoạt động của ứng dụng - 2 - 2 +s+£zze+z+zsezxece+ 23
3.2.4 01008 -0017 26
3.3.Kỹ thuật covert channel sử dung âm lượng - << + + E339 ng key 27
3.3.1 Tổng quan về ứng dụng -2¿ 2222 ++++++E+£EE+2E++EEtEE+2EEtEEerxvzrrerxrzrrerree 27
3.3.2 Xây dựng Ung dụng - - - 11111 TH HH nà 27 3.3.3 Phân tích cấu trúc và hoạt động của ứng dụng - 2 2 2+sz+s++£+zxzxezsees 30
Trang 63.3.4 Đánh giá HH n2 2 cu 34
3.4.Kỹ thuật covert channel sử dụng lịch SỬ CUGC ØỌI G111 vn ng 35
3.4.1 Tổng quan về ứng dụng - ¿2 +SE+E£EE+EE+E£EEEEEEEEEE2EE7EE12121217111 1 xe 35
3.4.2 Xây dựng ứng dụng - - - c1 1111191 HH HH HH kh 35 3.4.3 Phân tích cấu trúc và hoạt động của ứng dụng - 2 - 2 +2s+£zzz+£zzxezxscez 35
3.4.4 10085000107 39
Chương 4 PHAT HIỆN GIAO TIẾP PHI CHÍNH THONG TREN ANDROID 41
4.1.Tổng quan về chương trÌnh - ¿2-52 SE+S£+E£SE+E£EE£EEEEEEEEEEEEEE2171112121711 71111 ce 41
4.2 Xay dung churong trinh 0 ố e 41
4.3.Phân tích cấu trúc và hoạt động của chương trinh c.cccccccccessesessessesessesseseesessssesseseeseesees 42
4.3.1 Cau trúc chương trình: ¿+©+++E++E+tEE++EEtEEtEEerxerxrzrrerxrrrrerxee 42
4.3.2 Phân tích hoạt động của Ứng dỤng: - - 113111 ng vn ng ky 42
4.4.Đánh giá về chương trình phát hiện xâm nhập - 2-52 +2++2£++£xzz+zzxezxvzzxzrsez 46 Chương 5 THU NGHIỆM 4⁄7 iốt À 48
5.1.Covert Channel bang kỹ thuật sử dụng Clipboard: -¿-2- + 55+22+2zxzs+zz++zx+zz+zcsez 48 5.2.Covert Channel bang kỹ thuật sử dụng độ sáng màn hình: 2 s2 +s+£zs+zszsz 50
5.3.Covert Channel bằng kỹ thuật sử dụng phone call log : 2 + sz2s+2z++zx+zs+zcs+2 52
5.4.Covert Channel bang kỹ thuật sử dụng Audio: 2 2 +22 £+E+E2E+£E+EzEerzeerxzed 54
5.5.Phat hiện các kỹ thuật Covert Channel: 0.0.0 ccceeceesecsceeseeceeeceseeeaeceaeeeseceaeceaeeeeeeneeeneersees 56
Chương 6 4C VI cC Ẩ“.a 59
6.1 Kết Luận -c:-5+t222112211222112721122112221127T1.T11.T1 TT re 59
6.1.1 Kết UA dat tì 59
6.1.2 Ưuđiểm ccctnhnhThh nHH ng hhưưe 60 6.1.3 Hạn chế c nh Hưng HH hư 61
5901018000 0001058 ỪỢỘỢ'- 61
Trang 7Danh mục hình
Hình 1.1: Kênh truyền bí mật trong gói tin TCP/IP 2- £+2+E£+£E+£E++£xzzeerxez 3Hình 1.2: Quá trình phát triển kênh truyền bí mật dựa trên xử lý anh và máy học 4Hình 1.3: Cách hoạt động của kênh truyền dựa trên việc thu thập thông tin từ
009499019) 0100188 4 Hình 2.1: Quá trình biên dich mã ]aVa - 5 5 2 2221823113333 rrs 8
Hình 2.2: Toàn cảnh về nền tảng Android c.eccescesseesseessesseessesssessesssesssssecsessesssesseesees 11
Hình 3.1: Mô hình ứng dung gửi dữ liệu băng Clipboard -2- 2 sec: 16Hình 3.2: Mô hình ứng dụng đọc dữ liệu bằng Clipboard -2- 2 szsz 5z: 16
Hình 3.3: Mô hình ứng dụng gửi dữ liệu bằng độ sáng màn hình - 21Hình 3.4: Mô hình nhận dữ liệu băng đọc độ sáng màn hình - - + -s++<<<<+ 22Hình 3.5: Mô hình ứng dụng gửi dữ liệu băng audio -2- 2+ ©2+sz+zs+zxzzcxeee 28Hình 3.6: Mô hình ứng dụng nhận dữ liệu bằng cách đọc giá tri audio - 29Hình 3.7: Mô hình gửi dit liệu băng ghi vào phone call log -5- 5z 5252252 35Hình 3.8: Mô hình nhận dữ liệu bằng cách đọc phone call log -2- 22 35Hình 4.1: Mô hình chương trình phát hiện tan công bang các kỹ thuật covert channel.41Hình 5.1: Demo gửi dit liệu bằng kỹ thuật sử dụng Clipboard -z¿-: 48
Hình 5.2: Demo nhận dữ liệu bằng cách đọc Clipboard - ‹-s++x+eex+exsesssss 49
Hình 5.3: Demo gửi dữ liệu bằng kỹ thuât sử dụng độ sáng màn hình - 50Hình 5.4: Demo nhận dữ liệu bằng cách đọc độ sáng man hình 5+5 51Hình 5.5: Demo gửi dữ liệu bằng kỹ thuật ghi vào phone call log -. - 52Hình 5.6: Demo đọc dữ liệu bằng kỹ thuật phone call log -2- 2 2z 5225: 53Hình 5.7: Demo gửi dữ liệu bằng kỹ thuật sử dung audio - 2 s2 sz+sz+se2 54Hình 5.8: Demo nhận dữ liệu bằng kỹ thuật đọc giá tri audIO - - «+-s<+<<<+ 55Hình 5.9: Demo phát hiện Covert Channel bằng Clipboard -2- s25: 56Hình 5.10: Demo phát hiện Covert Channel bằng Screen brightness - 56
Hình 5.11: Demo phát hiện Covert Channel bằng Audio -2- 2 s25: 57
Hình 5.12: Demo phát hiện Covert Channel băng Phone call log . ‹2- - 57
Trang 8Danh mục bảng
Bang 3.1: Bảng phân tích và chuyền đôi dữ liệu trong kỹ thuật đặt độ sáng màn hình 23
Bảng 3.2: Bảng phân tích và chuyên đổi dữ liệu khi đọc độ sáng màn hình 25Bang 3.3: Bang phân tích và chuyền đổi dit liệu khi thực hiện thay đổi giá trị audio 30Bảng 3.4: Bang phân tích và chuyên đổi dit liệu khi đọc giá trị của audio 32Bảng 5.5: Bảng số liệu khi chạy thử nghiệm mã phát hiện kênh truyền bi mật 58
Trang 9Danh mục từ viết tắt
API: Application Programming Interface
HAL: Hardware Abstraction Layer
JIT: Just-In-Time
AOT: Ahead of Time
CTF: Capture The Flag
AI: Artificial Intelligence
DEX: Dalvik Executable
IPC: Inter Process Communication
ART: Android Runtime
Trang 10TOM TAT KHÓA LUẬN
Hiện nay việc sử dụng smartphone đã phổ biến với đại đa số mọi người, sựtiện lợi và đa chức năng khiến cho smartphone trở thành công cu giao tiếp, trao đối,kết nối, với mọi ngwoi Dan trở nên quan trọng trong cuộc sông của con người, đặc
biệt là thời đại này, nơi mọi thứ được lưu trữ trong điện thoại: tài khoản ngân hàng,
thông tin cá nhân, ví điện tử, email, Sự tiện lợi lại tỷ lệ thuận với yếu tố bảo mật,
càng có nhiều tính năng thì có khả năng tồn tại nhiều lỗ hồng
Điều này rất hấp dẫn với những tin tặc, những kẻ tắn công muốn lấy cắp thông
tin của người khác Với việc đa số các thông tin nhạy cảm được lưu ở trong điện thoại
cá nhân, chỉ cần tin tặc tấn công vào đó thì có thể khai thác được rất nhiều thứ, ảnhhưởng trực tiếp chúng tôi cá nhân hoặc gián tiếp chúng tôi những người khác, lớnhơn là những cơ quan, tổ chức, doanh nghiệp
Với những van dé đó thì đã có một kỹ thuật tan công được áp dụng vào trongsmartphone, đó là sử dụng những giao tiếp phi chính thống trong smartphone, cònđược gọi là kỹ thuật covert channel, kỹ thuật này đánh cắp những thông tin nhạy cảmcủa nạn nhân, mà họ không hé hay biết, và hệ thống rất khó dé phát hiện kiểu tấn
công này Điều này thúc day nhóm nghiên cứu về kỹ thuật này
Trong phạm vi khóa luận này thì nhóm chỉ nghiên cứu trên hệ điều hành
Android, cũng như các ứng dụng sẽ được xây dựng và thực hiện trên đây Cùng với
đó là mô hình phân tích tĩnh dé phát hiện mối nguy tiềm tàng trong mã nguồn của
ứng dụng.
Trang 11Chương! TONG QUAN
1.1 Giới thiệu chung
Là thời đại của công nghệ thông tin, bất cứ điều gì liên quan chúng tôi dữ liệu
đều rất nhạy cảm, đặc biệt là thông tin liên quan chúng tôi chính phủ, doanh nghiệp,các công ty lớn, hay là những cá nhân đang hằng ngày sử dụng những công nghệ đó
Với việc dữ liệu đang hướng đến việc số hóa, thì việc tấn công dé lấy cắp nhữngthông tin quan trọng đối với tin tặc là rất hấp dẫn Mỗi ngày đều xảy ra các cuộc tấn
công nhằm vào các tổ chức dé lay cắp thông tin của người dùng, qua đó tin tặc có thédem đi trao đôi ở thị trường đen, hoặc nhăm dé trục lợi Kỹ thuật covert channel làmột kỹ thuật hết sức tinh vi, kỹ thuật nay cho phép truyền thông tin đi nhưng với dang
ân giấu đưới một hình thức khác, được gọi là channel Kỹ thuật này yêu cầu có haibên giao tiếp với nhau thông qua một kênh truyền, đa phần hoạt động theo cơ chế bêngửi ân giấu thông tin truyền qua kênh, bên nhận sẽ trích xuất dữ liệu từ bên gửi theo
dạng xác định.
Việc nghiên cứu về covert channel hiện đang nhận được sự quan tâm đối vớicộng đồng bảo mật trên thế giới nhưng ở Việt Nam thì chủ đề này vẫn còn mới mẻ
Nếu chúng ta tìm kiếm về covert channel trên những ứng dụng tìm kiếm nỗi tiếng thì
ở Việt Nam rất hiếm bài báo nói về chủ đề này Với việc ngày càng nhiều các công
nghệ tiên tiến, thi covert channel cũng có rất nhiều biến thể khác nhau, tiêu biểu nhưviệc truyền gói tin nhưng giấu thông tin bí mật trong thời gian truyền gói, hay việcthay đổi âm lượng của smartphone dé gửi dữ liệu mà người dùng không hề hay biết
Có rất nhiều bài báo nổi tiếng được kể đến như nghiên cứu tạo ra ứng dụng
Soundcomber, một phần mềm độc hại dựa trên cảm biến âm thanh và hình ảnh của
điện thoại thông minh, việc công bồ bài báo này khiến cho giới bảo mật có thêm cáinhìn rõ hơn về kỹ thuật covert channel
Nhìn chung các bài báo có thiên hướng nghiên cứu về cách hoạt động của cácloại kênh khác nhau, từ đó tạo ra các kỹ thuật mới, mục đích cuối cùng là dé tìm cáchphòng thủ được phương thức tấn công hết sức tinh vi và phức tạp này, đa phần được
Trang 12xây dựng trên ứng dụng smartphone, vì ở đây chứa đựng rât nhiêu thông tin nhạy cảm
của các cá nhân, và với việc smartphone rat phô biến, hau hết mỗi người đều có một
chiêc smartphone bên người, thì việc thực hiện những cuộc tân công như thê này là
vô cùng nguy hiêm và khân câp.
Các nghiên cứu liên quan
Li và cộng sự [1] đề xuất giải pháp phân tích kênh giao tiếp phi chính thống theo thời
gian (Covert timing channel)
Transmission times: Ts Receiving times: Tr
wiih
d a,
Message bits b1,b2,b3, bn ie Extracted bits b1,b2,b3, bn
7 ^ ' Analyze the IAT |
» Packet2 - 1 Packet 2 >| Packet} - Packetn |
Hình 1.1: Kênh truyền bí mật trong gói tin TCP/IP
Trong bài báo này nhóm tác giả đã tiễn hành nghiên cứu việc truyền thông tin bí mậtqua TCP/IP, thông tin được an giấu dựa vào thời gian delay của gói tin, từ đó tìm ra
cách ngăn chặn dựa trên việc phân tích luồng lưu thông của gói tin ở kênh bình thường
và ở kênh bí mật, tìm hiểu được cách truyền tin hợp lệ ở kênh thường từ đó áp dụngvào kênh bí mật và các điều kiện trong mạng có ảnh hưởng đến việc này hay không.Qua đó áp dụng kênh này tùy vào những ngữ cảnh khác nhau dé tìm ra sự hiệu qua
của chúng.
Trang 13Yuanzhu Chen [2] và cộng sự giới thiệu ứng dụng SnapCatch phát hiện kênh truyền
bí mật dựa trên xử lý ảnh và máy học
Hình 1.2: Quá trình phát triển kênh truyền bí mật dựa trên xử lý ảnh và máy học
Bài báo này nghiên cứu việc phát hiện kênh truyền bí mật dựa trên xử lý ảnh và máy
học Có các điểm chính cần lưu ý:
+ Nhóm tác giả thực hiện chuyền thời gian chúng tôi trong kênh truyền bí mật sangdạng ảnh màu hai chiều, từ đó đưa vào máy học đề thực hiện phân loại
+ Từ đó nhóm tác giả phát triển việc phối hợp việc phát hiện kênh truyền bí mật dựa
trên việc xử lý ảnh và máy học với nhau.
+ Cuối cùng nhóm tác giả đề xuất một cơ chế sử dụng bộ phân loại của nhóm dé xác
định chính xác nơi an giấu thông tin trong kênh truyền bí mật Giúp dich vụ tốt hơn
và kênh truyền ôn định hơn
Kehuan Zhang [3] và cộng sự giới thiệu ứng dụng SoundComber, một ứng dụng sử
dụng kênh truyền bí mật đề truyền thông tin qua mạng
microphone
audio recording microphone collection
rocessing
+
profile data database extraction
Trang 14Trong bài báo này nhóm tác giả đã nghiên cứu tạo ra một ứng dụng độc hại với yêu
cầu những quyền thấp nhất trong điện thoại thông minh, đó là sử dụng quyền truy cậpmicrophone, đây là quyền cơ bản nhất trong điện thoại thông minh và sẽ là hợp lệ
nếu một ứng dụng yêu cầu quyên này, ứng dụng này không sử dụng đến các quyền
khác liên quan chúng tôi bảo mật như là yêu cầu mạng Với một ứng dụng sử dụng
cả mạng và ghi âm, thì đây là một sự kết hợp vô cùng nguy hiểm nên sẽ bị các cơ chế
bảo mật phát hiện, nên ứng dụng này không có sử dụng Internet Vì vậy nên nhóm
tác giả sẽ sử dụng thêm một ứng dụng nữa có quyền truy cập vào mang, từ đó truyềnthông tin qua một kênh truyền đến ứng dụng thứ hai, ứng dụng này sẽ trích xuất dữ
liệu thông tin rồi gửi đi qua mang Ứng dụng độc hại nay được tác giả công bồ gọi là
Soundcomber.
Trên hình vẽ là co chế hoạt động của hai ứng dụng, bên trái là cau trúc hoạt động củaứng dụng với phần thu thập và giao tiếp với ứng dụng nhận tin, hai ứng dụng truyền
dữ liệu cho nhau thông qua kênh truyền bí mật, ứng dụng nhận dir liệu sẽ trích xuất
dữ liệu rồi gửi đi thông qua mạng
Qua đó thấy được tình hình nghiên cứu về kênh truyền bí mật không phải quá xa lạ
mà còn rất phổ biến, đem đến cho ngành bao mật một góc nhìn bao quát và chỉ tiếthơn về cơ chế hoạt động của các kênh truyền bí mật.
Công việc chính của khóa luận
Công việc chính của khóa luận chúng tôi sẽ tập trung vào các vấn đề sau:
- Nghiên cứu trước về dé tai được giao là Covert Channel, tìm hiểu về các thuật ngữcũng như các kỹ thuật liên quan đến Covert Channel
- Nắm các kiến thức cơ bản về Covert Channel từ các tài liệu tham khảo đã đọc Từ
đó bắt đầu hình dung về các hướng triển khai và xây dựng ứng dụng trong tương lai
- Tìm hiểu các kiến thức nén tảng về môi trường thực thi đó là Android, tìm hiểu cách
mà hệ thống android thực thi ứng dụng, cũng như hệ thống sẽ gọi tới ứng dụng đó
như thê nào.
Trang 15- Tìm hiểu và học các kiến thức nền nhằm phục vụ cho việc thực hiên đồ án như: tìm
hiểu cách sử dụng Android Studio, tìm hiểu môi trường thực thi JDK, học thêm về
ngôn ngữ lập trình mới là Java.
- Bàn luận và đưa ra các ý tưởng ban đầu đề xây dựng nên các ứng dụng, từ đó giúpchúng tôi có thé hình dung khái quát mô hình tông thé và những công việc chúng tôicần làm
- Từ các ý tưởng ban đầu đã đưa ra, chúng tôi sẽ đi vào triển khai thực hiện code cáccặp ứng dụng Android đối với từng kỹ thuật đã tìm hiểu được, từ đó chúng tôi sẽnghiên cứu về cách mà ứng dụng đó hoạt động, cũng như cách mà nó truyền dit liệuqua lại giữa hai ứng dụng với nhau bằng các kỹ thuật Covert Channel
- Triển khai các ứng dụng đã được thực thi và xem kết quả đạt được có đạt yêu cầu
và có như mong đợi hay không Từ đó sẽ đưa ra các biện pháp khắc phục hoặc cáchướng phát triển dé hoàn thiện ứng dung đó tốt nhất có thê
- Từ các ứng dụng đã triển khai về mặt tan công, chúng tôi sẽ dựa vào việc phân tíchhoạt động và cách ứng dụng truyền dữ liệu đi, chúng tôi sẽ đưa ra các giải pháp cũngnhư các ý tưởng dé xây dựng một chương trình chống lại các hướng tan công này
- Sau khi đã có ý tưởng triển khai, chúng tôi đi vào thực hiện xây dựng chương trình
với nhiệm vụ thực hiện công việc phát hiện các ứng dụng có sử dụng những kỹ thuật covert channel này hay là không.
- Sau khi đã hoàn thiện chương trình, chúng tôi sẽ xem qua lại và cùng nhau đưa ra
các ý tưởng của tương lai, nhăm mục đích phát triển thêm chương trình này một cách
hoàn thiện nhất có thé
Trang 16Chương2 CƠ SỞ LÝ THUYET
2.1. Tổng quan về hệ điều hành Android
Android là một platform dựa trên Linux được phát triển bởi Google và được xem nhưmột hệ điều hành cho thiết bị di động
Hiện nay đã được mở rộng không chỉ là cho mobile, tables mà còn là các thiết bị đeotay, TV, và các thiết bị thông minh khác
Android có các ứng dụng được cài đặt san và hỗ trợ người dùng cài đặt ứng dung thứ
ba trên Google Play hoặc các ứng dụng khác.
Các ứng dụng bên trong Android được xây dựng băng nhiều lớp khác nhau Mỗi lớpđịnh nghĩa một giao diện và nhiều dich vụ khác nhau
2.1.1 Nhân Linux
Nền tảng của hệ điều hành Android bắt nguồn từ nhân Linux Ví dụ như Android
Runtime (ART) phải phụ thuộc vào nhân của Linux dé thực hiện các chức năng cơbản nhất như quan lý bộ nhớ của hệ thống hay là co chế phân luồng
Bằng việc sử dụng nhân Linux thì Android đã có một nền tảng vững chắc về các cơchế bảo mật, bởi vì Linux đã được chỉnh sửa, nâng cấp qua rất nhiều năm bởi cộngđồng bảo mật trên thế gidi, khién cho Linux ngay cang ồn định và được các tô chức
lớn cũng như các chuyên gia bảo mật khác tin dùng.
Các cơ chế bảo vệ mà nhân Linux có thể cung cấp như:
- Mô hình cấp quyền cho người dùng
- Biệt lập tiến trình
- Cơ chế mở rộng dé bảo vệ giao tiếp giữa các tiến trình
- Có khả năng xóa bỏ những phần không cần thiết và những phần có nguy cơ bảo mật
tiềm ân trong nhân
Với việc đây là một hệ điều hành đa người dùng thì Linux cũng cung cấp việc cô lập
tài nguyên của người dùng này với người dùng khác.
Với những yếu tô nêu trên thì nhân Linux rất phù hợp dé phát triển hệ điều hànhAndroid với sự tiện lợi, khả năng mở rộng cao, cũng như các yếu tố bảo mật, xa hơn
là việc quản lý trong bộ nhớ.
Trang 172.1.2 Hardware Abstraction Layer (HAL)
Phía trên lớp nhân Linux là một lớp được gọi là Hardware Abstraction Layer, lớp nay
định nghĩa các giao diện chuan dé giao tiếp với các thành phan của phần cứng Lớp
này cũng cung cấp khả năng gọi chúng tôi phần cứng thông qua giao diện lập trìnhứng dụng (API) của Java, bao gồm rất nhiều các thư viện, mỗi thư viện được sử dụng
để giao tiếp với một thành phần phần cứng nhất định, như là các mô-đun camera hoặcbluetooth Khi một API được gọi để truy cập chúng tôi một phần cứng nhất định, hệ
thống Android sẽ nạp những thư viện dé thực hiện việc đó Giống như Android có
thé gọi chúng tôi nó như một lệnh gọi chúng tôi hệ thống khi can
2.1.3 Android Runtime (ART)
Ung dụng của Android được viết bằng Java và được biên dịch dưới dạng Dalvik
bytecode, khác với Java bytecode Dalvik bytecode được tạo khi lần đầu tiên biêndịch mã Java thành tệp tin có đuôi class, sau đó chuyên từ Java bytecode thành dangDalvik có đuôi là dex bằng công cụ dx
Trang 18Với Android có phiên bản từ 5.0 trở lên thì mỗi ứng dụng sẽ khởi động tiến trình củachính nó với ban ART xác định ART được tạo ra dé chạy nhiều máy ảo trên những
thiết bị có bộ nhớ hạn chế bang cách thực thi các tệp tin DEX, việc thực thi tệp tinnày sẽ giúp giảm thiểu sử dụng bộ nhớ, cải thiện tốc độ xử lý Một số tính năng ARTcung cấp như:
- Ahead-Of-Time (AOT) và Just-in-Time (JIT)
- Từ Android phiên ban 9.0 trở lên thì mã DEX được chúng tôi ưu nhỏ gon hơn.
2.1.4 Thu vién C/C++ thuần
Những hệ thống cốt lõi của Android như là ART và HAL, được xây dựng dựa trên
bộ mã thuần ở trong những thư viện C/C++ Nền tảng Android cung cấp API dựa trên
Java cung cấp những chức năng trong các thư viện chuẩn này cho ứng dụng
2.1.5 Java API
Tất cả các chức năng của hệ điều hành Android đều có san dé sử dung thông qua cácAPI được viết bang ngôn ngữ Java Cac API này cung cấp day đủ dé có thé tạo ramột ứng dụng Android hoàn chỉnh chỉ đơn giản bằng việc sử dụng lại các thành phần
và dịch vụ cốt lõi như là:
- View System dé tạo ra các nút, trình duyệt nhúng và nhiều thành phan khác
- Resource Manager cho truy cập vào các tệp tin cần thiết
- Notification Manager cho phép ứng dụng thông báo trên thanh công cụ.
- Activity Manager quản lý các hoạt động của ứng dụng.
- Content Provider cho phép ứng dụng truy cập vào dtr liệu của các ứng dụng khác,
như là ứng dụng Danh bạ, để chia sẻ dữ liệu của chính ứng dụng đó
2.1.6 Các ứng dụng của hệ thống
Android cung cấp một bộ ứng dụng cốt lõi như Tin nhắn, Danh bạ, Lịch và nhiều ung
dụng khác Cac ứng dung nay không có những trạng thái đặc biệt như là ứng dụng
mà người dùng tự cài đặt Một ứng dụng của bên thứ ba có thé trở thành trình duyệt
mặc định, hoặc một bàn phím mặc định, nếu người dùng cài đặt (ngoại lệ là ứng dụng
Cài đặt của hệ thông)
Trang 19Ứng dung của hệ thống vừa dé người dùng sử dụng vừa dé cung cấp các chức năngquan trọng cho người phát triển dé có thể truy cập từ ứng dụng của họ.
Có thể tổng quát lại hoạt động của hệ điều hành Android như sau:
10
Trang 20Activity Location Package
View System Resource Telephony
Trang 21Tại lớp thấp nhất Android dựa vào nhân Linux để hoạt động Ở phía trên của nhân
Linux sẽ có một lớp được gọi là Hardware Abstraction Layer (HAL) định nghĩa các
giao diện chuẩn dé giao tiếp với các thành phan của phan cứng
Trong dalvik, bytecode được biên dich sang mã máy trong lúc chạy chương trình, qua
trình này được gọi là Just-In-Time, quá trình JIT lại gây ảnh hưởng chúng tôi hiệu
năng: mỗi khi ứng dụng chạy thì phải biên dịch lại Để cải thiện việc này thì ARTgiới thiệu AOT, như tên gọi trước thời hạn, thì ứng dụng sẽ được biên dịch trong lần
chạy đầu tiên, mã máy được biên dịch sẽ chạy trong các lần chạy tiếp theo, giúp cải
thiện hiệu suất và giảm tiêu thụ điện năng
Thêm một điều nữa đó là mỗi ứng dụng của Android không được truy cập vào phần
cứng, và chạy trong sandbox riêng, dé đảm bảo chính xác quản lý tai nguyên va ứngdụng Ví dụ như khi một ứng dụng bị xung đột dẫn đến đang tạm dừng thì sẽ khôngảnh hưởng chúng tôi những ứng dụng khác Tại cùng một thời điểm, ART kiểm soát
số lượng tài nguyên hệ thống cấp phát cho ứng dụng, ngăn một ứng dụng sử dụngquá nhiều tài nguyên
Giao tiếp giữa các tiến trình
Bởi vì các tiến trình được chạy sandbox nên dé các tiến trình giao tiếp được vớinhau thì nhà phát triển đã tạo ra IPC
Bao gồm các thành phần sau:
- Binder: một cơ chế gọi thủ tục từ xa được thiết kế để cho hiệu năng cao khi thựchiện bên trong một tiến trình hoặc giữa các tiến trình Được thực hiện bằng cách sửdụng các trình điều khiến tự tạo
- Intent: là một đối tượng truyền tin đơn giản dé cho các ứng dụng khác nhận được
và thực hiện hành động được truyền chúng tôi.
- Services: cung cấp trực tiếp giao diện bằng cách sử dụng Binder
- Content Provider: là một kho dit liệu cung cấp quyền truy cập dit liệu trên thiết bị.Thêm nữa, một số ứng dụng cé gắng triển khai IPC sử dụng các kỹ thuật Linux truyềnthống như socket Nhà phát triển lại khuyên rằng nên sử dụng IPC có sẵn của Android,
12
Trang 22cho phép xác định danh tinh của một ứng dụng đang kết nối với IPC và cài đặt những
cơ chế bảo mật cho từng IPC riêng
Giới thiệu về kỹ thuật kênh truyền bí mật
Covert channel là một dang tan công tạo ra khả năng dé chuyên thông tin của các đốitượng giữa các tiến trình mà không được phép giao tiếp giữa các tiến trình với nhau
theo chính sách bảo mật máy tính [1]
Covert channel sẽ chuyền thông tin theo một cách không thường dùng trong hệ thống,một cách theo kiểu bí mật hơn Giống như cái tên của kỹ thuật tấn công này, là ân
giấu dưới một kênh truyền bí mật, thoát khỏi cơ chế kiểm soát truy cập của một hệ
điều hành bởi vì kỹ thuật không sử dụng các cơ chế truyền dit liệu hợp pháp của hệ
thống máy tính, vì vậy nên không bi phát hiện hoặc điều khiến bởi các cơ chế bảomật của hệ điều hành
Thật ra mục đích đầu tiên của kỹ thuật này là dé bảo vệ sự riêng tư hoặc tăng cườngbảo mật thông tin quan trọng Tuy nhiên điều đó cũng tạo ra mặt tối là để sử dụngcho mục đích khác Dựa vào kỹ thuật này thì việc lay thông tin của mục tiêu hoantoàn khả thi Bất kì một kênh truyền nào cũng có thê làm thành một covert channel.Qua đó có thể tóm gọn lại định nghĩa về covert channel: bất kỳ một kênh giao tiếpnào cũng có thé bị khai thác bởi một tiến trình nào đó mà xâm phạm chính sách bảomật hệ thống.
Có thé phân ra làm hai loại chính: Storage Channels, Timing Channels
2.3.1 Storage Channels
Là một dạng giao tiếp mà ở đó có thé trực tiếp hoặc gián tiếp ghi thông tin vào mộtnơi lưu trữ bởi một tiến trình và được trực tiếp hoặc gián tiếp đọc thông tin đó bởi
một tiễn trình khác Có thé hiểu don giản là một tiễn trình ghi vào một nơi được chia
sé tài nguyên, trong khi một tiến trình khác đọc từ đó Có thé được sử dụng bởi nhiềutiễn trình trong cùng một máy vi tính hoặc giữa nhiều máy vi tính thông qua mạng
Có thé lấy ví dụ như là bộ nhớ tạm trong điện thoại di động, thì một ứng dụng có thé
đảm nhận việc ghi vào bộ nhớ tạm, một ứng dụng khác có thé đọc bộ nhớ tạm dé lấy
thông tin ra.
13
Trang 23channels, thì dạng này cũng ton tại ở một máy tính hoặc trên mạng Nhưng theo thực
tế thi dùng dạng này trên mạng sẽ khó thực hiện Vi dụ theo 6 cứng, một tiến trình
VỚI quyền cao có thể đọc toản bộ thiết bị, gọi là tiễn trình gửi, trong khi đó một tiếntrình khác với quyền thấp hơn gọi là tiến trình nhận
Muốn tạo ra một kênh truyền bí mật thì phải yêu cầu lập trình một cách khéo léo tùytheo hoàn cảnh, và tài nguyên được phép sử dung Vì vậy sẽ rất khó khăn dé tạo ramột kênh truyền bí mật thật sự vô hình
14
Trang 24Chương3 TRIẾN KHAI MỘT SO KENH GIAO TIẾP PHI CHÍNH THONG
© Ứng dụng thứ nhất sẽ có nhiệm vụ là thực hiện copy một giá tri plaintext va
đưa vào Clipboard Manager
® Ứng dụng thứ hai sẽ thực hiện đọc giá trị trong Clipboard Manager và in ra
màn hình ứng dụng Clipboard là một framework của android cho phép thực hiện copy va paste trên bộ
nhớ tạm Nó hỗ trợ cả kiểu đữ liệu đơn giản và phức tạp, bao gồm chuỗi văn bản, cấu
trúc dữ liệu phức tap, dtr liệu dòng văn bản và nhị phân và thậm chí cả nội dung ứng
dụng Dữ liệu văn bản đơn giản được lưu trữ trực tiếp trong bộ nhớ nhớ tạm, trongkhi dữ liệu phức tạp được lưu trữ đưới dang tham chiếu mà ứng dụng dán giải quyếtvới trình cung cấp nội dung Copy và Paste hoạt động cả trong một ứng dụng và giữa
các ứng dụng triển khai trên cùng một môi trường
Khi sử dụng framework Clipboard chúng ta cần đưa dữ liệu vào trong Object
Clipdata, sau đó day giá trị trong Clipdata vào trong bộ nhớ tạm Clipboard của hệthống bang cách sử dụng phương thức setPrimaryClip
15
Trang 253.1.2 Xay dung ứng dụng
Hình 3.1: Mô hình ứng dụng gửi dữ liệu bang Clipboard
APPLICATION 2
Hình 3.2: Mô hình ứng dụng đọc đữ liệu băng Clipboard
3.1.3 Phân tích cấu trúc và hoạt động của ứng dụng
3.1.3.1 Ung dụng thứ nhấtCấu trúc:
Phần 1: Bộ phận Input
Phần 2: Bộ phận đây dữ liệu vào Clipboard
Hoạt động:
Phần 1: Bộ phận Input
Ở đây chúng tôi sẽ sử dụng một Text Fields (EditText) để cho phép người dùng nhập
giá trị muốn đưa vào Clipboard, tiếp theo chúng tôi sẽ khai báo một biến value_copy
với kiêu dữ liệu là String dé chứa nội dung trong Text Fields rồi gọi chúng tôi hàmCopyToClipBoard() với tham số truyền vào là giá trị của value_copy như sau:
16
Trang 26Cac hành động này sé được đặt trong hàm setOnClickListener(), hàm nay sẽ được
thực thi khi user nhắn vào nut button, cụ thé sẽ được triển khai như sau:
@Override
public void onClick(View v) {
String value copy;
value_copy=editText.getText().toString();
})z
Khi gọi chúng tôi hàm CopyToClipBoardQ thì sẽ được chuyền chúng tôi bộ phận tiếp
theo là bộ phận đầy dữ liệu
Phan 2: Bộ phận day dữ liệu vào Clipboard
Sau khi dữ liệu từ EditText được truyền vào hàm CopyToClipBoard() lúc này chúng
tôi sẽ khai báo hàm CopyToClipBoard(String value_copy) dé thực hiện công việc
copy plaintext và đây vào clipboard hệ thống
Dé thực hiện đưa dit liệu vào Clipboard đầu tiên chúng tôi phải khai báo một biến
ClipboardManager dé gọi chúng tôi CLIPBOARD_ SERVICE nhằm mục đích chuẩn
bị cho việc day dữ liệu, chúng tôi sẽ khai báo như sau:
ClipboardManager manager = (ClipboardManager)
Tiếp theo, dé day được đữ liệu vào Clipboard hệ thống chúng tôi cần khai báo thêm
một biến Clipdata và gọi chúng tôi object newPlaintText dé gan giá trị cần day vào
một khay bộ nhớ tạm như sau:
ClipData clipData = ClipData.newPlainText ("text", value copy);
Cuối cùng chúng tôi sé sử dung object setPrimaryClip của Clipboard Manager dé
thực hiện đây giá trị trong Clipdata vào bộ nhớ tam Clipboard hệ thống:
17
Trang 27Sau khi chạy xong bước nay thì dữ liệu từ input đã được đưa thăng vào trong bộ nhớtạm của Clipboard phía hệ thống, lúc này nếu có ứng dụng nào hay bat kỳ thao tácnao của hệ thông muốn đọc đến phan nội dung của Clipboard Manager đều có thé
đọc được một cách dé dang, Source code đầy đủ của ham Copy dit liệu vào clipboard
như sau:
public void CopyToClipBoard(String value copy) {
ClipboardManager manager = (ClipboardManager)
ClipData clipData = ClipData.newPlainText ("text",
value copy);
Toast.makeText (getApplicationContext(), "Text
Copied", Toast LENGTH_SHORT) ;
}
3.1.3.2 Ung dụng thứ haiCấu trúc:
Phan 1: Bộ phận đọc dữ liệu từ Clipboard
Trong hàm setOnClickListener() chúng tôi sẽ gọi chúng tôi một function khác có tên
là PasteToClipboardQ với nhiệm vụ thực hiện đọc đữ liệu, thao tác gọi như sau:
@Override
public void onClick(View v) {
PasteToClipboard();
18
Trang 28Tiếp theo bên trong hàm PasteToClipboard() dé đọc được dữ liệu trong Clipboard
đầu tiên chúng tôi cũng sẽ cần khai báo một biến ClipboardManager với mục đích là
cho hệ thống biết chúng tôi muốn thao tác với dữ liệu của Clipboard, chúng tôi sẽ
khai báo như sau:
ClipboardManager manager = (ClipboardManager) getSystemService (CLIPBOARD_SERVICE) ;
Tiếp theo dé lay dữ liệu và sử dung được dữ liệu này chúng tôi cũng cần phải khaibáo thêm một biến ClipData và sử dụng Object getPrimaryClip() củaClipboardManager dé thực hiện đọc giá trị bên trong Clipboard, chúng tôi sẽ thực
hiện như sau:
ClipData pasteData = manager.getPrimaryClip();
Và cuối cùng sau khi đã có được dữ liệu trong Clipboard, tiếp theo chúng tôi cần đưa
dữ liệu đó vào bộ phận output dé thực hiện ghi giá trị đó vào màn hình ứng dụng
Phần 2: Bộ phận Output
Ở đây sau khi dữ liệu được đưa chúng tôi từ biến ClipData, chúng tôi cần phải chuyển
đổi lại kiểu dit liệu sang kiểu string sau đó chúng tôi gọi chúng tôi hàm setText dé
thực hiện gan giá tri đó vào trong TextView như sau:
String paste = item.getText().toString();
® Việc đưa dữ liệu vào và việc đọc đữ liệu thực hiện rất đơn giản
® Có thé đưa thăng trực tiếp giá trị input bang plaintext vào trong hệ thống bộ
nhớ tạm, nên việc đọc và ghi không cần phải qua bat kỳ một bộ xử lý dữ liệu
nào khác
19
Trang 29® Việc sử dụng Clipboard sẽ khá thông dụng vì bất kỳ môi trường nào việc thực
hiện copy và paste đều sẽ có sẵn trên hệ thống di là môi trường android hay
10S.
Nhược điểm:
® Vì việc sử dụng Clipboard quá thông dụng nên sẽ có một số trường hợp thông
tin gửi đi giữa hai ứng dụng có thé bị rò ri nếu như có một thao tác nào đó thực
hiện paste gia trị đang được gửi vào bộ nhớ tạm Clipboard, lúc này việc thực
hiện giao tiếp gửi thông tin giữa hai ứng dụng sẽ dé bị phát hiện hơn
3.2 Kỹ thuật covert channel sử dụng độ sáng màn hình
3.2.1 Tống quan về ứng dụng
Với kỹ thuật covert channel băng phương pháp sử dụng độ sáng màn hình chúng tôi
sẽ xây dựng hai ứng dụng chạy song song trên môi trường android, hai ứng dụng này
sẽ thực hiện sử dụng độ sáng màn hình dé có thé giao tiếp với nhau, thông qua đóchúng tôi có thê thực hiện gửi dir liệu đi qua lại giữa hai ứng dung đó
3.2.2 Xây dựng ứng dụng
20
Trang 30End process
Hình 3.3: Mô hình ứng dung gửi dữ liệu bằng độ sáng màn hình
21
Trang 31APP 2 SCREEN
Call event onChange
Screen brightness
change
getscreen=SCREEN BRIGHTNESS
Convert getscreen from interger to
Trang 323.2.3 Phan tích cấu trúc và hoạt động của ứng dụng
3.2.3.1 Ứng dụng l1Cấu trúc:
App thứ nhất được chia thành 3 phần:
® Phan 1: Nhận input từ bên ngoài
Trang 33chúng tôi sẽ lấy ra từng ký tự trong chuỗi bang cách sử dụng hàm
getCharFromString()
- *getCharFromString(str, int) sẽ có 2 giá tri đầu vào là chuỗi ban đầu va số thứ
tự của ký tự muốn lay ra trong chuỗi đóTiếp theo chúng tôi sẽ khai báo một biến có kiểu dữ liệu là kiểu int dé chứa giá trịcủa ký tự đã được lấy ra phía trên trong hàm *getCharFromString() và chuyên về kiểu
dữ liệu integer bang cách:
- Int ascii=(int) chr
Cách khai báo ở trên giống như một dang ép kiêu dit liệu, dé mục dich là đưa giá tri
của ký tự từ dang char sang kiểu int
Cuối cùng sau khi đã đưa từng ký tự lay được về kiểu int phía trong vòng lặp chúngtôi sẽ gán giá trị kiểu integer đó vào trong một biến process đề chuẩn bị cho việc gán
Cuối cùng sau khi đã thực hiện cấp quyền đầy đủ chúng tôi sẽ gọi chúng tôi function
putInt trong system setting dé thực hiện ghi độ sáng màn hình như sau:
android.provider.Settings System putInt (getContentResolver(),Settings System SCREEN BRTGHTNESS,value int set);
Với class Settings.System có rất nhiều option có thể sử dụng liên quan chúng tôi các
setting của android như turn on/off bluetooth, time/date in android, Ringtone, Vì
24
Trang 34mục tiêu của ứng dụng chúng tôi đang thực hiện là cài đặt độ sáng man hình nên chúng tôi sẽ sử dụng SCREEN_BRIGHTNESS trong Settings.System.
screen
Cấu trúc: App thứ 2 được xây dựng thành 3 phan chính:
® Phan 1: Doc độ sáng màn hình mỗi khi giá trị màn hình thay đổi
® Phan 2: Bộ phận xử lý dit liệu
® Phan 3: Bộ phan output
Hoạt động:
Phan 1: Đọc độ sáng màn hình mỗi khi có giá trị thay đối
App thứ 2 sẽ hoạt động dựa trên việc độ sáng màn hình có thay đổi hay không, mỗikhi độ sáng màn hình thay đổi ứng dung sẽ nhận giá tri thay đổi đó và đưa vào bộ
phận xử lý dữ liệu.
Thì dé thực hiện đọc giá trị độ sáng màn hình mỗi khi setting thay đổi chúng tôi sẽ
sử dụng sự kiện onChange() và sự kiện onChange() sé được đặt nằm trong extends
ContentObserver của class SettingsContentObserver.
- *ContentObserver: Sẽ thực hiện nhận các gia trị khi có sự thay đổi của hệ
thống android
Trong object nay chúng tôi sẽ khai báo một biến getscreen với kiêu dữ liệu là kiểu int
dé thực hiện nhận giá trị của độ sáng màn hình khi có sự thay đổi
25
Trang 35Tiếp theo là dé nhận giá trị của độ sáng màn hình chúng tôi sẽ sử dung function getInt
trong Settings.System như sau:
getscreen = Settings.System getInt (context.getContentResolver(),
Settings.System.SCREEN_BRIGHTNESS, 0)
Đề ham getInt có thé thực hiện được chúng tôi cũng phải thực hiện khai báo permission cho ứng dung dé thực hiện xin cấp quyền được đọc ghi các giá trị của hệthống điền hình ở ứng dụng này là giá trị của SCREEN_BRIGHTNESS
users-Sau khi nhận được giá trị của độ sáng màn hình chúng tôi sẽ chuyên giá trị đó qua bộphận xử lý dé có thé nhận tiếp giá trị độ sáng màn hình tiếp theo
Phần 2: Bộ phận xử lý
Ở bộ phận xử lý dữ liệu, sau khi nhận được giá trị độ sáng màn hình đang ở kiểuinteger chúng tôi sẽ chuyên về lại kiểu char bằng cách ép kiểu tương tự với ở trên déđưa từ int về char:
Đối với kỹ thuật covert channel bằng độ sáng màn hình, chúng tôi có thé dé sàng điều
khiển được việc đặt độ sáng màn hình với từng giá tri ascii tương ứng, vì độ sángmàn hình chạy trong khoảng từ 0-255 nên chúng tôi có thể thoải mái sử dụng giá trị
integer của từng ký tự ascii vì bảng mã ascii chỉ chạy từ 0-127 nên max va min của
độ sáng màn hình ứng dụng có thể thoải mái cho việc chúng ta chuyên và nhận dữ
liệu mà không cân qua thêm một bước trung gian nao khác.
26