Upload
others
View
12
Download
0
Embed Size (px)
Citation preview
Ộ ỤC VÀ ĐÀO TẠ Ệ Ọ
Ệ Ệ
Ọ Ệ Ọ Ệ
Ễ
ỨU ĐỀ ẤT ĐẶC TRƯNG ĐỒ Ị
ỆN MÃ ĐỘ Ế Ị
Ậ Ế Ĩ
Ộ –
Ộ ỤC VÀ ĐÀO TẠ Ệ Ọ
Ệ Ệ
Ọ Ệ Ọ Ệ
Ễ
ỨU ĐỀ ẤT ĐẶC TRƯNG ĐỒ Ị
ỆN MÃ ĐỘ Ế Ị
ệ ố
ỗ
Ậ Ế Ĩ
NGƯỜI HƯỚ Ẫ Ọ
ốc Dũng
ễ ỳ
Ộ –
i
LỜI CAM ĐOAN
Tôi xin cam đoan Luận án Tiến sĩ với tiêu đề “Nghiên cứu đề xuất đặc trưng đồ
thị PSI trong phát hiện mã độc botnet trên các thiết bị IoT” là một công trình nghiên cứu
của riêng tôi, dưới sự hướng dẫn khoa học của TS. Ngô Quốc Dũng và TS. Nguyễn Anh
Quỳnh, trừ những kiến thức tham khảo từ các tài liệu liên quan ở trong nước và quốc tế
đã được trích dẫn trong luận án.
Các kết quả, số liệu được trình bày trong luận án là hoàn toàn trung thực, một
phần kết quả đã được công bố trên các Tạp chí và Kỷ yếu Hội thảo khoa học chuyên
ngành công nghệ thông tin (tại Danh mục công trình của tác giả), phần còn lại chưa từng
được công bố trong bất kỳ công trình nào khác.
Hà Nội, ngày tháng năm 2020
Tác giả
Nguyễn Huy Trung
ii
LỜI CẢM ƠN
Luận án này được nghiên cứu sinh (NCS) thực hiện trong quá trình học tập Tiến
sĩ tại Viện Công nghệ thông tin – Viện Hàn lâm Khoa học và Công nghệ Việt Nam, Học
viện Khoa học và Công nghệ – Viện Hàn lâm Khoa học và Công nghệ Việt Nam. Tại
đây, NCS đã được các thầy, cô trong Viện Công nghệ thông tin, Học viện Khoa học và
Công nghệ giúp đỡ, chỉ dạy và trang bị những kiến thức nền tảng cần thiết trong suốt
quá trình thực hiện luận án, đồng thời NCS có cơ hội tiếp xúc chuyên sâu về lĩnh vực
mới và cấp thiết trong bảo mật thông tin liên quan đến phát hiện mã độc nói chung và
mã độc botnet nói riêng trên các thiết bị IoT.
Trước hết, NCS xin bày tỏ lòng biết ơn chân thành tới hai thầy hướng dẫn khoa
học, TS. Ngô Quốc Dũng và TS. Nguyễn Anh Quỳnh. Hai thầy đã luôn giúp đỡ, động
viên, khích lệ và cho NCS nhiều kinh nghiệm quý báu, định hướng cách tư duy và cách
làm việc trong nghiên cứu khoa học và cuộc sống, giúp NCS vững tin vượt qua những
khó khăn trong suốt quá trình thực hiện luận án.
Tiếp đó, NCS muốn gửi lời cảm ơn tới TS. Trần Nghi Phú, một người anh đã cho
NCS nhiều lời khuyên quý báu trước khi NCS bắt đầu quá trình học tập nghiên cứu Tiến
sĩ. NCS cũng muốn gửi lời cảm ơn chân thành đến các cộng sự Lê Văn Hoàng, Nguyễn
Doãn Hiếu đã có nhiều hỗ trợ và giúp đỡ NCS trong quá trình thực hiện luận án. Bên
cạnh đó, NCS xin gửi lời cảm ơn tới Ban Giám đốc, các Phòng ban liên quan và TS. Sử
Ngọc Anh - lãnh đạo Khoa An ninh thông tin của Học viện An ninh nhân dân đã tạo
điều kiện về thời gian và tài chính để NCS có thể tập trung học tập và thực hiện luận án
này.
Cuối cùng, từ tận đáy lòng NCS xin gửi lời cảm ơn vô hạn đến với gia đình, đặc
biệt là con gái bởi đó luôn là động lực phấn đấu của NCS, luôn khuyến khích, động viên
NSC trong quá trình nghiên cứu khoa học. Luận án này sẽ không thể hoàn thành nếu
không có sự ủng hộ, động viên và giúp đỡ của họ.
iii
MỤC LỤC
Trang
LỜI CAM ĐOAN ................................................................................................... i
LỜI CẢM ƠN ....................................................................................................... ii
MỤC LỤC ............................................................................................................ iii
DANH MỤC CÁC KÝ HIỆU, CÁC CHỮ VIẾT TẮT ....................................... vi
DANH MỤC CÁC BẢNG .................................................................................. vii
DANH MỤC CÁC HÌNH VẼ, ĐỒ THỊ ............................................................ viii
MỞ ĐẦU ............................................................................................................... 1
1. Đặt vấn đề ...................................................................................................... 1
1.1. Thông tin cơ bản..................................................................................... 1
1.2. Cơ sở đề xuất nghiên cứu ....................................................................... 3
2. Mục tiêu nghiên cứu ...................................................................................... 5
3. Đối tượng và phạm vi nghiên cứu ................................................................. 5
4. Nội dung và phương pháp nghiên cứu .......................................................... 6
5. Các đóng góp của luận án ............................................................................. 8
6. Bố cục của luận án ........................................................................................ 9
CHƯƠNG 1. CƠ SỞ LÝ THUYẾT ................................................................... 11
1.1. Mã độc IoT botnet .................................................................................... 11
1.1.1. Khái niệm và đặc điểm thiết bị IoT ................................................... 11
1.1.2. Khái niệm mã độc IoT botnet ........................................................... 15
1.1.3. Sự tiến hóa của mã độc IoT botnet ................................................... 17
1.1.4. Cấu trúc và nguyên lý hoạt động của mã độc IoT botnet ................. 23
1.1.5. Sự khác biệt giữa mã độc botnet truyền thống và IoT botnet ........... 25
1.2. Học máy và học sâu trong phát hiện mã độc IoT botnet ......................... 28
1.2.1. Học máy ............................................................................................ 28
1.2.2. Học sâu .............................................................................................. 34
iv
1.3. Kết luận Chương 1 ................................................................................... 39
CHƯƠNG 2. PHƯƠNG PHÁP PHÁT HIỆN MÃ ĐỘC IOT BOTNET ........... 40
2.1. Tổng quan các phương pháp phát hiện mã độc IoT botnet ...................... 40
2.1.1. Phân tích động ................................................................................... 41
2.1.2. Phân tích tĩnh ..................................................................................... 43
2.1.3. Phân tích lai ....................................................................................... 46
2.1.4. So sánh giữa phân tích tĩnh và phân tích động ................................. 47
2.2. So sánh, đánh giá các phương pháp dựa trên phân tích tích trong phát
hiện mã độc IoT botnet.................................................................................... 48
2.2.1. Phân tích tĩnh dựa trên đặc trưng phi cấu trúc đồ thị ........................ 49
2.2.2. Phân tích tĩnh dựa trên đặc trưng có cấu trúc đồ thị ......................... 56
2.2.3. Xây dựng bộ cơ sở dữ liệu thử nghiệm ............................................. 63
2.2.4. Các tiêu chí đánh giá ......................................................................... 68
2.2.5. Kết quả thực nghiệm và nhận xét ...................................................... 70
2.3. Kết luận Chương 2 và định hướng nghiên cứu ........................................ 73
CHƯƠNG 3. ĐẶC TRƯNG ĐỒ THỊ PSI TRONG PHÁT HIỆN MÃ ĐỘC IOT
BOTNET ............................................................................................................. 75
3.1. Phát biểu bài toán ..................................................................................... 75
3.2. Giải thích bài toán .................................................................................... 76
3.3. Sơ đồ và ý tưởng phương pháp đề xuất ................................................... 79
3.4. Đồ thị lời gọi hàm trong phát hiện mã độc IoT botnet ............................ 81
3.4.1. Khái niệm đồ thị lời gọi hàm ............................................................ 81
3.4.2. Xây dựng đồ thị lời gọi hàm ............................................................. 83
3.5. Xây dựng đồ thị PSI ................................................................................. 88
3.5.1. Các khái niệm liên quan .................................................................... 88
3.5.2. Thuật toán xây dựng đồ thị PSI......................................................... 90
3.6. Đánh giá thực nghiệm .............................................................................. 96
v
3.6.1. Môi trường thực nghiệm ................................................................... 96
3.6.2. Mô hình đánh giá .............................................................................. 96
3.6.3. Các kết quả thực nghiệm và thảo luận ............................................ 101
3.7. Kết luận Chương 3 ................................................................................. 104
CHƯƠNG 4. ĐẶC TRƯNG ĐỒ THỊ CON PSI CÓ GỐC TRONG PHÁT HIỆN
MÃ ĐỘC IOT BOTNET .................................................................................. 105
4.1. Phát biểu bài toán ................................................................................... 105
4.2. Sơ đồ và ý tưởng phương pháp đề xuất ................................................. 106
4.3. Xây dựng đặc trưng đồ thị PSI-rooted subgraph ................................... 107
4.3.1. Khái niệm ........................................................................................ 107
4.3.2 Thuật toán xây dựng PSI-rooted subraph ........................................ 108
4.4. Thực nghiệm và đánh giá kết quả .......................................................... 112
4.4.1. Môi trường thực nghiệm ................................................................. 112
4.4.2. Mô hình đánh giá ............................................................................ 113
4.4.3. Các kết quả thực nghiệm và thảo luận ............................................ 116
4.5. Kết luận Chương 4 ................................................................................. 122
KẾT LUẬN VÀ KIẾN NGHỊ ........................................................................... 124
DANH MỤC CÔNG TRÌNH CỦA TÁC GIẢ ................................................. 127
TÀI LIỆU THAM KHẢO ................................................................................. 129
vi
DANH MỤC CÁC KÝ HIỆU, CÁC CHỮ VIẾT TẮT
Từ viết tắt Viết đầy đủ (tiếng Anh) Viết đầy đủ (tiếng Việt)
IoT Internet of things Vạn vật kết nối Internet
DL Deep Learning Học sâu
ML Machine Learning Học máy
SVM Support Vector Machine Máy hỗ trợ vector
GPU Graphical Processing Unit Thẻ xử lý đồ họa
CFG Control Flow Graph Đồ thị luồng điều khiển
PSI Printable String Information Thông tin có ý nghĩa
DNN Deep Neural Networ Mạng nơ-ron học sâu
ELF Executable Linkable Format Định dạng tập tin ELF
DNS Domain Name System Hệ thống tên miền
KNN K-nearest neighbour Thuật toán k láng giềng gần nhất
RF Random Forest Thuật toán rừng ngẫu nhiên
RNN Recurrent Neural Network Mạng nơ-ron hồi quy
CNN Convolution Neural Network Mạng nơ-ron tích chập
SVM Support Vector Machine Thuật toán máy hỗ trợ vector
vii
DANH MỤC CÁC BẢNG
Trang
Bảng 1.1. So sánh mã độc botnet trên máy tính truyền thống và IoT 26
Bảng 2.1. Ưu điểm và hạn chế của phân tích động 42
Bảng 2.2. Ưu điểm và hạn chế của phân tích tĩnh 44
Bảng 2.3. So sánh các phương pháp phân tích, phát hiện mã độc IoT botnet 47
Bảng 2.4. So sánh các phương pháp phát hiện mã độc IoT botnet dựa trên đặc
trưng tĩnh trong các nghiên cứu gần đây 61
Bảng 2.5. Mô tả tập dữ liệu mẫu để thử nghiệm 67
Bảng 2.6. Kết quả thực nghiệm các hướng tiếp cận dựa trên đặc trưng tĩnh hiện
nay trong phát hiện mã độc IoT botnet 71
Bảng 3.1. So sánh giữa đồ thị PSI và đồ thị lời gọi hàm FCG 93
Bảng 3.2. Chi tiết số lượng cạnh và số lượng đỉnh trong đồ thị PSI giữa các lớp
mẫu 93
Bảng 3.3. Kết quả phát hiện mã độc IoT botnet bằng đồ thị PSI và đồ thị lời gọi
hàm 101
Bảng 3.4. Kết quả so sánh giữa các phương pháp phát hiện IoT botnet 103
Bảng 4.1. Một ví dụ sinh đồ thị con PSI có gốc với độ sâu bằng 2 111
Bảng 4.2. Kết quả của các bộ phân loại với đặc trưng đề xuất 116
Bảng 4.3. Kết quả đánh giá phát hiện mã độc với tập dữ liệu kiến trúc ARM 117
Bảng 4.4. Kết quả đánh giá phát hiện mã độc với tập dữ liệu dựa kiến trúc MIPS 118
Bảng 4.5. So sánh thời gian xử lý 119
Bảng 4.6. So sánh độ chính xác của các bộ phân lớp học máy truyền thống trong
phát hiện mã độc IoT botnet 120
viii
DANH MỤC CÁC HÌNH VẼ, ĐỒ THỊ
Trang
Hình 1.1. Số lượng các thiết bị IoT từ năm 2015 – 2025 12
Hinh 1.2. Minh họa ứng dụng của Internet of Things (IoT) trong cuộc sống 13
Hinh 1.3. Số lượng mã độc botnet trên các thiết bị IoT giai đoạn 2016 – 2018 16
Hình 1.4. Vị trí của mã độc IoT botnet trong các loại mã độc 17
Hình 1.5. Mối quan hệ giữa một số mã độc IoT botnet 18
Hình 1.6. Quy trình lây nhiễm của mã độc IoT botnet 23
Hình 1.7. Một ví dụ minh họa cây quyết định 30
Hình 1.8. Minh họa lề tối đa cho siêu phẳng với phân loại 2 lớp 32
Hình 1.9. Biểu diễn một mạng nơ-ron truyền thẳng 34
Hình 1.10. Một mô hình mạng nơ-ron tích chập 35
Hinh 1.11. Mô hình Skip-gram (trái) và CBOW (phải) 37
Hình 1.12. Mô hình túi từ phân tán 38
Hình 1.13. Mô hình bộ nhớ phân tán 38
Hình 2.1. Phân loại các phương pháp phát hiện mã độc IoT botnet 41
Hình 2.2. Các phương pháp phân tích lai 46
Hình 2.3. Tổng quan tiến trình phát hiện mã độc IoT botnet dựa trên các đặc
trưng tĩnh 48
Hình 2.4. Phân loại các đặc trưng tĩnh trong phát hiện mã độc IoT botnet 49
Hình 2.5. Minh họa các chuỗi Opcode trong tập tin thực thi mã độc 50
Hinh 2.6. Một số chuỗi PSI trong tập tin nhị phân mã độc 52
Hinh 2.7. Chuỗi BAD được mô tả dưới dạng ASCII 52
Hinh 2.8. Chuỗi BAD được miêu tả dưới dạng Unicode 53
Hình 2.9. Định dạng tập tin ELF 54
Hinh 2.10. Quá trình biểu diễn mã độc thông qua ảnh đa mức xám 55
Hinh 2.11. Ví dụ ảnh mẫu mã độc dòng Linux.Gafgyt 56
Hình 2.12. Minh họa một đồ thị đơn giản 57
ix
Hình 2.13. Minh họa một đồ thị có hướng và nhãn 57
Hinh 2.14. Đồ thị CFG của một mẫu mã độc botnet Linux.Bashlite 59
Hình 2.15. Minh họa đồ thị Opcode 60
Hình 2.16. Kết quả tải về tập dữ liệu mã độc IoT botnet từ IoTPOT 63
Hình 2.17. Giao thức telnet 64
Hình 2.18. Giao diện của VirusShare sau khi đăng nhập với tài khoản được cấp 65
Hình 2.19. Kết quả tải về tập dữ liệu mã độc IoT botnet từ VirusShare 66
Hình 2.20. Sự phân bố kiến trúc vi xử lý trong các mẫu mã độc IoT botnet 67
Hình 3.1. Tổng quan bài toán phát hiện mã độc IoT botnet dựa trên đặc trưng
đồ thị 76
Hình 3.2. Quy trình phương pháp đề xuất phát hiện mã độc IoT botnet 80
Hình 3.3. Minh họa cấu trúc của tập tin bị đóng gói bằng UPX 84
Hình 3.4. Một hàm từ mã độc Linux.Mirai 85
Hình 3.5. Một phần đồ thị lời gọi hàm của mã độc Linux.Mirai 87
Hình 3.6. Các chuỗi bị mã hóa trong Linux.Mirai 89
Hình 3.7. Minh họa lưu trữ dữ liệu đồ thị PSI 92
Hình 3.8. Số lượng các cạnh và đỉnh giữa các lớp mẫu 94
Hình 3.9. Đồ thị lời gọi hàm (trái) và đồ thị PSI (phải) của mẫu mã độc
Linux.Bashlite 95
Hình 3.10. Mô hình đánh giá đặc trưng đồ thị PSI trong phát hiện mã độc IoT
botnet 97
Hình 3.11. Mô hình cơ bản của kỹ thuật nhúng đồ thị 98
Hình 3.12. Mô hình hoạt động của graph2vec tương đồng với doc2vec 99
Hình 4.1. Minh họa ý tưởng bài toán dùng đồ thị con PSI có gốc 105
Hình 4.2. Tổng quan phương pháp đề xuất sử dụng PSI-rooted subgraph trong
phát hiện mã độc IoT botnet 106
Hình 4.3. Một ví dụ đồ thị PSI 107
Hình 4.4. Kết quả thử nghiệm với các độ sâu khác nhau khi duyệt đồ thị con
PSI 109
Hình 4.5. Một minh họa đồ thị con PSI có gốc ở đỉnh 11. 111
x
Hình 4.6. Biểu đồ phân tán mô tả phân bố các điểm dữ liệu của đồ thị con PSI
có gốc trong tập dữ liệu sau khi giảm chiều LSA 3-D 112
Hình 4.7. Minh họa kỹ thuật đánh giá chéo k-fold 113
Hình 4.8. Mô hình đánh giá đặc trưng đồ thị con PSI có gốc trong phát hiện mã
độc IoT botnet 114
Hình 4.9. Các bộ phân lớp học máy phổ biến trong phát hiện mã độc 115
Hình 4.10. Đường cong ROC của Bagging, RF, DT, kNN và SVM trên tập dữ
liệu 116
Hình 4.11. Đường cong ROC của Bagging, RF, DT, kNN và SVM trên tập dữ
liệu kiến trúc ARM 117
Hình 4.12. Kết quả đường cong ROC của Bagging, RF, DT, kNN và SVM trên
tập dữ liệu kiến trúc MIPS 118
Hình 4.13. Cấu trúc mô hình Skipgram với trường hợp từ trung tâm là “passes” 121
Hình (i). Mô hình ứng dụng thực tế của phương pháp phát hiện IoT botnet sử
dụng đặc trưng đồ thị PSI 125
1
MỞ ĐẦU
1. Đặt vấn đề
1.1. Th¹ng tin c bn
Cuộc cách mạng công nghiệp 4.0 hay còn được gọi với những cái tên như Vạn
vật kết nối Internet (Internet of Things - IoT) hay công nghiệp Internet (Industrial
Internet) làm biến đổi nhanh chóng nền công nghiệp ở mọi quốc gia, diễn ra trên toàn
cầu. Với nhiều tên gọi khác nhau nhưng đặc điểm nổi bật nhất của cuộc cách mạng công
nghiệp lần thứ 4 đó là việc dịch chuyển các hệ thống máy móc sản xuất truyền thống
sang các hệ thống tự động hoá có khả năng tự hành một cách thông minh dựa trên nền
tảng lõi là các thiết bị IoT. Thông qua cuộc các mạng công nghiệp 4.0 mà giáo dục, y
tế, chính trị, xã hội, kinh tế đã có những thành tựu vượt bậc trong thời gian ngắn. Bên
cạnh những tiện ích mà cuộc cách mạng công nghiệp 4.0 mang lại thì an toàn thông tin
trên không gian mạng ngày càng trở nên phức tạp, tiềm ẩn nhiều nguy cơ ảnh hưởng
trực tiếp tới an ninh quốc gia, lợi ích hợp pháp của người dân. Những nguy cơ này ngày
càng hiện hữu khi mà các chuỗi cung ứng, nhà máy, người tiêu dùng và các hoạt động
liên quan được kết nối với nhau. Khác biệt với máy tính truyền thống, thiết bị IoT rất đa
dạng về chủng loại và kiến trúc phần cứng, chính sự đa dạng của thiết bị IoT khiến sự
phát triển về số lượng thiết bị IoT bùng nổ. Dự kiến đến năm 2025 sẽ có khoảng 75 tỷ
thiết bị [28] được sử dụng ở nhiều lĩnh vực, ngành nghề và đem tới nhiều trải nghiệm
cho người sử dụng như nhà thông minh, giao thông thông minh, y tế thông minh [8].
Theo nghiên cứu của Gartner, đến năm 2020 ước tính 25% các cuộc tấn công hệ thống
thông tin tập trung và các thiết bị IoT [18], và sẽ ngày càng nhiều ngành nghề, lĩnh vực
áp dụng công nghệ IoT, điều đó sẽ khiến số lượng và quy mô các cuộc tấn công mạng
sẽ tiếp tục gia tăng. Bên cạnh đó, nghiên cứu của OWASP (Open Web Application
Security Project) cũng cho thấy 75% các thiết bị IoT có nguy cơ bị tấn công xâm nhập
[29]. Dưới góc độ của kẻ tấn công, các thiết bị IoT là môi trường hấp dẫn bởi khác với
máy tính truyền thống, các thiết bị IoT hoạt động liên tục 24/7, khó cài đặt các giải pháp
phòng chống mã độc (anti-malware), sử dụng cơ chế xác thực yếu,… , điều đó khiến kẻ
tấn công dễ dàng truy cập mức sâu vào các thiết bị IoT (ví dụ như Busybox) [22]. Với
thực tế đó, nhiều cá nhân và tổ chức trong và ngoài nước đã quan tâm, đầu tư nghiên
cứu về đảm bảo an toàn thông tin đối với thiết bị IoT. Một khảo sát, thống kê các nghiên
2
cứu đã công bố từ 2016 – 2018 tại các tạp chí uy tín của các nhà xuất bản lớn trên thế
giới như Elsevier, IEEE, Hindawi and Springer [6] cho thấy xác thực vẫn là giải pháp
phổ biến trong bảo mật thiết bị IoT và quản lý tin cậy (trust) vẫn đang tiếp tục được đẩy
mạnh sự đầu tư nghiên cứu. Ngoài ra có thể kể đến một số nghiên cứu về giải pháp mã
hóa nhẹ (light), giao thức và cơ chế truyền thông an toàn đối với thiết bị IoT.
- Tại Việt Nam, các giải pháp bảo mật IoT theo 2 hướng chính là giải pháp quản
lý và giải pháp công nghệ, kỹ thuật. Đối với các giải pháp quản lý thì có thể kể đến Viện
Chiến lược Thông tin và Truyền thông - Bộ Thông tin và Truyền thông đã có đề tài
“Nghiên cứu xu thế phát triển, những tác động của công nghệ IoT (Internet of Things)
và đề xuất giải pháp quản lý phù hợp”, mã số 40-15-KHKT-RD, đã có những nghiên
cứu tổng quan về thiết bị IoT và các ứng dụng của IoT được phát triển ở Việt Nam. Từ
những lợi ích đó, nhóm nghiên cứu của Viện đã đưa ra những giải pháp bảo mật, an toàn
thông tin cho sự phát triển IoT ở Việt Nam. Tuy nhiên những giải pháp đó mới dừng ở
mức chính sách quản lý đã ban hành và sẽ ban hành, các giải pháp về phát triển cơ sở
hạ tầng, giải pháp bảo mật ở mức ứng dụng cơ bản cũng như các tiêu chuẩn trong IoT
tại Việt Nam. Về giải pháp công nghệ, kỹ thuật thì nhóm nghiên cứu của Trung tâm an
toàn an ninh thông tin - Đại học Bách khoa Hà Nội hiện đang nghiên cứu một số giải
pháp, hệ thống an ninh mạng với thiết bị IoT, có thể kể đến một số nghiên cứu như
Luangoudom sonexay và cộng sự [1], Nguyễn Văn Tánh và cộng sự [2] đã trình bày giải
pháp phát hiện tấn công trong mạng IoT, trong đó nghiên cứu chỉ tập trung phân tích chi
tiết các dạng tấn công vào giao thức định tuyến RPL (Routing Protocol for Low-Power
and Lossy Networks) được thiết kế cho mạng cảm biến không dây và IoT.
- Trên thế giới, đã có nhiều cá nhân, tổ chức quan tâm nghiên cứu vấn đề bảo mật
cho IoT như. James King và cộng sự [72] đã phát triển giải pháp nhẹ (light) nhằm bảo
vệ kênh truyền giữa các thiết bị IoT có tài nguyên hạn chế với các cổng kết nối
(gateway). Các nhà nghiên cứu tại Eurecom (Pháp) [10] đã thực hiện khảo sát, đánh giá
trên diện rộng mức độ an toàn của các thiết bị IoT cỡ nhỏ như Router, IPCamera và phát
hiện ra trong 32.256 phần sụn (firmware) được phân tích: có hơn 38 loại lỗ hổng zero-
day; phát hiện nhiều cổng hậu (backdoor) giúp các nhà cung cấp, tin tặc dễ dàng truy
cập trái phép vào các thiết bị từ xa bất hợp pháp. Cùng hướng nghiên cứu này và để thúc
đẩy sự hợp tác trong chương trình nghiên cứu và phát triển về an toàn thông tin của cộng
3
đồng chung Châu Âu (EU), Châu Âu đã thành lập Cụm dự án nghiên cứu trên IoT
(CERP-IoT, Cluster of European Research Projects on IoT) năm 2010 để tiến hành
nghiên cứu chuyên sâu về đảm bảo an ninh, an toàn cho các thiết bị IoT. Các nhà nghiên
cứu Nhật bản cũng đã giới thiệu giải pháp IoTProtect [106] nhằm đảm bảo an toàn cho
các thiết bị IoT. Cơ chế hoạt động của IoTProtect là sử dụng tác tử phần mềm và danh
sách trắng (Whitelist) để kiểm tra định kỳ các tiến trình đang chạy trên thiết bị IoT và
sẽ kết thúc các tiến trình khả nghi hoặc không xác định. Bên cạnh đó, dựa trên các nghiên
cứu của Yashaswini và cộng sự [109], Rafiullah Khan và cộng sự [16] thấy rằng các
nguy cơ đe dọa an ninh, an toàn thông tin đối với các thiết bị IoT bao gồm các hình thức
chính như tấn công giả mạo, tấn công bằng phần mềm độc hại, tấn công thăm dò, tấn
công từ chối dịch vụ.
Trong khi đó, mã độc botnet là nguy cơ đe dọa thường trực nhất đối với các thiết
bị IoT [15]. Ví dụ điển hình là tháng 10/2016, nhà cung cấp dịch vụ tên miền lớn của
Mỹ là Dyn đã bị mã độc Linux.Mirai tấn công từ chối dịch vụ phân tán (DDoS –
Distributed Denial of Service), với lưu lượng được ghi nhận lại là lớn nhất từ trước đến
nay ở ngưỡng 1,2 Tbps (Terabit per second) với hơn 1,2 triệu thiết bị IoT bị lây nhiễm
[5], đồng thời mã độc Linux.Mirai cũng hướng tới nhiều dịch vụ trực tuyến phổ biến
như Google, Amazon,…
1.2. C sε ĽΖ xu t nghiên cοu
Hiện nay, các nghiên cứu về phát hiện mã độc IoT botnet đã thu hút sự quan tâm
của các nhà nghiên cứu bảo mật. Những nghiên cứu và phương pháp này được thực hiện
dựa trên phát hiện mã độc botnet tự động sử dụng phân tích tĩnh hoặc phân tích động.
Luận án này được thúc đẩy bởi vấn đề nghiên cứu mở sau đây:
- Hiện nay, thiết bị IoT bùng nổ về số lượng, kéo theo số lượng mã độc IoT botnet
cũng gia tăng vượt trội. Dựa trên báo cáo của công ty nghiên cứu thị trường Statista
(Đức), số lượng thiết bị IoT trong năm 2018 đạt 23,14 tỷ thiết bị, tăng 13,7% so với năm
2017 [28]. Theo báo cáo của hãng Kaspersky, số lượng mã độc IoT botnet trong năm
2018 cũng tăng khoảng 73% so với năm 2017.
- Các thiết bị IoT đa dạng, bao gồm nhiều loại thiết bị điện tử nhưng thường được
chia thành 2 nhóm là các thiết bị IoT hạn chế tài nguyên và các thiết bị IoT không hạn
4
chế tài nguyên. Hiện nay, đã có nhiều nghiên cứu về phát hiện mã độc botnet, tiêu biểu
như nghiên cứu của Zhao và cộng sự [27], Chowdhury và cộng sự [9], Homayoun và
cộng sự [67]. Tuy nhiên, các nghiên cứu này tập trung vào phát hiện mã độc botnet trên
các thiết bị IoT không hạn chế tài nguyên, như máy tính cá nhân truyền thống (Personal
Computer). Do đó, trong phần cơ sở đề xuất này, luận án sẽ tập trung giải quyết vấn đề
nghiên cứu trên các thiết bị IoT hạn chế tài nguyên (bộ nhớ thấp, năng lực tính toán nhỏ,
dung lượng năng lượng pin thấp), ví dụ IP camera, thiết bị định tuyến, thiết bị chuyển
mạch, khóa cửa thông minh,… bởi những thiết bị IoT hạn chế tài nguyên ít được triển
khai cơ chế bảo mật, đảm bảo an toàn thông tin hoặc các giải pháp bảo mật rất yếu kém,
dễ bị tin tặc khai thác, tấn công.
- Bên cạnh đó, lĩnh vực nghiên cứu phát hiện mã độc botnet trên các thiết bị IoT
hạn chế tài nguyên chưa được quan tâm, đầu tư nghiên cứu, mà chủ yếu các nghiên cứu
hiện nay đều dựa trên các bộ luật (rule-based) và dựa trên luồng (flow-based, ví dụ như
địa chỉ IP nguồn/đích, giao thức, số lượng gói tin được gửi/và nhận,…) . Các phương
pháp trên hiện vẫn còn bộc lộ nhiều hạn chế như khó phát hiện các hành vi độc hại của
botnet một cách hiệu quả, dựa trên bộ luật có tỷ lệ phát hiện nhầm cao khi mã độc sử
dụng kỹ thuật gây rối, … Chính vì thế, các hướng tiếp cận dựa trên cấu trúc đồ thị, xuất
phát từ các thông tin mức luồng dữ liệu để phản ánh hành vi của mã độc botnet là một
giải pháp có thể khắc phục những hạn chế trên [3]. Tuy nhiên, các phương pháp theo
hướng cấu trúc đồ thị trong phát hiện mã độc IoT botnet hiện có độ phức tạp tính toán
lớn. Bên cạnh đó, nghiên cứu của Elisa Bertino và cộng sự [58], Kolias và cộng sự [77],
là những nghiên cứu này bước đầu tìm hiểu và giới thiệu một số giải pháp kỹ thuật nhằm
hạn chế sự lây nhiễm của mã độc botnet trên thiết bị IoT. Các nghiên cứu tiêu biểu trong
phát hiện mã độc IoT botnet có thể kể đến như Haddadpajouh và cộng sự [14],
Azmoodeh và cộng sự [36], Su và cộng sự [25]; tuy nhiên những nghiên cứu này hầu
hết đưa ra giải pháp, đánh giá và thực nghiệm trên mã độc IoT botnet đơn kiến trúc.
Những vấn đề cho thấy việc nghiên cứu các phương pháp phát hiện mã độc IoT
botnet mới là cấp thiết, có ý nghĩa về mặt thực tiễn và khoa học, đáp ứng đòi hỏi ngày
càng cao của công tác bảo đảm an ninh, an toàn thông tin cho các thiết bị IoT nói riêng
và không gian mạng nói chung. Phương pháp đề xuất của luận án giải quyết được các
thách thức còn tồn tại sau:
5
- Thứ nhất là tính đa kiến trúc của các thiết bị IoT, một đặc trưng quan trọng của
thiết bị IoT. Trong phạm vi luận án, việc sử dụng hai thuật ngữ thiết bị IoT và thiết bị
IoT hạn chế tài nguyên là đồng nhất;
- Thứ hai là có tính hiệu quả cao (độ chính xác cao, độ phức tạp thấp);
- Thứ ba là hướng tiếp cận không theo hướng dựa trên các bộ luật và dựa trên
luồng, mà là dựa trên đồ thị và học máy, học sâu.
2. Mục tiêu nghiên cứu
Từ việc phân tích tính cấp thiết của đề tài đã trình bày ở trên, luận án xác định
mục tiêu nghiên cứu nhằm đề xuất một đặc trưng có cấu trúc đồ thị mới và hiệu quả (độ
chính xác cao, độ phức tạp thấp) trong phát hiện mã độc IoT botnet, có khả năng xử lý
mã độc IoT botnet đa kiến trúc.
3. Đối tượng và phạm vi nghiên cứu
*) Đối tượng nghiên cứu của đề tài: Để đạt được mục tiêu nghiên cứu đã đặt
ra, luận án này tập trung vào nghiên cứu các tập tin thực thi trên thiết bị IoT. Các tập tin
thực thi trên thiết bị IoT có thể là mã độc hoặc lành tính, trong đó các tập tin thực thi
được thu thập từ nhiều nguồn uy tín như mạng bẫy (honeypot) hoặc được bóc tách từ
phần sụn của các thiết bị IoT, sẽ được trình bày chi tiết ở phần sau của luận án này. Hiện
nay đã có những nghiên cứu chỉ ra rằng, trong bài toán nghiên cứu phát hiện mã độc thì
thường lựa chọn các tập tin thực thi làm mục tiêu phân tích. Nguyên nhân bởi các tập
tin thực thi được xem như là ánh xạ một một, giúp đảm bảo tính toàn vẹn các hành vi
độc hại của mã độc khi lây nhiễm cũng như việc phân tích về sau của luận án. Bên cạnh
đó, các thiết bị IoT chạy trên nền tảng hệ điều hành Linux chiếm đại đa số [31]. Với
những lý do trên, đối tượng nghiên cứu, thực nghiệm của luận án là các tập tin thực thi
trên thiết bị IoT, có tính đa kiến trúc và có nền tảng trên các hệ điều hành Linux Kernel
2.6 hoặc 3.2. Tuy nhiên, nguyên tắc tổng quát và kiến trúc của phương pháp đề xuất
được áp dụng cho hầu hết các thiết bị IoT chạy trên các nền tảng hệ điều hành khác.
*) Phạm vi nghiên cứu của đề tài:
Bài toán phân tích mã độc được chia thành 3 nhóm chính sau [26]:
6
(1) Phát hiện mã độc, cung cấp khả năng phân biệt các tập tin mã độc giữa các
tập mẫu lành tính;
(2) Phân loại mã độc, cung cấp khả năng quyết định mã độc thuộc về loại nào
(như virus, worm, trojan, hay botnet);
(3) Sự tiến hóa của mã độc, phát hiện ra mối liên hệ kế thừa giữa các loại mã độc.
Phân loại mã độc là bài toán phân loại đa lớp và phát hiện mã độc có thể xem
như bài toán phân loại hai lớp (nhị phân). Trong phạm vi nghiên cứu, luận án tập trung
vào bài toán phát hiện mã độc. Luận án này phát triển hướng tiếp cận mới trong phát
hiện mã độc IoT botnet, được trình bày chi tiết trong luận án này với phạm vi nghiên
cứu sau:
- Có nhiều loại mã độc lây nhiễm trên các thiết bị IoT như Trojan, Worm,
Ransomware, … Nhưng trên các thiết bị IoT hạn chế tài nguyên thì ít thông tin người
sử dụng để mã độc giám sát, thu thập, mã hóa; trong khi số lượng thiết bị IoT lớn và
phân tán khắp nơi nên hiện nay hầu hết mã độc lây nhiễm trên thiết bị IoT là mã độc
botnet [49]. Vì lý do đó, luận án chỉ tập trung nghiên cứu, phát hiện mã độc IoT botnet.
- Có nhiều cách phân loại thiết bị IoT như dựa trên hãng sản xuất, dựa trên giao
thức sử dụng, dựa trên mục đích kết nối, … Nhưng để phù hợp với nội dung nghiên cứu
của luận án thì luận án sẽ tập trung vào các thiết bị IoT hạn chế về tài nguyên như năng
lượng tiêu thụ thấp, bộ nhớ lưu trữ hạn chế, khả năng tính toán hạn chế. Ví dụ IP camera,
thiết bị định tuyến, thiết bị chuyển mạch, khóa cửa thông minh,…
- Có 02 hướng chính trong phát hiện mã độc botnet là phân tích tĩnh và phân tích
động. Tuy nhiên, để đạt được mục tiêu nghiên cứu, luận án lựa tiếp cận theo phương
pháp có khả năng xử lý vấn đề đa kiến trúc của thiết bị IoT hiệu quả và hiệu suất, đó là
phân tích tĩnh.
4. Nội dung và phương pháp nghiên cứu
*) Nội dung nghiên cứu
Để đạt được mục tiêu nghiên cứu đã đề ra ở trên, luận án sẽ tập trung phân tích,
đánh giá một số nội dung sau:
7
- Nghiên cứu sự phát triển, tiến hóa và đặc điểm của mã độc IoT botnet cũng như
các phương pháp phát hiện mã độc IoT botnet hiện nay.
- Khảo sát, phân tích và đánh giá lại các phương pháp phát hiện mã độc IoT botnet
hiện nay dựa trên phân tích tĩnh trên cùng bộ cơ sở dữ liệu lớn và môi trường thử nghiệm.
- Nghiên cứu và đề xuất đặc trưng mới có cấu trúc đồ thị trong phát hiện mã độc
IoT botnet
- Đánh giá đặc trưng đã đề xuất về độ chính xác và độ phức tạp trong phát hiện
mã độc IoT botnet bằng cách sử dụng tập dữ liệu lớn và đáng tin cậy, so sánh với những
phương pháp hiện tại cùng hướng tiếp nghiên cứu
Các nội dung trên được giải quyết và trình bày cụ thể trong các Chương sau của
luận án này, cấu trúc cụ thể được trình bày trong phần tiếp theo của luận án này.
*) Phương pháp nghiên cứu
Nghiên cứu lý thuyết:
Tiến hành nghiên cứu, khảo sát, tổng hợp, đánh giá các công trình nghiên cứu
liên quan ở trong và ngoài nước để phân tích những vấn đề chưa giải quyết, những vấn
đề cần tiếp tục nghiên cứu theo hướng của đề tài. Các công trình nghiên cứu được tìm
kiếm tại các kho dữ liệu trực tuyến như:
- Google Scholar (https://scholar.google.com/)
- ScienceDirect (https://www.sciencedirect.com/)
- ACM Digital Library (https://dl.acm.org/)
- IEEE Xplore (https://ieeexplore.ieee.org/)
- Một số hội thảo về an toàn thông tin trong lĩnh vực công nghiệp uy tín hàng đầu
như Blackhat, USENIX, DEF CON, …
Trong đó, tập trung nghiên cứu về đặc trưng hành vi vòng đời lây nhiễm của mã
độc IoT botnet, nghiên cứu các đoạn mã dịch ngược của các tập tin thực thi trên thiết bị
IoT, … Trên cơ sở đó, lựa chọn các nội dung, vấn đề sẽ nghiên cứu, đề xuất và giải
quyết. Hệ thống hóa các vấn đề cần thực hiện, đề xuất mô hình bài toán, đưa ra các vấn
đề để phân tích, đánh giá và thực hiện.
8
Nghiên cứu thực nghiệm:
Dựa trên tập dữ liệu gồm hơn 10000 mẫu gồm cả mã độc botnet và mẫu lành tính
trên thiết bị IoT, chia thành các tập huấn luyện và kiểm thử, sử dụng kỹ thuật kiểm thử
chéo (cross-validation), luận án tiến hành các thí nghiệm, thực nghiệm xây dựng đặc
trưng mã độc IoT botnet bằng các phương pháp phát hiện mã độc IoT botnet, trên tập
dữ liệu các tập tin thực thi trên IoT (mã độc, lành tính). Thực nghiệm đánh giá tính hiệu
quả của đặc trưng đồ thị PSI mà luận án đề xuất với học sâu. Thực nghiệm xây dựng và
đánh giá đặc trưng đồ thị con PSI có gốc (PSI-rooted subgraph) với các thuật toán học
máy để nâng cao hiệu quả trong bài toán phát hiện mã độc IoT botnet.
5. Các đóng góp của luận án
Luận án này tập trung giải quyết các nội dung đã nêu trên. Các đóng góp có thể
được liệt kê như kết quả của luận án này:
- Đóng góp 1: Thực nghiệm, phân tích và đánh giá các phương pháp phát hiện
mã độc IoT hiện nay với cùng bộ cơ sở dữ liệu lớn các tập tin thực thi trên IoT (gồm mã
độc và lành tính), trong đó có các mẫu mã độc thực tế, quá trình thực nghiệm các phương
pháp đó thực hiện trên cùng một cấu hình hệ thống. Kết quả đạt được góp phần đem lại
một đánh giá tổng quan về các phương pháp phát hiện mã độc IoT hiện nay, từ đó góp
phần giúp các nhà nghiên cứu có thể lựa chọn hướng tiếp cận phù hợp cho bài toán phát
hiện mã độc IoT nói chung và IoT botnet nói riêng.
- Đóng góp 2: Luận án đề xuất được một phương pháp mới, gọi là đồ thị PSI
(Printable String Information) có thể mô phỏng quá trình lây nhiễm của mã độc IoT
botnet. Phương pháp đề xuất có độ phức tạp thấp nhưng vẫn đảm bảo độ chính xác cao
trong phát hiện mã độc IoT botnet.
- Đóng góp 3: Luận án đề xuất cải tiến phương pháp phát hiện mã độc IoT botnet
dựa trên đồ thị PSI bằng đồ thị con có gốc PSI (PSI-rooted subgraph) để hoàn thiện quy
trình phát hiện mã độc IoT botnet mà luận án đề xuất với độ chính xác cao và độ phức
tạp thấp.
Toàn bộ mã nguồn nghiên cứu của luận án được công bố mở tại địa chỉ sau:
https://github.com/NguyenHuyTrung
9
6. Bố cục của luận án
Với những kết quả nghiên cứu đã thực hiện, luận án được trình bày trong bố cục
gồm phần mở đầu, 4 chương nội dung và phần kết luận, hướng phát triển của đề tài. Cụ
thể bố cục như sau:
Phần mở đầu: Luận án trình bày tính cấp thiết và ý nghĩa khoa học của đề tài
nghiên cứu, trên cơ sở đó xác định mục tiêu nghiên cứu, đối tượng và phạm vi nghiên
cứu cũng như nội dung và các phương pháp nghiên cứu của luận án.
Chương 1: Luận án trình bày hai nội dung chính về tổng quan về mã độc IoT
botnet và sơ lược học máy, học sâu. Trong nội dung tổng quan về mã độc IoT botnet,
luận án trình bày khái niệm về thiết bị IoT và mã độc IoT botnet. Tiếp đó, luận án phân
tích và đánh giá tổng quan sự tiến hóa của mã độc IoT botnet. Trên cơ sở đó, luận án
thảo luận và đưa ra kiến trúc vòng đời lây nhiễm của mã độc IoT botnet. Đồng thời, luận
án cũng đánh giá đặc điểm và sự khác biệt của mã độc botnet trên thiết bị IoT so với mã
độc botnet trên máy tính truyền thống. Những nội dung đã thảo luận trên giúp luận án
củng cố luận cứ trong xác định phương pháp phát hiện mã độc IoT botnet phù hợp. Phần
thứ hai, luận án trình bày sơ lược về học máy, học sâu bởi đây là những lý thuyết cơ sở
để luận án áp dụng trong các phương pháp phát hiện IoT botnet.
Chương 2: Luận án trình bày sơ lược các phương pháp phát hiện mã độc IoT
botnet. Mỗi phương pháp được đánh giá toàn diện bởi khái niệm, mô tả các thuận lợi và
hạn chế của chúng, tiếp đó là các nghiên cứu liên quan. Kết hợp với những nội dung đã
trình bày ở Chương 1, luận án đề xuất hướng tiếp cận dựa trên phân tích tĩnh trong phát
hiện mã độc IoT botnet. Tiếp đó, luận án thực hiện khảo sát, đánh giá và thực nghiệm
lại các phương pháp phân tích tĩnh trong phát hiện mã độc IoT botnet trên cùng bộ cơ
sở dữ liệu và môi trường thực nghiệm, trên cơ sở đó đề xuất hướng tiếp cận phù hợp của
luận án.
Chương 3: Luận án trình bày phương pháp luận về giải pháp đề xuất đặc trưng
đồ thị PSI nhằm phát hiện mã độc IoT botnet hiệu quả và hiệu suất cao. Chương này
gồm 3 phần. Phần thứ nhất trình bày tổng quát quy trình hoạt động của phương pháp đề
xuất. Phần thứ hai giới thiệu về cách thức xây dựng đặc trưng đồ thị PSI. Cuối cùng là
10
đánh giá tính hiệu quả của phương pháp đề xuất dựa trên tiêu chí về độ chính xác và độ
phức tạp, đồng thời so sánh với các nghiên cứu hiện nay.
Chương 4: Luận án tiến hành đánh giá các hạn chế của phương pháp đề xuất ở
Chương 3 nhằm đưa ra giải pháp mới hiệu quả trong phát hiện mã độc IoT botnet. Phần
này tập trung vào đề xuất cách thức xử lý đồ thị PSI nhằm sinh đặc trưng đồ thị mới, gọi
là đồ thị con PSI có gốc (PSI-rooted subgraph). Trên cơ sở đó đánh giá tính hiệu quả
của đặc trưng đồ thị con PSI có gốc với nhiều bộ phân lớp học máy cơ bản, kết quả đạt
được rất khả quan trong phát hiện mã độc IoT botnet.
Cuối cùng, luận án được kết luận, cùng với đó là các định hướng nghiên cứu
tương lai.
11
CHƯƠNG 1. CƠ SỞ LÝ THUYẾT
1.1. Mã độc IoT botnet
1.1.1. Khái niΜm v¨ ĽΊc ĽiΘm thiΔt bΠ IoT
1.1.1.1. Các khái niệm IoT
Sự phát triển không ngừng của công nghệ thông tin, đặc biệt là sự gia tăng tích
hợp, kết nối các thiết bị thông minh bằng công nghệ vạn vật kết nối (Internet of Things).
Thuật ngữ “Internet of things” (IoT) trong những năm gần đây xuất hiện phổ biến và thu
hút không ít sự quan tâm chú ý của thế giới công nghệ. Sự bùng nổ của các thiết bị IoT
có tác động mạnh mẽ tới cuộc sống, công việc và xã hội loài người. Năm 1999, cụm từ
Vạn vật kết nối Internet (IoT - Internet of Things) lần đầu được đưa ra định nghĩa bởi
Kevin Ashton [73] - nhà khoa học đã sáng lập ra Trung tâm Auto-ID ở Viện công nghệ
Massachusets (MIT - Massachusetts Institute of Technology) để chỉ vật dụng, máy móc
trong nhà như TV, tủ lạnh, máy giặt, bếp gas,... được trang bị những công nghệ như Wi-
Fi, Bluetooth, cảm biến Radio Frequency Identification (RFID), Near-Field
Communications (NFC),... nhằm giúp chúng kết nối với nhau.
Hiện nay có rất nhiều cách giải thích hay khái niệm khác nhau về IoT được đưa
ra, trong đó có thể kể đến khái niệm về IoT của Liên minh Viễn thông thế giới (ITU –
International Telecommunication Union) [69] đã phần giúp làm sáng tỏ hơn về IoT.
Theo ITU thì: Internet of things là một cơ sở hạ tầng mang tính toàn cầu cho xã hội
thông tin, mang đến những dịch vụ tiên tiến bằng cách kết nối các “đồ vật” (cả vật lý
lẫn ảo) dựa trên sự tồn tại của thông tin, dựa trên khả năng tương tác của các thông tin
đó và dựa trên các công nghệ truyền thông. Thông qua việc khai thác khả năng nhận
biết, thu thập xử lý dữ liệu, công nghệ các hệ thống IoT tận dụng mọi thứ để cung cấp
dịch vụ cho tất cả các loại ứng dụng khác nhau, đồng thời bảo đảm tính bảo mật và
quyền riêng tư. Ngoài định nghĩa về IoT của ITU thì một số tổ chức cũng đưa ra các
cách giải thích, khái niệm về IoT để giúp cho các bên liên quan có cái nhìn đa chiều
hơn, hiểu rõ hơn về khái niệm IoT như trong từ điển Oxford có nêu “Internet of Things
(danh từ): là sự kết nối thông qua Internet của các thiết bị điện toán nhúng trong các
đối tượng hàng ngày cho phép chúng có thể gửi và nhận dữ liệu”. Tổ chức IREC
12
(European Research Cluster on the IoT) cũng đưa ra khái niệm IoT như sau “IoT là một
kiến trúc toàn cầu động, có khả năng tự cấu hình dựa trên giao thức truyền thông tương
tác tiêu chuẩn, ở đó các đồ vật (gồm cả vật lý và ảo) có khả năng định danh và các tính
chất vật lý và ảo hóa, có giao diện thông minh và kết hợp khéo léo với nhau để hòa vào
hệ thống thông tin mạng”. Nhìn chung vẫn chưa có một khái niệm thống nhất nào về
IoT, tuy nhiên các khái niệm của các tổ chức đã đưa ra thì đều cơ bản xoay quanh việc
kết nối các đồ vật qua mạng Internet. Chính vì thế, luận án đưa ra khái niệm IoT tổng
quát như sau:
Định nghĩa 1.1. IoT là nền tảng bao gồm các “vật” (vật lý và ảo hóa) được tích
hợp trên các vật dụng, con người, môi trường và có khả năng kết nối, chia sẻ và xử lý
dữ liệu phục vụ các mục đích khác nhau.
Theo kết quả dự báo của công ty nghiên cứu thị trường Statista (Đức) có thể thấy
số lượng thiết bị IoT sẽ bùng nổ, cụ thể năm 2025 ước đạt gần 75 tỷ thiết bị, gấp 2,4 lần
so với năm 2020, minh họa ở hình 1.1.
Hình 1.1. Số lượng các thiết bị IoT từ năm 2015 – 2025 [28]
Từ khái niệm IoT thấy rằng trong môi trường IoT, có rất nhiều loại thiết bị khác
nhau như điện thoại thông minh, máy tính cá nhân, máy tính xách tay, đồng hồ thông
minh, ti vi thông minh, máy in, máy quét, IP Camera, thiết bị định tuyến, ...Từ khái niệm
13
IoT, cũng đã nhiều khái niệm về thiết bị IoT [118], nhưng để phù hợp với nội dung
nghiên cứu, luận án đưa ra khái niệm thiết bị IoT như sau:
Định nghĩa 1.2. Thiết bị IoT là những “vật” (gồm vật lý và ảo hóa) đa kiến trúc,
hạn chế về tài nguyên (có năng lực xử lý thấp, bộ nhớ lưu trữ nhỏ, nguồn điện năng
thấp, ...) có khả năng kết nối, chia sẻ, truyền tải và xử lý dữ liệu phục vụ các mục đích
khác nhau.
Qua khái niệm thiết bị IoT thấy rằng, các thiết bị IoT có mặt ở mọi nơi, hầu hết
các ngành nghề, lĩnh vực như chăm sóc sức khỏe, quản lý dây truyền sản xuất, quản lý
năng lượng, hệ thống giao thông thông minh, hệ thống truyền tải điện năng, …, minh
họa ở hình 1.2. Trong đó, đại đa số các thiết bị IoT chạy trên nền tảng biến thể của hệ
điều hành Linux. Những biến thể đó rất phổ biến bởi chúng chứa nhiều tiện ích phổ biến,
và nhiều khả năng của Unix trong một tập tin thực thi [71]. Đó cũng sẽ là lý do luận án
này chỉ tập trung thử nghiệm, đánh giá các phương pháp đề xuất với các tập tin thực thi
trên Linux, có định dạng phổ biến là ELF (Executable Linkable Format) nhưng không
mất đi tính tổng quát khi áp dụng trên các nền tảng hệ điều hành khác.
Hinh 1.2. Minh họa ứng dụng của Internet of Things (IoT) trong cuộc sống [13]
14
Ngoài các tiện ích đem lại và được ứng dụng trong nhiều lĩnh vực, ngành nghề
thì các thiết bị IoT cũng được dự báo sẽ đóng góp lớn vào nền kinh tế toàn cầu. Theo
báo cáo của công ty IoT Analytics [76] (nhà cung cấp hàng đầu về tìm hiểu thị trường
cho IoT có trụ sở ở Đức) thì giá trị kinh tế toàn cầu do IoT mang lại sẽ từ 2.700 tỷ USD
cho đến 6.700 tỷ USD trước năm 2025.
1.1.1.2. Đặc điểm của thiết bị IoT
Thiết bị IoT có những đặc điểm khác biệt với những công nghệ điện toán truyền
thống hiện nay, như [103]:
- Môi trường không được kiểm soát: Các thiết bị IoT có tính di động và tự hành
cao (ví dụ đồng hồ thông minh, thiết bị định tuyến,…). Những thiết bị này có thể truy
cập vật lý vào nhiều vị trí và tuỳ phụ thuộc vào điều kiện môi trường và thực hiện các
nhiệm vụ được lập trình sẵn mà không cần đến sự tham gia của người sử dụng. Với khả
năng tự hành, thu thập và trao đổi dữ liệu giữa các thiết bị IoT dựa trên cơ sở hạ tầng
mạng nên các vấn đề an toàn bảo mật có thể kể đến như mất an toàn giao thức, mất an
toàn ứng dụng trên các thiết bị IoT là có thể xảy ra.
- Tính không đồng nhất: Khác với các thiết bị xử lý dữ liệu truyền thống như máy
tính cá nhân với vi xử lý x86 thì các thiết bị IoT nói chung và các thiết bị IoT cỡ nhỏ
nói riêng sử dụng một cách đa dạng các kiến trúc vi xử lý như: MIPS, ARM, PowerPC,
MIPSEL, ... Ngoài ra, các nhà sản xuất khác nhau, đặc biệt là các nhà sản xuất đến từ
Trung Quốc cũng có những thay đổi riêng trong kiến trúc vi xử lý của riêng mình nhằm
giảm giá thành và thực hiện những mục đích khác nhau. Bên cạnh đó, sự không đồng
nhất còn thể hiện ở việc các thiết bị IoT dựa trên các mạng khác nhau như mạng Internet,
mạng viễn thông, mạng vệ tinh. Vì thế, việc nghiên cứu tổng thể, phổ quát cho các thiết
bị IoT là khó khăn.
- Tài nguyên hạn chế: Các thiết bị IoT thường bị hạn chế triển khai các cơ chế
đảm bảo an toàn nhằm giảm thiểu chi phí sản xuất và giảm kích thước các thiết bị IoT
cỡ nhỏ. Điều này vô hình chung đã dẫn đến các thiết bị IoT cũng bị hạn chế về tài nguyên
như bộ nhớ thấp, năng lực tính toán nhỏ, dung lượng năng lượng pin thấp.
- Trạng thái động: Trạng thái của các thiết bị IoT thay đổi linh hoạt, ví dụ như
lúc hoạt động và ngủ chờ, lúc kết nối và ngắt kết nối... phụ thuộc vào hoàn cảnh của các
15
thiết bị gồm vị trí, chức năng và tốc độ di chuyển. Hơn nữa, số lượng các thiết bị IoT
cũng có thể thay đổi.
- Tính kết nối: Thông qua IoT, mọi vật có thể được kết nối, tương tác với cơ sở
hạ tầng thông tin và truyền thông toàn cầu thường xuyên, liên tục.
Bên cạnh các đặc điểm trên thì các thiết bị IoT hiện thiếu cơ chế bảo mật trong
thiết kế và thường có cấu hình bảo mật yếu kém. Sự tồn tại của hai yếu tố này làm vấn
đề bảo mật IoT càng nghiêm trọng bởi kẻ tấn công luôn cố gắng khai thác thiết bị IoT
từ các lớp trong cấu trúc thiết bị IoT. Cấu trúc của thiết bị IoT gồm [112] lớp chính sách
(policy), lớp giao thức (protocol), lớp giao diện web (web interface), lớp hệ điều hành
và ứng dụng (Operating system and application), lớp phần sụn và lớp phần cứng
(hardware). Từ các lớp bảo mật trên có thể xác định rõ các mối nguy cơ đe dọa đối với
từng lớp, từ đó xây dựng các biện pháp bảo mật phù hợp, hiệu quả. Với nguy cơ đe dọa
từ các tập tin thực thi mã độc thì sẽ tập trung vào các lớp phần sụn, lớp hệ điều hành và
ứng dụng.
Như vậy, để đạt hiệu quả cao trong các bài toán phát hiện mã độc IoT botnet thì
việc nghiên cứu, tìm hiểu xem mã độc IoT botnet có những đặc trưng khác biệt gì so với
mã độc botnet truyền thống là rất quan trọng, phần tiếp theo của luận án sẽ trình bày chi
tiết vấn đề này.
1.1.2. Khái niΜm m« Ľίc IoT botnet
Mặc dù có rất nhiều loại mã độc tấn công, lây nhiễm các thiết IoT, nhưng xu
hướng mã độc botnet được xem là phổ biến nhất, gây hậu quả lớn nhất đối với các thiết
bị IoT [49]. Hoạt động của mã độc IoT botnet gần đây cho thấy tội phạm mạng đang
chuyển hướng sử dụng các thiết bị IoT nhằm phát động các cuộc tấn công mạng quy mô
lớn, có khả năng gây gián đoạn mạng Internet. Số lượng mã độc được phát triển với mục
đích lây nhiễm, tấn công các thiết bị IoT cỡ nhỏ ngày càng tăng, cụ thể là theo báo cáo
của hãng Kaspersky thì số lượng mã độc trên thiết bị IoT năm 2018 đã tăng gấp hơn 37
lần so với năm 2016 [85], minh họa ở hình 1.3.
Trước khi đi vào thuật ngữ mã độc IoT botnet thì cần tìm hiểu thuật ngữ mã độc.
Thuật ngữ mã độc có rất nhiều cách hiểu khác nhau, theo Helenius [65], mã độc được
là các chương trình được thiết kế với mục đích người dùng không mong muốn. Ed
16
Skoudis và cộng sự thì cho rằng [59] mã độc là tập các câu lệnh được lây nhiễm vào
máy tính người dùng để kiểm soát máy tính thực hiện các hành vi độc hại theo mục đích
của kẻ tấn công. Một cách tổng quan, mã độc (tiếng anh là Malicious Software/Code) là
một chương trình hoặc một đoạn mã được bí mật chèn vào hệ thống người dùng nhằm
gây hại hệ thống máy tính, hệ thống mạng, thông tin dữ liệu, … như tính tin cậy, tính
bảo mật, tính toàn vẹn hoặc tính sẵn sàng.
Hinh 1.3. Số lượng mã độc botnet trên các thiết bị IoT giai đoạn 2016 – 2018
Mã độc botnet là loại mã độc xuất phát từ tên gọi “robot”, trong đó mã độc botnet
là một ứng dụng có khả năng tự tương tác với các dịch vụ khác trên mạng. Mã độc botnet
[104], [88] được thiết kế để lây nhiễm các thiết bị cụ thể (ví dụ như máy tính, thiết bị di
động hoặc thiết bị IoT) và biến những thiết bị đó thành một phần trong hệ thống mạng
máy tính ma (zombies) – đó là một mạng máy tính gồm nhiều thiết bị đã bị lây nhiễm
mã độc botnet và được điều khiển bởi kẻ tấn công, thường được gọi là bot-master thông
qua các kênh giao tiếp như Internet Relay Chat (IRC). Điểm khác biệt giữa mã độc
botnet với các mã độc khác là mã độc botnet chỉ thực hiện các hành vi độc hại khi nhận
được chỉ thị từ các máy chủ C&C của kẻ tấn công.
17
Hình 1.4. Vị trí của mã độc IoT botnet trong các loại mã độc
Bởi vì số lượng thiết bị IoT hiện nay phát triển ngày càng nhanh, vượt xa so với
số lượng máy tính truyền thống, mã độc botnet trên các nền tàng đó sẽ lây nhiễm được
càng nhiều thiết bị. Do đó, có thể chia mã độc botnet thành hai loại là: mã độc IoT botnet
và mã độc botnet trên máy tính truyền thống (gọi tắt là mã độc botnet truyền thống).
Như vậy, tương tự như mã độc trên thiết bị di động [61] và mã độc Linux [50] thì mã
độc IoT botnet được xem như là mã độc botnet lây nhiễm trên các thiết bị IoT. Trong
phạm vi nghiên cứu, luận án định nghĩa mã độc IoT botnet như sau:
Định nghĩa 1.3. Mã độc IoT botnet là mã độc botnet có khả năng tự lây nhiễm
trên các thiết bị IoT, bị kết nối và điều khiển bởi tin tặc.
1.1.3. Sχ tiΔn hóa cνa m« Ľίc IoT botnet
Cũng giống như máy tính truyền thống, sự tiến hóa của mã độc botnet cũng gia
tăng theo sự phát triển của công nghệ tính toán, và cả Internet, sự phức tạp và mức độ
nguy hiểm của mã độc đã tăng lên kể từ khi công nghệ thông minh ra đời với hàng ngàn,
hàng tỷ thiết bị có khả năng kết nối mạng Internet. Allix và cộng sự [35] đã nhận định
rằng, hầu hết mã độc hiện nay được sinh ra bằng cách sao chép mã nguồn theo các hướng
dẫn trực tuyến hoặc biến thể của cùng mã độc theo sự sáng tạo của người viết mã độc.
Điều này được thể hiện khá rõ đối với mã độc IoT, thông qua việc phân tích, đánh giá
và tổng hợp một số nghiên cứu như [38], [37], [87], [55], [44], [45] thì luận án đưa ra
một biểu đồ ngắn gọn về sự phát triển, tiến hóa của mã độc IoT được sử dụng để thực
hiện tấn công từ chối dịch vụ phân tán gần đây, minh họa ở hình 1.5. Tuy nhiên, danh
sách các loại mã độc dưới đây vẫn chưa đầy đủ bởi tội phạm mạng thường xuyên sửa
đổi và cập nhật các loại mã độc đã biết để tạo ra các loại mã độc mới, khai thác nhiều
loại thiết bị IoT.
18
Hình 1.5. Mối quan hệ giữa một số mã độc IoT botnet
19
Linux.Hydra [55] được xem là mã độc lây nhiễm sớm nhất trên các thiết bị IoT
(gọi tắt là mã độc IoT). Linux.Hydra xuất hiện vào năm 2008, ở dạng mã nguồn mở
nhằm mục đích tấn công các thiết bị định tuyến dựa trên nền tảng kiến trúc MIPS. Mã
độc này được thiết kế để lây nhiễm các thiết bị IoT và biến các thiết bị này trở thành
một phần trong mạng botnet thực hiện tấn công từ chối dịch vụ phân tán bằng kỹ thuật
SYN Flood dựa trên IRC.
Psyb0t [44] xuất hiện vào năm 2009 với nhiều điểm tương tự với mã độc
Linux.Hydra như lây nhiễm trên các thiết bị định tuyến, modem DSL có vi xử lý MIPS
litte-endian. Psyb0t hoạt động dựa trên cơ chế nhận lệnh từ máy chủ C&C qua giao thức
IRC để thực hiện tấn công UDP Flood, ICMP Flood. Sau khi lây nhiễm thành công các
thiết bị, mã độc Psy0t sẽ chặn truy cập thiết bi định tuyến qua một số cổng TCP như 22,
23, 80.
Chuck Norris [45] được phát hiện vào năm 2010, là mã độc botnet dựa trên IRC
để lây nhiễm các thiết bị định tuyến và modem DSL. Mã độc này được coi là tiến hóa
từ Psyb0t với các khả năng tấn công từ chối dịch vụ phân tán bằng kỹ thuật UDP Flood,
ACK Flood, SYN Flood.
Tsunami/Kaiten [38] [55] là mã độc IRC bot được tiến hóa từ mã độc
Linux.Hydra với các tính năng tấn công tinh vi như HTTP Layer 7 Flood, TCP XMASS,
chỉnh sửa thông tin cấu hình máy chủ DNS trên thiết bị đã lây nhiễm khiến cho lưu
lượng từ thiết bị IoT được chuyển hướng tới máy chủ điều khiển của kẻ tấn công, ngắt
tiến trình, tải và thực thi các tập tin, giả mạo địa chỉ IP của những thiết bị dễ bị tổn
thương. Tùy thuộc vào các biến thể của mã độc mà nó có thể chỉnh sửa vị trí lưu trữ các
tập tin /etc/init.d/rc.local nhằm tự động thực thi những tập tin mã độc mỗi khi người
dùng đăng nhập hoặc tại thư mục /etc/rc.d/rc.local để đảm bảo các tập tin thực thi khi
hệ thống khởi động [30].
Aidra/LightAidra [55] là 2 loại mã độc IRC bot xuất hiện vào năm 2012, có mã
nguồn tương tự nhau nên có thể ghép chung vào cùng họ mã độc. So sánh với những
loại mã độc đã trình bày trước thì mã độc này phức tạp hơn vì chúng có thể biên dịch
dựa trên nhiều kiến trúc khác nhau như MIPS, MIPSEL ARM, PowerPC, x86/86-64 và
SuperH. Mã độc này có thể khởi tạo các cuộc tấn công từ chối dịch vụ sử dụng các kỹ
20
thuật TCP flood, UDP flood, DNS flood, SYN Flood và ACL Flood. Sau khi đã lây
nhiễm thành công các thiết bị IoT, mã độc LightAidra/Aidra được tải về thư mục
/var/run, /var/tmp trên thiết bị (nếu thiết bị sử dụng x86 thì sẽ lưu trong thư mục /tmp)
[113], đây là là vị trí không lưu trữ các tập tin thực thi trên các hệ thống bình thường bởi
dữ liệu sẽ bị xóa khi thiết bị khởi động lại.
Linux.Darlloz là mã độc được hãng Symantec phát hiện vào năm 2013, mã độc
này khai thác lỗ hổng PHP có mã CVE-2012-1823. Tương tự như LightAidra, mã độc
Linux.Darlloz hỗ trợ nhiều nền tảng kiến trúc như x86, ARM, MIPS, PPC…Nhằm chặn
người dùng truy cập tới thiết bị IoT đã lây nhiễm, mã độc này chặn các lưu lượng kết
nối bằng telnet với cấu hình iptable và kết thúc tiến trình của dịch vụ telnet trên thiết bị.
Ngoài ra, mã độc Linux.Darlloz sẽ tìm cách xóa các tập tin của LightAidra khỏi thiết bị
đã lây nhiễm và kết thúc các tiến trình có ID tiến trình (PID) được lưu trữ trong các tập
tin như /var/run/.lightpid, /var/run/.aidrapid và /var/run/lightpid.
Linux.Wifatch là mã độc mã nguồn mở lây nhiễm trên các thiết bị IoT có xác
thực yếu hoặc sử dụng tài khoản mặc định. Khi đã lây nhiễm, mã độc Wifatch sẽ tìm
cách loại bỏ những mã độc khác và ngăn chặn truy cập telnet với thông báo “Telnet đã
được đóng nhằm tránh lây nhiễm thiết bị trong tương lai. Vui lòng ngắt telnet, thay đổi
mật khẩu kết nối telnet hoặc cập nhật firmware” trong nhật ký của thiết bị.
Linux.Wifatch sử dụng mạng ngang hàng (P2P) để cập nhật mã độc và xóa các dấu vết
mã độc lưu lại trên thiết bị IoT. Theo phân tích của hãng bảo mật Symantec [101] thì
sau khi lây nhiễm lên thiết bị, mã độc Linux.Wifatch có thể thực hiện những hành vi mở
cổng hậu hoặc kết nối tới máy chủ C&C thông qua giao thức TCP.
Spike/Dofloo/MrBlack/Wrkatk/Sotdas/AES.DdoS [55] là loại mã độc được
phát hiện lây nhiễm các thiết bị IoT có kiến trúc ARM và MIPS vào giữa năm 2014.
Điểm khác biệt trong kiến trúc mạng botnet so với những dòng mã độc trước đây là
thường sử dụng IRC-based thì dòng mã độc này sử dụng Agent-handler. Hơn nữa, mã
độc này sử dụng cơ chế bảo đảm sự bền vững bằng cách giả mạo tập tin etc/rc.local,
nhằm duy trì sự lây nhiễm khi thiết bị khởi động lại. Bên cạnh đó, đặc trưng nổi bật của
mã độc này là sử dụng luồng SendInfo để tính toán hiệu năng của thiết bị và gửi về máy
chủ C&C, khi đó kẻ tấn công có thể triển khai mật độ thực hiện tấn công từ chối dịch
vụ phân tán trên mỗi thiết bị bot hiệu quả.
21
BASHLITE/Gafgyt/Q-Bot/Torlus/Lizkebab/LizardStresser) là loại mã độc
xuất hiện vào năm 2014, có nhiều đặc điểm tương tự như dòng mã độc Spike như kiến
trúc mạng botnet sử dụng Agent-Handler, có khả năng lây nhiễm trên các thiết bị đa
kiến trúc, thực hiện tấn công từ chối dịch vụ phân tán bằng một số kỹ thuật đơn giản
như SYN, UDP, TCP ACK Flood.
Elknot/BillGates được phát hiện năm 2015, là mã độc được thiết kế hướng tới
mục tiêu là các thiết bị dân dụng SOHO (Small Office/Home Office) đa kiến trúc như
ARM, MIPS. Có khả năng thực hiện tấn công từ chối dịch vụ phân tán bằng các kỹ thuật
HTTP Layer 7 Flood, TCP Flood.
XOR.DDoS đã âm thâm lây nhiễm nhiều thiết bị IoT trong năm 2015, mã độc
này có khả năng thực hiện nhiều loại tấn công từ chối dịch vụ phân tán như SYN Flood,
UDP Flood, DNS Flood, TCP Flood. Đúng như tên gọi của mã độc này, các kết nối với
máy chủ C&C và mã nguồn của mã độc đều sử dụng mã hóa XOR [63].
Remaiten/KTN-RM là mã độc IoT có những tính năng kết hợp giữa mã độc
Tsunami và Bashlite. Remaiten thực hiện lây nhiễm thiết bị IoT chạy nền tảng Linux
bằng phương pháp tấn công vét cạn dựa trên danh sách các tài khoản đăng nhập, mật
khẩu thường xuyên được sử dụng. Các máy chủ C&C kết nối tới các thiết bị đã bị lây
nhiễm bằng kênh truyền tin IRC. Remaiten có cấu trúc tinh vi, phức tạp hơn Tsunami
và Bashlite ở điểm có thể tùy biến dựa trên kiến trúc thiết bị và phương thức tấn công
mà mã độc thực hiện.
Mirai được viết bằng ngôn ngữ C (5732 dòng mã) và Google Go (1197 dòng mã)
Mã độc Mirai sử dụng những kỹ thuật tấn công DDoS đơn giản như TCP SYN Flood,
UDP Flood, DNS,…nhưng hậu quả tấn công đem lại vô cùng lớn khi có tới 400.000
thiết bị IoT bị lây nhiễm và vụ tấn công đã được ghi nhận với quy mô lớn nhất ở mức
1.2 Tbps [55] vào năm 2016. Mã nguồn của Mirai được biên dịch cho nhiều kiến trúc
chạy hệ điều hành Linux vì đây là nền tảng phổ biến trên các thiết bị IoT và hệ thống
nhúng .
Linux.IRCTelnet là mã độc IoT được xây dựng dựa trên kết hợp mã nguồn của
LightAidra/Aidra, giao thức IRC của mã độc Tsunami, các kỹ thuật lây nhiễm của mã
độc BASHLITE và danh sách xác thực của mã độc Mirai. Tất cả các thiết bị IoT dựa
22
trên các kiến trúc chuẩn đều có thể bị lây nhiễm bởi mã độc này. Mã độc này sử dụng
nhiều kỹ thuật tấn công như TCP Flood, TCP XMAS, UDP Flood trong cả IPv4 và IPv6.
Hajime là một mã độc IoT botnet được khám phá vào 10/2016 bởi công ty mạng
Rapidity [77], sử dụng phương thức lây nhiễm tương tự mã độc Mirai. Tuy nhiên, sự
khác biệt ở chỗ kiến trúc mã độc Hajime sử dụng hoàn toàn dựa trên truyền thông phân
tán và sử dụng giao thức bảng mã băm phân tán BitTorrent (DHT) cho phát hiện ngang
hàng và giao thức giao vận uTorrent cho trao đổi dữ liệu. Mỗi thông điệp đưpực mã hóa
bằng RC4 và được ký sử dụng các khóa công khai và riêng tư. Chính vì vậy, việc phát
hiện các hành vi độc hại của mã độc Hajime hiện còn gặp nhiều khó khăn.
BrickerBot là một mã độc IoT botnet dựa trên busybox được phát hiện bởi các
nhà nghiên cứu hãng Radware [120] vào 4/2017. Brickerbot có khả năng khai thác thiết
bị tương tự như Mirai, đặc biệt mã độc này có khả năng phá hủy (bricks) các thiết bị sau
khi đã lây nhiễm, khiến thiết bị đó không còn sử dụng được nữa. Mã độc này cố gắng
thực hiện tấn công từ chối dịch vụ các thiết bị IoT bằng nhiều phương pháp khác nhau
như xóa các tập tin khỏi bộ nhớ, cấu hình lại thông số mạng, thay đổi firmware thiết bị.
VNPFilter xuất hiện vào năm 2018, là mã độc được thiết kế để gây hại đến các
thiết bị định tuyến và các thiết bị lưu trữ trên mạng như thiết bị NAS (Network Attached
Storage) [102] nhằm đánh cắp dữ liệu. Không giống như mã độc IoT khác, VPNFilter
là mã độc có khả năng tồn tại ngay cả khi thiết bị IoT được khởi động lại.
Qua đánh giá sự tương quan giữa các loại mã độc IoT botnet được phản ảnh bởi
sự giống nhau giữa các chức năng cũng như mã nguồn. Luận án cho thấy mã độc
Linux.Hydra là mã độc IoT botnet có khả năng tấn công từ chối dịch vụ phân tán đầu
tiên xuất hiện từ năm 2008. Kể từ khi mã nguồn của Linux.Hydra được công bố thì các
nhà viết mã độc IoT đã kế thừa và cho ra nhiều biến thể như Psybot, Chuck Norris,
Tsunami. Tuy nhiên, một phần đoạn mã của Tsunami đã được phát triển thành mã độc
Remaiten và LightAidra, đó là một trong những mã độc IoT xuất hiện gần đây nhất. Bên
cạnh đó, mã độc Tsunami là tiền thân của mã độc Bashlite và từ mã độc Bashlite thì mã
độc Mirai đã kế thừa và tiến hòa với nhiều chức năng phức tạp hơn với các cuộc tấn
công DDoS quy mô lớn vào năm 2016. Kể từ đó, mã độc Mirai đã tiếp tục được phát
triển và tiến hóa thành nhiều biến thể khác nhau như BrickerBot, VPNFilter. Trước khi
kết thúc năm 2017, mã độc IoT Botnet bắt đầu tận dụng các lợi thế của các đặc trưng
23
hành vi độc hại của mã độc IoT botnet trước đó, nhưng cũng mang nhiều khả năng độc
hại mới như mã hóa, proxy ẩn danh, rootkit và khả năng tự hủy. Mã độc VPNFilter được
phát hiện bởi Cisco Talos [48] năm 2018. VPNFilter đại diện cho loại mã độc IoT botnet
có cấu trúc phức tạp, tinh vi, sử dụng các kỹ thuật tự vệ được tìm thấy trong mã độc IoT
botnet. Nhìn chung, các tác giả viết mã độc botnet vẫn đang tiếp tục xây dựng những
loại mã độc mới để lây nhiễm trên các thiết bị IoT.
1.1.4. C u trúc và nguyên lý ho t Ľίng cνa m« Ľίc IoT botnet
Thông qua đánh giá sự tiến hóa của mã độc IoT botnet có thể thấy sự liên kết
giữa các loại mã độc IoT botnet hiện nay. Trong đó, mã độc IoT botnet chứa hầu hết 2
thành phần cơ bản và 4 thành phần hỗ trợ [38], minh họa ở hình 1.6.
Hình 1.6. Quy trình lây nhiễm của mã độc IoT botnet
Các thành phần gồm: Mã độc botnet thực hiện tấn công DDoS khi nhận lệnh;
Máy chủ C&C để điều khiển mã độc botnet; Bộ Scanner để dò quét các thiết bị IoT mới
có thể bị khai thác; Máy chủ Reporting được sử dụng để thu thập các kết quả dò quét
của mã độc botnet hoặc bộ Scanner; Bộ Loaders được sử dụng để đăng nhập vào các
thiết bị IoT có thể bị khai thác, và ra chỉ thị cho chúng tải về các tập tin thực thi mã độc
có kiến trúc phù hợp; Máy chủ phân phối mã độc xác định vị trí lưu trữ mà độc sẽ được
24
tải về bởi các thiết bị IoT đã bị lây nhiễm. Các chức năng của một hoặc nhiều thành
phần khác có thể được kết hợp và chức năng của chúng có thể được thực hiện bởi thành
phần khác. Ví dụ, mã độc Mirai không tồn tại tách biệt Bộ Scanner mà thay vào đó mã
độc botnet sẽ thực hiện chức năng dò quét các thiết bị IoT dễ bị tổn thương và cũng thực
hiện tấn công DDoS. Với những thành phần đó, cơ chế hoạt động chung cho hầu hết mã
độc IoT botnet như sau [38]:
Bước 1: Mã độc dò quét dải địa chỉ IP ngẫu nhiên thông qua TCP cổng 23/2323
để tìm kiếm các thiết bị IoT có lỗ hổng bảo mật để xâm nhập, lây nhiễm mở rộng mạng
lưới máy tính botnet. Tuy nhiên, để tránh bị phát hiện và tránh sự chú ý của các cơ quan
chính phủ, mã độc IoT thường loại trừ một số dải địa chỉ IP đặc biệt của IANA, hãng
HP, Bộ quốc phòng Mỹ, dịch vụ bưu chính Mỹ. Sau khi dò quét được thiết bị có khả
năng xâm nhập, mã độc IoT tiến hành tấn công vét cạn để truy cập thiết bị. Việc vét cạn
thường được thực hiện dựa trên tổ hợp các tài khoản mặc định có sẵn được nhúng trong
mã nguồn mã độc. Ví dụ admin/admin, admin/123.
Bước 2: Sau khi dò quét được thiết bị có khả năng xâm nhập và đã thu thập được
thông tin để xác thực và leo thang đặc quyền trên thiết bị (thông qua giao diện câu lệnh
hoặc giao diện đồ họa), thì mã độc sẽ gửi những thông tin đặc trưng của thiết bị về máy
chủ Report thông qua các cổng dịch vụ khác (không sử dụng cổng đã dò quét ban đầu),
những thông tin đó như địa chỉ IP, giá trị cổng giao thức, kiến trúc thiết bị và tài khoản
xác thực.
Bước 3: Mã độc nhận lệnh từ C&C để kiểm tra thông tin đặc tả của thiết bị như
địa chỉ IP, kiến trúc phần cứng (MIPS, ARM, PowerPC, …)
Bước 4: Sau khi máy chủ C&C tiếp nhận thông tin đặc tả về thiết bị thì sẽ ra lệnh
cho máy chủ Loader lựa chọn tập tin thực thi mã độc phù hợp.
Bước 5: Máy chủ Loader gửi tới thiết bị muốn xâm nhập tập tin mã độc phù hợp.
Ngay sau khi tập tin mã độc được tải về và thực thi trên thiết bị thì mã độc sẽ xóa tập tin
thực thi và chỉ chạy trong bộ nhớ RAM để tránh bị phát hiện, đồng thời mã độc sẽ tắt
các dịch vụ cho phép truy cập từ xa như Telnet, SSH, vô hiệu hóa các chức năng của
tường lửa…và tìm kiếm các mã độc khác nhằm diệt chúng để tránh bị ảnh hưởng đến
tài nguyên thiết bị. Ví dụ mã độc Mirai sau khi lây nhiễm thành công thiết bị sẽ tìm và
25
diệt các mã độc cạnh tranh như Qbot, Remaiten. Việc khởi động lại thiết bị có thế xóa
được mã độc botnet, nhưng việc này chỉ được thực hiện bởi quản trị hệ thống hoặc quản
trị mạng. Ví dụ, nếu thiết bị lây nhiễm mã độc là các thiết bị định tuyến thì hệ thống
mạng sẽ bị gián đoạn khi các thiết bị định tuyến khởi động lại. Hơn nữa, hành động này
có thể vi phạm chính sách thỏa thuận mức độ phục vụ (SLA – Service Level Agreement)
của các dịch vụ có độ sẵn sàng cao.
Bước 6 và 7: Thông qua C&C kẻ tấn công có thể ra lệnh cho mã độc thực hiện
các tấn công từ chối dịch vụ phân tán bằng nhiều kỹ thuật như UDP flood, SYN flood,
GRE IP flood… tới một mục tiêu cụ thể.
1.1.5. Sχ khác biΜt giυa m« Ľίc botnet truyΖn thΧng và IoT botnet
Mã độc botnet trên máy tính truyền thống (ví dụ PCs, Laptops) và thiết bị IoT hầu
như tương đồng nhau về đặc trưng, hành vi vòng đời lây nhiễm. Tuy nhiên, với đặc
trưng công nghệ của thiết bị IoT thì mã độc IoT botnet cũng có những đặc điểm riêng
biệt:
- Thứ nhất, mã độc IoT botnet có tính đa kiến trúc để đảm bảo khả năng lây nhiễm
tối đa trên các thiết bị IoT (với nhiều kiến trúc như ARM, MIPS, PowerPC, Sparc,
MIPSEL, Renesas SH, x86-64 …) trong khi trên các máy tính truyền thống thì mã độc
thường chỉ lây nhiễm đơn kiến trúc [88] (ví dụ phổ biến trên máy tính cá nhân là kiến
trúc x86, trên điện thoại Android là ARM, …).
- Thứ hai, mặc dù khả năng xử lý của các thiết bị IoT sẽ tăng dần và thậm chí
vượt so với máy tính truyền thống trong tương lai. Nhưng hiện nay tài nguyên trên các
thiết bị IoT bị hạn chế hơn nhiều so với trên máy tính truyền thống. Chính vì thế, các
chương trình trên IoT có hướng tiếp cận khác cho việc điều khiển tài nguyên, phần cứng
và tài nguyên ứng dụng. Trên máy tính cá nhân thì coi các chương trình là tin cậy, cho
phép chúng truy cập tới nhiều phần của hệ thống, có thể sử dụng các kỹ thuật mã hóa
phức tạp [23], trong khi đó các thiết bị IoT thì các chương trình hạn chế truy cập của
mỗi ứng dụng tới tài nguyên của chúng, cũng như không sử dụng các kỹ thuật mã hóa
phức tạp. Bên cạnh đó, hầu hết mã độc IoT botnet sau khi lây nhiễm luôn thực hiện tìm
kiếm để dừng hoặc loại bỏ các mã độc khác (ví dụ Mirai tìm và loại bỏ các tiến trình
của mã độc .Anime và Qbot) để tránh bị ảnh hưởng tài nguyên của chúng.
26
- Thứ ba, mã độc IoT botnet thường thực hiện tấn công DDoS nhiều hơn so với
botnet trên PC truyền thống. Lý do là các thiết bị IoT bị lây nhiễm có tính phân tán diện
rộng, thậm chí là toàn cầu. Lưu lượng thực hiện các cuộc tấn công DDoS do mã độc IoT
botnet thực hiện thường cao hơn so với các mã độc botnet trên PC truyền thống, thường
từ 100 Gbps trở lên [38].
- Thứ tư, hầu hết mã độc IoT botnet thường tạo ra các lưu lượng tấn công khác
biệt như [38] : GRE (Generic Routing Encapsulation), trong đó lưu lượng GRE thì
không thể bị giả mạo nguồn tấn công. Hầu hết các thiết bị định tuyến Internet đều cho
phép lưu lượng GRE bởi chúng được sử dụng để tạo các kết nối mạng riêng ảo VPN
(Virtual Private Networks); và kỹ thuật “DNS water torture” cũng rất khác biệt với kỹ
thuật phản xạ và khuếch đại ở mã độc botnet thông thường là số lượng truy vấn được
gửi từ mã độc IoT botnet ít hơn đáng kể, mà thay vào đó sẽ để máy chủ DNS của các
nhà cung cấp dịch vụ ISP đệ quy thực hiện tấn công mục tiêu.
- Cuối cùng, một đặc điểm quan trọng khác biệt so với máy tính truyền thống là
các thiết bị IoT thường có xu hướng chạy lâu dài, ít khi khởi động lại hay cần đến tương
tác với người sử dụng (ví dụ như thiết bị định tuyến sau khi thiết lập, triển khai thì hầu
như người sử dụng không quan tâm đến quá trình hoạt động của thiết bị trừ khi thiết bị
bị lỗi, sự cố, …). Đây chính là điểm khiến mã độc IoT botnet được thiết kế khác biệt so
với mã độc botnet truyền thống. Mã độc truyền thống có thể lây nhiễm và thường trú tại
các vị trí bộ nhớ bền vững trên máy tính, cũng như lưu lại các tập tin thực thi độc hại
trên máy tính. Ngược lại, mã độc IoT botnet sau khi lây nhiễm sẽ xóa bỏ các tập tin thực
thi và chỉ chạy trên các bộ nhớ không bền vững, tức là có tính không thường trú.
Tóm lại, kết quả so sánh giữa mã độc botnet trên máy tính truyền thống và thiết
bị IoT được tổng hợp như tại bảng dưới đây:
Bảng 1.1. So sánh mã độc botnet trên máy tính truyền thống và IoT
Tiêu chí Mã độc botnet trên PC Mã độc botnet trên IoT
Nền tảng không đồng nhất Nền tảng kiến trúc mã độc
botnet trên máy tính truyền
thấp có sự đa dạng thấp,
So sự đa dạng của các thiết
bị IoT nên mã độc botnet
trên các thiết bị IoT rất đa
dạng về kiến trúc như
27
chủ yếu tập trung vào các
kiến trúc x86_64
ARM, MIPS, PowerPC,
Sparc, … để đảm bảo khả
năng lây nhiễm thành công
nhiều loại thiết bị
Đa dạng các loại mã độc Mã độc trên máy tính
truyền thống rất đa dạng về
chủng loại, tinh vi và phức
tạp
Do xu hướng thiết bị IoT
mới nổi, cũng như các đặc
trưng khác biệt của thiết bị
IoT nên người viết mã độc
lây nhiễm trên IoT đa phần
là chỉnh sửa cơ bản dựa
trên mã nguồn của các loại
mã độc đã công bố công
khai trước đó. Vì thế sự đa
dạng của mã độc trên IoT
thấp
Kỹ thuật gây rối Do tài nguyên và năng lực
tính toán của máy tính
truyền thống lớn nên người
viết mã độc thường sử
dụng các kỹ thuật gây rối
phức tạp để bảo vệ mã độc
khỏi bị phát hiện, phân
tích. Nguyên nhân là do mã
độc có đủ tài nguyên để xử
lý các kỹ thuật gây rối phức
tạp trước khi thực thi hành
vi độc hại
Do tài nguyên của các thiết
bị IoT bị hạn chế nên người
viết mã độc ít khi sử dụng
các kỹ thuật gây rối phức
tập, hoặc chỉ sử dụng một
số kỹ thuật gây rối đơn
giản như UPX, XOR.
Hình thức tấn công Đa dạng với nhiều hình
thức tấn công như mã hóa
dữ liệu, đánh cắp dữ liệu
Tập trung chủ yếu là hình
thức tấn công từ chối dịch
vụ phân tán bởi đặc điểm
28
riêng tư, tấn công từ chối
dịch vụ….
số lượng thiết bị IoT lớn và
phân tán toàn cầu
Phát hiện trên hệ thống Dễ dàng phát hiện dấu hiệu
mã độc thông qua biểu hiện
của máy tính truyền thống
Khó phát hiện bởi các thiết
bị IoT có tính hoạt động
độc lập cao, ít tương tác
với người dùng nên không
phát hiện được các dấu
hiệu bất thường trên hệ
thống
Khả năng thực thi trên môi
trường ảo
Dễ dàng triển khai phân
tích với môi trường phân
tích an toàn như sandbox
trên máy tính truyền thống
Khó triển khai phân tích
với môi trường an toàn như
sandbox bởi phải đáp ứng
yêu cầu về có khả năng xử
lý tính đa kiến trúc
Tính thường trú Có thể lây nhiễm và thường
trú tại các vị trí bộ nhớ bền
vững trên máy tính, cũng
như lưu lại các tập tin thực
thi độc hại trên máy tính.
Sau khi lây nhiễm sẽ xóa
bỏ các tập tin thực thi và
chỉ chạy trên các bộ nhớ
không bền vững, tức là có
tính không thường trú.
Tìm và ngăn chặn mã độc
khác
Do tài nguyên lớn nên trên
máy tính truyền thống
thường có khả năng bị lây
nhiễm nhiều loại mã độc
đồng thời
Do tài nguyên hạn chế nên
mã độc IoT thường có cơ
chế tìm và ngăn chặn mã
độc khác sau khi lây nhiễm
thành công
1.2. Học máy và học sâu trong phát hiện mã độc IoT botnet
1.2.1. HΣc máy
Trí tuệ nhân tạo là một bộ phận của khoa học máy tính nhằm nghiên cứu và phát
triển lý thuyết, phương pháp, kỹ thuật và ứng dụng mô phỏng, mở rộng và triển khai trí
thông minh của con người [107]. Học máy (Machine Learning-ML) là một tập con của
29
trí tuệ nhân tạo và có liên hệ chặt chẽ với tính toán thống kê, tập trung vào dự đoán bằng
cách sử dụng các hệ thống máy tính. Để giải quyết vấn đề số lượng lớn mã độc IoT ngày
càng gia tăng, nhiều nhà nghiên cứu và các hãng bảo mật đã hướng tới phát triển các
giải pháp tự động phát hiện mã độc IoT botnet. Một trong những giải pháp hiệu quả là
ứng dụng học máy. Học máy liên quan đến việc xây dựng các thuật toán phân lớp có
khả năng “học” từ dữ liệu đầu vào và sau đó sử dụng chúng để xử lý các dữ liệu mới.
Dữ liệu đầu vào ở dạng các đặc trưng của đối tượng đã phân tích. Các đặc trưng này có
thể là số nguyên hoặc số phẩy động hoặc giá trị logic (‘true’ hoặc ‘false’)…
Các thuật toán học máy có thể chia thành 3 loại [79], [93], gồm:
- Học có giám sát (Supervised learning) là quá trình học để dự đoán đầu ra của
một dữ liệu mới dựa trên các cặp (dữ liệu, nhãn) đã biết từ trước. Học có giám sát thường
được sử dụng trong các bài toán phân lớp, do đó hướng tiếp cận này sẽ được luận án sử
dụng trong các thực nghiệm về sau.
- Học không giám sát (Unsupervised learning) là quá trình học để tìm kiếm cấu
trúc hoặc mối liên hệ trong một tập dữ liệu đầu vào không có nhãn, hay còn được gọi là
không biết được kết quả đầu ra hoặc nhãn mà chỉ biết các đặc trưng dữ liệu đầu vào.
Học không giám sát thường được sử dụng trong các bài toán phân cụm.
- Học bán giám sát (Semi-supervised learning) là học với tập dữ liệu huấn luyện
gồm cả dữ liệu đã được gán nhãn và dữ liệu chưa được gán nhãn, trong đó số lượng có
nhãn chỉ chiếm một phần nhỏ. Tuỳ vào từng mục đích cụ thể, học bán giám sát có thể
được áp dụng cho bài toán phân lớp hoặc phân cụm.
Các nghiên cứu cho phát hiện mã độc sử dụng phương pháp học máy như [7],
[21], [60], [83] cho thấy các thuật toán học máy như cây quyết định (DT – Decision
Tree), k-lân cận gần nhất (kNN – k Nearest Neighbors), máy hỗ trợ vector (SVM –
Support Vector Machine), rừng ngẫu nhiên (RF – Random Forest), Bagging được sử
dụng phổ biến.
- Cây quyết định (DT – Decision Tree): là công cụ hỗ trợ ra quyết định sử dụng
biểu đồ dạng cây. Cây quyết định là cây mà ở đó các đỉnh biểu diễn một quyết định dựa
trên một vài đặc trưng và mỗi đỉnh có nhiều nhất các nút con đại diện cho số lượng các
giá trị có thể của đặc trưng này. Các nút lá của cây là các quyết định (ví dụ trong luận
30
án này thì đó là mã độc hay lành tính). Cây quyết định là một mô hình học có giám sát
có thể áp dụng vào cả bài toán phân lớp (classification) và hồi quy/dự báo (regression).
Việc xây dựng một cây quyết định trên dữ liệu huấn luyện là xác định các câu hỏi và
thứ tự của chúng. Trong đó, cây quyết định có thể làm việc với các đặc trưng ở dạng rời
rạc, không có thứ tự (ví dụ nắng, mưa, bão, vàng…) và cả với dữ liệu có vector đặc
trưng gồm cả dạng rời rạc và liên tục (numeric). Khó khăn lớn nhất ở đây là cách thực
học cây quyết định. Quá trình học thường được lặp đi lặp lại từng lớp. Trong 1 lần lặp
(phân chia tập các thể hiện 𝑆) thuộc tính phù hợp nhất A được lựa chọn để phân chia dữ
liệu và dữ liệu được phân chia tùy theo các giá trị của đặc trưng thành 𝑆1,,𝑆2,…,𝑆𝑛,, ở
đó n đại diện cho số các giá trị có thể của thuộc tính A (trong các tài liệu về cây quyết
định, các đặc trưng thường được gọi là thuộc tính – attribute). Nếu thuộc tính không có
số lượng giá trị hữu hạn nhưng là một số thì cần lựa chọn một ràng buộc để hia dữ liệu
theo giá trị của các đặc trưng đã chọn vào các lớp. Lặp lại quá trình học cho đến khi kết
thúc, tức cây đạt đến độ sâu giới hạn hoặc đã chạy hết các đặc trưng. Để lựa chọn “các
đặc trưng phù hợp nhất” có thể sử dụng tới Entropy và Độ đo thông tin (Information
Gain). DT được thực thi trong Python thông qua gói ScikiLearn (“Scikit-Learn
DecisionTreeClassifier,”), có một siêu tham số đối với DT gọi là “tiêu chuẩn
(criterion)”, tham số này được sử dụng để đo chất lượng phân chia trong cây. Ví dụ một
cây quyết định với các đặc trưng {A, B, C} và các lớp mục tiêu là {1, 2, 3}, cây quyết
định có thể minh họa như một đồ thị có hướng hoặc viết như một tập các luật.
Hình 1.7. Một ví dụ minh họa cây quyết định
- K-lân cận gần nhất (kNN – k Nearest Neighbors): là một phương pháp học có
giám sát, dựa trên hàm khoảng cách đo sự khác biệt hoặc tương đồng giữa 2 thể hiện.
Thuật toán lấy 01 mẫu cần phân loại và tính toán khoảng cách với các mẫu từ tập huấn
31
luyện, sau đó lựa chọn k hàng xóm gần nhất (với khoảng cách ngắn nhất) và thực hiện
quyết định dựa trên loại lớp của k hàng xóm đó. Khoảng cách Euclidean chuẩn d (x,y)
giữa 2 thể hiện x và y được xác định như công thức (1.1):
𝑑 (𝑥,𝑦)= √∑ (𝑥𝑘− 𝑦𝑘)2
𝑛
𝑘=1
(1.1)
Trong đó, 𝑥𝑘 là phần tử đặc trưng thứ k của thể hiện x, 𝑦𝑘 là phần tử đặc trưng
thứ k của thể hiện y và n là tổng số đặc trưng trong tập dữ liệu. Đôi khi việc ra quyết
định dựa trên việc đại đa số lớp mà k hàng xóm đã chọn thuộc về, trong khi đó một số
trường hợp khác lại dựa trên các trọng số liên quan để ra quyết định. Khi sử dụng k-NN
trong bài toán phát hiện và phân loại mã độc thì cần chú ý lựa chọn đặc trưng cũng như
phương pháp để giải quyết các ngoại lệ và dữ liệu hỗn hợp cao khi mà các mẫu huấn
luyện không thể tạo ra sự tách biệt [68]. Scikit-Learn có thực thi kNN (“Scikit-Learn
KneighborsClassifier”, siêu tham biến quan trọng đối với kNN là “số hàng xóm
(n_neighbors)” được sử dụng để dự đoán các phân loại mới.
- Máy hỗ trợ vector (SVM – Support Vector Machine): Ý tưởng của SVM đến từ
việc phân tách các mẫu mã độc (dương tính) và lành tính (âm tính), trong không gian
đặc trưng sử dụng một đường thẳng (trong không gian 2 chiều), hoặc thường sử dụng
siêu phẳng (hyperlane) tối ưu cho phép chia các điểm thành 2 phần sao cho các điểm
cùng một lớp nằm về một phía với siêu phẳng này.Thuật toán này xây dựng một hoặc
nhiều siêu phẳng (hyperplanes) để chia tập dữ liệu cho việc phân loại. Siêu phẳng được
xây dựng để tối đa hóa khoảng cách từ nó tới các điểm dữ liệu gần nhất. Đôi khi chuyển
đổi nhân được sử dụng để đơn giản hóa siêu phẳng. Xây dựng một siêu phẳng thường
hướng vấn đề 2 lớp (một với một, một với nhiều) và liên quan đến lập trình bậc hai. Cho
một tập dữ liệu tuyến tính tách biệt, biểu diễn bởi 𝐷={(𝑥𝑖,𝑦𝑖) | 𝑥𝑖∈ ℝ,𝑦𝑖∈
{−1,1}}𝑖=1𝑛 . Trong đó, 𝑦𝑖 là +1 hoặc -1 phụ thuộc vào lớp của điểm 𝑥𝑖. Mỗi 𝑥𝑖là một
vector p chiều (thường không được chuẩn hóa). Nhiệm vụ là tìm siêu phẳng với lề tối
đa (margin) mà nó chia tập dữ liệu thành các điểm 𝑦𝑖=1 và 𝑦𝑖=−1:𝑤∙𝑥−𝑏=0,
trong đó 𝑤 là vector bình thường tới một siêu phẳng. Nếu dữ liệu được phân tách tuyến
tính thì ta có thể xây dựng hai siêu phẳng 𝑤∙𝑥−𝑏=1 và 𝑤∙𝑥−𝑏= −1 giữa những
32
siêu phẳng đó sẽ không có điểm giá trị nào. Khoảng cách giữa chúng (lề) là 2
||𝑤|| , như
vậy để tối đa hóa lề thì cần tối thiểu hóa ||𝑤||. Scikit-Learn có thực thi bộ phân lớp SVM
(“Scikit-Learn SVC”) và có sẵn tất cả các siêu tham biến.
Hình 1.8. Minh họa lề tối đa cho siêu phẳng với phân loại 2 lớp
- Rừng ngẫu nhiên (RF – Random Forest): là một phương pháp học có giám sát,
có khả năng xử lý các bài toán phân lớp và hồi quy. Điểm mấu chốt chốt của phương
pháp rừng ngẫu nhiên là việc xây dựng các cây cụ thể trong một rừng hay nói cách khác
rừng ngẫu nhiên là tập hợp các cây quyết định mà mỗi cây được chọn theo một thuật
toán ngẫu nhiên. Một ưu điểm lớn của rừng ngẫu nhiên là thuật toán này dễ dàng mở
rộng trên nhiều máy tính bởi có khả năng huấn luyện các cây một cách độc lập do đó
đem lại khả năng đánh giá song song. Đồng thời thuật toán này còn phù hợp với các bài
toán có số lượng đặc trưng lớn, ví dụ như ngẫu nhiên lựa chọn khoảng 10 đặc trưng
trong hàng ngàn đặc trưng. Quá trình xử lý của RF cho các bài toán phân lớp diễn ra
như sau: Lấy ra ngẫu nhiên “k” đặc trưng từ tập “m” đặc trưng với 𝑘≪𝑚; từ tập “k”
đặc trưng, tính toán ra đỉnh (node) “d” là tốt nhất cho đỉnh phân loại; chia các đỉnh con
theo đỉnh tốt nhất vừa tìm được và lặp lại các bước trên cho đến khi đạt đến “k” đỉnh;
tiếp tục lặp lại toàn bộ quá trình trên để tạo ra “n” cây. Quá trình dự đoán kết quả thực
hiện như sau: lấy các đặc trưng cần kiểm thử và sử dụng các cây quyết định đã tạo ra để
dự đoán kết quả và lưu vào một danh sách; tính toán số lượng bầu (vote) trên toàn bộ
rừng cho từng kết quả; lấy ra kết quả có số lượng bầu lớn nhất làm kết quả phân loại
33
cuối cho mô hình. RF được thực thi trong Python thông qua gói Scikit-Learn (“Scikit-
Learn RandomForestClassifier”), có 2 siêu tham biến chính với bộ phân lớp này là “tiêu
chuẩn(criterion)” và “bộ ước lượng (n_esimators)” trong đó “tiêu chuẩn: giống như
trong bộ phân lớp DT, còn “bộ ước lượng” là số lượng cây quyết định được sử dụng
trong rừng.
- Bagging: hay còn gọi là Bootstrap Aggregation là một phương pháp ensemble,
tức là kết hợp từ nhiều mô hình yếu với khả năng dự đoán thấp để tạo ra một kết quả dự
đoán tốt hơn. Tư tưởng chính như sau: cho một tập huấn luyện 𝐷={(𝑥𝑖,𝑦𝑖):𝑖=
1,2,….,𝑛} và giả sử chúng ta muốn có một một dự đoán nào đó đối với biến x. Một mẫu
gồm B tập dữ liệu, mỗi tập dữ liệu gồm n phần tử được chọn lựa ngẫu nhiên từ D với sự
thay thế các thành phần trong mẫu ban đầu. Do đó 𝐵={𝐷1,𝐷2,…,𝐷𝐵} trông giống như
là một tập các tập huấn luyện được nhân bản; quá trình dự đoán với mỗi tập
𝐷𝑏 (𝑏=1,2,…,𝐵} và lần lượt thu thập các kết quả dự báo có được trên mỗi tập 𝐷𝑏; Kết
quả tổng hợp cuối cùng được tính toán bằng cách trung bình hóa (regression) hoặc thông
qua số phiếu bầu nhiều nhất (classification). Bagging được thực thi trong Scikit-Learn
(“Scikit-Learn AdaBoostClassifier”), các siêu tham biến quan trọng đối với Bagging là
số bộ ước lượng, tỷ lệ học và các thuật toán đã dùng.
Các thuật toán học máy khác nhau thường dựa trên một tập các siêu tham biến
(hyper-parameter) hoặc dựa trên một giả thuyết về phân bố dữ liệu, nên không có thuật
toán nào luôn tốt, cho hiệu suất cao nhất với mọi ứng dụng và trên mọi tập dữ liệu. Trong
đó cần lưu ý là các siêu tham biến là các tham biến không tự động học trong các mô
hình phân loại học máy mà chúng có thể chỉnh sửa bởi người dùng. Vì vậy, để tìm ra
những thuật toán học máy tốt nhất cho tập dữ liệu có thể cần thực nghiệm để thử các
thuật toán khác nhau. Luận án này sử dụng Scikit-Learn để thực hiện một số quá trình
thực nghiệm với các thuật toán đã chọn. Scikit-Learn là một thư viện dùng ngôn ngữ lập
trình Python, có khả năng thực hiện nhiều thuật toán học máy phổ biến. Trong luận án
này, hầu hết các thuật toán được sử dụng với các tham biến mặc định. Hiệu quả của các
thuật toán học máy phụ thuộc vào số lượng và độ chính xác của các đặc trưng đã trích
xuất [84], [90]. Việc trích xuất các đặc trưng có ý nghĩa để cải thiện hiệu quả và hiệu
suất phát hiện mã độc IoT botnet thường không đơn giản, chủ yếu tiến hành thủ công và
yêu cầu kiến thức chuyên gia. Do đó, các thuật toán học máy truyền thống đôi khi vẫn
34
chưa thực sự phù hợp cho phát hiện mã độc IoT botnet. Với năng lực máy tính ngày
càng phát triển và dữ liệu ngày càng lớn thì cần một giải pháp để khắc phục vấn đề trên,
đó là học sâu.
1.2.2. HΣc sâu
Thuật ngữ mạng nơ-ron nhân tạo (ANN – Artificial Neural Network) và mạng
nơ-ron học sâu xuất hiện từ những năm 1980 [92]. Mạng nơ-ron học sâu (DNN – Deep
Neural Network) trở nên phổ biến bởi 2 lý do: thứ nhất là sự phát triển năng lực tính
toán của máy tính ngày càng mạnh mẽ, thứ hai là sự bùng nổ kích thước dữ liệu và sự
xuất hiện của dữ liệu lớn. Một mạng DNN gồm 3 lớp cơ bản: một lớp đầu vào, một lớp
ẩn và một lớp đầu ra. Các lớp không bắt buộc có cùng kích thước. Sự khác biệt giữa
mạng nơ-ron và mạng nơ-ron học sâu là số lượng lớp ẩn; hai hay nhiều lớp ẩn sẽ được
xem như một mạng học sâu. Một mạng nơ-ron đơn chứa một đơn vị cơ bản gọi là một
nơ-ron. Mỗi nơ-ron chấp nhận các giá trị đầu vào và được tính trọng số. Nơ-ron tính
toán một vài hàm dựa trên các trọng số đầu vào để dự đoán kết quả đầu ra. Đầu ra của
nơ-ron được truyền đi như giá trị đầu vào của nơ-ron kế tiếp. Trong đó, số lượng nơ-ron
trong các lớp ẩn là không xác định vì thế mà có hàng ngàn khả năng cấu hình mạng nơ-
ron. Các lớp đầu vào có số lượng nơ-ron tương đương đặc trưng dữ liệu đầu vào, các
lớp đầu ra có số lượng nơ-ron tương đương số lượng cần phân lớp của các bộ phân lớp.
Sự kết nối của các nơ-ron hình thành một mạng gọi là mạng nơ-ron, minh họa như sau:
Hình 1.9. Biểu diễn một mạng nơ-ron truyền thẳng
35
Có rất nhiều mô hình mạng học sâu như mạng nơ-ron tích chập, mạng nơ-ron hồi
quy, … Trong đó, mô hình mạng nơ-ron tích chập (Convolution Neural Network - CNN)
[34] là kiến trúc mở rộng của mạng MLP được sử dụng rộng rãi trong DNN nhằm tối
ưu hóa quá trình huấn luyện mạng được đề xuất là giảm số lượng các trọng số (weight)
để tăng tốc độ tính toán, giảm thời gian huấn luyện, tránh hiện tượng quá khớp khi mà
lượng dữ liệu đầu vào là rất lớn. Mạng nơ-ron tích chập có kiến trúc khác với mạng nơ-
ron nhân tạo thông thường ở chỗ mạng nơ-ron tích chập được chia thành 3 chiều (rộng,
cao, sâu), tiếp đó là các nơ-ron trong mạng không liên kết hoàn toàn với bộ nơ-ron tiếp
theo mà chỉ liên kết tới một vùng nhỏ, cuối cùng một tầng đầu ra được tối giản thành
vector của giá trị xác suất. Điểm mạnh khi sử dụng mạng nơ-ron tích chập là giảm độ
phức tạp tính toán mà vẫn đảm bảo tính chính xác cao. Cấu trúc mạng CNN được cấu
thành bởi 5 thành phần cơ bản như hình 1.10, gồm: Lớp đầu vào (Input), lớp tích chập
(Convolutional Layer), lớp hợp nhất (Pooling Layer), lớp liên kết đầy đủ (Fully-
connected Layer) và lớp đầu ra (output).
Hình 1.10. Một mô hình mạng nơ-ron tích chập [34]
- Lớp tích chập (Convolution): lấy dữ liệu đầu vào và thực hiện phép chuyển
đổi để tạo ra dữ liệu đầu vào cho lớp kế tiếp (đầu ra của lớp này là đầu vào của lớp sau).
Phép biến đổi được sử dụng ở đây là phép tính tích chập.
- Lớp Pooling: Trong mô hình học sâu, các ma trận đầu vào của các lớp đầu tiên
thường có kích thước rất lớn. Để giải quyết bài toán này, các chuyên gia về học sâu đã
đề xuất phương pháp thêm một lớp ẩn đằng sau các lớp trích chọn đặc trưng (tức là
thường sử dụng giữa các lớp tích chập liên tiếp). Chức năng của hàm này là giảm thiểu
kích thước của ma trận đặc trưng, do đó giảm số lượng tham số và tính toán trong mạng
và kiểm soát hiện tượng quá khớp (overfitting).
36
- Lớp đầy đủ kết nối (Fully Connected): Sau các bước tích chập (convolution)
và lớp Pooling thì chúng ta nhận được các ma trận đặc trưng của dữ liệu đầu vào. Tại
đây, lớp Fully Connected là một lớp để tập hợp các đặc trưng đó, chuyển đổi chúng từ
dữ liệu 3D, 2D thành 1 vector giá trị giúp cho việc xác định kết quả đầu ra dễ dàng hơn.
- Lớp đầu ra (output): tại lớp cuối cùng này, thông thường hàm Softmax được
sử dụng để phân loại đối tượng dựa vào vector đặc trưng đã được phẳng hoá tại lớp kết
nối đầy đủ (Fully Connected). Các nơ-ron trong một lớp kết nối đầy đủ có đầy đủ các
kết nối tới tất cả các kích hoạt trong các lớp trước
Tuy nhiên, một vấn đề quan trọng đối với các mô hình mạng học sâu là dữ liệu
đầu vào phải được xử lý và chuyển đổi sang dạng số (numeric), tức là dưa nó vào một
không gian mới thường gọi là embbeding, hiện nay có rất nhiều các giải pháp để chuyển
đổi dữ liệu văn bản sang dữ liệu số như Word2vec [20], Doc2Vec [82], … Mô hình
Word2vec [20] được giới thiệu vào năm 2013 bởi Tomas Mikolov và cộng sự, đây là
một mạng nơ-ron hai lớp với duy nhất 1 lớp ẩn để xử lý văn bản. Đầu vào của nó là một
phần văn bản và đầu ra của nó là một tập các vectơ: các vectơ đặc trưng cho các từ trong
kho văn bản đó. Trong word2vec, một biểu diễn phân tán của một từ được sử dụng. Tạo
ra một vector với kích thước vài trăm chiều. Mỗi từ được biểu diễn bởi tập các trọng số
của từng phần tử trong nó. Vì vậy, thay vì sự kết nối one-to-one giữa một phần tử trong
vector với một từ, biểu diễn từ sẽ được dàn trải trên tất cả các thành phần trong vector,
và mỗi phần tử trong vector góp phần định nghĩa cho nhiều từ khác nhau. Mỗi vector
như vậy cũng đại diện cho một cách tóm lược ý nghĩa của một từ. Tóm lại, word2vec là
một kỹ thuật cho việc học mật độ dày đặc thông tin đại diện của từ trong một không gian
vector với số chiều nhỏ hơn, mỗi từ có thể được xem là một điểm trong không gian này
và được đại diện bởi một vector có độ dài cố định. Trong nghiên cứu của mình, Mikolov
và cộng sự đã đề xuất hai kiến trúc để xây dựng “word vector” đó là mô hình Continuous
Bag-of-Words (CBOW), và mô hình Skip-gram.
- Mô hình túi từ liên tục (CBOW - Continuous Bag of Words): dự đoán một từ
khi đã có các từ lân cận.
- Mô hình Skip-gram: là một mô hình đối lập hoàn toàn với mô hình CBOW. Mô
hình này giúp dự đoán các từ lân cận khi đã có một từ. Ví dụ, đầu vào mô hình là 𝑤𝑖 và
đầu ra là 𝑤𝑖−2 , 𝑤𝑖−1 , 𝑤𝑖+1 , 𝑤𝑖+2 nếu kích thước cửa sổ sử dụng là 2.
37
Hinh 1.11. Mô hình Skip-gram (trái) và CBOW (phải)
Mô hình Doc2Vec [82] được trình bày vào năm 2014 bởi Tomas Mikolov và
cộng sự. Mô hình doc2vec phát triển dựa trên cơ sở thừa kế ý tưởng của word2vec và
xây dựng thêm ma trận đoạn. Việc này giúp cho mô hình doc2vec tập hợp tất cả các từ
trong một câu thành một vector. Mô hình doc2vec bao gồm hai mô hình: mô hình túi từ
phân tán (Distributed Bag of Words- DBOW) và mô hình bộ nhớ phân tán (Distributed
Memory- DM).
- Mô hình túi từ phân tán (DBOW): Mô hình này đơn giản là không quan tâm thứ
tự các từ, huấn luyện nhanh hơn, không sử dụng bối cảnh địa phương / lân cận. Mô hình
chèn thêm 1 "word" là ParagraphID, ParagraphID này đại diện cho văn bản được huấn
luyện. Sau khi huấn luyện xong có thể hiểu các vector ParagraphID này là vector nhúng
của các văn bản.
38
Hình 1.12. Mô hình túi từ phân tán
- Mô hình bộ nhớ phân tán (DM): Nó xem một đoạn văn (paragraph) là một từ,
sau đó nối từ này vào tập các từ trong câu. Trong quá trình huấn luyện, vector của đoạn
văn (paragraph) và vector từ đều được cập nhật.
Hình 1.13. Mô hình bộ nhớ phân tán
Đối với doc2vec ngoài việc có thể xử lý trên các từ thì còn có thể xử lý trên các
câu thậm chí là cả một đoạn văn bản. Chính vì thế, có thể dễ dàng vector hóa cả một
đoạn văn bản thành một vector có số chiều cố định và nhỏ, từ đó có thể chạy bất cứ thuật
toán phân loại cơ bản nào trên các vector đó.
Những đặc điểm của mã độc IoT botnet cùng với đặc trưng của học máy, học sâu
là cơ sở lý thuyết nền tảng quan trọng để luận án lựa chọn các phương pháp, hướng tiếp
cận phù hợp trong phát hiện mã độc IoT botnet. Phần tiếp theo luận án trình bày về các
phương pháp phát hiện mã độc IoT botnet.
39
1.3. Kết luận Chương 1
Trong Chương 1, luận án đã trình bày hai nội dung chính là tổng quan về mã độc
IoT botnet và sơ lược học máy, học sâu. Trong nội dung tổng quan về mã độc IoT botnet,
luận án trình bày khái niệm về thiết bị IoT và mã độc IoT botnet. Tiếp đó, luận án phân
tích và đánh giá tổng quan sự tiến hóa của mã độc IoT botnet. Trên cơ sở đó, luận án
thảo luận và đưa ra kiến trúc vòng đời lây nhiễm của mã độc IoT botnet. Đồng thời, luận
án cũng đánh giá đặc điểm và sự khác biệt của mã độc botnet trên thiết bị IoT so với mã
độc botnet trên máy tính truyền thống. Những nội dung đã thảo luận trên giúp luận án
củng cố luận cứ trong xác định phương pháp phát hiện mã độc IoT botnet phù hợp. Phần
thứ hai, luận án trình bày sơ lược về học máy, học sâu bởi đây là những lý thuyết cơ sở
để luận án áp dụng vào các phương pháp phát hiện mã độc IoT botnet.
40
CHƯƠNG 2. PHƯƠNG PHÁP PHÁT HIỆN MÃ ĐỘC IOT BOTNET
2.1. Tổng quan các phương pháp phát hiện mã độc IoT botnet
Các phương pháp phát hiện mã độc IoT botnet có thể chia thành 2 hướng tiếp cận
chính như [99]: (1) các phương pháp dựa trên chữ ký (signature-based) và (2) các
phương pháp dựa trên hành vi (behavior-based). Các phương pháp dựa trên chữ ký sử
dụng một chuỗi các byte, được trích xuất từ mã độc IoT botnet đã biết như một chữ ký
đại diện đặc trưng duy nhất cho mỗi tập tin để phát hiện mã độc. Phát hiện dựa trên chữ
ký đem lại độ chính xác cao đối với những loại mã độc IoT botnet đã biết. Tuy nhiên,
với sự phát triển mạnh mẽ về số lượng và sự phức tạp của mã độc như mã độc “zero-
day” và mã độc “unknown” thì phương pháp dựa trên chữ ký không thể đáp ứng được
khi mà số lượng chữ ký mã độc ngày càng tăng, thậm chí bùng nổ nên yêu cầu không
gian lưu trữ phải tỷ lệ thuận với số lượng chữ ký, điều này khiến chi phí lưu trữ vô cùng
lớn. Để khắc phục những hạn chế này, phương pháp dựa trên hành vi được nghiên cứu,
phát triển. Phương pháp dựa trên hành vi yêu cầu thực thi các tập tin trong một môi
trường có giám sát và các hành vi sẽ được ghi nhận và kiểm tra. Ưu điểm của phương
pháp này giúp nhanh chóng hiểu được bản chất hành vi của tập tin. Đồng thời nhiều mã
độc hiện nay được xây dựng từ cùng mã nguồn thành các biến thể vì vậy cấu trúc tập tin
có thể khác nhau nhưng hành vi cơ bản không thay đổi. Tuy nhiên hạn chế của phương
pháp này nằm ở tốn kém thời gian thực thi và lưu trữ đặc trưng mẫu hành vi.
Để giải quyết các vấn đề về xu hướng số lượng mã độc tăng, số lượng chữ ký,
hành vi mã độc tăng, hiện nay các nhà nghiên cứu tiếp cận các phương pháp phát hiện
mã độc dựa trên học máy (machine-learning-based). Phương pháp dựa trên học máy
không sử dụng chữ ký hay hành vi mã độc cụ thể mà thay vào đó là các đặc trưng. Về
cơ bản, các đặc trưng được xem là thành phần lõi của phát hiện dựa trên học máy. Dựa
trên các cơ sở kỹ thuật phân tích cơ bản, tất cả các hướng tiếp cận trên được nhóm thành
3 phương pháp phổ biến là phân tích tĩnh (static), phân tích động (dynamic) và phân tích
lai (hybrid). Hình 2.1 minh họa phân loại các phương pháp phát hiện mã độc IoT botnet
hiện nay.
41
Hình 2.1. Phân loại các phương pháp phát hiện mã độc IoT botnet
2.1.1. Ph©n t²ch Ľίng
Phân tích động là phương pháp giám sát các hành vi trong quá trình thực thi các
tập tin đó, từ đó phát hiện có hay không các hành vi độc hại, bất thường. Môi trường
thực thi các tập tin thường là một môi trường mô phỏng (như sandbox) hoặc các thiết bị
IoT thực tế (như cài đặt các tác tử). Những thông tin được thu thập như các hành vi mức
hệ thống (syscall, giá trị thanh ghi, dữ liệu bộ nhớ ), các hành vi mức mạng (dữ liệu
luồng mạng pcap). Theo hướng tiếp cận này, Celeda và cộng sự [45] giới thiệu phương
pháp phát hiện mã độc Chuck Norris botnet trên các thiết bị modem bị lây nhiễm. Kết
quả nghiên cứu cho thấy hầu hết mã độc lây lan thông qua giao thức telnet do các thiết
bị sử dụng mật khẩu yếu hoặc mặc định của nhà sản xuất. Tuy nhiên nghiên cứu này chỉ
áp dụng được trên kiến trúc MIPS. Để mở rộng phạm vi nghiên cứu trên các kiến trúc
vi xử lý khác như ARM, PowerPC…bộ công cụ QEMU ngày càng được sử dụng rộng
rãi. Trong [111], Jonas và cộng sự đã xây dựng framework Avatar để phân tích Firmware
các thiết bị nhúng bằng cách phối hợp quá trình thực thi của bộ mô phỏng dựa trên
QEMU với phần cứng thực tế. Bằng cách tiêm một phần mềm trung gian đặc biệt vào
thiết bị nhúng, Avatar thực thi các chỉ thị firmware bên trong bộ mô phỏng trong khi
đang truyền các thực thi vào/ra tới thiết bị vật lý. Tuy nhiên, quá trình thực thi mô phỏng
chậm hơn nhiều so với quá trình thực thi trên thiết bị thực do việc đồng bộ tín hiệu thông
qua các kênh UART và JTAG không đảm bảo tốc độ truyền tin.
Cùng hướng tiếp cận đó, Yin Minn Pa Pa và cộng sự [22] đã phát triển mạng bẫy
IoT để chặn bắt mã độc IoT dựa trên giao thức telnet; và IoTBOX để phân tích mã độc
42
IoT đa kiến trúc CPU, nhưng chỉ tập trung vào phân tích các hành vi mạng. Cũng dựa
trên nền tảng QEMU, Ahmad Darki và cộng sự [54] đã đề xuất RARE – một hệ thống
mô phỏng phân tích mã độc và lưu trữ tiểu sử các hành vi của mã độc trên các bộ định
tuyến dân dụng (SOHO). Trong đó, RARE sử dụng phân tích tĩnh để cung cấp các thông
tin cho quá trình phân tích động từ đó tùy chỉnh môi trường mô phỏng giúp mã độc có
thể bộc lộ hết tất cả các hành vi độc hại, kết quả đạt 94% các mẫu mã độc có thể kích
hoạt thành công. Tuy nhiên, đặc trưng thu thập qua phân tích tĩnh còn đơn giản (địa chỉ
IP và tên miền) và quá trình tương tác giữa bot và C&C chưa đầy đủ khi chưa thể tùy
chỉnh được máy chủ C&C.
Như vậy có thể thấy, phân tích động đem lại kết quả khả quan trong phát hiện mã
độc IoT botnet, dù có nhiều ưu điểm nhưng phân tích động cũng tồn tại nhiều hạn chế,
cụ thể như bảng 2.1.
Bảng 2.1. Ưu điểm và hạn chế của phân tích động
Ưu điểm Hạn chế
- Hiệu quả và chính xác: quan sát thực thi
cụ thể của một chương trình để quyết định
tập tin là mã độc dễ dàng hơn nhiều so với
phân tích mã nhị phân. Phân tích động
thường làm việc với các giá trị thực tế,
chính xác khi thực thi tập tin mà không
cần phải trừu tượng hoặc xấp xỉ.
- Thông tin hành vi thực thi: ưu điểm của
phân tích động đến từ thực tế là tập tin độc
hại thực thi chức năng được thiết kế khi
nó bắt đầu và đến khi kết thúc. Trong quá
trình phân tích động, dữ liệu được thu
thập như bộ nhớ cấp phát, các tập tin được
ghi, các thanh ghi đã đọc/ghi, các tiến
trình đã tạo…Thông tin thu được khi thực
thi tập tin có thể trực tiếp được sử dụng để
- Hạn chế sự quan sát: quá trình phân tích
động không thể cung cấp khả năng quan
sát tất cả các đường đi thực thi (path
execution) có thể cũng như giá trị các
biến, điều này có nghĩa rằng phân tích
động có sự hạn chế trong quan sát mã độc.
- Chu kỳ thực thi và theo vết phụ thuộc:
hạn chế chung của phân tích động là theo
vết phụ thuộc bởi các kết quả phân tích
động chỉ dựa trên các hành vi mã độc
trong một (hoặc một vài) lần thực thi.
Trong khi đó, nhiều loại mã độc có những
điều kiện kích hoạt nhất định mới bộc lộ
các hành vi độc hại ví dụ như mã độc
time-bomb chỉ kích hoạt hành vi độc hại
vào ngày giờ cụ thể, mã độc botnet chỉ
43
đánh giá các thiệt hại tiềm tàng mà mã độc
có thể gây ra, từ đó có khả năng phát hiện
mã độc.
- Giải quyết các kỹ thuật gây rối, đóng
gói: phân tích động hiệu quả trong việc xử
lý mã độc gây rối và đóng gói bởi các
đoạn mã đã gây rối và đóng gói không ảnh
hưởng đến thông tin hành vi cuối cùng
được thu thập trong quá trình thực thi.
thực hiện hành vi độc hại khi nhận lệnh từ
kẻ tấn công thông qua C&C.
- Tiêu tốn thời gian và tài nguyên: phân
tích động cần thực thi các tập tin trong
một môi trường mô phỏng, có kiểm soát
trong một khoảng thời gian hoặc cho đến
khi quá trình thực thi kết thúc. Đó là một
tác vụ có tốn kém chi phí thời gian khi
phải thực hiện phân tích số lượng mẫu
lớn.
- Giới hạn của môi trường mô phỏng: môi
trường mô phỏng để thực thi các tập tin
tương đối là đơn giản và ổn định so với
môi trường thực thi thực tế của các mẫu
mã độc. Bên cạnh đó, việc thực thi các tập
tin thực thi IoT sẽ gặp vấn đề đa kiến trúc
(ví dụ MIPS, ARM, PowerPC, Sparc, …)
và sự hạn chế tài nguyên của các thiết bị
IoT. Do đó, rất khó để cấu hình một môi
trường nền tảng thỏa mãn các yêu cầu để
các tập tin thực thi IoT có thể thực hiện
đầy đủ và chính xác các chức năng.
2.1.2. Ph©n t²ch tǫnh
Phân tích tĩnh là phương pháp phân tích các tập tin mà không cần thực thi các tập
tin đó để phát hiện mã độc. Quá trình phân tích đòi hỏi xem xét kỹ mã nguồn của tập tin
(đã được chuyển sang các định dạng đọc hiểu như mã hợp ngữ assembly), hiểu luồng
thực thi thông qua các đoạn mã lệnh. Việc thực hiện phân tích tĩnh được thực hiện với
một số công cụ hỗ trợ dịch ngược như IDA Pro [117], radare2 , …Các đặc trưng thường
được trích xuất từ phân tích tĩnh như thông tin cấu trúc trong tiêu đề tập tin, mã thực thi
(Opcode - Operation Code), các chuỗi mang thông tin (PSI - Printable String
44
Information), đồ thị luồng điều khiển (CFG – Control Flow Graph) , đồ thị luồng dữ liệu
(DFG – Data Flow Graph)…
Theo hướng tiếp cận này có thể kể đến nghiên cứu của Costin và cộng sự [10] đã
đề xuất một framework để thu thập, lọc, unpack và phân tích tĩnh firmware quy mô rộng
từ đó phát hiện lỗ hổng bảo mật, mã độc. Những nghiên cứu trên chỉ sử dụng các đặc
trưng rời rạc mà không đi vào sự tương tác, liên quan giữa các đặc trưng…Trong khi
đó, mã độc IoT botnet luôn có quy trình hoạt động khá tương đồng nhau và có sự tương
tác với nhau [38], [19]. Yan Shoshitaishvili và cộng sự [24] cũng đã đề xuất framework
Angr trong bảo mật IoT. Angr có khả năng xử lý, phân tích các firmware thành các đồ
thị luồng điều khiển CFG và đồ thị luồng dữ liệu DFG và sử dụng biểu đồ này để tạo ra
các lát cắt xác thực bắt đầu từ entry-point cho tới các điểm xác thực của chương trình
nhằm đánh giá khả năng bị nhúng mã độc hoặc tồn tại các lỗ hổng trên firmware. Phương
pháp này cho phép chi tiết hóa toàn bộ luồng điều khiển (Control-Flow graph) và luồng
dữ liệu (Data-Flow graph) cho từng tập tin hệ thống trong firmware để từ đó phát hiện
mã độc bằng kỹ thuật phân tích đặc trưng (symbolic execution). Tuy nhiên, phương pháp
sử dụng Symbolic Execution chỉ phù hợp với việc phân tích các tập tin hệ thống nhỏ, và
không khả thi với các tập tin lớn do độ phức tạp cao khi xây dựng các đồ thị liên quan
và thực thi Symbolic Execution [10].
Như vậy có thể thấy, phân tích tĩnh đem lại kết quả khả quan trong bảo mật IoT
nói chung và phát hiện mã độc IoT nói riêng. Tuy nhiên, bên cạnh các ưu điểm thì phân
tích tĩnh cũng có những hạn chế, cụ thể miêu tả ở bảng 2.2.
Bảng 2.2. Ưu điểm và hạn chế của phân tích tĩnh
Ưu điểm Hạn chế
- Tài nguyên tiêu tốn và thời gian thực thi
thấp: Trong quá trình phân tích tĩnh,
không cần thực thi tập tin nên không bị
ảnh hưởng bởi thời gian và tài nguyên tiêu
tốn. Trong phân tích tĩnh, thời gian phân
tích phụ thuộc vào kích thước đoạn mã
trong khi đó với phân tích động thì thời
- Hạn chế của công nghệ dịch ngược:
Phân tích tĩnh phụ thuộc nhiều vào công
nghệ dịch ngược. Hầu hết các chương
trình mã độc đều được viết bằng ngôn ngữ
bậc cao, một thay đổi nhỏ trong mã nguồn
cũng dẫn đến thay đổi đáng kể trong mã
nhị phân
45
gian phụ thuộc vào luồng thực thi, điều
này có thể rất chậm trong trường hợp phải
thực hiện vòng lặp hàng trăm, hàng ngàn
lần.
- Quan sát tổng quan: ưu điểm lớn của
phân tích tĩnh là có thể phân tích tất cả các
đường đi thực thi tiềm tàng trong tập tin
mà không bị ảnh hưởng bởi tính đa kiến
trúc của các tập tin, do đó phân tích tĩnh
rất phù hợp với phát hiện mã độc IoT.
Điều này trái ngược với phân tích động
khi chỉ có thể quan sát đường đi đơn luồng
của tập tin tại thời điểm thực thi.
- Dễ dàng xây dựng các đặc trưng: Trong
phân tích tích, cần thực hiện tạo ra mã
phân tích (disassembler) bằng cách dịch
ngược. Việc dịch ngược sẽ chuyển các mã
nhị phân thành các chỉ lệnh hợp ngữ
tương ứng và sau đó nhóm những chỉ lệnh
theo một cách thức mà thông tin có cấu
trúc và nội dung về tập tin thực thi như
các hàm, các khối mã lệnh cơ sở, luồng
điều khiển, luồng dữ liệu.
- An toàn và dữ liệu độc lập: Ngay khi
thông tin phân tách của tập tin thực thi ban
đầu được trích xuất và thu thập thì không
cần thực thi thêm trên tập tin ban đầu nữa.
Điều này có nghĩa là trong suốt quá trình
phân tích tĩnh, nguy cơ bị ảnh hưởng bởi
mã độc hầu như không có.
- Kỹ thuật đa hình và mã hóa: mã độc đa
hình và mã hóa gây nhiều khó khăn cho
phân tích tĩnh.
46
2.1.3. Phân tích lai
Cả phân tích tĩnh và phân tích động đều có những ưu điểm và hạn chế nhất định.
Vì thế phân tích lai là sự kết hợp các ưu điểm của cả phân tích tĩnh và phân tích động,
trong đó phân tích tĩnh và phân tích động bổ trợ lẫn nhau để nâng cao hiệu quả trong bài
toán phát hiện mã độc IoT botnet.
Hình 2.2. Các phương pháp phân tích lai
Các phương pháp này có thể phân loại thành 3 cách tiếp cận như hình 2.2. Những
tập tin bị đóng gói (pack) muốn thực thi đúng đắn thì cần phải thực hiện unpack khi tải
vào trong bộ nhớ. Chính vì thế, việc trích xuất (dump) toàn bộ dữ liệu của tập tin khi
thực thi trong bộ nhớ ra ngoài sẽ thu được tập tin không bị đóng gói, từ đó phân tích tĩnh
được dễ dàng hơn như hình 2.2(a). Bên cạnh đó, phương pháp lai có thể sử dụng kết quả
từ phân tích tĩnh như một nguồn thông tin bổ trợ cho phân tích động về sau như hình
2.2(b). Cuối cùng hình 2.2(c) kết hợp đồng thời cả hai kết quả phân tích tĩnh và phân
tích động. Như vậy có thể thấy, phân tích lai kết hợp các ưu điểm của phân tích tĩnh và
phân tích động đem lại kết quả khả quan trong phát hiện mã độc, nhưng việc kết hợp
này yêu cầu không gian lưu trữ và tài nguyên tính toán lớn [110].
47
2.1.4. So sánh giυa ph©n t²ch tǫnh v¨ ph©n t²ch Ľίng
Cả phân tích tĩnh và phân tích động đều có những ưu điểm và hạn chế nhất định.
Bảng 2.3 tổng hợp các ưu nhược điểm của mỗi phương pháp nêu trên.
Bảng 2.3. So sánh các phương pháp phân tích, phát hiện mã độc IoT botnet
Phân tích động Phân tích tĩnh
Điểm
mạnh
- Quan sát thực thi cụ thể của một
chương trình để quyết định tập tin là
mã độc dễ dàng
- Phân tích động hiệu quả hơn đối
với mã độc gây rối
- Phân tích một cách chi tiết các tập tin
và đưa ra được cái nhìn tổng quát về tất
cả các khả năng kích hoạt của chúng
- Không cần phải thực thi mã độc nên
không bị ảnh hưởng bởi tính đa kiến
trúc khi xây dựng môi trường thực thi
Hạn
chế
- Chỉ có thể giám sát đơn luồng thực
thi
- Làm lộ quá trình phát hiện và phân
tích mã độc
- Có thể gây nguy cơ mất an toàn
cho mạng và hệ thống
- Khó mô phỏng đầy đủ thiết bị IoT
(tính đa kiến trúc)
- Phân tích tĩnh phụ thuộc nhiều vào
công nghệ dịch ngược
- Khó khăn khi xử lý mã độc sử dụng
kỹ thuật gây rối
Để phù hợp với nội dung nghiên cứu, luận án thấy rằng với đầu vào là một tập
tin thực thi có tính đa kiến trúc thì cần lựa chọn phương pháp có khả năng xử lý vấn đề
này hiệu quả và hiệu suất, do đó luận án lựa chọn phân tích tĩnh trong đề xuất hướng
tiếp cận giải quyết bài toán nghiên cứu, trong đó luận án khai thác điểm mạnh của phân
tích tĩnh và hạn chế được điểm yếu của phương pháp này. Phần tiếp theo luận án sẽ tập
trung phân tích, đánh giá các nghiên cứu hiện nay dựa trên phân tích tĩnh trong phát hiện
mã độc IoT botnet.
48
2.2. So sánh, đánh giá các phương pháp dựa trên phân tích tích trong phát hiện mã
độc IoT botnet
Luận án nhấn mạnh vào những nghiên cứu tiên tiến hiện nay và có khả năng phát
hiện mã độc IoT botnet. Do đó, luận án chỉ khảo sát một số nghiên cứu tiêu biểu, bắt
đầu từ năm 2012. Dựa trên khảo sát, đánh giá các nghiên cứu sử dụng phân tích tĩnh
trong phát hiện mã độc từ năm 2012 trở lại đây, luận án thấy quy trình chung trong phát
hiện mã độc IoT botnet dựa trên phân tích tĩnh gồm các bước sau: (1) thu thập dữ liệu,
(2) trích chọn đặc trưng, (3) tiền xử lý dữ liệu và (4) phát hiện, minh họa ở hình 2.3.
Hình 2.3. Tổng quan tiến trình phát hiện mã độc IoT botnet dựa trên các đặc trưng tĩnh
- Thu thập dữ liệu: để phát hiện mã độc IoT, bước đầu tiên cần xây dựng bộ dữ
liệu gồm các mẫu mã độc và lành tính IoT. Tập dữ liệu mã độc thường được thu thập từ
các mạng bẫy honeypot và sandbox, các mẫu lành tính IoT thường được thu thập từ việc
trích xuất phần sụn (firmware) của các thiết bị IoT và được kiểm tra thông qua
VirusTotal.
- Trích chọn đặc trưng: Bên trong cấu trúc của tập tin mã độc tồn tại những
thành phần độc hại có thể được sử dụng làm đặc trưng trong phát hiện mã độc. Những
đặc trưng này như các chuỗi (strings), mã thực thi (opcode), …
49
- Tiền xử lý dữ liệu: ở giai đoạn này, dữ liệu đã sinh từ bước 2 được chuyển đổi,
tiền xử lý và chuẩn hóa sao cho phù hợp với các thuật toán sử dụng ở giai đoạn sau.
Thêm vào đó, dữ liệu cũng được chia thành các tập huấn luyện và tập kiểm thử để làm
đầu vào cho giai đoạn tiếp theo.
- Phát hiện: ở giai đoạn này, các thuật toán học máy hoặc học sâu được áp dụng
để hiểu biết tốt hơn về các đặc trưng của mã độc IoT cũng như để phân biệt các mẫu mã
độc với các mẫu lành tính. Những thuật toán được sử dụng như k-Nearst Neighbors,
Support Vector Machine, Random Forest, Neural Network.
Các nghiên cứu dựa trên phân tích tĩnh trong phát hiện mã độc thường sử dụng
những đặc trưng phổ biến như [78], [95]: tiêu đề tập tin (header), các lời gọi hàm system-
calls, lời gọi API (Application Programming Interfaces), PSI (Printable Strings
Information), FLF (Function Length Frequency), các thư viện liên kết, OpCode (trích
xuất từ mã assembly), … Dịch ngược là hướng tiếp cận phổ biến để trích xuất những
thông tin đặc trưng trên từ một tập tin thực thi. Cách thức trích xuất và xử lý những đặc
trưng đó ảnh hưởng lớn đến độ chính xác và độ phức tạp của các phương pháp phát hiện
mã độc IoT botnet, những đặc trưng đó có thể được chia thành 02 nhóm: dựa trên các
đặc trưng có cấu trúc đồ thị và dựa trên các đặc trưng phi cấu trúc đồ thị, như minh họa
ở hình 2.4.
Hình 2.4. Phân loại các đặc trưng tĩnh trong phát hiện mã độc IoT botnet
2.2.1. Ph©n t²ch tǫnh dχa tr°n ĽΊc trng phi c u tr¼c ĽΩ thΠ
Các phương pháp phát hiện mã độc IoT botnet sử dụng các đặc trưng phi cấu trúc
đồ thị nhằm xây dựng các mô hình phát hiện, chứa các thuộc tính của cấu trúc tập tin
50
nhị phân để phân loại một tập tin nhị phân là mã độc hay lành tính. Những phương pháp
này dựa trên trích xuất các đặc trưng gồm Opcode, Strings hoặc cấu trúc tập tin để phân
biệt các mẫu mã độc. Những đặc trưng này có thể được chia thành 2 nhóm [56], [51]:
đặc trưng mức cao và đặc trưng mức thấp. Cụ thể, các đặc trưng mức thấp có thể được
thu thập trực tiếp từ trong cấu trúc của tập tin, trong khi đó các đặc trưng mức cao cần
sử dụng các công cụ hỗ trợ phân tách (disassembler) [47] như IDA Pro hoặc Radare2.
2.2.1.1. Hướng tiếp cận đặc trưng mức cao
a. Đặc trưng Opcode
Mã thực thi (Opcode - Operation Code) là một trong những đặc trưng phổ biến
được sử dụng trong phát hiện mã độc. Một opcode là một chỉ thị lệnh đơn có thể được
thực thi bởi vi xử lý (CPU), có thể miêu tả hành vi của một tập tin thực thi. Mỗi loại vi
xử lý khác nhau lại sử dụng một loại ngôn ngữ opcode khác nhau. Điều này khá phổ
biến đối với thiết bị IoT khi mà thiết bị IoT không đồng nhất về vi xử lý (CPU). Để trích
xuất các opcode từ tập tin thực thi cần thực hiện phân tách (disassembly). Trong ngôn
ngữ assembly, những opcode này sẽ được biểu diễn ở tên chỉ thị ngắn gọn như POP,
PUSH, MOVE, ADD, SUB…
Hình 2.5. Minh họa các chuỗi Opcode trong tập tin thực thi mã độc
51
Dựa trên đặc trưng này, Hamed HaddadPajouh và cộng sự [14] đã đề xuất một
phương pháp phát hiện mã độc IoT sử dụng chuỗi opcode. Phương pháp này đạt độ
chính xác 98,18% với tập dữ liệu kiểm thử gồm 281 mã độc IoT dựa trên ARM và 270
mẫu lành tính IoT dựa trên ARM. Cùng hướng tiếp cận này, Ensieh Modiri Dovom và
cộng sự [57] đã chuyển đổi opcode của các tập tin thực thi vào không gian vector và ứng
dụng phương pháp mờ (fuzz) để phát hiện mã độc IoT botnet. Để chứng minh phương
pháp trong phát hiện mã độc botnet, nhóm tác giả triển khai thực nghiệm dựa trên tập
dữ liệu IoT có kiến trúc ARM, gồm 1078 mẫu lành tính và 128 mẫu mã độc, kết quả đạt
độ chính xác 99,83%. Tương tự, Hamid Darabian và cộng sự [52] đã trình bày một kỹ
thuật dựa trên chuỗi tuần tự opcode để phát hiện mã độc IoT botnet. Bằng cách đếm số
lần lặp lại của opcode trong các tập tin thực thi, nhóm tác giả thấy rằng một vài giá trị
opcode xuất hiện trong các mẫu mã độc có tần suất xuất hiện cao hơn các tập tin lành
tính. Do đó, các opcode được đánh chỉ mục xếp loại dựa trên số lần lặp, các opcode có
số lần lặp lại càng nhiều thì chỉ số xếp hạng càng cao và ngược lại. Tiếp đó, các chuỗi
opcode sẽ được chuyển thành chuỗi số và ứng dụng các bộ phân lớp học máy gồm kNN,
SVM, MLP, Random Forest, Decision Tree và AdaBoost để phân loại. Kết quả thực
nghiệm đạt độ chính xác 99% trong phát hiện mẫu mã độc botnet từ các mẫu lành tính.
Mặc dù những kết quả đạt được của việc sử dụng opcode trong phát hiện mã độc
rất khả quan, nhưng phương pháp này vẫn còn một số hạn chế. Thứ nhất, do sự khác
biệt giữa tập lệnh của các kiến trúc khác nhau, nên những nghiên cứu trên cần được cải
tiến để bao gồm nhiều dữ liệu đa kiến trúc hơn. Thứ hai, bộ dữ liệu được sử dụng khá
nhỏ so với các mối đe dọa trong thực tế, vì vậy các phương pháp này có thể mất đi độ
chính xác khi áp dụng trên quy mô lớn. Cuối cùng, điểm yếu khá phổ biến là các nghiên
cứu cho thấy opcode có thể dễ dàng bị gây rối bằng các kỹ thuật tự vệ của mã độc botnet,
dẫn đến những phát hiện sai khi gặp phải mã độc đa hình, có kiến trúc phức tạp.
b. Đặc trưng String
Một chương trình thông thường sẽ bao gồm rất nhiều chuỗi (string), sử dụng để
thực hiện in các thông báo, cảnh báo, hiển thị thông tin, cũng có thể là địa chỉ IP hoặc
tên miền máy chủ mà phần mềm đó kết nối tới, có thể chứa các địa chỉ email, thông tin
đăng nhập, mật khẩu, tài khoản mặc định… Tìm kiếm các chuỗi có thể là cách đơn giản
để dự đoán hành vi của chương trình: Chương trình kết nối tới máy chủ có địa chỉ thế
52
nào, có các thông báo gì quan trọng, chương trình liên kết hoặc sử dụng các ứng dụng
hoặc tài nguyên khác trong hệ thống hay không, có sử dụng các hàm API nào, ... ,từ đó
có thể xác định một tập tin thực thi là mã độc hay không [70].
Hinh 2.6. Một số chuỗi PSI trong tập tin nhị phân mã độc
Các chuỗi trong tập tin thường được lưu trữ với định dạng ASCII hoặc Unicode.
Cả 2 định dạng ASCII và Unicode đều lưu trữ các ký tự trong một dãy mà kết thúc bằng
một giá trị NULL để chỉ ra rằng chuỗi đã được hoàn tất. Các chuỗi định dạng ASCII sử
dụng 1 byte/1 ký tự, và chuỗi định dạng kiểu Unicode sử dụng 2 byte/1 ký tự.
Hinh 2.7. Chuỗi BAD được mô tả dưới dạng ASCII
Hình 2.7 cho thấy chuỗi BAD được lưu trữ dưới dạng mã ASCII. Chuỗi dạng
ASCII được lưu trữ như là byte 0x42, 0x41, 0x44, và 0x00, với 0x42 là mã ASCII đại
diện cho chữ cái B hoa, 0x41 là mã ASCII đại diện cho chữ cái A hoa, 0x44 là mã ASCII
đại diện cho chữ cái D hoa. Giá trị 0x00 ở cuối là giá trị NULL.
53
Hinh 2.8. Chuỗi BAD được miêu tả dưới dạng Unicode
Hình 2.8 cho thấy chuỗi BAD được lưu trữ dưới dạng mã Unicode. Chuỗi dạng
Unicode được lưu trữ như là byte 0x42, 0x00, 0x41, và tương tự. Chữ cái B được trình
diễn bởi 2 byte là 0x42 và 0x00, và giá trị kết thúc NULL là 2 byte 0x00. Khi dò quét
tìm kiếm các chuỗi trong một tập tin thực thi. Tuy nhiên, trong các chương trình dò tìm
theo chuỗi thì các chuỗi tìm được lại không có thật. Ví dụ, nếu chương trình Strings tìm
ra một dãy các byte “0x56, 0x50, 0x33, 0x00”, nó sẽ cho rằng đây là chuỗi VP3. Nhưng
những byte đó có thể không thực sự đại diện cho chuỗi, chúng có thể là một địa chỉ của
ô nhớ, các chỉ thị của CPU, hoặc là dữ liệu được sử dụng bởi một chương trình nào đó.
Vì thế cần thực hiện lọc để tìm ra các chuỗi không hợp lệ. Thông thường, nếu một chuỗi
là ngắn và không tương ứng với từng từ, nó có thể là vô nghĩa. Chúng ta có thể dễ dàng
xác định chuỗi có ý nghĩa như tên hàm chức năng của Windows thường bắt đầu bằng
một ký tự in hoa và ký tự đầu của từ tiếp theo (Subsequent Word) cũng bắt đầu bằng
một ký tự in hoa. Trong thực tế, các tập tin nhị phân mã độc sẽ có các chuỗi tường minh
có thể đọc hiểu (printable) hoặc các chuỗi bị mã hóa (hầu như là non-printable hoặc các
ký tự ngẫu nhiên). Theo hướng tiếp cận này, Mohannad Alhanahnah và cộng sự [4] kết
hợp các đặc trưng tĩnh khác nhau như các chuỗi (string), đồ thị luồng điều khiển (CFG)
và thông tin thống kê cấu trúc tập tin để sinh ra các chữ ký dùng cho phân lớp mã độc
IoT đa kiến trúc. Kết quả thực nghiệm dựa trên bộ dữ liệu có 5150 mẫu mã độc IoT,
nhóm tác giả đã chứng minh phương pháp tiếp cận đạt độ chính xác 95,5 %. Tuy nhiên,
hạn chế của phương pháp này là quá trình phân tích dựa trên đồ thị luồng điều khiển, có
độ phức tạp cao và chi phí tính toán lớn.
2.2.1.2. Hướng tiếp cận đặc trưng mức thấp
a. Đặc trưng ELF header
Tập tin ELF được nhận diện bởi tập các byte “magic” ở đầu tập tin là 0x7F theo
sau bởi 0x45 0x4c 0x46 hoặc “ELF” ở định dạng ASCII. Phần tiếp theo của tập tin là
tiêu đề, bảng tiêu đề chương trình, bảng section hoặc cả hai. Sau đó là các section của
tập tin chứa dữ liệu ở định dạng code, text và data.
54
- Tiêu đề tập tin (ELF header): chứa thông tin mô tả cấu trúc tổ chức của tập tin,
giúp xác định cách các tiến trình được tạo ra…
- Vùng (Section) và tiêu đề vùng (Section header): Section là phần định vị nhỏ
nhất trong tập tin ELF, đây là giá trị tùy chọn trong tập tin. Một section chứa một loại
dữ liệu như mã thực thi (.text), dữ liệu người dùng đã khởi tạo với quyền đọc/ghi (.data)
và dữ liệu người dùng đã khởi tạo với quyền chỉ đọc (.rodata). Phần bảng section header
xác định các section trong tập tin.
- Phân đoạn (Segment) và tiêu đề chương trình (program header): Các segment
chứa một hoặc nhiều section được liên kết với nhau bằng trình liên kết (linker), giúp hệ
điều hành xác định segment nào được tải vào không gian bộ nhớ và có quyền thực thi
như thế nào (đọc/ghi/thực thi). Một segment sẽ lưu các section có cùng quyền hạn. Phần
bảng program header giữa sơ đồ các segment trong tập tin.
Một tập tin định dạng ELF (Executable and Linkable format) chứa nhiều thông
tin có giá trị, có thể được sử dụng trong phát hiện mã độc. Định dạng tập tin ELF thường
có 3 phần gồm ELF header, Segments và Section, như minh họa ở hình 2.9. ELF header
chứa dữ liệu cấu trúc về tổ chức của một tập tin thực thi. Phần section chứa thông tin
cần thiết cho sự quan sát các liên kết để tạo các tập tin đối tượng, không quan sát được
ở chế độ thực thi. Phần segment thì ngược lại, chứa những thông tin quan sát được khi
tập tin thực thi trên ổ đĩa. Do đó, phần segment thường được biết đến là tiêu đề tập tin
thực thi.
Hình 2.9. Định dạng tập tin ELF
55
Dựa trên nội dung này, Farrukh Shahzad and Muddassar Farooq [96] đã trình bày
một công cụ phát hiện mã độc Linux, có tên là ELF-Miner. Công cụ này trích xuất một
tập gồm 383 đặc trưng có cấu trúc từ các tập tin ELF như section headers, symbol
section, program header,… Sau đó, nhóm tác giả sử dụng WEKA gồm 4 thuật toán học
máy truyền thống là RIPPER, PART, C4.5 và Decision Tree J48 để thực hiện quá trình
phát hiện mã độc. Để chứng minh phương pháp đề xuất, nhóm tác giả đã sử dụng tập dữ
liệu gồm 709 mẫu ELF và đạt được độ chính xác hơn 99% với tỷ lệ cảnh báo giả khoảng
0,1%. Tương tự, một nghiên cứu khác, Jinrong Bai và cộng sự [42] đã giới thiệu phương
pháp trích xuất thông tin lời gọi hệ thống từ symbol table của các tập tin ELF. Sau đó
áp dụng 3 thuật toán học máy để phát hiện mã độc Linux. Kết quả thực nghiệm trên bộ
dữ liệu gồm 756 mẫu lành tính và 763 mẫu mã độc đạt độ chính xác hơn 98%. Các
trường thông tin trong ELF header là những đặc trưng quan trọng để xây dựng các bộ
phân lớp mã độc tự động bởi trích xuất giá trị các trường thông tin này có chi phí thấp
và những đặc trưng này đem lại hiệu quả khá cao. Tuy nhiên, các trường thông tin này
rất dễ bị ảnh hưởng bởi các tập tin có kiến trúc phức tạp, đa dạng.
b. Đặc trưng ảnh đa mức xám
Ảnh đa mức xám là một trong những phương pháp trừu tượng hóa các tập tin
thực thi thu hút sự chú ý của nhiều nhà nghiên cứu trong thời gian qua. Quá trình thực
hiện dựa trên các đoạn mã byte (byte code) của tập tin thực thi được chuyển thành mã
máy (machine level code) và sau đó các chuỗi chỉ thị mã thực thi được chuyển thành
các ma trận ảnh. Một ảnh đa mức xám (grayscale) là một loại ảnh mà mỗi điểm ảnh
(pixel) có giá trị nằm trong khoảng từ 0 đến 255. Trong bài toán phát hiện mã độc, các
tập tin thực thi được phân tích và chuyển thành các chuỗi nhị phân 0 và 1. Sau đó, kết
hợp những giá trị nhị phân đó thành các đoạn vector có độ dài 8-bit biểu diễn giá trị hex
từ 00 đến FF.
Hinh 2.10. Quá trình biểu diễn mã độc thông qua ảnh đa mức xám
56
Những vector này sẽ được chuyển thành dữ liệu ảnh với giá trị điểm ảnh nằm
trong khoảng từ 0 đến 255, trong đó 0 biểu diễn màu đen và 255 biểu diễn màu trắng,
minh họa ở hình 2.11.
Hinh 2.11. Ví dụ ảnh mẫu mã độc dòng Linux.Gafgyt
Trong hướng tiếp cận này, Su và cộng sự [25] đã đề xuất một phương pháp nhẹ
(light) để phân biệt các mẫu mã độc IoT botnet và các mẫu lành tính IoT dựa trên ảnh
đa mức xám. Kết quả thực nghiệm trên tập dữ liệu gồm 500 mẫu mã độc IoT botnet và
số lượng lành tính tương đương, cho thấy phương pháp đề xuất đạt độ chính xác 93,33%
trong phát hiện mã độc IoT botnet.
2.2.2. Ph©n t²ch tǫnh dχa tr°n ĽΊc trng c· cu tr¼c ĽΩ thΠ
2.2.2.1. Đồ thị trong khoa học máy tính
Để xây dựng các đặc trưng cho các bài toán phân tích và so sánh, một cấu trúc
dữ liệu để lưu trữ những thông tin đặc trưng là rất cần thiết. Đồ thị là giải pháp tốt để
giải quyết vấn đề trên bởi nó dễ dàng kết hợp thông tin và liên kết dữ liệu có liên quan.
Đặc biệt trong các bài toán về phát hiện mã độc thì các đặc trưng dựa trên đồ thị sẽ lưu
trữ thông tin về các phần khác nhau của mã độc.
Một đồ thị có thể được biểu diễn bởi 𝐺=(𝑉,𝐸) chứa tập các đỉnh 𝑉 và các liên
kết giữa chúng trong tập các cạnh 𝐸. Một cạnh 𝑒𝑖∈ 𝐸 kết nối giữa 2 đỉnh 𝑣𝑗,𝑣𝑘∈ 𝑉.
Nếu 𝐺 là đồ thị có hướng, các cạnh cũng sẽ có hướng, các cạnh đi từ đỉnh 𝑣𝑗 tới đỉnh 𝑣𝑘
nhưng không có chiều ngược lại từ 𝑣𝑘 tới 𝑣𝑗. Ở đây, cạnh này được gọi là “cạnh ra” của
57
𝑣𝑗 và là “cạnh đến” của 𝑣𝑘. Ngược lại, đồ thị vô hướng chứa các cạnh vô hướng, những
cạnh vô hướng đó kết nối 2 đỉnh đảm bảo mối liên hệ là đối xứng: (𝑣𝑗,𝑣𝑘) ∈ 𝐸 khi và
chỉ khi (𝑣𝑘,𝑣𝑗) ∈ 𝐸. Nếu có thể bắt đầu một đỉnh, duyệt qua cạnh ra và kết nối lại chính
đỉnh đó thì đường đi này tạo thành một chu trình (cycle). Định dạng đơn giản nhất của
một đồ thị gồm 2 đỉnh với 01 cạnh kết nối ở giữa. Đây là một đồ thị vô hướng kết nối
giữa hai đỉnh (𝑣𝑗,𝑣𝑘) bằng cạnh 𝑒 và không có nhãn, minh họa trực quan ở hình 2.12.
Hình 2.12. Minh họa một đồ thị đơn giản
Để làm giàu thêm thông tin đồ thị, có thể bổ sung thêm hướng hoặc nhãn đồ thị.
Một nhãn là tập hợp các biểu tượng, các loại nhãn có thể là số nguyên, chuỗi màu sắc
hoặc một ký tự nào đó. Gán nhãn cho đồ thị tạo cho các đỉnh và các cạnh có tính riêng
biệt, giúp mô tả sự khác biệt với các phần khác trong đồ thị, mang lại nhiều thông tin
hơn. Các nhãn có thể được thêm vào cả cạnh và đỉnh. Hình 2.13 thể hiện một đồ thị có
hướng với các đỉnh và các cạnh đều có nhãn.
Hình 2.13. Minh họa một đồ thị có hướng và nhãn
58
2.2.2.2. Đặc trưng đồ thị luồng điều khiển
Các đặc trưng dựa trên cấu trúc đồ thị (như đồ thị luồng điều khiển, đồ thị lời gọi
hàm, đồ thị mã) có khả năng biểu diễn hành vi của các tập tin thực thi bởi đồ thị là
phương pháp mạnh mẽ trong mô hình hóa các mối quan hệ phức tạp của dữ liệu. Các
đặc trưng phổ biến được sử dụng trong phát hiện mã độc là đồ thị luồng điều khiển (CFG
- Control Flow Graph). Một đồ thị luồng điều khiển là đồ thị có hướng biểu diễn tất cả
các đường đi có thể được thực thi trong các chương trình, ở đó mỗi đỉnh (nút) được biểu
diễn bởi một khối cơ sở (basic block) và các cạnh có hướng biểu diễn luồng điều khiển
có thể giữa các đỉnh.
Theo hướng tiếp cận này, Hisham Alasmary và cộng sự [33] đã sử dụng đồ thị
luồng điều khiển như một cấu trúc trừu tượng để nhấn mạnh sự tương đồng và khác biệt
giữa các tập tin nhị phân mã độc IoT botnet và mã độc Android. Để đạt được mục tiêu
này, nhóm tác giả đã phân tích cấu trúc thông qua các đặc trưng lý thuyết đồ thị như
kích thước đồ thị (số lượng đỉnh, số lượng cạnh), trung bình đường đi ngắn nhất trong
đồ thị, độ trung tâm ở giữa (betweeness centrality), độ trung tâm dựa trên sự gần gũi
(closeness centrality) - chỉ ra vị trí các nút trong mạng và khả năng kết nối các thành
phân hoặc nhóm trong mạng), độ trung tâm dựa trên trị riêng (eigenvalue centrality) -
chỉ ra nút đó có độ trung tâm nhất trong toàn đồ thị, độ trung tâm dựa trên bậc của nút
(degree centrality) - là độ đo chỉ dựa vào bậc của nút và được xác định bằng số cạnh hay
số kết nối mà một nút có), … Kết quả thực nghiệm trên bộ dữ liệu chứa 2874 mẫu mã
độc IoT botnet và 201 mẫu mã độc Android đã cho thấy mã độc IoT có số lượng đỉnh
và cạnh ít hơn nhiều so với mã độc Android, và các đặc trưng lý thuyết đồ thị luồng điều
khiển giữa mã độc IoT botnet và Android cũng có biến thiên lớn. Do đó, nhóm tác giả
đã chứng mình được tính hữu dụng của CFG trong phân biệt mã độc IoT botnet và mã
độc Android.
59
Hinh 2.14. Đồ thị CFG của một mẫu mã độc botnet Linux.Bashlite
Tiếp tục cải thiện và mở rộng hướng nghiên cứu đó trong phát hiện mã độc IoT,
Hisham Alasmary và cộng sự [32] đã trình bày một phương pháp phát hiện mã độc IoT
dựa trên sử dụng 23 đặc trưng tĩnh để biểu diễn đặc trưng CFG của mã độc IoT botnet.
Phương pháp này gồm 3 giai đoạn: (1) sinh đồ thị lời gọi hàm của các mẫu nhị phân; (2)
tính toán các tính chất chung của lý thuyết đồ thị; (3)áp dụng các kỹ thuật học máy và
học sâu để phân loại tập dữ liệu thành 2 lớp: mẫu mã độc và lành tính. Bước đầu tiên,
công cụ radera2 được sử dụng để sinh đồ thị CFG của các tập tin thực thi, công cụ mã
nguồn mở này hỗ trợ nhiều kiến trúc (MIPS, ARM, …). Sau đó, các tác giả đã sử dụng
framework NetworkX để tính toán các tính chất của CFGs. Những tính chất đó là số
lượng đỉnh và cạnh; độ trung tâm dựa trên sự gần gũi (closeness centrality), độ trung
60
tâm dựa trên trị riêng (eigenvalue centrality), … Bước cuối cùng, pha phát hiện sẽ được
thực hiện bằng các thuật toán học máy và học sâu. Thực nghiệm trên bộ dữ liệu gồm
6000 mẫu mã độc và lành tính, độ chính xác đạt được 99,66%. Mặc dù nghiên cứu này
đem lại kết quả phát hiện cao, nhưng tính toán các tính chất của CFG là tiến trình có độ
phức tạp tính toán lớn.
2.2.2.3. Đặc trưng đồ thị Opcode
Đồ thị Opcode là đồ thị được xây dựng dựa trên các đỉnh là các giá trị Opcode và
các cạnh thể hiện mối liên kết giữa các opcode, trong đó mối liên kết được xây dựng và
thu thập dựa trên đồ thị luồng điều khiển. Trong hướng tiếp cận sử dụng đặc trưng có
cấu trúc đồ thị, Azmoodeh và cộng sự [36] đã trình bày một phương pháp dựa trên học
sâu để phát hiện mã độc IoT botnet bằng đồ thị Opcode. Phương pháp đề xuất được đánh
giá với tập dữ liệu chứa 128 mẫu mã độc IoT botnet và 1078 mẫu lành tính IoT (tất cả
các mẫu đều dựa trên ARM), đạt độ chính xác 99.68 % với tỷ lệ precision và recall ở
mức 98,37% và 98,59% theo thứ tự. Tuy nhiên, phương pháp này không đủ độ mạnh
mẽ do bộ dữ liệu thực nghiệm có số lượng mẫu mã độc IoT botnet hạn chế, và vấn đề
đa kiến trúc không được xem xét đề cập đến trong nghiên cứu này do tập dữ liệu thực
nghiệm chỉ dựa trên kiến trúc ARM.
Hình 2.15. Minh họa đồ thị Opcode
Với nội dung đã trình bày, thảo luận bên trên về các phương pháp phát hiện mã
độc IoT botnet dựa trên đặc trưng tĩnh, việc so sánh các phương pháp được tổng hợp
trong bảng 2.4 cho thấy các nghiên cứu hiện nay sử dụng các đặc trưng tĩnh trong phát
hiện mã độc IoT botnet còn những hạn chế.
61
Bảng 2.4. So sánh các phương pháp phát hiện mã độc IoT botnet dựa trên đặc trưng tĩnh trong các nghiên cứu gần đây
Các nghiên cứu
liên quan
Hướng tiếp
cận dựa trên
đặc trưng
tĩnh
Cơ chế thực hiện Phương pháp
đánh giá Điểm yếu
Hamed HaddadPajouh
[14] Opcode
Xác định mã độc thông qua
chuỗi opcode Mạng nơ-ron
Chỉ sử dụng tập mẫu dựa trên kiến trúc ARM
Ensieh Modiri Dovom
[57] Opcode
Áp dụng fuzzy pattern tree
để phát hiện mẫu mã độc Fuzzing
- Chỉ sử dụng tập mẫu dựa trên kiến trúc ARM
- Tập dữ liệu không đủ lớn
Darabian [52] Opcode Phát hiện mã độc dựa trên
tần xuất opcode Học máy
Chỉ sử dụng tập mẫu dựa trên kiến trúc ARM
Mohannad Alhanahnah
[4] Strings
Sinh chữ kỹ để phân loại mã
độc Phân cụm
- Độ phức tạp tính toán lớn
- Chỉ sử dụng cho 4 loại mã độc
F. Shahzad et al. [96] ELF header
Trích xuất các đặc trưng từ
section của tập tin nhị phân
để phát hiện mã độc
Học máy
Cấu trúc của tập tin nhị phân dễ dàng bị chỉnh
sửa
62
Các nghiên cứu
liên quan
Hướng tiếp
cận dựa trên
đặc trưng
tĩnh
Cơ chế thực hiện Phương pháp
đánh giá Điểm yếu
Jiawei Su et al. [25] Grayscale
image
Biểu diễn các mẫu nhị phân
như ảnh đa mức xám để
phát hiện mã độc
Mạng nơ-ron
Thiếu độ chính xác khi các mẫu sử dụng kỹ thuật
gây rối hoặc mã hóa
Hisham Alasmary et al.
[32] CFG
Tính toán 23 thuộc tính lý
thuyết đồ thị của CFG để
phân biệt các mẫu mã độc
và lành tính
Học máy, học
sâu
- Độ phức tạp tính toán lớn
- Xác định các tính chất chưa chính xác
Amin Azmoodeh et al.
[36] Opcode graph
Xây dựng đồ thị opcode dựa
trên CFG để phát hiện mã
độc
Lý thuyết đồ thị
Chỉ sử dụng tập mẫu dựa trên kiến trúc ARM
63
Dựa trên khảo sát, đánh giá các nghiên cứu hiện nay về vấn đề phát hiện mã độc
IoT botnet, thấy rằng các nghiên cứu đều có những ưu điểm và hạn chế. Tuy nhiên, mỗi
phương pháp nghiên cứu lại thực nghiệm trên các bộ cơ sở dữ liệu và môi trường khác
nhau. Trên cơ sở đó, luận án tiến hành đánh giá một cách khách quan các nghiên cứu
hiện nay với cùng môi trường thử nghiệm và trên cùng bộ cơ sở dữ liệu. Phần tiếp theo
luận án sẽ trình bày chi tiết về bộ cơ sở dữ liệu, bộ cơ sở dữ liệu này không chỉ dùng để
thực nghiệm cho phần đánh giá ở Chương này mà còn được sử dụng thực nghiệm ở các
Chương sau của luận án.
2.2.3. Xây dχng bί c sε dυ liΜu thσ nghiΜm
Đối với các bài toán phát hiện mã độc thì luôn cần dữ liệu đầu vào để huấn luyện
và thử nghiệm, đánh giá. Trong khi đó, mã độc IoT botnet là một lĩnh vực nghiên cứu
tương đối mới, chưa có nhiều nơi công bố các tập dữ liệu thử nghiệm liên quan. Trong
luận án này, dữ liệu đầu vào là các tập tin thực thi mã độc và lành tính trên thiết bị IoT.
Để phục vụ các nghiên cứu thực nghiệm của luận án một cách tin cậy, đúng đắn thì việc
xây dựng tập dữ liệu các tập tin thực thi mã độc và lành tính trên thiết bị IoT có ý nghĩa
quan trọng. Đối với tập dữ liệu mã độc IoT botnet thì luận án tiến hành thu thập từ 02
nguồn khác nhau là IoTPOT [22] và VirusShare [122].
Dữ liệu được thu từ IoTPOT, một giải pháp mạng bẫy (honepot) IoT của các giáo
sư Nhật bản để thu thập mã độc IoT botnet có đặc điểm sau:
- Được thu thập trong 01 năm từ 10/2016 đến 10/2017 với 4000 mẫu mã độc IoT
botnet.
- Ban đầu IoTPOT tập trung vào thu thập các tập tin từ các thiết bị IoT bị tấn
công dựa trên giao thức telnet (telnet-based), hiện nay mạng bẫy này đã mở rộng hơn
với các hình thức tấn công khác [33], ví dụ như tấn công dò quét trên TCP qua các cổng
23, 80, 8080, 5916 và cổng UDP như 123, 3143.
Hình 2.16. Kết quả tải về tập dữ liệu mã độc IoT botnet từ IoTPOT
64
Hình 2.17 minh họa sự tương tác giữa máy khách và máy chủ trong giao thức
telnet. Sau khi thực hiện bắt tay 3 bước, máy khách và máy chủ có thể trao đổi các tùy
chọn Telnet, máy chủ Telnet hoặc máy khách Telnet có thể khởi tạo yêu cầu như “Do
Echo”, một yêu cầu cho gửi trả lại echo và “Do NAWs” để gửi yêu cầu tới NAWs
(Negotiate About Window size). Sau khi trao đổi các tùy chọn, máy chủ gửi một thông
điệp chào mừng tới máy khách, ngay sau đó là thông tin đăng nhập. Ví dụ “TPLink
Router” là thông điệp chào mừng và “Login:” là thông điệp đăng nhập, ở đây phần khởi
tạo tương tác này gọi là tiêu ngữ tương tác (banner interactions). Sau đó, máy khách gửi
cặp tên đăng nhập/mật khẩu để đăng nhập vào máy chủ, được gọi là xác thực
(authentication). Cuối cùng, nếu việc xác thực là hợp lệ thì máy khách đăng nhập và ra
lệnh cho máy chủ sử dụng nhiều lệnh shell, được gọi là tương tác câu lệnh (command
interactions).
Hình 2.17. Giao thức telnet
Các tập tin được thu thập có các đặc trưng với các chuỗi chỉ thị lệnh quan sát
được bởi IoTPOT có thể kể đến như:
- Kiểm tra shell của thiết bị nạn nhân bằng lệnh “sh”
- Kiểm tra lệnh wget có được kích hoạt không
- Kiểm tra busybox shell có được sử dụng trên thiết bị nạn nhân
- Xóa nhiều chỉ thị lệnh và các tập tin trong các vị tri /usr/bin, /bin, var/run/, /dev
65
- Sao chép /bin/sh với tên tập tin ngẫu nhiên
- Sử dụng nền tảng của kẻ tấn công để tải các tập tin nhị phân. Địa chỉ IP và giá
trị cổng của máy chủ tải mã độc có thể tìm thấy trong chỉ thị lệnh
- Kiểm tra phản hồi lỗi của thiết bị nạn nhân bằng cách chạy các câu lệnh không
tồn tại như ZORRO, “enable”, “shell”
- Tải về các đoạn mã thực thi shell
- Sử dụng các đoạn mã thực thi đã tải để ngắt hoặc ngăn chặn các tiến trình độc
hại đã chạy trước đó trên thiết bị nạn nhân, tải các tập tin thực thi có kiến trúc khác nhau,
ngăn chặn kết nối cổng 23/TCP.
- Các tập mẫu thu thập được thực hiện các hình thức tấn công phổ biến là từ chối
dịch vụ như tấn công tràn UDP, tấn công tràn TCP, DNS Water Torture, tấn công tràn
ACK, tấn công SSL, …
Ngoài việc sử dụng các mẫu mã độc trên thì luận án cũng sử dụng mẫu mã độc
IoT botnet từ VirusShare. VirusShare [122] là một kho lưu trữ mã độc trực tuyến được
cung cấp cho các nhà nghiên cứu bảo mật, các nhà ứng phó sự cố an toàn thông tin và
điều tra số có thể truy cập vào các tập mẫu mã độc. Việc truy cập chỉ được thực hiện với
các tài khoản được cấp quyền. Để yêu cầu quyền truy cập, các nhà nghiên cứu cần thư
điện tử tới người quản trị và giải thích mục đích của việc truy cập kho lưu trữ. Luận án
xây dựng bộ thu thập (crawler) mã độc IoT từ VirusShare với đầu vào là tên các loại mã
độc IoT botnet [12] (đã trình bày ở mục 1.1.3 như Mirai, bashlite, Tsunami, Aidra, …).
Kết quả đã thu thập được 3199 mẫu mã độc IoT botnet.
Hình 2.18. Giao diện của VirusShare sau khi đăng nhập với tài khoản được cấp
66
Hình 2.19. Kết quả tải về tập dữ liệu mã độc IoT botnet từ VirusShare
Bên cạnh tập dữ liệu mã độc IoT botnet thì luận án cũng thu thập tập dữ liệu lành
tính trên IoT. Tập dữ liệu lành tính được trích xuất từ các bản ảnh phần sụn (firmware)
của các thiết bị IoT dân dụng (SOHO) bằng công cụ binwalk [116]. Cụ thể, các bản ảnh
phần sụn được tải từ trang web của các hãng sản xuất thiết bị IoT như TP-Link, D-Link,
Asus, … Để đa dạng tập dữ liệu lành tính, luận án không những thu thập thêm các bản
ảnh nhị phân phần sụn từ OpenWRT [119] cho các hãng khác như Buffalo, Netgear hoặc
Tenda, mà còn từ một số nghiên cứu trước có chia sẻ tập mẫu lành tính IoT [36].
Để huấn luyện và đánh giá mô hình, giải pháp đề xuất của luận án với tỷ lệ dương
tính giả thấp thì cần đảm bảo gán nhãn chính xác cho các tập tin mã độc và các tập tin
lành tính. Luận án thực hiện điều này bằng cách chạy tất cả dữ liệu thông qua VirusTotal
[123], một công cụ hỗ trợ phân tích trực tuyến mã độc với hơn 68 bộ dò quét mã độc
của nhiều hãng phần mềm phòng chống mã độc như Kaspersky, Norton, Avast, … Luận
án sử dụng chiến lược bỏ phiếu [17], [81] để quyết định xem một tập tin là mã độc hoặc
lành tính, thể hiện qua đẳng thức (2.1):
𝐶𝑙𝑎𝑠𝑠𝑙𝑏={𝑀ã độ𝑐,𝑛ế𝑢 (𝐸1(𝑆)∨ 𝐸2(𝑆) ∨… 𝐸𝑛(𝑆))
𝐿à𝑛ℎ 𝑡í𝑛ℎ,𝑛ế𝑢 (!(𝐸1(𝑆))∧!(𝐸2(𝑆))∧… !(𝐸𝑛(𝑆)) (2.1)
Từ đẳng thức trên có thể thấy rõ ràng là một tập tin được gán nhãn mã độc nếu
có bất kỳ một bộ dò quét mã độc từ 𝐸1(𝑆) tới 𝐸𝑛(𝑆) xác nhận là mã độc. Ngược lại một
tập tin mẫu được gán nhãn là lành tính nếu không có bất kỳ bộ dò quét nào xác nhận là
mã độc.
Với mỗi mẫu, luận án chọn tên mã độc IoT botnet được xác định từ nhiều bộ dò
quét nhất. Đồng thời, luận án chuẩn hóa tên mã độc như AVCLASS [94] bởi mỗi bộ dò
quét lại đưa ra một tên gọi khác nhau cho một mẫu mã độc IoT botnet, mặc dù các tên
gọi khác nhau đó cùng chỉ về một lớp mã độc IoT botnet. Ví dụ, luận án thay thế Gafgyt
67
và Lightaidra bằng Bashlite. Cuối cùng, luận án chia tập dữ liệu mã độc thành 03 lớp là
Mirai, Bashlite và các loại mã độc khác (Other Botnet). Như vậy, tập dữ liệu thu thập
được gồm có 11200 mẫu gồm 7199 mẫu mã độc IoT botnet và 4001 mẫu lành tính IoT.
Sử dụng công cụ IDA Pro để tiến hành tiền xử lý các tập tin, cụ thể là các mẫu không
phải tập tin nhị phân, không thể đọc được bằng IDA Pro cũng như trùng lặp sẽ bị xóa
bỏ khỏi tập dữ liệu. Cuối cùng, tập dữ liệu có 10010 mẫu gồm 6165 mẫu mã độc IoT
botnetvà 3845 mẫu lành tính IoT, mô tả chi tiết ở bảng 2.5.
Bảng 2.5. Mô tả tập dữ liệu mẫu để thử nghiệm
Các lớp Biến thể Số lượng
Kiến
trúc
ARM
Kiến
trúc
MIPS
Mirai 7 1765 331 301
Bashlite 5 3720 762 646
Other botnet 9 680 152 103
Benign - 3845 561 533
Total 10010 1806 1583
Hơn nữa, luận án tiến hành khảo sát kiến trúc vi xử lý của các mẫu mã độc trong
tập dữ liệu bằng câu lệnh file trong hệ điều hành Linux. Hình 2.20 cho thấy sự đa dạng
kiến trúc vi xử lý của các mẫu mã độc IoT botnet trong trong tập dữ liệu, trong đó các
kiến trúc MIPS, ARM và Intel 80386 là 3 kiến trúc phổ biến nhất cho mã độc IoT botnet.
68
Hình 2.20. Sự phân bố kiến trúc vi xử lý trong các mẫu mã độc IoT botnet
Tóm lại, bộ dữ liệu của luận án xây dựng có chứa các tập mẫu mã độc botnet và
lành tính IoT thực tế, đa dạng về kiến trúc nên giúp phản ánh tính chất của Internet nói
chung và mạng IoT nói riêng một cách trung thực và đáng tin cậy.
2.2.4. C§c ti°u ch² Ľ§nh gi§
Để đánh giá tính hiệu quả của các phương pháp phát hiện mã độc IoT botnet,
luận án sử dụng các tiêu chuẩn TP, TN, FP và FN được mô tả như sau:
- True positive (TP): cho biết rằng một mẫu mã độc được phát hiện chính xác và
gán nhãn là mã độc
- True negative (TN): cho biết rằng một mẫu lành tính được phát hiện chính xác
và gán nhãn là lành tính
- False positive (FP): cho biết rằng một mẫu lành tính bị phát hiện sai và gán nhãn
là mã độc
- False negative (FN): cho biết một mẫu mã độc bị phát hiện sai và gán nhãn là
lành tính
Dựa trên những tiêu chuẩn này, các độ đo thường được sử dụng trong học máy
được tính toán. Để đánh giá tính hiệu quả của các phương pháp đề xuất, các thực nghiệm
trong luận án này, ở mỗi Chương, luận án không sử dụng hết các độ đo mà lựa chọn các
độ đo phù hợp. Các độ đo gồm:
+ Độ chính xác (Accuracy): là tỷ lệ giữa số lượng các mẫu được gán nhãn đúng
chia cho tổng số dữ liệu kiểm thử (gồm cả mẫu mã độc và lành tính)
𝐴𝑐𝑐𝑢𝑟𝑎𝑐𝑦= 𝑇𝑃+𝑇𝑁
𝑇𝑃+𝐹𝑃+𝑇𝑁+𝐹𝑁 (2.2)
+ Tỷ lệ dương tính đúng (TPR – True Positive Rate): số lượng mẫu mã độc đã
dự đoán được phân loại đúng là mã độc chia cho tổng số tập tin mã độc.
𝑇𝑃𝑅= 𝑇𝑃
𝑇𝑃+𝐹𝑁 (2.3)
+ Tỷ lệ dương tính giả (FPR – False Positive Rate)/tỷ lệ phát hiện nhầm: số lượng
mẫu lành tính đã dự đoán bị phân loại nhầm là mã độc chia cho tổng số tập tin lành tính.
69
𝐹𝑃𝑅= 𝐹𝑃
𝐹𝑃+𝑇𝑁 (2.4)
+ Tỷ lệ chính xác (Precision): thể hiện khả năng mô hình dự đoán đúng nhãn, tức
là xem xét trên tập dữ liệu kiểm tra xem có bao nhiêu dữ liệu được mô hình dự đoán
đúng (tức là trả lời câu hỏi bao nhiêu cái đúng được lấy ra). Việc tăng hay giảm Precision
phụ thuộc vào FP nên Precision cao đồng nghĩa với FP nhỏ hay số nhãn lành tính dự
đoán nhầm sang mã độc.
𝑃𝑟𝑒𝑐𝑖𝑠𝑖𝑜𝑛= 𝑇𝑃
𝑇𝑃+𝐹𝑃 (2.5)
+ Recall (tức là trả lời câu hỏi bao nhiêu cái được lấy ra là đúng), chỉ số này còn
được gọi là độ bao phủ tức là xem xét một mô hình tìm được có khả năng tổng quát hóa
như thế nào.
𝑅𝑒𝑐𝑎𝑙𝑙= 𝑇𝑃
𝑇𝑃+𝐹𝑁 (2.6)
+ Độ đo F-score: còn gọi là trung bình điều hòa của các tiêu chí Precision và
Recall. Nó có xu hướng lấy giá trị gần với giá trị nào nhỏ hơn giữa 2 giá trị Precision và
Recall và đồng thời nó có giá trị lớn nếu cả 2 giá trị trên đều lớn. Do đó F-score thể hiện
được một cách khách quan hơn hiệu năng của một mô hình học máy.
𝐹−𝑠𝑐𝑜𝑟𝑒=2 × 𝑃𝑟𝑒𝑐𝑖𝑠𝑖𝑜𝑛 ×𝑅𝑒𝑐𝑎𝑙𝑙
𝑃𝑟𝑒𝑐𝑖𝑠𝑖𝑜𝑛+𝑅𝑒𝑐𝑎𝑙𝑙 (2.7)
Bên cạnh đó, việc tăng hay giảm FNR (được tính bằng 1-TPR) và FPR có thể
thực hiện bằng việc thay đổi một ngững nào đó. Luận án coi lớp 1 là lớp mã độc
(positive) và lớp 0 là lành tính (negative), vậy làm thế nào để tăng mức độ báo nhầm
(FPR) để giảm mức độ bỏ sót (FNR), trong đó khi tăng FNR thì đồng nghĩa với việc
giảm TPR. Như vậy ứng với mỗi giá trị của ngưỡng thì sẽ có một cặp (FPR, TPR). Việc
biểu diễn các điểm (FPR, TPR) trên đồ thị khi thay đổi ngưỡng (thường từ 0 đến 1) ta
sẽ thu được một đường cong gọi là ROC. Dựa trên đường cong ROC, ta có thể xác định
rằng mô hình có hiệu quả hay không. Bên cạnh đó còn có một giá trị đại diện cho diện
tích nằm dưới ROC (tức các điểm dữ liệu ở góc trên cùng bên tay trái sẽ là tối ưu, hiệu
quả cao), giá trị này được gọi là AUC (Area Under the Curve), kết quả từ AUC có thể
được thể hiện “càng lớn thì mô hình càng tốt”.
70
Để tiến hành các thực nghiệm trong Chương này, luận án chia tập dữ liệu thành
2 tập con với tỷ lệ là: 70% tập dữ liệu là tập huấn luyện và 30% còn lại là để kiểm thử.
Thực nghiệm được xây dựng với ngôn ngữ Python và thư viện Scikit-Learn (một thư
viện về học máy phổ biến hiện nay, được viết trên ngôn ngữ Python) trên nền tảng hệ
điều hành Ubuntu 16.04 sử dụng chip Intel Core i5-8500, 3.0GHz và bộ nhớ RAM 32
GB.
2.2.5. KΔt qu thχc nghiΜm và nhͻn xét
Nhằm đánh giá một cách trực quan và đáng tin cậy về các phương pháp phát hiện
mã độc IoT botnet dựa trên đặc trưng phân tích tĩnh, đã được trình bày chi tiết ở mục
2.2.1 và 2.2.2. Phần này luận án sẽ tiến hành thực nghiệm lại chính xác các phương pháp
đó trên cùng một bộ dữ liệu lớn các tập tin thực thi IoT và cùng cấu hình hệ thống đã
trình bày chi tiết ở phần 2.2.3. Kết quả tổng hợp, đánh giá các hướng tiếp cận dựa trên
đặc trưng tĩnh trong phát hiện mã độc IoT botnet được thể hiện ở Bảng 2.6
71
Bảng 2.6. Kết quả thực nghiệm các hướng tiếp cận dựa trên đặc trưng tĩnh hiện nay trong phát hiện mã độc IoT botnet
Hướng tiếp
cận dựa trên
đặc trưng tĩnh
Bộ phân lớp
Độ
chính
xác
FPR (False
Positive Rate -
dương tính giả)
FNR (False
Negative Rate -
âm tính giả)
Thời gian trích
xuất đặc trưng và
tiền xử lý
Thời gian
phân lớp
ELF-header
[96]
RIPPER 99,8 0,2 0,2
1h50m
0,75s
PART 99,8 0,2 0,2 1,27s
DT (J48) 99,6 0,5 0,3 1s
String-based
[70]
SVM 98 0,9 2,2
4m47s
12,4s
kNN 99,8 0,4 0,2 1s
DT (J48) 99,4 0,4 0,6 8,75s
RF 99,7 0,3 0,4 9,71s
Image-based
[25] Neural Network 89,1 12,7 1,4 14m19s 2m19s
CFG-based
[32]
SVM 89 33,8 4,4
5 days
1,45s
LR 85 15,1 19,0 0,5s
RF 95 7,5 5,9 1,75s
72
Từ bảng kết quả 2.6, với các bộ phân lớp được sử dụng chính xác như trong các
nghiên cứu, có thể thấy các phương pháp sử dụng đặc trưng phi cấu trúc đồ thị đạt kết
quả khả quan hơn so với phương pháp sử dụng đặc trưng có cấu trúc đồ thị trong phát
hiện mã độc IoT botnet, cả về độ chính xác và độ phức tạp chi phí thời gian.
Trong đó, phương pháp dựa trên thông tin cấu trúc trong tiêu đề tập tin rất khả
quan với các thuật toán học máy khác nhau như RIPPER, PART, Decision Tree C4.5
đạt độ chính xác là 99,8; 99,8 và 99,6 một cách lần lượt. Các đặc trưng trong tiêu đề tập
tin đóng vai trò quan trọng như STB_WEAK, SecionHeaderOffset, STT_NOTYPE,
.bss_alignment, STT_OBJECT_STB_GLOBAL. Ưu điểm chính của phương pháp này là
sự đơn giản từ các đặc trưng cho tới quá trình trích xuất đặc. Việc khai thác các thông
tin dữ liệu trong tiêu đề tập tin cho phép bước đầu xác định trạng thái của một tập tin
thực thi, từ đó có khả năng xác định được chức năng tiềm tàng của chúng, hỗ trợ tốt cho
việc phát hiện mã độc. Tuy nhiên, các kỹ thuật gây rối của mã độc nhằm che dấu các
trạng thái ban đầu của các tập tin khiến phương pháp tiếp cận này bị hạn chế, khó triển
khai.
Phương pháp tiếp cận dựa trên đặc trưng đại diện ảnh đa mức xám cũng đạt tỷ lệ
phát hiện mã độc IoT botnet khả quan với độ chính xác 89,1%. Bằng việc sử dụng tính
chất của quá trình xử lý ảnh cũng như áp dụng mô hình mạng nơ-ron tích chập nhẹ (light
CNN), hướng tiếp cận này có khả năng áp dụng trên các thiết bị IoT bị hạn chế tài
nguyên tính toán. Tuy nhiên, các kỹ thuật gây rối của mã độc có khả năng thay đổi cấu
trúc của các tập tin nhị phân, dẫn đến ảnh hưởng lớn tới đặc trưng ảnh đa mức xám.
Hướng tiếp cận dựa trên các đặc trưng chuỗi thông tin cũng cho thấy sự khả quan trong
phát hiện mã độc đa kiến trúc IoT. Các bộ phân lớp SVM, kNN, DT (J48) và RF đạt độ
chính xác phát hiện tương ứng là 98; 99,8; 99,4; 99,7. Tuy nhiên, với những loại mã độc
sử dụng kỹ thuật mã hóa, gây rỗi thì các chuỗi thông tin có thể bị thay đổi về tần
suất,cũng như giá trị, ảnh hưởng lớn tới khả năng phát hiện mã độc IoT botnet đa kiến
trúc.
Cuối cùng, phương pháp dựa trên đồ thị luồng điều khiển đạt tỷ lệ phát hiện cao
nhưng độ phức tạp vẫn còn lớn, cao hơn so với những phương pháp sử dụng đặc trưng
phi cấu trúc. Trong khi đó, xu hướng trong tương lai mã độc IoT botnet có thể ngày càng
phức tạp sẽ dẫn đến đặc trưng đồ thị luồng điều khiển cũng phức tạp theo, ảnh hướng
73
lớn đến độ phức tạp của bài toán phát hiện mã độc IoT botnet. Bên cạnh đó, các nhà
nghiên cứu đã chỉ rằng, đặc trưng dựa trên cấu trúc đồ thị tốt hơn so với các đăc trưng
phi cấu trúc đồ thị trong phát hiện mã độc botnet, bởi đồ thị có thể biểu diễn các hành
vi trong các chương trình, đặc biệt là đồ thị có nhãn có thể sử dụng để mô hình hóa nhiều
mối quan hệ phức tạp giữa dữ liệu [98].
Tóm lại, các nghiên cứu biểu diễn tập tin thực thi bằng đặc trưng phi cấu trúc đồ
thị sẽ phụ thuộc nhiều vào giá trị của các đặc trưng (ví dụ lời gọi hàm inet_toa) và sẽ
không thể mô tả thông tin ngữ nghĩa phức tạp giữa các đặc trưng (ví dụ như dữ liệu phụ
thuộc trong vòng đời mã độc IoT có khả năng tấn công từ chối dịch vụ phân tán, gọi tắt
là IoT botnet). Bên cạnh đó các nghiên cứu sử dụng đặc trưng phi cấu trúc đồ thị thường
khá yếu với mã độc sử dụng kỹ thuật gây rối như mã hóa, chèn dữ liệu. Trong khi đó,
hướng tiếp cận dựa trên đồ thị có khả năng đánh giá tổng quát và biểu diễn được các
thông tin có cấu trúc, thông tin phức tạp về hành vi của mã độc botnet.
2.3. Kết luận Chương 2 và định hướng nghiên cứu
Trong Chương 2, luận án đã trình bày những vấn đề cơ bản về các phương pháp
phát hiện mã độc IoT botnet, từ đó đánh giá hướng tiếp cận theo phân tích tĩnh là phù
hợp với phát hiện mã độc IoT botnet. Luận án đi sâu vào thảo luận, đánh giá các ưu
nhược điểm của các hướng tiếp cận dựa trên đặc trưng tĩnh trong phát hiện mã độc IoT
botnet. Đồng thời, luận án cũng tiến hành thực nghiệm lại chính xác các phương pháp
đã có trong phát hiện mã độc IoT botnet dựa trên đặc trưng tĩnh với cùng tập cơ sở dữ
liệu, cùng cấu hình hạ tầng hệ thống. Tất cả các hướng tiếp cận đều có giải thích và cung
cấp một số minh họa nghiên cứu gần đây có liên quan tới hướng tiếp cận đó.
Kết quả nghiên cứu của Chương này cung cấp động cơ thúc đẩy cho các phương
pháp đề xuất của luận án sau này khi thấy rằng phân tích tĩnh khả quan trong bài toán
phát hiện mã độc IoT, đồng thời các đặc trưng có cấu trúc đồ thị đem lại hiệu quả cao
trong bài toán phát hiện mã độc IoT botnet. Tuy nhiên, các đặc trưng có cấu trúc đồ thị
hiện nay vẫn có độ phức tạp cao, vì thế, luận án sẽ nghiên cứu đề xuất phương pháp mới
theo hướng đặc trưng thuần tĩnh có cấu trúc đồ thị, đảm bảo độ chính xác cao và độ phức
tạp thấp trong bài toán phát hiện mã độc IoT botnet. Chi tiết của phương pháp đề xuất
sẽ được giải thích và thảo luận ở phần tiếp theo của luận án này.
74
Bên cạnh các nội dung lý thuyết nền tảng được trình bày trong Chương này đã
được trích dẫn cụ thể; các nội dung còn lại và các kết quả thực nghiệm trong Chương
này đã được luận án trình bày, công bố tại Kỷ yếu Hội thảo và Tạp chí khoa học uy tín.
Cụ thể là:
- “A survey of IoT malware and detection methods based on static features”, ICT
Express Journal, (ESCI/SCOPUS index, Q1)
- “Phát triển phương pháp lai trong phát hiện mã độc Botnet trên thiết bị định
tuyến”, Hội thảo quốc gia lần thứ XX: Một số vấn đề chọn lọc của Công nghệ thông tin
và truyền thông, Quy Nhơn, 23-24/11/2017.
- “Xây dựng mô hình thu thập phát hiện tấn công mạng sử dụng thiết bị IoT”,
Hội thảo quốc gia lần thứ II: Một số vấn đề chọn lọc về an toàn an ninh thông tin, Thành
phố Hồ Chí Minh, 2017.
75
CHƯƠNG 3. ĐẶC TRƯNG ĐỒ THỊ PSI TRONG PHÁT HIỆN MÃ ĐỘC IOT
BOTNET
3.1. Phát biểu bài toán
Sự bùng nổ về số lượng thiết bị IoT kèm theo việc được ứng dụng rộng rãi trong
nhiều lĩnh vực, ngành nghề đã khiến tin tặc chuyển hướng tấn công mạng nhằm vào các
thiết bị IoT. Hiện nay, phần lớn các cuộc tấn công mạng đều liên quan đến tấn công mã
độc trên thiết bị IoT [18]. Với các nội dung đã thảo luận ở Chương 2, các đặc trưng được
xem như là biểu diễn trừu tượng đại diện cho mỗi tập tin thực thi. Các đặc trưng tĩnh
khả quan trong bài toán phát hiện mã độc IoT botnet, trong đó các đặc trưng có cấu trúc
đồ thị trừu tượng hóa mức cao của một tập tin thực thi nên sẽ ổn định, linh hoạt và hiệu
quả hơn so với các đặc trưng phi cấu trúc đồ thị [41], trong phát hiện mã độc IoT botnet
có cấu trúc phức tạp hoặc sử dụng các kỹ thuật gây rối. Vì lý do đó, các đặc trưng đóng
vai trò quan trọng, quyết định tính hiệu quả của các phương pháp phát hiện mã độc IoT
botnet.
Như vậy, bài toán nghiên cứu của Chương này được phát biểu như sau:
- Cho 𝐿={𝑙1,𝑙2,…,𝑙𝑛} là tập hợp gồm 𝑛 tập tin thực thi, trong đó 𝑙𝑖∈{0,1} có
thể là các tập tin thực thi mã độc (giá trị 1) hoặc các tập tin thực thi lành tính (giá trị 0)
với 𝑖=1,𝑛
- Cho 𝐹={𝑓𝐴𝑙ℎ𝑎𝑛𝑎ℎ𝑛𝑎ℎ,𝑓𝑆𝑢,𝑓𝐻𝑎𝑑𝑑𝑎𝑑,𝑓𝐴𝑧𝑚𝑜𝑜𝑑𝑒ℎ𝑃𝑎𝑗𝑜𝑢ℎ,𝑓Alasmary } là tập hợp các
đặc trưng trừu tượng trong bài toán phát hiện mã độc botnet trên thiết bị IoT và có kết
quả khả quan trong thời gian gần đây. Như vậy ∃𝑓𝑇𝑟𝑢𝑛𝑔∉𝐹 sao cho 𝑓𝑇𝑟𝑢𝑛𝑔(𝐿) đơn giản
hơn 𝑓𝑗∈𝐹 , về mặt cấu trúc đồ thị thì việc đơn giản hơn được định lượng thông qua số
lượng cạnh và số lượng đỉnh đồ thị. Mặc dù đơn giản hơn về mặt cấu trúc nhưng 𝑓𝑇𝑟𝑢𝑛𝑔
cho kết quả tốt hơn các 𝑓𝑗∈𝐹 về độ chính xác, thời gian thực thi.
Hình 3.1 minh họa phát biểu bài toán phát hiện mã độc IoT botnet trong Chương
3 như sau: đầu tiên dữ liệu đầu vào là các tập tin thực thi (gồm cả mã độc và lành tính);
tiếp đó qua bước tiền xử lý và đến bước trích chọn đặc trưng thì có thể “tồn tại đặc trưng
có cấu trúc đồ thị mới”; trong đó, cách thức trích xuất đặc trưng đã được nghiên cứu
trong nội dung Chương 2; đặc trưng đồ thị này đưa vào các mô hình học máy, học sâu;
76
tiếp đó so sánh kết quả đạt được với một số kết quả nghiên cứu đạt được ở Chương 2,
thấy rằng phương pháp đề xuất đạt hiệu quả cao trong phát hiện mã độc IoT botnet (về
độ phức tạp, độ chính xác).
Hình 3.1. Tổng quan bài toán phát hiện mã độc IoT botnet dựa trên đặc trưng đồ thị
3.2. Giải thích bài toán
Luận án lựa chọn cách tiếp cận dựa trên phân tích tĩnh trong phát hiện mã độc
botnet trên thiết bị IoT. Hiện nay đã có những nghiên cứu theo hướng tiếp cập này, có
thể kể đến như Alhanahnah và cộng sự [4], Su và cộng sự [25], HaddadPajouh và cộng
sự [14], Azmoodeh và cộng sự [36], Hisham Alasmary và cộng sự [33]. Cụ thể,
Mohannad Alhanahnah và cộng sự kết hợp các đặc trưng tĩnh khác nhau như các chuỗi
(string), đồ thị luồng điều khiển (CFG) và thông tin thống kê cấu trúc tập tin để sinh ra
các chữ ký dùng cho phân lớp mã độc IoT đa kiến trúc. Quá trình sinh chữ ký gồm 3
bước chính như sau: phân cụm thô (coarse-grained), phân cụm nâng cao (fine-grained)
và cuối cùng kết hợp phân cụm (merging). Trong pha phân cụm thô, các đặc trưng thống
kê từ mã assembly được thu thập gồm tổng số các hàm, tổng số các chỉ thị lệnh, tổng số
các chỉ thị lệnh đươc chuyển hướng, … những đặc trưng này được sử dụng để phân cụm
77
các tập tin thực thi mã độc đầu vào. Kết quả thu được 1 phân cụm các tập tin mã độc,
đưa các tập tin mã độc này vào bước phân cụm nâng cao, ở bước này công cụ bindiff
được sử dụng để đánh giá sự tương đồng về cấu trúc đồ thị luồng điều khiển giữa các
mẫu mã độc. Cuối cùng, sử dụng các tập tin mã độc đã được phân cụm ở pha thứ 2 để
sinh các chữ ký đặc trưng cho mã độc IoT dựa trên vector n-gram của các chuỗi thu
được từ các tập tin đó. Kết quả thực nghiệm dựa trên bộ dữ liệu có 5150 mẫu mã độc
IoT, nhóm tác giả đã chứng minh phương pháp tiếp cận đạt độ chính xác 95,5 %. Tuy
nhiên, hạn chế của phương pháp này là quá trình phân tích dựa trên đồ thị luồng điều
khiển, có độ phức tạp cao và chi phí tính toán lớn. Thứ hai, phương pháp còn phụ thuộc
nhiều vào giá trị của các chuỗi trong các tập tin nên với các chuỗi bị mã hóa thì sẽ không
hiệu quả, đồng thời không mô tả được thông tin ngữ nghĩa phức tạp (ví dụ dữ liệu phụ
thuộc xuất hiện trong vòng đời mã độc IoT botnet).
Su và cộng sự đã đề xuất một phương pháp nhẹ (light) để phân biệt các mẫu mã
độc IoT và các mẫu lành tính IoT dựa trên ảnh đa mức xám, và bằng cách đưa các ảnh
đa mức xám này vào mô hình mạng nơ-ron tích chập để phát hiện mã độc IoT. Bên cạnh
đó, các tập tin với kích thước bất kỳ sẽ được chuẩn hóa cho phù hợp với kích thước ảnh
đa mức xám là 64x64, phần nội dung còn lại sẽ bị xóa nếu dư thừa hoặc thiếu sẽ được
chèn các giá trị 0. Kết quả thực nghiệm cho thấy phương pháp đề xuất đạt độ chính xác
93,33% trong phát hiện mã độc IoT.
Hamed HaddadPajouh và cộng sự đã đề xuất một phương pháp phát hiện mã độc
IoT sử dụng chuỗi opcode. Phương pháp này gồm 4 bước: (1) giải nén và giải biên dịch
các mẫu; (2) trích xuất các chuỗi opcode; (3) tiền xử lý dữ liệu; (4) ứng dụng RNN để
phát hiện các mẫu mã độc. Trong bước đầu tiên, công cụ Debian được sử dụng để unpack
tất cả các tập tin bị đóng gói, và sau đó công cụ Object-Dump được sử dụng để giải biên
dich tất cả các mẫu. Do các đoạn mã giải biên dịch có chứa những dữ liệu dư thừa như
các phép toán, các dòng chú thích mã lệnh vì thế cần cắt tỉa những dữ liệu dư thừa này
và liệt kê các opcode theo trật tự. Bước tiếp theo, nhóm tác giả áp dụng kỹ thuật khai
phá văn bản để xử lý một từ điển các từ và thu được các vector đặc trưng. Cuối cùng,
mô hình LSTM (Long Short Term Memory) được sử dụng để xây dựng cấu trúc học sâu
cho phát hiện các tập tin mã độc IoT. Phương pháp này đạt độ chính xác 98,18% với tập
78
dữ liệu kiểm thử gồm 281 mã độc IoT dựa trên ARM và 270 mẫu lành tính IoT dựa trên
kiến trúc ARM.
Azmoodeh và cộng sự đã trình bày một phương pháp dựa trên học sâu để phát
hiện mã độc IoT bằng đồ thị Opcode. Trước hết, công cụ Objdump được sử dụng để
trích xuất các chuỗi opcode, sau đó phương pháp trích chọn đặc trưng Class-Wise được
sử dụng để loại bỏ các opcode không hiệu quả nhằm tránh bùng nổ đặc trưng. Tiếp đó,
mỗi opcode trong tập tin thực thi được xem như một đỉnh trong đồ thị chuỗi opcode,
trong đó đồ thị này được sinh ra dựa trên đồ thị CFG để biểu diễn cho mỗi mẫu. Sau đó,
các thuật toán học sâu được sử dụng với đầu vào là dữ liệu đồ thị và sẽ chuyển đổi những
đồ thị này thành không gian vector (ví dụ, các trị riêng eigenspace) cho phát hiện mã
độc IoT. Phương pháp đề xuất được đánh giá với tập dữ liệu chứa 128 mẫu mã độc IoT
và 1078 mẫu lành tính IoT (tất cả các mẫu đều dựa trên ARM), đạt độ chính xác và
precision ở mức 98,37% và 98,59% theo thứ tự. Tuy nhiên, phương pháp này không đủ
độ mạnh mẽ do bộ dữ liệu kiểm thử còn ít mẫu mã độc IoT botnet và vấn đề đa kiến trúc
không được xem xét đề cập đến trong nghiên cứu này do tập dữ liệu chỉ dựa trên kiến
trúc ARM.
Hisham Alasmary và cộng sự đã thực hiện một nghiên cứu chuyên sâu về đồ thị
của mã độc Android và IoT botnet. Quá trình thực hiện bằng cách trích xuất đồ thị luồng
điều khiển (CFG) như đặc trưng đại diện cho mỗi tập tin mã độc, sau đó tiến hành phân
tích các thuộc tính đồ thị (số đỉnh, số cạnh, mật độ phân tán, …). Kết quả thực nghiệm
đã cho thấy các thuộc tính trên có thể phân biệt giữa mã độc IoT botnet và mã độc
Android, đặc trưng đồ thị luồng điều khiển của mã độc Android có độ phức tạp cao hơn
(số lượng đỉnh, số lượng cạnh lớn hơn) so với mã độc IoT botnet. Tuy nhiên, độ phức
tạp của đặc trưng đồ thị luồng điều khiển của mã độc IoT botnet vẫn cao và nghiên cứu
này mới dừng ở mức độ đánh giá và phân biệt mã độc Andorid và IoT botnet.
Với mô tả chi tiết các đặc trưng của các công trình nghiên cứu tiêu biểu trong
phân tích tĩnh phát hiện mã độc botnet trên thiết bị IoT, đặc trưng mới trong phát biểu
bài toán nghiên cứu tại Chương này sẽ tận dụng được các điểm mạnh cũng như giải
quyết được những hạn chế của các đặc trưng đã có, từ đó đem lại hiệu quả cao trong bài
toán phát hiện mã độc IoT botnet với các thuật toán học máy, học sâu.
79
3.3. Sơ đồ và ý tưởng phương pháp đề xuất
Bài toán nghiên cứu trong Chương này của luận án sẽ theo các giả thiết sau: Sự
khác biệt cơ bản giữa mã độc botnet và các loại mã độc khác là luôn cần sự kết nối tới
máy chủ C&C để gửi/nhận lệnh tấn công từ tin tặc. Quá trình lây nhiễm, tấn công của
mã độc botnet trên thiết bị IoT đã được nghiên cứu nhiều, và thấy rằng thường diễn ra
theo quy trình chung như đã trình bày ở phần 1.1.4 của luận án này. Mỗi bước trong
trạng thái vòng đời mã độc IoT botnet thường liên quan đến những thông tin được biểu
diễn dưới dạng các chuỗi như các câu lệnh chỉ thị của tin tặc, các địa chỉ IP/tên miền
của máy chủ C&C, …
Trước khi đi vào sơ đồ phương pháp đề xuất, để hiểu rõ hơn vấn đề, các định
nghĩa sau được quy định trong luận án này.
Định nghĩa 3.1: Một đồ thị lời gọi hàm (function-call graph) là một đồ thị có
hướng, biểu diễn bởi 𝐺=(𝑉,𝐸). Trong đó 𝑉 là tập các đỉnh 𝑉 = 𝑉(𝐺) biểu diễn các
hàm và tập các cạnh 𝐸=𝐸(𝐺), ở đó 𝐸(𝐺)⊆𝑉(𝐺) ×𝑉(𝐺), tương ứng với các lời gọi
hàm. Với mỗi đỉnh 𝑣 ∈𝑉, hai hàm được định nghĩa 𝑉𝑛(𝑣) và 𝑉𝑓(𝑣) cung cấp tên hàm
và loại hàm của hàm biểu diễn bởi 𝑣. Loại hàm 𝑡 ∈{0,1} có thể là hàm cục bộ (giá trị
0) hoặc hàm mở rộng (giá trị 1).
Định nghĩa 3.2: Một PSI (Printable String Information) là một chuỗi thông tin
có thể in được (printable) xuất hiện trong các tập tin thực thi, có thể ở dạng tường minh
(ví dụ “10.1.1.2”) hoặc mã hóa (ví dụ “eGAIM”).
Định nghĩa 3.3: Đồ thị PSI là một đồ thị có hướng được biểu diễn như sau 𝐺𝑃𝑆𝐼=
(𝑉,𝐸), trong đó:
– 𝑉 là tập các đỉnh được thiết lập bằng các hàm mà các hàm đó được trích
xuất từ đồ thị lời gọi hàm (function-call graph) và có chứa các PSI
– 𝐸 là tập các cạnh có hướng {(𝑉𝑖,𝑉𝑗), (𝑉𝑘,𝑉ℎ), … } , phản ánh mối liên kết
giữa hai caller và callee (hàm gọi – hàm được gọi)
80
Hình 3.2. Quy trình phương pháp đề xuất phát hiện mã độc IoT botnet
Với giả thiết nghiên cứu trên, luận án đưa ra mô hình tổng quát phương pháp đề
xuất gồm 02 pha xử lý chính: pha huấn luyện và pha sử dụng, minh họa ở hình 3.2.
Trong đó, pha huấn luyện và pha sử dụng có quy trình xử lý tương đối giống nhau, chỉ
khác biệt ở khối Phân lớp. Với dữ liệu đầu vào là các tập tin thực thi trên thiết bị IoT,
bao gồm cả các tập tin mã độc và lành tính đã được mô tả chi tiết ở phần 2.2.3, thì quy
trình thực hiện gồm 4 bước như sau:
- Bước 1: Thực hiện phân tích các tập tin thực thi thành mã hợp ngữ với công cụ
hỗ trợ dịch ngược các tập tin đa kiến trúc IDA Pro, sau đó sinh đồ thị lời gọi hàm dựa
trên mã hợp ngữ đã thu được.
- Bước 2: Với dữ liệu đồ thị lời gọi hàm thu thập được, luận án trích xuất các
thông tin biểu diễn luồng thực thi của mã độc IoT botnet. Do thông tin dạng chuỗi thường
xuất hiện trong các vòng đời thực thi hành vi độc hại của mã độc IoT botnet, nên luận
án thực hiện phân tích và xác định các đỉnh trong đồ thị lời gọi hàm có chứa một hoặc
nhiều thông tin dạng chuỗi đó. Tiếp đó, luận án tiến hành duyệt và cắt tỉa đồ thị lời gọi
hàm, chỉ giữa lại các đỉnh có chứa thông tin dạng chuỗi và các cạnh kết nối đỉnh đó. Đồ
thị sau khi cắt tỉa được gọi là đồ thị PSI.
- Bước 3: Như vậy, từ mỗi tập tin thực thi đầu vào sẽ thu được một đồ thị PSI đặc
trưng đại diện. Để xác định tập tin thực thi là mã độc hoặc lành tính thì cũng đồng nghĩa
81
là phải xác định đồ thị PSI đặc trưng đại diện cho tập tin thực thi đó là mã độc hoặc lành
tính. Như vậy cần thực hiện so sánh giữa đồ thị PSI thu được với đồ thị PSI của các tập
mẫu đã được phân loại mã độc, lành tính. Kết quả so sánh đồ thị PSI sẽ xác định tập tin
thực thi cần phân tích là mã độc hay lành tính. Phương pháp so sánh đồ thị [66] phổ biến
như so khớp đồ thị (matching graph), kỹ thuật nhúng đồ thị (embedding graph) . Có 2
hạn chế trong phương pháp sử dụng so khớp đồ thị, thứ nhất là độ phức tạp tính toán là
vấn đề cơ bản của so khớp đồ thị, thứ hai là việc xử lý nhiễu và sự biến dạng của đồ thị.
Một hướng tiếp cận khác, để khắc phục vấn đề thời gian và không gian tính toán đó là
kỹ thuật nhúng đồ thị trong không gian vector số, có nghĩa là phải chuyển đổi dữ liệu
đồ thị ban đầu dưới dạng một không gian vector số mới. Việc chuyển đổi từ không gian
này sang một không gian vector khác phải đảm bảo: (1) không gian vector mới phải thể
hiện bản chất của dữ liệu ban đầu, (2) cực tiểu hóa lượng mất mát thông tin xảy ra khi
chuyển sang không gian mới. Một số kỹ thuật embedding được sử dụng phổ biến như
mạng nơ-ron, mạng CNN, RNN, …Một số thư viện sử dụng kỹ thuật embedding như
Scikit-Learn, Word2vec, graph2vec. Chính vì thế, luận án này tiếp cận với kỹ thuật
nhúng đồ thị để thực hiện tiền xử lý đồ thị PSI trước khi chuyển vào các mô hình phân
lớp học máy, học sâu.
- Bước 4: Cuối cùng, luận án sử dụng mạng nơ-ron tích chập để phân lớp dữ liệu
vector thu được, từ đó xác định tập tin thực thi đầu vào là thuộc lớp mã độc hoặc lành
tính. Tuy nhiên, ở Pha huấn luyện thì quá trình này được thử nghiệm nhiều lần nhằm
chọn ra các tham biến, mô hình mạng phân lớp tốt nhất. Mô hình mạng phân lớp đó sẽ
được ứng dụng trong Pha sử dụng.
Với các bước tổng quan trên, phần tiếp theo luận án sẽ trình bày chi tiết các bước
thực hiện và giải pháp kỹ thuật để xử lý nhằm đạt được mục đích nghiên cứu đã đặt ra.
3.4. Đồ thị lời gọi hàm trong phát hiện mã độc IoT botnet
3.4.1. Khái niΜm ĽΩ thΠ lγi gΣi hàm
Để hiểu rõ hơn định nghĩa 3.1 đã trình bày ở phần 3.3, phần này sẽ trình bày chi
tiết. Trong các bài toán phát hiện mã độc, đặc trưng có cấu trúc đồ thị hầu hết được xây
dựng dựa trên nền tảng thông tin đồ thị luồng điều khiển. Đồ thị luồng điều khiển
(Control Flow Graph – CFG) [62] là đồ thị có hướng mà mỗi đỉnh (node) đồ thị biểu
82
diễn bằng basic block và mỗi cạnh biểu diễn luồng điều khiển có thể giữa các basic
block. Trong đó, việc xây dựng basic block phụ thuộc vào loại thông tin luồng điều
khiển, nhưng luôn đảm bảo luồng điều khiển đi vào tại điểm khởi đầu và đi ra tại điểm
kết thúc mà không bị dừng đột ngột hoặc xử lý rẽ nhánh khi kết thúc. Thông tin luồng
điều khiển có 2 dạng chính [46]:
(1) luồng điều khiển liên thủ tục (inter-procedural CFG)
(2) luồng điều khiển nội thủ tục (intra-procedural CFG).
Đồ thị luồng điều khiển liên thủ tục biểu diễn mối liên kết giữa các hàm và các
thủ tục trong tập tin thực thi như một đồ thị đơn CFG, do đó đồ thị luồng điều khiển liên
thủ tục còn được gọi là đồ thị lời gọi hàm (FCG - Function Call Graph). Trong khi đó,
đồ thị luồng điều khiển nội thủ tục biểu diễn một tập các đồ thị luồng điều khiển bằng
một đồ thị cho mỗi thủ tục hoặc mỗi hàm. Do đó, các khối cơ sở có thể là một phần của
các chỉ thị lệnh hoặc các câu lệnh với duy nhất một đầu vào và một đầu ra trong đồ thị
luồng điều khiển nội thủ tục, và có thể là một hàm trong đồ thị luồng điều khiển liên thủ
tục. Đối với các tập tin thực thi sử dụng kỹ thuật đóng gói, gây rối (như viết lại mã nguồn
để gây khó khăn cho quá trình dịch ngược, …) thì việc sinh và xử lý đồ thị luồng điều
khiển nội thủ tục phức tạp hơn, độ chính xác kém hơn so với đồ thị lời gọi hàm [41].
Hơn nữa, hàm chức năng là một đơn vị lời gọi và mã nguồn của các tập tin thực thi gồm
nhiều hàm. Mỗi hàm thực hiện một tác vụ cụ thể và có thể được gọi nhiều lần từ các
hàm chức năng khác hoặc bởi chính nó trong quá trình thực thi tập tin. Cho nên việc sử
dụng đặc trưng dựa trên đồ thị lời gọi hàm sẽ hiệu quả hơn so với đồ thị luồng điều
khiển.
Một đồ thị lời gọi hàm (FCG – Function Call Graph) là một đồ thị luồng điều
khiển liên thủ tục, ở đó biểu diễn lời gọi quan hệ giữa các hàm hoặc chương trình con
trong một chương trình thực thi. Định nghĩa một cách chính thức được thể hiện như định
nghĩa 3.1.
Đồ thị lời gọi hàm được xem là đặc trưng mã độc bởi nó có thể đại diện cho chức
năng và mục tiêu của chương trình. Hơn nữa, tồn tại một xác suất khá nhỏ rằng đồ thị
lời gọi hàm của một chương trình tương đồng với đồ thị lời gọi hàm của một chương
trình khác [41]. Mặc dù các chương trình có sử dụng kỹ thuật gây rối nhưng các chức
83
năng hầu như không thay đổi. Do đó, đồ thị lời gọi hàm có thể giải quyết được kỹ thuật
gây rối tốt hơn các chữ ký mã độc thông thường [97]. Có 2 loại hàm được sử dụng trong
các chương trình thực thi, đó là hàm cục bộ (internal function) và hàm bên ngoài
(external function).
Hàm cục bộ là các hàm của chương trình thực thi và được viết bởi người lập trình
để thực hiện các tác vụ cụ thể; trong khi đó hàm bên ngoài là các hàm hệ thống hoặc các
thư viện, nên còn được gọi là hàm nguyên tử. Hàm cục bộ có nhiều tên gọi trong các
chương trình khác nhau mặc dù chúng thực hiện chức năng giống nhau, ví dụ với các
tập tin kiến trúc x86_64 thì đều bắt đầu với tên cấu trúc “sub_xxxxxx proc near” và kết
thúc với định dạng “sub_xxxxxx endp”, theo sau “sub_” là địa chỉ bộ nhớ của hàm
Trong khi đó, tên của các hàm bên ngoài không thay đổi trong hầu hết các chương
trình thực thi. Những hàm này không thực hiện thêm các lời gọi và có cùng tên trong tất
cả các tập tin thực thi. Trong lý thuyết đồ thị, các hàm bên ngoài là những nút lá với bậc
tới (in-degree) là bằng 1 và bậc lui (out-degree) là bằng 0. Hơn nữa, tồn tại một liên kết
logic giữa 2 loại hàm này, một hàm cục bộ có thể gọi đến một hàm bên ngoài nhưng
hàm bên ngoài không viện dẫn bất kỳ hàm cục bộ nào bởi chúng là các hàm từ hệ thống
hoặc các thư viện.
3.4.2. Xây dχng ĽΩ thΠ lγi gΣi hàm
Trước khi xây dựng đồ thị lời gọi hàm thì cần kiểm tra và tiền xử lý các kỹ thuật
tự vệ của các tập tin thực thi để đảm bảo tính đúng đắn của đồ thị lời gọi hàm. Để kiểm
tra các tập tin có sử dụng kỹ thuật đóng gói không, luận án sử dụng công cụ xác định
trình đóng gói DiE (Detect It Easy) [115] để kiểm tra tập tin có bị đóng gói không và
nếu có thì kỹ thuật đóng gói sử dụng là gì. Phân tích trên tập dữ liệu thử nghiệm của
luận án gồm 10010 mẫu, thấy rằng chỉ khoảng 2% số lượng mẫu có sử dụng kỹ thuật
gây rối, và đại đa số là kỹ thuật đóng gói UPX. Các kỹ thuật đóng gói (mã hóa hoặc/và
nén) được sử dụng phổ biến trong các tập tin thực thi mã độc. Khi đóng gói các tập tin
nhị phân, các trình đóng gói khiến các tập tin trở thành định dạng tự thực thi bằng cách
thêm vào thành phần giải đóng gói (unpacking routine) trong các tập tin đóng gói. Sau
khi các tập tin đóng gói được thực thi, thành phần giải đóng gói trước hết sẽ giải mã để
chuyển các đoạn mã nguyên gốc vào bộ nhớ và sau đó các đoạn mã nguyên gốc được
thực thi.
84
Hình 3.3 thể hiện cấu trúc của một tập tin ELF bị đóng gói bằng UPX, một trong
những trình đóng gói phổ biến. Chính vì lý do này, mà luận án không thể trực tiếp phân
tách các tập tin thực thi ban đầu.
LuanAn_upx (trên ổ đĩa) LuanAn (trong bộ nhớ)
ELF headers ELF headers
… Code section
Packed binary Data section
Unpacking Routine Giải đóng gói đoạn
mã bị đóng gói
…
Hình 3.3. Minh họa cấu trúc của tập tin bị đóng gói bằng UPX
Sau khi xác định được trình đóng gói thì hiện nay có rất nhiều công cụ hỗ trợ việc
unpack như công cụ UPX [121]. Các tập tin thực thi không thể unpack bằng công cụ
UPX thì sẽ được loại bỏ khỏi tập dữ liệu. Sau quá trình unpack, luận án lựa chọn IDA
Pro là công cụ hỗ trợ quá trình dịch ngược bởi đây là công cụ hỗ trợ đa nền tảng hệ điều
hành như Windows, Linux và Mac OS; cho phép lập trình tính năng plugin để tích hợp;
được cộng đồng nghiên cứu bảo mật quốc tế đánh giá cao (như BackHat, DefCon,
Usenix, …) cũng như nhiều công ty bảo mật, các tổ chức lựa chọn sử dụng trong bảo
mật; hỗ trợ đa kiến trúc vi xử lý (ARM, MIPS, PowerPC, Sparc, …). Bên cạnh đó, IDA
tích hợp các trình gỡ lỗi có thể giải quyết vấn đề các đoạn mã bị gây rối và cuối cùng,
IDA Pro được xem là công cụ hỗ trợ tốt nhất hiện nay cho quá trình phân tích các tập
tin thực thi trên thiết bị IoT [53].
Sau khi thực hiện phân tách các tập tin nhị phân bằng công cụ IDA Pro, luận án
thu được mã hợp ngữ của tập tin. Mã hợp ngữ của một tập tin thực thi bao gồm nhiều
hàm chức năng. Mỗi hàm chức năng thực hiện một tác vụ cụ thể và là một chuỗi lệnh
máy, trong đó chứa thông tin đầy đủ của các hàm như tên hàm, loại hàm, các hàm gọi
tới, các hàm gọi đi và các thông tin dạng chuỗi chứa trong các hàm. Đây là thuộc tính
của các hàm được thêm vào các đỉnh của đồ thị lời gọi hàm, minh họa như hình 3.4. Các
hàm này là đơn vị có thể gọi được và có thể được gọi nhiều lần từ các hàm khác hoặc
bởi chính nói trong quá trình thực thi tập tin.
85
Hình 3.4. Một hàm từ mã độc Linux.Mirai
Ở bước này, IDAPython API được luận án sử dụng để tạo plug-in hỗ trợ trích
xuất mã hợp ngữ (assembly) từ các tập tin thực thi nhị phân, đồng thời định danh các
hàm và gán các tên biểu tượng cho các hàm. Bởi vì tên các hàm do người lập trình quy
định sẽ không được duy trì trong quá trình biên dịch mà thay vào đó một tên tượng trưng
sẽ được gán cho chúng. Tuy nhiên, các hàm bên ngoài có cùng tên trong các tập tin thực
thi. Trong trường hợp hàm bên ngoài được thêm động thì chúng sẽ được nhận tên gọi từ
Bảng liên kết thủ tục (Procedure Linkage Table – PLT) với định dạng ELF. Ngay khi
các thông tin liên quan được trích xuất, đồ thị lời gọi hàm sẽ được tiến hành xây dựng.
Trong đó, các hàm gọi tới hàm khác được gọi là “caller”, hàm được gọi thì gọi là
“callee”, mối quan hệ ở đây được gọi là quan hệ “caller – callee”.
Các thuật toán tìm kiếm theo chiều rộng (Breadth First Search – BFS) và tìm
kiếm theo chiều sâu (Depth First Search – DFS) được sử dụng phổ biến trong xây dựng
cấu trúc đồ thị theo các yêu cầu bài toán. Trong BFS, quá trình duyệt đồ thị bắt đầu từ
các đỉnh mức gốc (root) và tiếp tục duyệt lần lượt đến các đỉnh mức con kế tiếp. Trong
luận án, với dữ liệu đầu vào là các tập tin thực thi thì về nguyên tắc thực thi, các chương
trình sẽ luôn bắt đầu từ các hàm đầu vào (entry-point) sau đó mới gọi đến các hàm không
phải hàm đầu vào (non-entry point) từ mỗi hàm đầu vào trên [97]. Điều này có nghĩa là,
các hàm “entry-point” sẽ ở mức gốc của đồ thị và các hàm “non-entry point” sẽ ở các
86
mức tiếp theo của đồ thị. Do đó, luận án thấy rằng thuật toán BFS là phù hợp trong việc
xây dựng đồ thị lời gọi hàm. Thuật toán xây dựng đồ thị lời gọi hàm (thuật toán 3.1)
được luận án triển khai kế thừa từ nghiên cứu của Ming Xu và cộng sự [108].
Thuật toán 3.1: Xây dựng đồ thị lời gọi hàm (Function Call Graph – FCG)
Input: Các hàm ở dạng mã hợp ngữ của tập tin 𝐹,
Output: Đồ thị lời gọi hàm 𝐺𝐹 của tập tin F
// Khởi tạo ban đầu
1: 𝑮𝑭.𝑉 = 𝝓 and 𝑮𝑭.𝐸 = 𝝓
2: EntryFuncSet = 𝝓, FuncSet = 𝝓, FuncQ = 𝝓, VerSet = 𝝓 //Trích xuất các hàm từ mã hợp ngữ
3: FuncSet = SplitFuncs(𝐹) 4: EntryFuncSet = IdentifyEntryPointFuncs(𝑀) 5: FuncQ = InitQ(EntryFuncSet) //Xây dựng mối quan hệ caller-callee
6: while(FuncQ is not empty) 7: baseVertex = Dequeue(FuncQ) 8: Insert baseVertex in 𝑮𝑭 9: baseVertex.enQFlag = true //Trích xuất các callee của tập baseVertex
10: VerSet = getCallee(baseVertex) 11: for each vertex in VerSet 12: if((vertex ∩ FuncSet) ≡𝝓) // Các đỉnh không có trong FuncSet
13: continue 14: endif 15: headVertex = vertex 16: // Xây dựng cạnh kết nối giữa baseVertex và headVertex
17: if(𝑒 ∈ 𝑮𝑭.𝐸) 18: baseVertex.outDeg++ 19: headVertex.inDeg++ 20: else 21: Insert headVertex in 𝑮𝑭 22: Insert edge 𝑒 in 𝑮𝑭 23: endif 24: if(headVertex.enQFlag == false) 25: Enqueue headVertex in FuncQ 26: headVertex.enQFlag = true 27: endif 28: next vertex 29: end while 30: return 𝑮𝑭 31: end
Mô tả thuật toán sinh đồ thị lời gọi hàm như sau: tất cả các hàm trong tập tin thực
thi là “non-entry point” được lưu trữ tại FuncSet như tại dòng lệnh thứ 3. Các hàm
87
“entry-point” được xác định và lưu trữ tại EntryFuncSet như tại dòng lệnh thứ 4. FuncQ
là hàng đợi hàm trong đó EntryFuncSet được khởi tạo cho đến khi hàng đợi trống như
tại dòng lệnh thứ 5. Khi FuncQ không trống, thuật toán sẽ tách ra (dequeue) từ phía đầu
của hàng đợi và lưu các đỉnh (các hàm) tại baseVertex và xử lý như một caller như tại
dòng lệnh thứ 7. Việc này được thực hiện dựa trên lý thuyết là trong hàng đợi thì các
đối tượng được thêm vào bất kỳ lúc nào nhưng chỉ có đối tượng thêm vào đầu tiên mới
được phép lấy ra khỏi hàng đợi. Sau đó baseVertex được thêm vào đồ thị và cờ enQFlag
được thiết lập TRUE để tránh việc lặp lại quá trình thêm vào đồ thị. Sau đó baseVertex
được dò quét để tìm tập callee của nó và lưu trữ tại VerSet như tại dòng lệnh thứ 10. Mỗi
đỉnh trong tập VerSet được kiểm tra để đảm bảo nó chưa tồn tại trong tập FuncSet (nếu
không sẽ bị lặp lại việc duyệt một hàm) và sẽ được gán là headVertex như tại dòng lệnh
thứ 12 và 15. Nếu đã tồn tại cạnh nối giữa headVertex và baseVertex thì tăng outDeg
của caller và inDdeg của callee thêm 1 như tại dòng lệnh thứ 18 và 19. Ngược lại,
headVertex và các cạnh tương ứng của nó với baseVertex sẽ được thêm vào đồ thị như
tại dòng lệnh 21 và 22. Cuối cùng, nếu cờ enQFlag của headVertex vẫn chưa được thiết
lập giá trị TRUE, tức là đã duyệt hết mà cờ báo vẫn chưa kết thúc thì sẽ thiết lập thành
giá trị TRUE và được thêm vào cuối (enqueued) hàng đợi FuncQ. Từ đây, đồ thị lời gọi
hàm được xây dựng. Như vậy, với tập mẫu dữ liệu thử nghiệm (gồm các tập tin thực thi
mã độc, lành tính) thì mỗi tập mẫu qua quá trình xây dựng đồ thị lời gọi hàm sẽ cho ra
một đồ thị lời gọi hàm duy nhất, đồ thị lời gọi hàm này đảm bảo đặc tả đầy đủ các hành
vi tiềm tàng trong mỗi tập tin thực thi [105].
Hình 3.5. Một phần đồ thị lời gọi hàm của mã độc Linux.Mirai
88
Trong hình 3.5, nút gốc “start” trong đồ thị lời gọi hàm là nút từ đó quá trình thực
thi bắt đầu và sẽ giống nhau cho mỗi đồ thị lời gọi hàm. Đồ thị lời gọi hàm rất hữu ích
trong biểu diễn luồng điều khiển của một chương trình. Đây là loại đồ thị nhằm biểu
diễn các khả năng thực thi trong một chương trình. Nhưng đồ thị lời gọi vẫn có độ phức
tạp cao bởi số lượng đỉnh và số lượng cạnh lớn, do đó thường tốn kém chi phí tính toán
và bộ nhớ lưu trữ [97]. Nếu độ phức tạp của một đồ thị dựa trên số cạnh và đỉnh thì độ
phức tạp sẽ là 𝛰(|𝑉|∗|𝐸|) với |𝑉| là số cạnh và |𝐸| là số đỉnh. Nguyên nhân là mặc dù
mỗi lời gọi quan hệ của một hàm chức năng được thể hiện trong đồ thị, nhưng có khả
năng có những lời gọi quan hệ không bao giờ được thực hiện khi một chương trình thực
thi. Điều này khiến độ phức tạp của đồ thị luồng lời gọi hàm cao khi số lượng đỉnh và
số lượng cạnh lớn. Chính vì thế, dựa trên cơ sở đồ thị lời gọi hàm, luận án hướng tới xây
dựng một đặc trưng đồ thị mới, có hiệu quả cao (độ phức tạp thấp khi có thể giảm số
lượng đỉnh và số lượng cạnh của đặc trưng đồ thị nhưng vẫn đảm bảo tỷ lệ phát hiện
chính xác cao) trong bài toán phát hiện mã độc IoT botnet khi áp dụng với các kỹ thuật
học máy, học sâu.
3.5. Xây dựng đồ thị PSI
3.5.1. Các khái niΜm liên quan
Trên cơ sở phân tích, đánh giá những nghiên cứu hiện nay [22], [38], [12], luận
án thấy rằng các đặc trưng cơ bản của mã độc IoT botnet thường diễn ra theo một quy
trình, trong đó có 05 bước chính như sau:
1) Cố gắng kết nối/nhận từ/đến máy chủ C&C ở xa thông qua địa chỉ IP hoặc
URL.
2) Cố gắng khai thác các thiết bị IoT bằng cách liên tục dò quét ngẫu nhiên địa
chỉ IP và thực hiện tấn công vét cạn thông qua các dịch vụ Telnet, SSH, FTP với một bộ
từ điển nhúng sẵn trong tập tin (ví dụ root/root, adim/root, admin/123, …).
3) Cố gắng phân tích kiến trúc phần cứng của thiết bị IoT và tải về các tập tin nhị
phân mã độc cần thiết (MIPS, ARM, PowerPC,…) với đoạn mã kịch bản thông qua giao
thức wget, TFTP để lây nhiễm trên các thiết bị.
4) Cố gắng tìm kiếm các loại mã độc khác trên thiết bị để hủy hoặc xóa chúng
ngay khi lây nhiễm thành công để đảm bảo tài nguyên bởi các thiết bị IoT là những thiết
89
bị có tài nguyên hạn hẹp (ví dụ Mirai tìm và hủy các tiến trình của mã độc .anime và
Qbot).
5) Cố gắng chạy trên bộ nhớ của các thiết bị IoT sau đó sẽ tạm dừng hoạt động
cho đến khi nhận được lệnh từ kẻ tấn công.
Có thể thấy, mỗi bước trong trạng thái trong vòng đời mã độc IoT botnet thường
liên quan đến những thông tin được biểu diễn dưới dạng các chuỗi, ví dụ như địa chỉ IP
của các thiết bị có lỗ hổng, đặc trưng tên đăng nhập/mật khẩu, các câu lệnh lây nhiễm
mã độc hoặc địa chỉ IP của máy chủ C&C…Một cách chính thức, luận án định nghĩa
thông tin dạng chuỗi như định nghĩa 3.2.
Trước khi xây dựng đồ thị PSI, luận án trích xuất toàn bộ PSI tồn tại bên trong
tập tin thực thi bằng một đoạn mã plugin của công cụ IDAPro. Cân bằng giữa độ chính
xác của kết quả phân lớp và độ phức tạp tính toán, luận án lựa chọn các hàm chứa PSI
có độ dài tối thiểu từ 3 ký tự trở lên. Những PSI này có thể ở dạng tường minh hoặc mã
hóa và thường chứa nhiều thông tin ngữ nghĩa có liên quan đến mục đích của kẻ tấn
công. Ví dụ như chuỗi “/dev/watchdog; /dev/misc/watchdog” thường xuất hiện trong
Linux.Mirai, ngụ ý rằng mã độc botnet cố gắng ngăn chặn tiến trình khởi động lại của
thiết bị [63]. Trong một vài trường hợp, các chuỗi đã trích xuất bị mã hóa hoặc bị gây
rối, minh họa ở hình 3.6.
Hình 3.6. Các chuỗi bị mã hóa trong Linux.Mirai
90
Thực tế, mặc dù có một vài kỹ thuật mã hóa được sử dụng để gây nhiễu thông tin
trong một số trường hợp mã độc IoT botnet như mã độc botnet Linux.Mirai, một mã độc
botnet thường thông qua quy trình lây nhiễm để khiến các thiết bị đã bị khai thác có thể
thực hiện theo yêu cầu mà kẻ tấn công (botmaster) mong muốn. Bên cạnh đó, một số
nghiên cứu trước đây cho thấy khả năng phát hiện dấu hiệu mã độc botnet bằng cách
quan sát các trạng thái trong vòng đời botnet. Khoshhalpour và cộng sự [74] đã đề xuất
một kỹ thuật phát hiện mã độc botnet dựa trên phân tích các hành vi mạng của một thiết
bị đã bị lây nhiễm. Với ý tưởng này, Prokofiev và cộng sự [91] đã phát hiện mã độc IoT
botnet bằng cách giám sát các trạng thái lan truyền của một mã độc botnet thông qua
nhiều tham biến như các cổng đích, các cổng nguồn mở và số lượng truy vấn. Tuy nhiên,
những nghiên cứu đó không tiếp cận để khai thác ưu điểm của phân tích tĩnh; do đó, các
nghiên cứu này có thể gặp phải những hạn chế tương tự như trong phân tích động, ví dụ
chỉ giám sát được các hành vi trong thời điểm thực thi chương trình; tuy nhiên những
nghiên cứu này cũng chỉ ra khả năng quan sát và phát hiện nhiều thành phần trong vòng
đời của mã độc IoT botnet.
Với những nội dung đã trình bày trên, nếu không xét đến giá trị của các chuỗi,
mà chỉ quan tâm đến cấu trúc của các chuỗi từ các hàm trong tập tin thực thi mã độc thì
có thể phản ánh “hành vi vòng đời” của mã độc IoT botnet không? Dựa trên ý tưởng
này, luận án cho rằng tồn tại một đặc trưng tĩnh có thể phản ánh “hành vi vòng đời” hay
có thể gọi là mô phỏng quá trình lây nhiễm của một mã độc IoT botnet. Đồng thời đặc
trưng này có hiệu quả hơn so với đồ thị lời gọi hàm trong phát hiện mã độc IoT botnet.
Một cách chính thức, luận án định nghĩa đồ thị PSI như định nghĩa 3.3.
Nội dung chi tiết của các thuật toán sinh đồ thi sẽ được trình bày chi tiết ở phần
tiếp theo của luận án này.
3.5.2. Thuͻt toán xây dχng ĽΩ thΠ PSI
Sau khi đã xây dựng được đồ thị lời gọi hàm, cũng như xác định được các đỉnh
chứa PSI, luận án tiến hành duyệt đồ thị lời gọi hàm để xây dựng đồ thị PSI, tiến trình
thực hiện như trong thuật toán 3.2.
Thuật toán 3.2: PSI-Graph Generation (FCG)
1 𝑉=[ ], 𝐸=[ ]
91
2 For each vertice 𝑣𝑖 in FCG do:
3 If exist psi in 𝑣𝑖 and do:
4 𝑉 = 𝑉∪ 𝑣𝑖
5 End if
6 For each edge 𝑒𝑗(𝑣𝑖,𝑣𝑘) do:
7 If exist psi in 𝑣𝑘 and 𝑣𝑘∉𝑉 and 𝑒𝑗(𝑣𝑖,𝑣𝑘) ∉𝐸 do:
8 𝑉 = 𝑉∪ 𝑣𝑘
9 𝐸=𝐸∪ 𝑒𝑗(𝑣𝑖,𝑣𝑘)
10 End If
11 Enf for
12 End for
13 Return 𝑉,𝐸
Mô tả thuật toán sinh đồ thị PSI như sau: với dữ liệu đầu vào là dữ liệu đồ thị lời
gọi hàm FCG, khởi tạo ban đầu là tập đỉnh 𝑉 và tập cạnh 𝐸 của đồ thị PSI là rỗng như
tại dòng lệnh 1. Thực hiện duyệt đồ thị FCG theo chiều rộng và kiểm tra mỗi đỉnh trong
FCG, nếu có bất kỳ đỉnh nào chứa ít nhất một PSI thì sẽ đưa đỉnh đó vào tập đỉnh 𝑉 để
lưu trữ như tại dòng lệnh 4, ở đây thuật toán sử dụng phép hợp nhằm thể hiện rằng các
đỉnh sẽ không lưu trữ các đỉnh trùng lặp. Sau khi xác định được tập đỉnh 𝑉, thuật toán
tiến hành duyệt qua các cạnh của đồ thị FCG như tại dòng lệnh 6. Nếu tồn tại một đỉnh
trong đồ thị FCG có chứa ít nhất một PSI và đỉnh đó chưa nằm trong tập đỉnh 𝑉 thì sẽ
lưu trữ đỉnh đó vào tập đỉnh 𝑉 như tại dòng lệnh 8, đồng thời cạnh kết nối giữa 2 đỉnh
có chứa PSI mà chưa đượt duyệt lần nào sẽ đưa vào lưu trữ trong tập cạnh 𝐸. Kết quả
thu được tập đỉnh 𝑉 và tập cạnh 𝐸 để xây dựng đồ thị PSI. Hay nói một cách đơn giản
thì quá trình xây dựng đồ thị PSI là dựa trên việc cắt tỉa đồ thị FCG nhằm giảm số lượng
cạnh và số lượng đỉnh, như vậy độ phức tạp của thuật toán sinh đồ thị PSI là
𝑂(|𝑉|∗|𝐸|) cũng sẽ giảm. Hình 3.7 là một ví dụ về đồ thị PSI được lưu trữ trên tập tin,
trong đó dòng đầu tiên là số lượng đỉnh của đồ thị PSI, tiếp đó dòng thứ hai liệt kê các
đỉnh trong đồ thị (được cách nhau bởi dấu cách), từ dòng thứ 3 trở đi thì biểu diễn các
cạnh giữa 2 đỉnh.
92
Thuật toán xây dựng đồ thị PSI với dữ liệu đầu vào là đồ thị lời gọi hàm đã được
xây dựng ở thuật toán 3.1, chính vì thế đồ thị PSI cũng đảm bảo tính đầy đủ và đúng
đắn. Bên cạnh đó, đồ thị PSI được sinh ra dựa trên việc cắt tỉa đồ thị lời gọi hàm, điều
này khiến xảy ra trường hợp hai tập tin thực thi mẫu (𝑙1,𝑙2) được biểu diễn đặc trưng
bởi hai đồ thị lời gọi hàm khác nhau (𝑙1→𝑓𝑐𝑔1,𝑙2→𝑓𝑐𝑔2); tuy nhiên qua quá trình cắt
tỉa đồ thị lời gọi hàm, luận án chỉ giữ lại các hàm (các đỉnh) chứa thông tin dạng chuỗi;
điều này khiến hai đồ thị PSI được sinh ra có khả năng giống nhau (𝑓𝑐𝑔1,𝑓𝑐𝑔2→
𝑃𝑆𝐼𝑔𝑟𝑎𝑝ℎ). Tuy nhiên, thuật toán 3.2 đảm bảo rằng với mỗi tập tin mẫu 𝑙𝑖∈ 𝐿, thì chỉ
có duy nhất 01 đồ thị PSI (𝑃𝑆𝐼𝐺𝑟𝑎𝑝ℎ𝑖) được sinh ra để đặc trưng cho tập tin 𝑙𝑖, không
có trường hợp tập mẫu 𝑙𝑖∈ L sinh ra 02 đồ thị PSI khác nhau. Như vậy, một tập tin mẫu
chỉ được đặc trưng bởi 01 đồ thị PSI duy nhất. Quá trình thực nghiệm, luận án thấy rằng
với 10010 tập tin thực thi thì thu được 6739 đồ thị PSI khác biệt.
Hình 3.7. Minh họa lưu trữ dữ liệu đồ thị PSI
Như vậy, các đặc trưng đồ thị PSI được xây dựng từ đồ thị lời gọi hàm, trong khi
đó đồ thị lời gọi hàm thường phức tạp và yêu cầu tài nguyên tính toán lớn (nguyên nhân
là do mã độc chứa số lượng lớn chỉ thị trong mã nguồn nên đồ thị FCG thu thập dược
93
khá lớn). Bảng 3.1 cho thấy kết quả so sánh kích thước giữa đồ thị PSI và đồ thị lời gọi
hàm. Có thể thấy, đồ thị PSI có kích thước nhỏ hơn nhiều so với đồ thị lời gọi hàm về
số lượng đỉnh và cạnh ở cả các tập tin mã độc và lành tính. Vì vậy việc sử dụng đồ thị
PSI như đặc trưng để phát hiện mã độc có thể giảm độ phức tạp (tăng tốc độ xử lý, giảm
chi phí thời gian tính toán) so với việc sử dụng đồ thị lời gọi hàm.
Bảng 3.1. So sánh giữa đồ thị PSI và đồ thị lời gọi hàm FCG
Lớp Trung bình các
đỉnh trong đồ
thị PSI
Trung bình các
cạnh trong đồ
thị PSI
Trung bình các
đỉnh trong đồ
thị FCG
Trung bình các
cạnh trong đồ
thị FCG
Mã độc 147.1 1110.5 254.5 3075.5
Lành tính 167.8 1693.9 530.9 2962.2
Để có được sự hiểu biết tốt hơn đặc trưng đồ thị PSI, luận án đánh giá sự phân
bố số lượng đỉnh và cạnh trong đồ thị PSI của mã độc IoT botnet, so sánh với các mẫu
lành tính trong tập dữ liệu như ở bảng 3.2.
Bảng 3.2. Chi tiết số lượng cạnh và số lượng đỉnh trong đồ thị PSI giữa các lớp mẫu
Lớp Mirai Bashlite Mã độc IoT
botnet khác Lành tính
Trung binh các đỉnh 39,1 172,5 288,8 167,8
Trung bình các cạnh 233,4 624,3 1110,5 1693,9
Số đỉnh tối thiểu 3 1 2 1
Số đỉnh tối đa 1813 637 2313 11901
Số cạnh tối thiểu 15 7 0 0
Số cạnh tối đa 18903 2816 9882 65817
Có thể thấy ở bảng 3.2, số lượng các đỉnh trong đồ thị PSI tập trung chủ yếu trong
dải [1, 300] cho cả các tập tin mã độc và lành tính. Mặc dù, có sự khác biệt nhỏ trong
phân bố, nhưng sự khác biệt này không đủ rõ ràng để thiết lập một ngưỡng giá trị để
phân biệt các mẫu mã độc IoT và lành tính. Hình 3.8 cho thấy sự phân bố số lượng các
đỉnh trong đồ thị PSI của các mẫu mã độc IoT botnet và lành tính.
94
Hình 3.8. Số lượng các cạnh và đỉnh giữa các lớp mẫu
95
Để dễ hình dung kết quả hoạt động của thuật toán sinh đồ thị PSI (thuật toán 3.2),
quan sát hình 3.9 ví dụ về đồ thị lời gọi hàm của mẫu Linux.Bashlite, có thể thấy rõ ràng
đồ thị PSI đơn giản hơn nhiều so với đồ thị lời gọi hàm. Trung bình, một đồ thị PSI chỉ
chứa khoảng 16 đỉnh và 60 cạnh so với 156 đỉnh và 360 cạnh của đồ thị lời gọi hàm.
Hình 3.9. Đồ thị lời gọi hàm (trái) và đồ thị PSI (phải) của mẫu mã độc Linux.Bashlite
Như vậy, đặc trưng đồ thị PSI mà luận án thu được có những đặc điểm sau:
- Được xây dựng dựa trên phương pháp tĩnh;
- Có thể phản ánh “hành vi vòng đời” hay có thể gọi là mô phỏng quá trình lây
nhiễm của mã độc IoT botnet;
- Chỉ xét đến cấu trúc của các chuỗi thông tin có giá trị (printable string
information – PSI), không xét đến giá trị các chuỗi;
- Được xây dựng dựa trên đồ thị lời gọi hàm.
96
3.6. Đánh giá thực nghiệm
3.6.1. Môi trγng thχc nghiΜm
Sử dụng tập dữ liệu đã được trình bày ở mục 2.2.3 của luận án này, để tiến hành
các thực nghiệm, luận án chia tập dữ liệu thử nghiệm thành 2 tập con là: tập huấn luyện
và tập kiểm thử. Các tập con của Tập huấn luyện chứa số lượng mẫu như nhau là 2690
mẫu cho cả lớp mã độc và lớp lành tính. Tập con kiểm thử chứa phần còn lại của tập dữ
liệu là 4630 mẫu. Thực nghiệm được xây dựng với ngôn ngữ Python và bộ framework
PyTorch trên hệ điều hành Ubuntu 16.04 sử dụng chip Intel Core i5-8500, 3.0GHz, thẻ
đồ họa NVIDIA GeForce GTX1080Ti và bộ nhớ RAM 32 GB.
3.6.2. M¹ h³nh Ľ§nh gi§
Để đánh giá tính hiệu quả của đặc trưng đồ thị PSI trong bài toán phát hiện mã
độc IoT botnet, luận án tiến hành đưa các đặc trưng đồ thị PSI vào mô hình đánh giá,
các bước trong mô hình dưới đây tương ứng với bước 3 và bước 4 như hình 3.1 của luận
án này. Như đã trình bày trước về so sánh giữa đồ thị PSI có thể sử dụng kỹ thuật so
khớp đồ thị hoặc kỹ thuật nhúng đồ thị. Mục đích chính của so khớp đồ thị là tìm sự
tương đồng giữa các đỉnh và các cạnh của hai đồ thị có thỏa mãn một số rằng buộc nhất
định. Nghĩa là, bằng phương pháp so khớp đồ thị, các cấu trúc tương đồng trong một đồ
thị được ánh xạ tới cấu trúc tương đồng trong một đồ thị khác. Dựa trên sự phù hợp đó,
điểm số đánh giá tương đồng hoặc khác biệt có thể được tính toán để cho thấy sự gần
gũi giữa hai đồ thị. Bài toán so khớp đồ thị có thể chia thành 2 loại chính: so khớp chính
xác (exact matching) và so khớp không chính xác (inexact matching). So khớp chính
xác là việc tìm kiếm một cách chính xác giữa 2 đồ thị có số lượng đỉnh bằng nhau, ngược
lại nếu số lượng đỉnh giữa hai đồ thị là khác nhau thì khi đó việc so khớp chính là tìm
kiếm một phần đồ thị con của đồ thị này xuất hiện trong đồ thị kia, đó gọi là so khớp
không chính xác. Tuy nhiên, với hạn chế trong phương pháp sử dụng so khớp đồ thị là
độ phức tạp tính toán là vấn đề cơ bản của so khớp đồ thị (thuộc lớp bài toán NP-khó),
thứ hai là việc xử lý nhiễu và sự biến dạng của đồ thị còn hạn chế. Chính vì thế, luận án
tiếp cận theo hướng sử dụng kỹ thuật nhúng đồ thị để chuyển đổi đồ thị PSI thành dữ
liệu vector số trước khi đưa vào các mô hình học sâu để phân lớp.
97
Hình 3.10. Mô hình đánh giá đặc trưng đồ thị PSI trong phát hiện mã độc IoT botnet
Đã có nhiều nghiên cứu trong phân tích dữ liệu đồ thị như học qua các đỉnh, qua
các đồ thị con. Luận án tiếp cận dựa trên việc phân tích và biểu diễn toàn bộ cấu trúc đồ
thị PSI thành giá trị vector số có độ dài cố định, do đó luận án sử dụng graph2vec [39]
trong quá trình tiền xử lý dữ liệu đồ thị PSI. Quá trình xử lý của graph2vec dựa trên nền
tảng các hệ thống xử lý ngôn ngữ tự nhiên. Thông thường, các hệ thống xử lý ngôn ngữ
tự nhiên xử lý các từ như các biểu tượng, việc mã hóa được tạo ra ngẫu nhiên và không
cung cấp thông tin hữu ích cho hệ thống liên quan đến mối quan hệ giữa các biểu tượng.
Ví dụ “the” được đại diện bởi “Id156”. Bằng cách sử dụng biểu diễn vector của các từ
mà những vấn đề như trên đã được giải quyết như thể hiện sự tương đồng, đối lập về
ngữ nghĩa giữa các từ, giúp mô hình hóa vector cho một câu hay đoạn văn, tìm các câu
có nghĩa tương đồng,... Các kỹ thuật được sử dụng để xử lý ngôn ngữ tự nhiên có thể kể
đến như Word2Vec, Doc2Vec (thuộc nhóm kỹ thuật word embedding/vector – là nhóm
các kỹ thuật đặc biệt trong xử lý ngôn ngữ tự nhiên, có nhiệm vụ ánh xạ một từ hoặc
một cụm từ trong bộ từ vựng tới một vector số thực, từ không gian một chiều cho mỗi
từ tới không gian các vector liên tục). Tuy nhiên, qua quá trình thử nghiệm và đánh giá
sự phù hợp với nội dung nghiên cứu, luận án lựa chọn Graph2vec. Graph2vec [39] là
một kỹ thuật học không giám sát để chuyển đổi một đồ thị thành dạng vector số.
Graph2vec dựa trên ý tưởng hướng tiếp cận doc2vec sử dụng mạng skip-gram.
Graph2vec học cách biểu diễn các đồ thị bằng cách xem toàn bộ 01 đồ thị như một văn
bản và các đồ thị con như các từ tạo nên văn bản đó. Xét ví dụ minh họa ở hình 3.11 có
thể thấy rằng các đồ thị 𝐺1, 𝐺2, 𝐺3, 𝐺4 do có cấu trúc thuộc tính tương đồng với nhau
98
nên chúng cũng gần nhau trong không gian nhúng, tương tự các đồ thị 𝐺1′, 𝐺2
′, 𝐺3′, 𝐺4
′
cũng gần nhau trong không gian nhúng vì chúng đều có cấu trúc vòng lặp tương đồng
nhau. Chính vì thế, luận án sử dụng graph2vec trong việc xử lý dữ liệu đồ thị PSI.
Hình 3.11. Mô hình cơ bản của kỹ thuật nhúng đồ thị
Thuật toán 3.3: Graph2vec (𝒢, 𝐷, 𝛿, 𝔢, 𝛼)
Input: 𝒢={𝐺1, 𝐺2,…, 𝐺𝑛}: Tập hợp các đồ thị sao cho mỗi đồ thị 𝐺𝑖=
(𝑉𝑖,𝐸𝑖,𝜆𝑖) đã được học
𝐷: bậc tối đa của các đồ thị con có gốc được xem xét cho việc học trong
không gian nhúng. Điều này sẽ tạo ra một từ vựng các đồ thị 𝑆𝐺𝑣𝑜𝑐𝑎𝑏=
{𝑠𝑔1,𝑠𝑔2, …} từ tất cả các đồ thị trong 𝒢
𝛿: số chiều không gian (kích thước không gian nhúng)
𝔢: số lượng epoch
𝛼: tỷ lệ học
Output: Ma trận vector biểu diễn của đồ thị Φ ∈ ℝ|𝒢| × 𝛿
1: Initialization: Sample Φ from ℝ|𝒢| × 𝛿
2: for 𝔢=1 to 𝔢 do
3: 𝜔=𝑆h𝑢𝑓𝑓𝑙𝑒(𝒢)
4: for each 𝐺𝑖∈𝜔 do
5: for each 𝑣∈ 𝑉𝑖 do
6: for 𝑑=0 to 𝐷 do
7: 𝑠𝑔𝑣(𝑑)
:= GetWLSubgraph(𝑣,𝐺𝑖, 𝑑)
8: 𝒥(Φ)= −logPr( 𝑠𝑔𝑣(𝑑)|Φ(𝒢))
9: Φ= Φ− 𝛼𝜕𝒥
𝜕Φ
10: Return Φ
Hướng tiếp cận graph2vec gồm 3 bước sau:
99
- Lấy mẫu và đánh lại nhãn tất cả các đồ thị con từ đồ thị ban đầu. Đồ thị con là
tập các nút mà xuất hiện xung quanh nút đã lựa chọn. Các nút trong đồ thị con không
vượt quá mức số cạnh đã chọn.
- Huấn luyện mô hình skip-gram. Các đồ thị giống như các văn bản, do đó, các
văn bản là tập các từ và các đồ thị là tập các đồ thị con. Trong pha này, mô hình skip-
gram được huấn luyện. Nó được huấn luyện để tối đa hóa xác xuất dự đoán đồ thị con
tồn tại trong đồ thị đầu vào. Đồ thị đầu vào được cung cấp như một vector one-hot (là
một vector có toàn bộ giá trị là 0 trừ tại một vị trí đặc biệt nào đó thì sẽ có giá trị là 1).
- Tính toán nhúng để cung cấp một định danh đồ thị như một vector one-hot ở
đầu vào. Phép nhúng là kết quả của các lớp ẩn.
Hình 3.12. Mô hình hoạt động của graph2vec tương đồng với doc2vec
Như vậy, tóm lại nguyên lý hoạt động của graph2vec như sau: toàn bộ đồ thị
được xem như một văn bản, khi đó các đồ thị con trong đồ thị đang xét được xem như
các câu văn mà mỗi đỉnh trong đồ thị được xử lý như một từ (word). Sau đó sử dụng kỹ
thuật duyệt đồ thị “duyệt trung thứ tự cây con”, tức là theo thứ tự “duyệt các đỉnh bên
trái – sau đó duyệt đỉnh gốc – rồi tới duyệt đỉnh bên phải”. Khi đã xây dựng được văn
bản thì sử dụng đến kỹ thuật skipgram để biểu diễn đồ thị này. Do phải dự đoán các đồ
thị con, tức là các đồ thị với các đồ thị con tương đồng và cấu trúc tương đồng thì có
phép nhúng tương đồng. Kết quả của bước này là tập các vector one-hot với độ dài tùy
ý biểu diễn tập các đồ thị. Trong nghiên cứu đề xuất, luận án biểu diễn các đồ thị PSI
như vector số có độ dài 1024 được sử dụng cho việc phân lớp sau này.
Dữ liệu đã thu thập sau bước tiền xử lý đồ thị PSI sẽ được sử dụng để ra quyết
định xem một tập tin có tính độc hại hay không bằng cách sử dụng bộ phân lớp mạng
nơ-ron học sâu. Sau khi tiền xử lý đồ thị PSI, sẽ thu được dữ liệu vector, khi đó cần lựa
chọn một thuật toán có khả năng phân tích dữ liệu vector. Mạng nơ-ron tích chập (CNN)
và mạng nơ-ron hồi quy (RNN) đều hiệu quả trong việc phân tích dữ liệu vector số.
100
Trong việc so sánh thì mạng RNN thường hiệu quả trong dự đoán giá trị của trạng thái
tiếp theo, trong khi mạng CNN lại đem lại kết quả tốt trong nhiều bài toán phân lớp [19].
Bên cạnh đó, CNN có tốc độ xử lý nhanh hơn mạng RNN khoảng 5 lần do các tích chất
là phần trung tâm của đồ họa máy tính và được thực thi ở mức phần cứng trên các thẻ
giao diện đồ họa (Graphics Processing Unit) [43]. Do đó, luận án lựa chọn mạng CNN
là bộ phân lớp cho phát hiện mã độc IoT botnet dựa trên học dữ liệu từ bước tiền xử lý
đồ thị PSI. Lưu ý rằng, hướng tiếp cận của luận án được giới thiệu trong Chương này là
tổng quan và không giới hạn ở việc sử dụng các mô hình phân lớp học sâu CNN. Việc
lựa chọn mô hình CNN là do sự đơn giản và tốc độ huấn luyện so với các kiến trúc mạng
học sâu khác như mạng nơ-ron hồi quy RNN. Áp dụng và so sánh với các hướng tiếp
cận học sâu khác nhau sẽ được thực hiện trong tương lai.
Để xây dựng mạng nơ-ron tích chập, luận án đã kế thừa mô hình mạng đề xuất
bởi Kim [75], đây là một mô hình mạng CNN đơn giản với một lớp trên đỉnh vector các
từ đã thu được sử dụng Word2vec, một mô hình ngôn ngữ nơ-ron không giám sát. Những
vector từ đó được huấn luyện sử dụng mô hình được đề xuất bởi Mikolov và cộng sự
[86] trên 100 tỷ từ của Google New. Lớp đầu tiên của mạng nơ-ron là lớp đầu vào, lớp
tiếp theo thực hiện các phép tích chập sử dụng nhiều kích thước bộ lọc. Đầu ra của lớp
này được chuyển đến một hàm phi tuyến, gọi là hàm kích hoạt ReLU, được định nghĩa
là 𝑓(𝑥)=max(0,𝑥). Tuy nhiên, trong tính toán, luận án sử dụng hàm kích hoạt ReLU,
bởi hàm kích hoạt ReLU đã được chứng minh tính toán nhanh hơn những hàm kích hoạt
khác (ví dụ hàm tanh, sigmoid) và hàm kích hoạt ReLU không cần chuẩn hóa hoặc chi
phí tính toán lớn (ví dụ tính toán theo hàm mũ) [100]. Krizhevsky và cộng sự [80] đã
chứng minh rằng ReLU có thời gian xử lý nhanh hơn gấp 6 lần so với hàm tanh trong
bộ dữ liệu CIFAR-10, đồng thời ReLU cũng không bị ảnh hưởng bởi vấn đề các mô
hình mạng không thể hội tụ (vanishing gradient). Tiếp đó, lớp max-pooling được sử
dụng để giảm chiều dữ liệu từ lớp tích chập, vì thế độ phức tạp và tài nguyên tính toán
của quá trình xử lý có thể được giảm và có thể mở rộng dữ liệu. Cuối cùng, lớp kết nối
đầy đủ (fully connected) thực hiện phân lớp các kết quả đầu ra được sinh ra từ lớp tích
chập và lớp pooling.
101
3.6.3. Các kΔt qu thχc nghiΜm và th o luͻn
3.6.3.1. Thực nghiệm, so sánh tính hiệu quả của đặc trưng đồ thị PSI với đặc trưng đồ
thị lời gọi hàm
Nhằm đánh giá tính hiệu quả của đặc trưng đồ thị PSI trong phát hiện mã độc IoT
botnet, luận án đã thực nghiệm và đưa ra bảng kết quả trong đó tập trung vào 02 đặc
trưng là đồ thị PSI và đặc trưng đồ thị FCG với các giá trị độ đo gồm độ chính xác, FNR,
FPR và chi phí thời gian xử lý.
Bảng 3.3. Kết quả phát hiện mã độc IoT botnet bằng đồ thị PSI và đồ thị lời gọi hàm
Độ đo
Đặc trưng Accuracy (%) FNR (%) FPR (%) Time (m)
PSI-graphs 98,7 1,83 0,78 88
FCGs 95,3 5,81 4,13 545
Từ kết quả ở bảng 3.3 có thể thấy phương pháp đề xuất sử dụng các đặc trưng đồ
thị PSI thực hiện tốt hơn so với đồ thị lời gọi hàm. Kết quả cho thấy phương pháp đề
xuất đạt độ chính xác cao hơn 1,7% so với việc sử dụng đồ thị lời gọi, đồng thời thời
gian thực thi cũng ít hơn 457 phút. Bên cạnh đó, tỷ lệ âm tính giả (false nagative/tỷ lệ
loại trừ nhầm) trong phương pháp đề xuất đạt 1,83% trong khi phương pháp FCG đạt
5,81%. Trong khi đó, với các bài toán phát hiện mã độc thì tỷ lệ âm tính giả càng thấp
thì có nghĩa là bộ phân lớp gán nhãn sai mã độc là các tập tin lành tính càng thấp.
Mặc dù, trước khi thực nghiệm thì luận án đã tiến hành tiền xử lý các tập tin thực
thi. Cụ thể là, loại bỏ những tập tin thực thi mà công cụ IDA Pro không thể dịch ngược
hoặc xử lý được, loại bỏ những tập tin không phải tập tin nhị phân. Tuy nhiên, một số
tập tin mã độc Linux.Mirai vẫn bị phát hiện sai là tập tin lành tính, khó có đến 1,83% tỷ
lệ âm tính giả. Bằng việc phân tích thủ công các tập tin mẫu đó bằng IDA Pro, thấy rằng
trong mã hợp ngữ thu được không tìm thấy thông tin dạng chuỗi, tức là không có PSI.
Một số trường hợp thì đồ thị FCG chỉ xuất hiện 2-3 hàm, do những mẫu mã độc IoT này
sử dụng kỹ thuật tạo ra các thông tin dạng chuỗi động, đó là những thông tin dạng chuỗi
chỉ xuất hiện sau một vài lần tập tin thực thi trong hệ thống, nên với phân tích tĩnh thì
102
sẽ không thấy các chuỗi trong tập tin thực thi. Từ những lý do đó, một số tập tin mã độc
bị gán nhãn và phát hiện sai là tập tin lành tính.
Bên cạnh đó, phương pháp đề xuất của luận án vẫn có tỷ lệ sai rất nhỏ trong gán
nhãn sai các tập tin lành tính là mã độc. Điều này xảy ra ở việc một số tập tin lành tính
có cấu trúc đồ thị PSI giống với cấu trúc đồ thị của một số mẫu mã độc Linux.Bashlite.
Qua phân tích thủ công những tập mẫu đó thấy rằng các tập tin thực thi khác nhau, có
đồ thị FCG và mã hợp ngữ thu được là khác nhau nhưng vẫn có cấu trúc đồ thị PSI giống
nhau. Tuy nhiên, tỷ lệ phát hiện sai này chỉ ở mức 0,78%, một tỷ lệ rất nhỏ. Tóm lại, có
hai nguyên nhân chính giải thích cho vấn đề này gồm:
- Trong số các tập tin bao gồm cả mã độc và lành tính, nhiều tập tin về bản chất
là cùng một chương trình, được tạo ra từ cùng một mã nguồn, tuy nhiên chúng lại được
biên dịch trên các kiến trúc vi xử lý khác nhau. Trong khi đó đồ thị PSI đã loại bỏ đi
các yếu tố liên quan đến nền tảng, chỉ giữ lại các yếu tố trừu tượng liên quan đến luồng
xử lý của chương trình, do đó chúng có đồ thị PSI giống nhau.
- Bản thân các đồ thị PSI có thể coi là các phiên bản rút gọn của FCG. Các tập
tin mang bản chất khác nhau, có đồ thị FCG khác nhau, tuy nhiên quá trình xây dựng đồ
thị PSI đã lược bỏ đi các yếu tố này bởi PSI chỉ quan tâm tới các hàm trỏ tới PSI, dẫn
tới việc đồ thị PSI được tạo ra từ chúng lại có dạng giống nhau. Khả năng này hiếm khi
xảy ra đối với những đồ thị PSI có số lượng đỉnh lớn bởi khả năng để hai đồ thị có hướng
khác bản chất lại có tập cạnh giống hệt nhau không cao, mà nó có xu thế xảy ra ở những
đồ thị PSI có số lượng đỉnh nhỏ (ít hơn 5 đỉnh), chiếm tỷ lệ nhỏ trong tập dữ liệu. Như
vậy có thể thấy rằng thuật toán xây dựng đặc trưng đồ thị PSI (thuật toán 3.2) là một ánh
xạ nhiều-một, tức là nhiều tập tin thực thi ELF có thể cho ra cùng một đồ thị PSI.
3.6.3.2. Thực nghiệm, so sánh tính hiệu quả của đặc trưng đồ thị PSI với các nghiên
cứu liên quan trên cùng bộ cơ sở dữ liệu
Phương pháp thử nghiệm của luận án sử dụng mô hình mạng học sâu CNN, để
đánh giá tính hiệu quả một một mô hình mạng học sâu thường dựa trên hai tiêu chí là
độ chính xác và tính quá khớp (overfitting). Để nâng cao độ tin cậy của đặc trưng đồ thị
PSI trong phát hiện mã độc IoT botnet, luận án tiến hành thực nghiệm, đánh giá một số
103
nghiên cứu hiện nay trên cùng bộ cơ sở dữ liệu đã trình bày ở mục 2.2.3. Kết quả đạt
được về giá trị đo độ chính xác được mô tả như bảng 3.4.
Bảng 3.4. Kết quả so sánh giữa các phương pháp phát hiện IoT botnet
Phương pháp Các thuật toán Bộ mẫu thử nghiệm
Độ chính
xác
(Accuracy
%)
Su và cộng sự
[25]
Deep neural network
(CNN)
6943 mẫu (gồm 3098 mã
độc từ IoTPOT)
95.13
HaddadPajouh
và cộng sự [14]
Recurrent neural
network (RNN) 97.88
PSI-Graph Deep neural network
(CNN)
98.7
10,010 mẫu (gồm 6165 mã
độc từ IoTPOT and
VirusShare)
97,8
Từ bảng kết quả 3.4 có thể thấy các phương pháp nghiên cứu của Su và cộng sự
[25], HaddadPajouh và cộng sự [14] đều cho kết quả khả quan. Mặc dù các kết quả đạt
được của các nghiên cứu hiện nay đều khả quan, nhưng việc không có sẵn bộ dữ liệu
thử nghiệm và mã nguồn các mô hình thử nghiệm khiến cho việc thử nghiệm lại và đánh
giá kết quả đó khá khó khăn. Luận án cố gắng xây dựng lại những phương pháp đó thông
qua các học liệu, bài báo đã công bố của các phương pháp trên. Kết quả đạt được cho
thấy phương pháp đề xuất của luận án đạt độ chính xác tốt hơn phương pháp của Su và
HaddadPajouh lần lượt là 3,57% và 0,82%.
Cuối cùng, vấn đề quá khớp (over-fitting) thường xảy ra với các thuật toán học
sâu. Điều này xảy ra khi mô hình quá khớp với tập dữ liệu huấn luyện nhưng không thực
hiện tốt khi thực thi trên các tập con mở rộng. Để đánh giá vấn đề quá khớp trong mô
hình đề xuất, luận án đã thêm 3067 mẫu mã độc được thu thập từ VirusShare vào tập
kiểm thử và tính toán lại độ chính xác. Như kết quả thể hiện ở bảng 3.4, khi thêm các
mẫu mã độc từ VirusShare vào tập dữ liệu mẫu thì độ chính xác trong phát hiện mã độc
104
có giảm nhẹ (giảm 0,9%). Như vậy, từ các kết quả thực nghiệm, luận án thấy rằng
phương pháp đề xuất đạt kết quả khả quan trong phát hiện mã độc IoT botnet, đồng thời
giải quyết được vấn đề quá khớp trong khoảng giá trị chấp nhận được.
3.7. Kết luận Chương 3
Các thiết bị IoT tăng trưởng mạnh mẽ về số lượng trong tương lai. Do đó, việc
đảm bảo an toàn cho các thiết bị IoT, phòng chống mã độc IoT botnet là rất cấp thiết.
Trong Chương này, dựa trên việc phân tích, đánh giá các đặc trưng của mã độc IoT
botnet và nhằm giải quyết các hạn chế của các nghiên cứu trước trong phát hiện mã độc
IoT botnet dựa trên đặc trưng có cấu trúc đồ thị, luận án đã đề xuất một hướng tiếp cận
nhẹ (light) dựa trên đặc trưng mức cao, được gọi là đồ thị PSI nhằm phát hiện mã độc
IoT botnet. Phương pháp đề xuất khai phá vòng đời của mã độc IoT botnet để sinh đặc
trưng đồ thị PSI, áp dụng các ưu điểm của phương pháp học sâu để đạt độ chính xác tới
98,7% cũng độ quá khớp trong khoảng giá trị chấp nhận được với bài toán phát hiện mã
độc IoT botnet. Tuy nhiên, phương pháp đề xuất chỉ tập trung vào khai thác cấu trúc
tổng thể của đồ thị PSI, và vẫn có độ phức tạp chi phi thời gian khá lớn.
Phương pháp đề xuất đã thể hiện được tính khả thi cả về tính lý thuyết và thực
nghiệm. Ý tưởng và kết quả thực nghiệm của phương pháp đề xuất được trình bày, công
bố trên các Tạp chí, Kỷ yếu Hội thảo uy tín trong nước và quốc tế. Cụ thể là:
- "A novel graph-based approach for IoT botnet detection". International Journal
of Information Security, Vol. 19, pp. 567-577, 2020. (SCIE-index, Q2)
- "IoT Botnet Detection Approach Based on PSI graph and DGCNN classifier".
In IEEE International Conference on Information Communication and Signal
Processing (ICICSP), pp. 118-122, 2018. (SCOPUS Index)
- “Phát hiện mã độc IoT botnet”, Hội thảo quốc gia lần thứ III: Một số vấn đề
chọn lọc về an toàn an ninh thông tin, Đà Nẵng, 12/2018. (Kỷ yếu Hội thảo được xuất
bản trên Tạp chí Thông tin và Truyền thông, ISSN 1859-3550, trang 89-94, 2018)
105
CHƯƠNG 4. ĐẶC TRƯNG ĐỒ THỊ CON PSI CÓ GỐC TRONG PHÁT HIỆN
MÃ ĐỘC IOT BOTNET
4.1. Phát biểu bài toán
Phương pháp phát hiện mã độc IoT botnet dựa trên đặc trưng đồ thị PSI đã cho
thấy tính khả thi và đạt hiệu quả cao. Tuy nhiên, phương pháp đề xuất này tập trung vào
khai thác cấu trúc tổng thể của đồ thị PSI và không khai thác các đường đi trong đồ thị
PSI, nói cách khác phương pháp tập trung vào việc xét đồ thị PSI như một đồ thị đơn.
Thực tế là xu hướng phát triển của các tập tin thực thi mã độc botnet trên thiết bị IoT
ngày càng phức tạp, do đó cấu trúc đồ thi PSI cũng sẽ phức tạp theo. Trong khi đó, các
hành vi độc hại thường xuất hiện trong vòng đời mã độc IoT botnet có thể là các đường
đi trong đồ thị PSI, minh họa như ở hình 3.1 thì đó có thể là các đường đi màu xanh lá
hoặc màu đỏ, còn các đường đi khác là dữ liệu dư thừa. Dựa trên điều đó, bài toán nghiên
cứu của Chương này được phát biểu như sau:
Xây dựng một đặc trưng mới dựa trên đặc trưng đồ thị PSI, nhưng tập trung khai
phá các đường đi trong đồ thị PSI, từ đó xây dựng đặc trưng đồ thị mới, gọi là đồ thị
con PSI có gốc biểu diễn các hành vi độc hại của mã độc IoT botnet, nâng cao hiệu quả
phát hiện mã độc IoT botnet với các thuật toán học máy đơn giản.
Hình 4.1. Minh họa ý tưởng bài toán dùng đồ thị con PSI có gốc
106
4.2. Sơ đồ và ý tưởng phương pháp đề xuất
Để trả lời cho bài toán nghiên cứu đã đặt ra, phương pháp luận án đề xuất có sơ
đồ cấu trúc như sau:
Hình 4.2. Tổng quan phương pháp đề xuất sử dụng PSI-rooted subgraph trong phát
hiện mã độc IoT botnet
Với dữ liệu đầu vào là các tập tin thực thi trên thiết bị IoT, bao gồm cả các tập
tin mã độc và lành tính đã được mô tả chi tiết ở phần 2.2.3 của luận án này, thì quy trình
thực hiện gồm 4 bước như sau:
- Bước 1: Thực hiện phân tích các tập tin thực thi thành mã hợp ngữ với công cụ
hỗ trợ dịch ngược các tập tin đa kiến trúc IDA Pro, sau đó sinh đồ thị lời gọi hàm dựa
trên mã hợp ngữ đã thu được. Tiếp đó áp dụng phương pháp sinh đồ thị PSI đã trình bày
ở mục 2.3 của luận án này
107
- Bước 2: Như vậy với mỗi tập tin thực thi sẽ có một tập dữ liệu đồ thị PSI. Với
dữ liệu đồ thị PSI thu thập được, luận án tiến hành duyệt đồ thị PSI với từng đỉnh và với
độ sâu đồ thị nhất định để xây dựng đồ thị con PSI có gốc.
- Bước 3: Trước khi thực hiện tác vụ phân lớp, dữ liệu thô các đồ thị con PSI có
gốc sẽ được tiền xử lý để phù hợp nhất cho các bộ phân lớp học máy. Bước này gồm 3
trạng thái là trích xuất đặc trưng cho dữ liệu vector, chuẩn hóa và trích chọn đặc trưng.
- Bước 4: Cuối cùng, luận án sử dụng nhiều bộ phân lớp học máy với tập dữ liệu
vector trên, từ đó xác định tập tin thực thi đầu vào là thuộc lớp mã độc hoặc lành tính,
đồng thời lựa chọn được bộ phân lớp tốt nhất trong phát hiện mã độc IoT botnet.
Với các bước tổng quan trên, phần tiếp theo luận án sẽ trình bày chi tiết các bước
thực hiện và giải pháp kỹ thuật để xử lý nhằm đạt được mục đích nghiên cứu đã đặt ra.
4.3. Xây dựng đặc trưng đồ thị PSI-rooted subgraph
4.3.1. Khái niΜm
Trước khi thực hiện xây dựng đồ thị con PSI có gốc thì cần xây dựng đồ thị PSI.
Dữ liệu đồ thị PSI được sinh ra dựa trên việc kế thừa quá trình sinh đồ thị PSI đã được
trình bày ở phần 3.5 trong luận án này. Dưới đây là ví dụ một đồ thị PSI.
Hình 4.3. Một ví dụ đồ thị PSI
108
Như vậy, có thể thấy đồ thị con PSI có gốc được xây dựng dựa trên đồ thị PSI
nhưng bổ sung thêm thông tin về đỉnh gốc và độ sâu của đồ thị, một cách chính thức
định nghĩa đồ thị con PSI có gốc như sau:
Định nghĩa 4.1 (Đồ thị con PSI có gốc): Giả sử 𝐺𝑠𝑔=(𝑉,𝐸,𝜃,𝑑) biểu diễn một
đồ thị con PSI có gốc, có hướng và không có chu trình, đồ thị này được sinh ra từ đồ thị
𝐺𝑃𝑆𝐼 có gốc ở đỉnh ∅; trong đó 𝑉 ∈ 𝐺𝑃𝑆𝐼 là tập các đỉnh mà ở đó độ dài giữa (∅,𝑉𝑖) thỏa
mãn 0≤ (∅,𝑉𝑖)≤𝑑, và 𝐸 là tập các cạnh có hướng giữa các đỉnh trong 𝑉.
4.3.2 Thuͻt toán xây dχng PSI-rooted subraph
Sau khi đã xây dựng được đồ thị PSI, cũng như xác định được các đỉnh trong
PSI, luận án tiến hành duyệt đồ thị PSI với đỉnh gốc của các đồ thị con lần lượt là các
đỉnh trong đồ thị PSI, tiến trình thực hiện như trong thuật toán đề xuất 4.1.
Thuật toán 4.1: 𝐸𝑥𝑡𝑟𝑎𝑐𝑡𝑅𝑜𝑜𝑡𝑒𝑑𝑆𝑢𝑏𝑔𝑟𝑎𝑝ℎ(𝒢,𝐷)
𝐈𝐧𝐩𝐮𝐭 𝒢={𝐺1, 𝐺2,…,𝐺𝑛}: Tập hợp đồ thị PSI 𝐺𝑖=(𝑉𝑖,𝐸𝑖) biểu diễn cho các
tập tin ELF
𝐷: Bậc của đồ thị con PSI có gốc
Output 𝒮𝒢={𝑆𝐺1, 𝑆𝐺2,…,𝑆𝐺𝑛}: Tập hợp đồ thị con PSI có gốc 𝑆𝐺𝑖=(𝑉𝑖′,𝐸𝑖′,𝑣,𝐷) được trích xuất từ 𝒢
1 𝑰𝒏𝒊𝒕𝒊𝒂𝒍𝒊𝒛𝒂𝒕𝒊𝒐𝒏:𝒮𝒢=∅
2 𝒇𝒐𝒓 𝒆𝒂𝒄𝒉 𝐺𝑖∈𝒢 𝒅𝒐
3 𝒇𝒐𝒓 𝒆𝒂𝒄𝒉 𝑣∈𝑉𝑖 𝒅𝒐
4 𝒇𝒐𝒓 𝑑=0 𝑡𝑜 𝐷 𝒅𝒐
5
6
𝑆𝐺𝑖≔𝐺𝑒𝑡𝑊𝐿𝑆𝑢𝑏𝐺𝑟𝑎𝑝ℎ(𝑣,𝐺𝑖,𝑑) 𝒮𝒢≔𝒮𝒢∪𝑆𝐺𝑖
7 𝑟𝑒𝑡u𝑟𝑛 𝒮𝒢
Thuật toán 4.1 chọn lấy tất cả các hàng xóm của một đỉnh để trích xuất đồ thị con
(dò theo chiều rộng). Tiến trình trích xuất đồ thị con PSI có gốc dựa trên thuật toán tìm
kiếm theo chiều rộng (BFS – Breadth First Search) sẽ hiệu quả hơn thuật toán tìm kiếm
theo chiều sâu (Depth First Search). Lý do chính là BFS bắt đầu ở đỉnh gốc và khai thác
tất cả các đỉnh lân cận ở cùng độ sâu trước khi đi tới độ sau tiếp theo trong khi DFS khai
109
thác các nút có độ sâu nhất trước khi quay lui tìm kiếm. Với độ sâu cố định (hay gọi là
bậc) của một đồ thị con có gốc thì thuật toán BFS rõ ràng phù hợp hơn cho trích xuất
các đồ thị con có gốc.
Để lựa chọn được độ sâu đồ thị con phù hợp, luận án đã tiến hành thử nghiệm
với các độ sâu lần lượt là 𝐷 = 2, 𝐷 = 3 và 𝐷 = 4. Tuy nhiên, quá trình thử nghiệm thấy
rằng độ sâu 𝐷 = 2 cho kết quả không tốt bằng độ sâu 𝐷 = 3 và 𝐷 = 4 do với độ sâu 𝐷
= 2 thì sẽ bị mất nhiều thông tin khi không thể biểu diễn được nhiều hành vi của mã độc.
Tuy nhiên, với 𝐷 = 4 thì độ chính xác tương đồng với 𝐷 = 3 nhưng độ phức tạp khá lớn
khi không gian bộ nhớ cần để lưu trữ dữ liệu đồ thị con PSI cần khá lớn, đồng thời quá
trình vector hóa cũng tốn kém về không gian lưu trữ. Chính vì thế, cân đối giữa độ chính
xác và độ phức tạp, luận án lựa chọn độ sâu 𝐷 = 3 để xử lý đồ thị con PSI.
Hình 4.4. Kết quả thử nghiệm với các độ sâu khác nhau khi duyệt đồ thị con PSI
Trong đó, thuật toán 4.1 thực hiện lấy đỉnh gốc 𝑣, đồ thị 𝐺𝑖 và 𝑑 - bậc của đồ thị
con như các giá trị đầu vào và trả về kết quả là đồ thị con 𝑆𝐺𝑖, như tại dòng lệnh 5, quá
trình thực hiện được xử lý với hàm GetWLSubGraph. Hàm GetWLSubGraph tại thuật
toán 4.2, được luận án kế thừa từ nghiên cứu của Annamalai Narayanan và cộng sự [89],
được mô tả như sau: khởi tạo ban đầu tập đồ thị con PSI có gốc là rỗng; khi 𝑑 = 0 tức là
93,5
94
94,5
95
95,5
96
96,5
97
97,5
98
DT RF SVM Bagging kNN
Độ chính xác (%)
Các bộ phân lớp học máy
d=2 d=3 d=4
110
không có đồ thị con nào được trích xuất và do đó chỉ xét duy nhất đỉnh gốc vì thế đồ thị
con duy nhất là đỉnh gốc, như tại dòng lệnh 3; ngược lại với mỗi trường hợp 𝑑 > 0, luận
án thực hiện duyệt theo chiều rộng và lấy tất cả các đỉnh lân cận của 𝑣 và lưu trong 𝑁𝑣,
như tại dòng lệnh 5; tiếp đó với mỗi đỉnh láng giềng, 𝑣′, luận án thu được đồ thị con bậc
(𝑑−1) của 𝑣′, và lưu cùng trong danh sách 𝑀𝑣(𝑑)
, như tại dòng lệnh 6. Cuối cùng, luận
án thu đồ thị con bậc (𝑑−1) quanh đỉnh gốc 𝑣 và kết nối với cùng danh sách đã sắp
xếp trong 𝑀𝑣(𝑑)
để thu được các đồ thị con PSI có gốc cần thiết, như tại dòng lệnh 7.
Thuật toán 4.2: GetWLSubGraph (𝑣, 𝐺, 𝑑)
Input:
𝑣: Đỉnh là gốc của đồ thị con PSI
𝐺=(𝑉,𝐸) : Đồ thị PSI được sử dụng để trích xuất các đồ thị con
𝑑: Bậc của các đỉnh lân cận được xem xét để trích xuất đồ thị con PSI
Output: 𝑠𝑔𝑣(𝑑)
: Đồ thị con có gốc với bậc 𝑑 quanh đỉnh 𝑣
1 𝑠𝑔𝑣(𝑑)=∅ //khởi tạo tập đồ thị con có gốc là rỗng
2 If 𝑑=0 then
3 𝑠𝑔𝑣(𝑑)≔ (𝑣)
4 else
5 𝑁𝑣≔{𝑣′|(𝑣,𝑣′)∈𝐸}
6 𝑀𝑣(𝑑)≔{𝐺𝐸𝑇𝑊𝐿𝑆𝑈𝐵𝐺𝑅𝐴𝑃𝐻(𝑣′,𝐺,𝑑−1)| 𝑣′∈𝑁𝑣
7 𝑠𝑔𝑣
(𝑑)≔ 𝑠𝑔𝑣(𝑑) ∪𝐺𝐸𝑇𝑊𝐿𝑆𝑈𝐵𝐺𝑅𝐴𝑃𝐻
(𝑣,𝐺,𝑑−1) ⊕𝑠𝑜𝑟𝑡(𝑀𝑣(𝑑))
8 Return 𝑠𝑔𝑣(𝑑)
Sau khi áp dụng thuật toán 4 vào tập dữ liệu đồ thị PSI, luận án thu được tập dữ
liệu đồ thị con PSI có gốc. Với mỗi tập tin đồ thị PSI, luận án thu được một tập tin đồ
thị con PSI có gốc trong đó mỗi câu là một đồ thị con PSI có gốc, mà gốc đó là đỉnh
trong đồ thị PSI ban đầu. Để minh họa cho quá trình xây dựng đồ thị con PSI có gốc,
luận án duyệt đồ thị PSI (trong hình 4.3) để tìm một ví dụ đồ thị con có gốc ở đỉnh 11
với độ sâu d bằng 2, kết quả được hiển thị trong bảng 4.1 và hình 4.5.
111
Bảng 4.1. Một ví dụ sinh đồ thị con PSI có gốc với độ sâu bằng 2
Bậc (độ sâu) Các đỉnh
d=0 11
d=1 0, 8, 10, 7, 9
d=2 18, 0, 0, 7, 0, 5, 6, 15, 16
Quá trình duyệt được mô tả như sau: tại d = 0 thì chỉ có duy nhất đỉnh 11; tiếp đó
tại d = 1 thì sẽ lấy từng đỉnh tại d = 0 để duyệt, khi đó kết quả sẽ có các đỉnh liên kết với
đỉnh 11 là {0,8,10,7,9}; tương tự tại d = 2 thì lấy từng đỉnh tại d = 1 để duyệt, như đỉnh
{0} thì liên kết với đỉnh {18}, đỉnh {8} liên kết với đỉnh {0}, … Cứ tiếp tục cho đến khi
duyệt hết các đỉnh tại d = 1 thì sẽ có danh sách các đỉnh ở d = 2. Kết quả đồ thị con PSI
có gốc ở đỉnh 11 là một danh sách {11, 0, 8, 10, 7, 9, 18, 0, 0, 7, 0, 5, 6, 15, 16}.
Hình 4.5. Một minh họa đồ thị con PSI có gốc ở đỉnh 11.
Tiếp tục quá trình duyệt toàn bộ đồ thị PSI với các gốc là các đỉnh khác trong đồ
thị, khi đó sẽ thu được danh sách các đồ thị con PSI có gốc, như vậy sẽ thấy dữ liệu thu
được có dạng như một rừng có nhiều cây (bởi quá trình duyệt sinh đồ thị con đã bỏ đi
các chu trình nên đồ thị con sẽ có cấu trúc giống một cây). Sau đó, cần xác định tập đồ
thị con PSI có gốc, mà những đồ thị con đó có chứa hành vi trong vòng đời của mã độc
IoT botnet. Thêm vào đó, để minh họa tập dữ liệu đồ thị con PSI có gốc thử nghiệm
trong không gian 3 chiều, nhưng số chiều của không gian đặc trưng lớn làm gia tăng
nhiễu nên luận án thực hiện giảm chiều bằng cách áp dụng kỹ thuật cắt tỉa giá trị đơn
SVD (Truncated Singular Value Decomposition) ba chiều cho toàn bộ dữ liệu, phương
112
pháp này được biết đến như phân tích ngữ nghĩa tiềm ẩn (Laten Semantic Analysis -
LSA). Mặc dù việc giảm chiều sẽ mất một vài thông tin và kết quả minh họa trong chiều
không gian thấp không thể bộc lộ hết các thông tin ở chiều không gian cao, nhưng điều
này vẫn đem đến những thông tin có giá trị về sự phân bố.
Hình 4.6. Biểu đồ phân tán mô tả phân bố các điểm dữ liệu của đồ thị con PSI có gốc
trong tập dữ liệu sau khi giảm chiều LSA 3-D
Hình 4.6 cho thấy sự phân bố dữ liệu đồ thị con PSI có gốc của mã độc IoT và
lành tính khá gần nhau và có những vùng chồng lấn lên nhau, điều này gây khó khăn
cho các bộ phân loại học máy phát hiện chính xác mã độc. Do đó, luận án thấy rằng khó
có thể sử dụng một giá trị ngưỡng để phân loại nên cần một đặc trưng hoặc mô hình
phân lớp đủ mạnh để phân lớp các thể hiện thành 2 lớp: mã độc hoặc lành tính.
4.4. Thực nghiệm và đánh giá kết quả
4.4.1. M¹i trγng thχc nghiΜm
Sử dụng tập dữ liệu đã được trình bày ở mục 2.2.3 của luận án này, để tiến hành
các thực nghiệm, luận án chia tập dữ liệu thử nghiệm thành 2 tập con là: tập huấn luyện
và tập kiểm thử. Trong đó sử dụng 70% tập dữ liệu để thực hiện huấn luyện và 30% còn
lại để thực hiện kiểm thử. Để giảm thiểu khả năng xảy ra hiện tượng quá khớp trong quá
trình thử nghiệm, luận án sử dụng đánh giá chéo (cross-validation) k-fold. Đây là kỹ
thuật phân đoạn tập dữ liệu huấn luyện thành k nhóm không giao nhau và có kích thước
bằng nhau, quá trình học của máy có k lần. Trong mỗi lần sẽ huấn luyện bộ phân lớp
113
trên (k-1) nhóm đầu tiên của dữ liệu huấn luyện, sau đó kiểm thử bộ phân lớp trên nhóm
thứ k. Sau đó, độ chính xác được tính toán và k nhóm dữ liệu sẽ được thay đổi sao cho
mỗi tập con đều sẽ được kiểm thử một lần. Ngay khi k phép tính toán được thực hiện,
mỗi độ chính xác sẽ được đưa ra để tính trung bình để tạo độ chính xác chéo giữa k
nhóm. Tiến trình thực hiện k kiểm thử trên tập dữ liệu đầu vào sẽ giúp phản ánh chính
xác hơn hiệu năng tiềm tàng của dữ liệu trong thực tế, chứ không chỉ đơn là một bộ phân
lớp may mắn lựa chọn đúng các mẫu để huấn luyện. Trong luận án sử dụng giá trị k
bằng 5, tức là trong bộ dữ liệu huấn luyện sẽ được chia làm năm phần, trong đó bốn
phần dùng để huấn luyện và một phần dùng để đánh giá nhằm tìm được các tham số phù
hợp nhất cho mô hình huấn luyện.
Hình 4.7. Minh họa kỹ thuật đánh giá chéo k-fold
Thực nghiệm được xây dựng với ngôn ngữ Python và bộ framework PyTorch
trên hệ điều hành Ubuntu 16.04 sử dụng chip Intel Core i5-8500, 3.0GHz, thẻ đồ họa
NVIDIA GeForce GTX1080Ti và bộ nhớ RAM 32 GB.
4.4.2. M¹ h³nh Ľ§nh gi§
Để đánh giá tính hiệu quả của đặc trưng đồ thị con PSI có gốc trong bài toán phát
hiện mã độc IoT botnet, luận án tiến hành đưa các đặc trưng đồ thị con PSI có gốc vào
mô hình đánh giá, các bước trong mô hình dưới đây tương ứng với bước 3 và bước 4
như hình 4.2 của luận án này.
114
Hình 4.8. Mô hình đánh giá đặc trưng đồ thị con PSI có gốc trong phát hiện mã độc
IoT botnet
Dữ liệu đầu vào là dữ liệu đồ thị con PSI có gốc, thu được từ quá trình xử lý đồ
thị PSI. Trước khi đưa dữ liệu này vào các bước thực thi thì luận án tiến hành xử lý đồ
thị con PSI có gốc dựa trên kỹ thuật nhúng các từ (word embedding). Như đã biết, kỹ
thuật nhúng các từ có hai cách tiếp cận khác nhau là dựa trên tần số (frequency-based)
xuất hiện của các từ trong văn bản và dựa trên dự đoán (prediction-based) của mô hình
huấn luyện để biểu diễn các từ [11].
- Dựa trên tần suất (frequency-based) hay còn gọi là dựa trên đếm (count-based):
Tính toán tần suất một số từ cùng xuất hiện với các từ hàng xóm của nó trong một kho
văn bản (corpus) và sau đó ánh xạ các số liệu thống kê đã đếm được thành một vector
cho mỗi từ
- Dựa trên dự đoán (prediction-based): cố gắng dự đoán một từ được đưa ra cho
các hàng xóm
Cách tiếp cận “prediction-based” có 2 phương pháp tiếp cận phổ biến: Continuos
Bag of Words (CBOW), Skip-gram đã trình bày chi tiết ở mục 1.2.2 của luận án này.
Để phù hợp với cách tiếp cận của luận án, luận án sử dụng cách xử lý dựa trên tần số
xuất hiện, cụ thể là xét mỗi đồ thị PSI như một văn bản và các đồ thị con PSI có gốc như
một từ trong văn bản đó. Thực hiện đếm sự xuất hiện các từ trong mỗi văn bản, khi đó
tần số xuất hiện của mỗi đồ thị con có gốc được xem như một đặc trưng. Như vậy có thể
thấy vector đại diện của một tập tin thực thi chính là tần số xuất hiện của đồ thị con PSI
có gốc trong đồ thị PSI tương ứng của tập tin thực thi đó. Vector này được xem là một
115
mẫu đa biến số và dữ liệu này có thể được biểu diễn ở dạng ma trận với hàng (biểu diễn
đồ thị) và cột (biểu diễn đồ thị con có gốc xuất hiện trong tập dữ liệu đồ thị). Luận án
thấy rằng ma trận thu được có các đặc trưng với nhiều khoảng giá trị khác nhau nên cần
chuẩn hóa để đảm bảo kết quả phân loại, quá trình chuẩn hóa theo công thức (4.1), ở đó
tử số là giá trị vector đại diện cho một mẫu trong tập dữ liệu đồ thị con PSI có gốc, còn
mẫu số là độ dài vector đó (ở đây là một số thực) tính bằng khoảng cách Euclid.
𝑥𝑛𝑜𝑟𝑚𝑎𝑙𝑖𝑧𝑒𝑑= 𝑥
∥𝑥∥2 (4.1)
Sau khi chuẩn hóa dữ liệu thấy rằng tập dữ liệu đặc trưng khá lớn vì thế cần lựa
chọn đặc trưng bởi nếu đưa toàn bộ tập dữ liệu vào có thể dẫn đến tăng độ phức tạp của
mô hình và khó diễn giải, tăng độ phức tạp thời gian xử lý hệ thống cũng như kết quả
có thể không đảm bảo chính xác. Luận án tiếp cận kỹ thuật lựa chọn đặc trưng theo
phương pháp Wrapper, tức là đánh giá dựa trên một thuật toán học máy cụ thể để tìm
các đặc trưng tối ưu, thuật toán mà luận án sử dụng là SVM tuyến tính (SVM linear) vì
SVM tuyến tính hiệu quả tốt trong việc xây dựng một đường phân chia các lớp để chọn
các đặc trưng có tầm ảnh hưởng, thứ hai SVM tuyến tính có khả năng tính được độ quan
trọng của đặc trưng và thứ ba là SVM tuyến tính tương đối nhanh.
Với dữ liệu đặc trưng thu được, luận án lựa không sử dụng các thuật toán học
máy phức tạp mà chọn một số thuật toán học máy phổ biến trong bài toán phát hiện mã
độc như SVM, Decision Tree, Random Forest, cùng với nhưng thuật toán học máy đơn
giản, ít được sử dụng như Bagging và kNN, để chứng tỏ tính mạnh mẽ và hiệu quả của
đặc trưng đồ thị con PSI có gốc trong bài toán phát hiện mã độc IoT botnet.
Hình 4.9. Các bộ phân lớp học máy phổ biến trong phát hiện mã độc [99]
116
4.4.3. Các kΔt qu thχc nghiΜm và th o luͻn
Nhằm đánh giá tính hiệu quả của đặc trưng đồ thị con PSI có gốc trong phát hiện
mã độc IoT botnet, luận án đã thực nghiệm và đưa ra các bảng kết quả 4.2, 4.3 và 4.4.
Trong đó, bảng kết quả 4.2 được thực hiện trên toàn bộ tập dữ liệu, còn hai bảng kết quả
4.3 và 4.4 chỉ thực hiện với các tập tin có kiến trúc ARM và MIPS theo thứ tự.
Bảng 4.2. Kết quả của các bộ phân loại với đặc trưng đề xuất
Classifier TPR
(%)
FPR
Accuracy
(%)
AUC
(%)
F1-score
(%)
DT 97 0.043 96.3 96.4 97
RF 98 0.03 97.2 97.1 98
SVM 98 0.041 97 96.8 98
Bagging 98 0.04 97.3 97.1 98
kNN 97 0.044 96.8 96.7 98
Hình 4.10. Đường cong ROC của Bagging, RF, DT, kNN và SVM trên tập dữ liệu
117
Bảng 4.3. Kết quả đánh giá phát hiện mã độc với tập dữ liệu kiến trúc ARM
Classifier TPR
(%)
FPR
Accuracy
(%)
AUC
(%)
F1-score
(%)
DT 99 0.019 98.3 98.3 98
RF 99 0.01 98.8 98.8 99
SVM 100 0.01 99.3 99.3 99
Bagging 99 0.01 98.8 98.8 99
kNN 98 0.019 97.8 97.8 98
Hình 4.11. Đường cong ROC của Bagging, RF, DT, kNN và SVM trên tập dữ liệu
kiến trúc ARM
118
Bảng 4.4. Kết quả đánh giá phát hiện mã độc với tập dữ liệu dựa kiến trúc MIPS
Classifier TPR
(%)
FPR
Accuracy
(%)
AUC
(%)
F1-score
(%)
DT 98 0.007 99 98.7 98
RF 99 0.005 99.3 99.1 98
SVM 100 0.007 99.4 99.6 99
Bagging 96 0.011 98.3 97.6 96
kNN 99 0.004 99.4 99.2 99
Hình 4.12. Kết quả đường cong ROC của Bagging, RF, DT, kNN và SVM trên tập dữ
liệu kiến trúc MIPS
Qua các kết quả trên có thể thấy rằng phương pháp đề xuất có tỷ lệ phát hiện cao
đối với mỗi bộ phân lớp sử dụng bộ cơ sở dữ liệu kết hợp từ các tập tin đa kiến trúc như
trong bảng 4.2. Random Forest đã được chứng minh có kết quả cao hơn so với những
bộ phân lớp khác với TPR đạt 98% và các độ đo khác có kết quả khá khả quan. Hơn
nữa, AUC của các bộ phân lớp được sử dụng trong các thực nghiệm trên cho thấy các
kết quả đều lớn hơn 96%. Giá trị AUC đồng nghĩa với việc hệ thống phát hiện mã độc
119
IoT botnet đem lại kết quả tốt, ở đó bộ phân lớp Random Forest là tốt nhất như thể hiện
trong hình 4.10, 4.11 và 4.12.
Bên cạnh đó, luận án cũng thực hiện các độ đo với 2 tập dữ liệu chỉ dựa trên kiến
trúc ARM và kiến trúc MIPS, kết quả thể hiện trong bảng 4.3 và 4.4. Bởi vì mỗi tập dữ
liệu chỉ chứa các tập tin kiến trúc ARM hoặc MIPS nên bộ phân lớp SVM có kết quả
cao hơn những bộ phân lớp khác. SVM đạt tỷ lệ dương tính đúng ở mức 100% ở cả hai
tập dữ liệu. Như đã đề cập ở phía trước, độ đo precision là tỷ lệ các thể hiện được định
danh chính xác từ tất cả các dữ liệu. Nói cách khác, độ đo precision cho biết khả năng
một bộ phân lớp trong dự đoán các thể hiện mã độc. Trong khi đó, độ đo F-score được
tính toán từ Precision, do đó, bộ phân lớp RF và SVM đã đạt độ đo F-score lớn hơn
98%, nghĩa là các bộ phân lớp này dự đoán các thể hiện mã độc khả quan.
Kết quả thực nghiệm được hiển thị trong bảng 4.5, có thể thấy rằng thời gian xử
lý khi sử dụng trích chọn đặc trưng và không trích chọn đặc trưng có sự khác biệt lớn.
Khi sử dụng toàn bộ 530,155 đặc trưng thì thời gian xử lý là 9305,2 giây; trong khi đó
với việc lựa chọn đặc trưng thì thời gian xử lý giảm xuống còn 69,18 giây đối với bộ
phân lớp RF. Tuy nhiên, các bộ phân lớp khác cũng cho thấy thời gian xử lý giảm khi
sử dụng lựa chọn đặc trưng. Do đó, thời gian xử lý của các bộ phân lớp tỷ lệ thuận với
kích thước dữ liệu đặc trưng.
Bảng 4.5. So sánh thời gian xử lý
Classifier Processing Time (second)
Processing time with feature selection
DT 1.84
RF 69.18
Bagging 144.64
kNN 12.83
SVM 237.78
Processing time without feature selection
DT 18.49
120
Classifier Processing Time (second)
RF 9305.21
Bagging 5225.02
kNN 19.60
SVM 1705.33
Bên cạnh đó, luận án cũng so sánh phương pháp đề xuất với phương pháp của
HaddadPajouh và cộng sự [14] khi sử dụng các chuỗi Opcode là đặc trưng. Có 2 lý do
chính để luận án lựa chọn để so sánh là: thứ nhất là, sử dụng hướng tiếp cận đặc trưng
tĩnh với các tập tin thực thi IoT; thứ hai là, đánh giá thực nghiệm sử dụng học máy.
Bảng 4.6. So sánh độ chính xác của các bộ phân lớp học máy truyền thống trong phát
hiện IoT botnet
Classifier Accuracy (%)
Proposed method HaddadPajouh et al. [14]
Random Forest 98.8 92.37
SVM 99.3 82.21
kNN 97.8 94
Decision Tree 97.8 92.36
Phương pháp của Hamed và cộng sự thực nghiệm trên tập dữ liệu gồm các mẫu
là các tập tin thực thi IoT chỉ có kiến trúc ARM. Do đó, luận án sử dụng kết quả thực
nghiệm trên tập dữ liệu ARM, như trình bày ở bảng 4.3. Kết quả cho thấy, phương pháp
đề xuất của luận án vượt trội hơn hẳn. Do đó, đặc trưng đồ thị con PSI có gốc có tính
hiệu quả trong việc phát hiện mã độc IoT botnet khi sử dụng học máy.
Cuối cùng, đánh giá độ phức tạp so với phương pháp sử dụng đặc trưng đồ thị
PSI thấy rằng cách tiếp cận dựa trên đặc trưng đồ thị con PSI có gốc có độ phức tạp thấp
hơn. Trước hết xét độ phức tạp của phương pháp dựa trên đặc trưng đồ thị PSI thấy rằng
quá trình xử lý đồ thị PSI dựa trên graph2vec, mà trong đó chủ yếu là kỹ thuật học sâu
skipgram. Xét mô hình mạng skipgram trong xử lý dữ liệu với kỹ thuật nhúng như hình
4.13. Độ phức tạp của skipgram phụ thuộc vào tích của số epoch, số iteration (là số lan
truyền ngược thực hiện để cập nhật trọng số) và độ phức tạp trong một iteration.
121
Hình 4.13. Cấu trúc mô hình Skipgram với trường hợp từ trung tâm là “passes” [114]
Xem thuật toán xử lý của graph2vec tại thuật toán 3.3 trong luận án này và quá
trình xử lý chi tiết được luận án kề thừa từ nghiên cứu của Annamalai Narayanan và
cộng sự [40], thấy rằng:
- Trong một iteration: độ phức tạp phụ thuộc vào số phép tính được thực hiện,
quan sát mô hình mạng ở hình 4.13 có thể thấy độ phức tạp phụ thuộc vào bước tính lớp
ẩn và 𝑦𝑝𝑟𝑒𝑑 và cập nhật các trọng số 𝑊𝑖𝑛𝑝𝑢𝑡, 𝑊𝑜𝑢𝑡𝑝𝑢𝑡
+ Tính lớp ẩn và trọng số 𝑊𝑖𝑛𝑝𝑢𝑡 chỉ phụ thuộc vào hàng thứ V của trọng số
𝑊𝑖𝑛𝑝𝑢𝑡 nên độ phức tạp sẽ là 𝑂(𝑁)
+ Tính 𝑦𝑝𝑟𝑒𝑑 phụ thuộc vào phép nhân ma trận 𝑊𝑜𝑢𝑡𝑝𝑢𝑡 𝑇 (có độ phức tạp là 𝑂(𝑁∗
(𝐾+1) vì kỹ thuật negative sampling chỉ cập nhật (𝐾+1) cột của 𝑊𝑜𝑢𝑡𝑝𝑢𝑡 𝑇 ) và tính
softmax (có độ phức tạp là 𝑂(𝑉)). Như vậy, độ phức tạp bằng max(𝑁∗(𝐾+1),𝑉),
tức là 𝑂(𝑁∗(𝐾+1))
+ Cập nhật 𝑊𝑜𝑢𝑡𝑝𝑢𝑡 𝑇 cũng chỉ cập nhật K+1 cột của 𝑊𝑜𝑢𝑡𝑝𝑢𝑡
𝑇 nên độ phức tạp là
𝑂(𝑁∗(𝐾+1))
Suy ra độ phức tạp một interation phụ thuộc max (𝑁,𝑁∗(𝐾+1)), tức là 𝑂(𝑁∗
(𝐾+1))
- Số iteration do graph2vec sử dụng kỹ thuật SGD (Stochastic gradient descent)
nên sẽ phụ thuộc vào số mẫu cần huấn luyến, vì thế S = {graph_id, <sampled_word>)},
122
trong đó sampled_word được lấy ngẫu nhiên từ một cửa sổ trong đồ thị đó. Trong nghiên
cứu này, luận án có tập từ vựng đồ thị con có gốc khá lớn (khoảng 500.000), vì thế kích
thước |S| có thể đạt tới hàng triệu bậc hoặc thậm chí lớn hơn. Tiến trình này diễn ra nhiều
lần để cập nhật lại trọng số. Mỗi lần chạy sẽ có độ phức tạp là 𝑂(𝑁∗(𝐾+1)∗|𝑆|).
- Số epoch: là giá trị siêu tham số được thiết lập
Như vậy độ phức tạp của phương pháp luận án đề xuất dựa trên đặc trưng đồ thị
PSI là 𝑒∗|𝐺|∗|𝑉|∗max (𝑘𝐷,𝐷∗|𝑆|∗𝑁∗(𝐾+1)), tức là 𝑂(𝑒∗|𝐺|∗|𝑉|∗ 𝐷∗|𝑆|∗
𝑁∗(𝐾+1)
Trong khi đó, xét độ phức tạp sinh đặc trưng đồ thị PSI rooted-subgraph tại thuật
toán 4.1 và 4.2 thì trong trường hợp xấu nhất sẽ phải duyệt hết tất cả các các đỉnh hàng
xóm của một đỉnh trong đồ thị PSI. Cụ thể, tại dòng lệnh thứ 4 của thuật toán 4.1 có thể
thấy độ phức tạp sẽ là 𝑂(𝑘𝐷), trong đó D là bậc của đồ thị con PSI và 𝑘 là số lượng hàng
xóm tối đa của đỉnh gốc trong đồ thị con PSI (bởi đây là một thuật toán vét cạn, sẽ xét
tất cả các đỉnh kề đỉnh gốc cho đến khi đạt được cây có độ sâu D). Bên cạnh đó cần xét
đến độ phức tạp của quá trình xử lý dữ liệu đồ thị con PSI có gốc tại bước vector hóa,
với đầu ra sau khi thực hiện vector hóa là ma trận thưa nên độ phức tạp chỉ phụ thuộc
vào kích thước đầu vào, cụ thể là (|𝐺|∗𝑅), trong đó G là tập đồ thị PSI và R là số lượng
đồ thị con PSI có gốc lớn nhất trong toàn bộ các đồ thị. Như vậy, độ phức tạp của phương
pháp đề xuất đặc trưng đồ thị con PSI có gốc bằng 𝑚𝑎𝑥(|𝐺|∗|𝑉|∗|𝐷|∗𝑘𝐷),|𝐺|∗𝑅),
tức là 𝑂(|𝐺|∗|𝑉|∗|𝐷|∗𝑘𝐷). So sánh với độ phức tạp trên thì thấy rằng độ phức tạp
của phương pháp dựa trên đặc trưng đồ thị con PSI có gốc đơn giản hơn so với phương
pháp dựa trên đặc trưng đồ thị PSI, nhưng vẫn đảm bảo tính hiệu quả cao trong bài toán
phát hiện mã độc IoT botnet.
4.5. Kết luận Chương 4
Luận án đã trình bày một phương pháp mới dựa trên đồ thị con PSI có gốc trong
phát hiện mã độc IoT botnet, phương pháp này trích xuất các đặc trưng mới từ đồ thị
PSI của các tập tin ELF. Những đặc trưng này được áp dụng vào các bộ phân loại trong
học máy như một bộ phát hiện mã độc. Tóm lại, đóng góp chính của luận án trong
chương này là: (1) đề xuất một đặc trưng mới bậc cao có cấu trúc đồ thị con PSI có gốc
trong phát hiện mã độc IoT botnet; (2) sinh ra một số lượng hạn chế các đặc trưng mô
123
tả các hành vi độc hại của mã độc, yêu cầu ít không gian lưu trữ và giảm thiểu thời gian
xử lý; (3) các kết quả đánh giá đã chứng minh tính hiệu quả của các đặc trưng đồ thị con
PSI có gốc phù hợp với nhiều bộ phân lớp học máy, đều đạt độ chính xác trên 97% và
bộ phân lớp Random Forest đã được chứng minh là có kết quả tốt hơn những bộ phân
lớp khác. Thêm vào đó, khi so sánh với những phương pháp đã có, kết quả thực nghiệm
cũng cho thấy phương pháp đề xuất của luận án hiệu quả hơn.
Tuy nhiên, kỹ thuật sử dụng để trích xuất đồ thị con có gốc PSI có một vài hạn
chế chung của phân tích tĩnh như không thể phân tích các tập tin có cấu trúc phức tạp
hoặc sử dụng các kỹ thuật gây rối phức tạp mà IDA Pro không thể phát hiện, xử lý. Hơn
nữa, các hành vi của mã độc IoT botnet thường bắt đầu sau một điều kiện kích hoạt cụ
thể. Do đó, trong nghiên cứu tương lai, luận án sẽ kết hợp với phương pháp phân tích
động để xác định các điểm kích hoạt hành vi độc hại hoặc xác định các đỉnh trong đồ
thị PSI sẽ là điểm bắt đầu để duyệt đồ thị con PSI có gốc, nhằm tránh phải vét cạn toàn
bộ đồ thị PSI.
Phương pháp đề xuất đã thể hiện được tính khả thi cả về tính lý thuyết và thực
nghiệm. Ý tưởng và kết quả thực nghiệm của phương pháp đề xuất được trình bày, công
bố trên các Tạp chí, Kỷ yếu Hội thảo uy tín trong nước và quốc tế. Cụ thể là:
- "PSI-rooted subgraph: A novel feature for IoT botnet detection using classifier
algorithms", ICT Express Journal, 6(2), pp. 128-138, 2020. (ESCI/SCOPUS-index, Q2)
- "Towards a rooted subgraph classifier for IoT botnet detection", In Proceedings
of the 7th International Conference on Computer and Communications Management,
pp. 247-251. 2019. (SCOPUS index)
124
KẾT LUẬN VÀ KIẾN NGHỊ
Kỷ nguyên 4.0 hay còn gọi là cuộc cách mạng công nghệ lần thứ 4, có thể được
hiểu như là sự phát triển vượt bậc của một loạt các công nghệ mới giúp làm mờ đi ranh
giới giữa con người và kỹ thuật. Đồng thời cũng ảnh hưởng lớn kinh tế, xã hội, giáo dục
và cả chính trị. Các lĩnh vực chính đang được quan tâm trong cuộc cách mạng 4.0 có thể
kể đến như trí thông minh nhân tạo (AI), công nghệ nano, công nghệ sinh học, dữ liệu
lớn và đặc biệt là Internet vạn vật (IoT) giúp mọi vật có khả năng kết nối và trao đổi dữ
liệu thuận tiện hơn, giúp người dùng có nhiều trải nghiệm trong cuộc sống hơn. Bên
cạnh các thuận lợi đó, vấn đề đảm bảo an toàn, an ninh thông tin cho các thiết bị IoT,
đặc biệt là phát hiện mã độc đang rất cấp thiết trong thời buổi hiện nay. Chính vì thế,
luận án này tập trung tìm hiểu các đặc trưng khác biệt của IoT so với các công nghệ
truyền thống, mã độc IoT botnet so với các mã độc botnet trên các thiết bị điện tử truyền
thống, từ đó có cơ sở trong nghiên cứu chuyên sâu các giải pháp phát hiện mã độc IoT
botnet một cách hiệu quả.
Nội dung của luận án đã tập trung nghiên cứu phương pháp phát hiện mã độc IoT
botnet. Qua quá trình học tập, nghiên cứu thực hiện luận án, các kết quả chính đạt được
như sau:
Đóng góp 1: Thực nghiệm, phân tích và đánh giá các phương pháp phát hiện mã
độc IoT botnet hiện nay với cùng bộ cơ sở dữ liệu lớn các tập tin thực thi trên IoT (gồm
mã độc và lành tính), trong đó bao gồm các mẫu mã độc IoT botnet thực tế, quá trình
thực nghiệm các phương pháp đó thực hiện trên cùng một cấu hình hệ thống. Kết quả
đạt được góp phần đem lại một đánh giá tổng quan về các phương pháp dựa trên phân
tích tĩnh trong phát hiện mã độc IoT hiện nay, từ đó, các nhà nghiên cứu có thể lựa chọn
hướng tiếp cận phù hợp cho bài toán phát hiện mã độc IoT nói chung và IoT botnet nói
riêng.
Đóng góp 2: Luận án đề xuất được một đặc trưng mới, gọi là đồ thị PSI (Printable
String Information) có thể mô phỏng quá trình lây nhiễm của mã độc IoT botnet. Phương
pháp đề xuất có độ phức tạp thấp nhưng vẫn đảm bảo độ chính xác cao trong phát hiện
mã độc IoT botnet.
125
Đóng góp 3: Luận án đề xuất cải tiến phương pháp phát hiện mã độc IoT botnet
dựa trên đồ thị PSI bằng đặc trưng mới, gọi là đồ thị con có gốc PSI (PSI-rooted
subgraph), có thể đạt hiệu quả cao với các bộ phân lớp học máy đơn giản.
Phương pháp đề xuất của luận án có tính thực tiễn khi có thể triển khai mô hình
ứng dụng như hình (i), trong đó dữ liệu đầu vào là các tập tin thực thi trên các thiết bị
IoT có thể được thu thập thông qua các mạng bẫy IoT (honeypot) hoặc thông qua việc
chặn bắt các luồng mạng từ các thiết bị IoT, sau đó phân tích và trích xuất các tập tin
thực thi từ luồng mạng đó. Sau khi có được các tập tin thực thi trên thiết bị IoT, dữ liệu
sẽ được đưa vào mô hình đề xuất của luận án, từ đó kết quả đầu ra sẽ xác định tập tin
mã độc, tập tin lành tính.
Hình (i). Mô hình ứng dụng thực tế của phương pháp phát hiện IoT botnet sử dụng
đặc trưng đồ thị PSI
Tuy nhiên, theo xu hướng phát triển của công nghệ IoT, mã độc IoT botnet sẽ
được tiếp tục xây dựng và lây lan rộng rãi trong thời gian tới. Hiện nay, các nhà nghiên
cứu trong nước cũng như thế giới rất quan tâm nghiên cứu vấn đề bảo mật cho thiết bị
126
IoT, đặc biệt phát hiện mã độc IoT. Mặc dù đã đạt được một số kết quả quan trọng, góp
phần vào lý luận khoa học và có ý nghĩa thực tiễn trong phát hiện mã độc IoT botnet
nhưng luận án vẫn còn một số vấn đề cần tiếp tục nghiên cứu, cải tiến sau đây:
1. Phương pháp đề xuất của luận án hiện đang thử nghiệm với mã độc IoT botnet,
trong khi đó còn những loại mã độc IoT khác như Trojan, Worm, Ransomware. Trong
tương lai, cần tiếp tục thử nghiệm phương pháp đề xuất của luận án với nhiều loại mã
độc IoT khác.
2. Quá trình trích xuất các đặc trưng động là phức tạp và tốn kém thời gian nhưng
có khả năng giải quyết hạn chế của phân tích tĩnh. Do đó, nghiên cứu tương lai của luận
án đó là kết hợp giữa phân tích tĩnh và phân tích động cải tiến khai phá đặc trưng đồ thị
PSI trong phát hiện mã độc IoT.
3. Quá trình duyệt đồ thị con PSI có gốc vẫn còn phức tạp, nghiên cứu tương lai
có thể tiếp cận hướng khai phá thuật toán học tăng cường (Reinforcement Learning) để
tăng khả năng xác định các hành vi độc hại của mã độc IoT botnet, từ đó việc duyệt đồ
thị con PSI có gốc sẽ có độ phức tạp thấp. Hướng tiếp cận này đã được NCS nghiên cứu,
thực nghiệm và công bố kết quả tại công trình [B9].
4. Luận án đã sử dụng một tập dữ liệu với số lượng mẫu phù hợp để tiến hành
thực nghiệm, đánh giá, nhưng các thực nghiệm tương lai có thể thực hiện với tập dữ liệu
lớn hơn. Kết quả với tập dữ liệu lớn hơn sẽ tăng độ tin cậy của phương pháp đề xuất của
luận án.
5. Kết hợp với những đặc trưng phi cấu trúc đồ thị: một cách chính thống, các
đặc trưng có cấu trúc đồ thị mà dựa trên việc đánh giá sự tương đồng đồ thị thì khó có
thể kết hợp với những đặc trưng phi cấu trúc đồ thị [64]. Tuy nhiên, luận án tiếp cận
theo hướng sử dụng các đặc trưng vector được chuyển đổi từ đặc trưng đồ thị PSI nên
có thể dễ dàng kết hợp với các đặc trưng vector khác (ví dụ như nối chuỗi vector) trong
nghiên cứu tương lai.
127
DANH MỤC CÔNG TRÌNH CỦA TÁC GIẢ
Tất cả các nội dung, kết quả nghiên cứu trình bày trong luận án này đều đã được
công bố trên các tạp chí, hội thảo uy tín ngành công nghệ thông tin trong nước và quốc
tế. Cụ thể như sau:
Bài báo đăng trên Tạp chí khoa học
[B1]. Huy-Trung Nguyen, Quoc-Dung Ngo, and Van-Hoang Le. "A novel
graph-based approach for IoT botnet detection." International Journal of
Information Security, Vol. 19, pp. 567–577, 2020.
(SCIE index, Q2), ISSN: 1615-5262 (Print) 1615-5270 (Online)
DOI: 10.1007/s10207-019-00475-6
[B2]. Huy-Trung Nguyen, Quoc-Dung Ngo, Doan-Hieu Nguyen, and Van-
Hoang Le. "PSI-rooted subgraph: A novel feature for IoT botnet detection using
classifier algorithms.", ICT Express Journal, 6(2), pp. 128-138, 2020.
(ESCI/SCOPUS index, Q1), ISSN: 2405-9595
DOI: 10.1016/j.icte.2019.12.001
[B3]. Quoc-Dung Ngo, Huy-Trung Nguyen, Van-Hoang Le, Doan-Hieu
Nguyen, “A survey of IoT malware and detection methods based on static
features”, ICT Express Journal, In press, 2020.
(ESCI/SCOPUS index, Q1), ISSN: 2405-9595
DOI: 10.1016/j.icte.2020.04.005
Bài báo đăng trên Kỷ yếu Hội thảo
[B4]. Nguyễn Huy Trung, Ngô Quốc Dũng, Nguyễn Anh Quỳnh, Trần Nghi
Phú, Nguyễn Ngọc Toàn, Nguyễn Mạnh Sơn. “Phát triển phương pháp lai trong
phát hiện mã độc Botnet trên thiết bị định tuyến”, Hội thảo quốc gia lần thứ XX:
Một số vấn đề chọn lọc của Công nghệ thông tin và truyền thông, Quy Nhơn,
23-24/11/2017.
[B5]. Sử Ngọc Anh, Lê Hải Việt, Nguyễn Huy Trung, Ngô Quốc Dũng, “Xây
dựng mô hình thu thập phát hiện tấn công mạng sử dụng thiết bị IoT”, Hội thảo
128
quốc gia lần thứ II: Một số vấn đề chọn lọc về an toàn an ninh thông tin, Thành
phố Hồ Chí Minh, 2017.
[B6]. Sử Ngọc Anh, Nguyễn Huy Trung, Nguyễn Anh Quỳnh, Phạm Văn
Huấn. “Phát hiện mã độc IoT botnet”, Hội thảo quốc gia lần thứ III: Một số vấn
đề chọn lọc về an toàn an ninh thông tin, Đà Nẵng, 12/2018. (Kỷ yếu Hội thảo
được xuất bản trên Tạp chí Thông tin và Truyền thông, ISSN 1859-3550, trang
89-94, 2018)
[B7]. Huy-Trung Nguyen, Quoc-Dung Ngo, and Van-Hoang Le. "IoT Botnet
Detection Approach Based on PSI graph and DGCNN classifier." In IEEE
International Conference on Information Communication and Signal Processing
(ICICSP), pp. 118-122, 2018. (SCOPUS Index) DOI:
10.1109/ICICSP.2018.8549713
[B8]. Huy-Trung Nguyen, Doan-Hieu Nguyen, Quoc-Dung Ngo, Vu-Hai
Tran, and Van-Hoang Le. "Towards a rooted subgraph classifier for IoT botnet
detection." In Proceedings of the 7th International Conference on Computer and
Communications Management, pp. 247-251. 2019. (SCOPUS index) DOI:
10.1145/3348445.3348474
[B9]. Quoc-Dung Ngo, Huy-Trung Nguyen, Hoang-Long Pham, Hoang Hanh-
Nhan Ngo, Doan-Hieu Nguyen, Cong-Minh Dinh, Xuan-Hanh Vu “A graph-
based approach for IoT botnet detection using Reinforcement Learning”, In:
12th International Conference on Computational Collective Intelligence
(ICCCI), DaNang, Vietnam. Lecture Notes in Artificial Intelligence, Springer
Cham, pp. 1-14, 2020. [Accepted]
129
TÀI LIỆU THAM KHẢO
Tiếng Việt
1. Luangoudon Sonexay, Nguyễn Gia Tuyến, Nguyễn Tấn Khôi, Nguyễn Linh
Giang (2018). Nghiên cứu ảnh hưởng và đánh giá giải pháp phát hiện và ngăn
chặn tấn công trong mạng LLN. Tạp chí Thông tin và Truyền thông, Hội thảo lần
thứ III, Một số vấn đề chọn lọc về an toàn an ninh thông tin, Đà Nẵng, Việt Nam.
Tr. 1–5.
2. Nguyễn Văn Tánh, Trần Quang Đức, Nguyễn Linh Giang, Luangoudom Sonxay
(2017). Xây dựng hệ thống an ninh mạng Internet of Thing với giải pháp phát hiện
và hạn chế tấn công DoS trên giao thức RPL dựa vào cơ chế OVerhearing. NXB
Khoa học tự nhiên và Công nghệ, Kỷ yếu Hội nghị Quốc gia lần thứ X về Nghiên
cứu cơ bản và ứng dụng Công nghệ thông tin (FAIR), Đà Nẵng, Việt Nam. Tr.
291–9. URL: DOI: https://dx.doi.org/10.15625/vap.2017.00037 .
Tiếng Anh
3. Abou Daya Abbas, et al. (2019). A graph-based machine learning approach for
bot detection. IEEE, IFIP/IEEE International Symposium on Integrated Network
Management Tr. 144–52.
4. Alhanahnah Mohannad, et al. (2018). Efficient signature generation for
classifying cross-architecture IoT malware. IEEE, In 2018 IEEE Conference on
Communications and Network Security (CNS) Tr. 1–9.
5. Antonakakis Manos, et al. (2017). Understanding the Mirai Botnet. USENIX,
Proceedings of the 26th Conference on Security Symposium Tr. 1093–110.
6. Author links open overlay panelMardiana bintiMohamad Noor, Wan
HaslinaHassan (2019). Current research on Internet of Things (IoT) security: A
survey. Comput Netw. Số 148., Tr.283–94
7. Azmoodeh Amin, et al (2018). Detecting crypto-ransomware in IoT networks
based on energy consumption footprint. J Ambient Intell Humaniz Comput. Số
9.(4), Tr.1141–52
8. Burhan, M.; Rehman, R.A.; Khan, B.; Kim, B.-S. (2018). IoT elements, layered
architectures and security issues: A comprehensive survey. Sensors. Số 18.(9),
Tr.2796
9. Chowdhury Sudipta, et al. (2017). Botnet detection using graph‑based feature
clustering. J Big Data. Số 4.(1), Tr.1–14
10. Costin, A., Zaddach, J., Francillon, A. and Balzarotti, D. (2014). A large-scale
analysis of the security of embedded firmwares. USENIX, Proceedings of the 23rd
USENIX Conference on Security Symposium Tr. 95–110.
130
11. Daniel Gibert (2016). Convolutional Neural Networks for Malware
Classification, Thesis of Master. Universitat de Barcelona
12. De Donno M., Dragoni, N., Giaretta, A., & Spognardi, A (2017). Analysis of
DDoS-capable IoT malwares. IEEE, Proceedings of the 2017 Federated
Conference on Computer Science and Information Systems, Tr. 807–16.
13. Gubbi Jayavardhana, et al. (2013). Internet of Things (IoT): A vision, architectural
elements, and future directions. Future generation computer systems. Số 29.(7),
Tr.1645–60
14. HaddadPajouh Hamed, et al. (2018). A Deep Recurrent Neural Network Based
Approach for Internet of Things Malware Threat Hunting. Future Gener Comput
Syst. Số 85., Tr.88–96
15. Kaspersky Lab. IoT under fire: Kaspersky detects more than 100 million attacks
on smart devices in H1 2019. URL: [Online]. Available:
https://www.kaspersky.com/about/press-releases/2019_iot-under-fire-kaspersky-
detects-more-than-100-million-attacks-on-smart-devices-in-h1-2019. Visited on:
15/4/2019 .
16. Khan, Rafiullah, Sarmad Ullah Khan, Rifaqat Zaheer, and Shahid Kha (2012).
Future Internet: The Internet of Things Architecture, Possible Applications and
Key Challenges. IEEE, In 2012 10th international conference on frontiers of
information technology Tr. 257–60.
17. Kumar Ajit (2017). A framework for malware detection with static features using
machine learning algorithms, Doctoral dissertation. Department of Computer
Science, Pondicherry University, India.
18. Mark Hung (2017). Leading the IoT: Gartner Insights on How to Lead in a
Connected World. Gartner URL:
https://www.gartner.com/imagesrv/books/iot/iotEbook_digital.pdf .
19. McDermott, Christopher D., Farzan Majdani, and Andrei V. Petrovski (2018).
Botnet detection in the internet of things using deep learning approaches. IEEE,
In 2018 International Joint Conference on Neural Networks (IJCNN) Tr. 1–8.
20. Mikolov Tomas, Kai Chen, Greg Corrado, and Jeffrey Dean (2013). Efficient
estimation of word representations in vector space. Proceedings of the
International Conference on Learning Representations (ICLR 2013) URL:
https://arxiv.org/abs/1301.3781 .
21. Narudin, F. A., Feizollah, A., Anuar, N. B., & Gani, A (2016). Evaluation of
machine learning classifiers for mobile malware detection. Soft Comput. Số
20.(1), Tr.343–57
22. Pa Yin Minn Pa, Shogo Suzuki, Katsunari Yoshioka, Tsutomu Matsumoto,
Takahiro Kasama, and Christian Rossow. (2016). IoTPOT: A novel honeypot for
revealing current IoT threats. J Inf Process. Số 24.(3), Tr.522–33
131
23. R. Isawa, T. Ban, S. Guo, D. Inoue, and K. Nakao (2014). An accurate packer
identification method using support vector machine. IEICE Trans Fundam
Electron Commun Comput Sci. Số 97.(1), Tr.253–63
24. Shoshitaishvili Yan, et al. (2015). Firmalice - Automatic Detection of
Authentication Bypass Vulnerabilities in Binary Firmware. Internet Society,
NDSS Symposium Tr. 1–15. URL: http://dx.doi.org/10.14722/ndss.2015.23294 .
25. Su Jiawei, et al. (2018). Lightweight Classification of IoT Malware based on
Image Recognition. IEEE, In 42nd annual computer software and applications
conference (COMPSAC) Tr. 664–9.
26. Yu Bo, et al. (2018). A survey of malware behavior description and analysis. Front
Inf Technol Electron Eng. Số 19.(5), Tr.583–603
27. Zhao David, et al. (2013). Botnet detection based on traffic behavior analysis and
flow intervals. Comput Secur. Số 39., Tr.2–16
28. Internet of Things - number of connected devices worldwide 2015-2025. URL:
[Online]. Available: https://www.statista.com/statistics/471264/iot-number-of-
connected-devices-worldwide/. Visited on: 14/8/2019 .
29. OWASP Board Votes. URL: [Online]. Available:
https://owasp.org/index.php/OWASP_Board_Votes. Visited on: 7/10/2017 .
30. A L Johnson, Symantec Security Response (2016). IoT devices being increasingly
used for DDoS attacks. URL: [Online]. Available:
https://www.symantec.com/connect/blogs/iot-devices-being-increasingly-used-
ddos-attacks. Visited on: 17/9/2017 .
31. Akshay. Report - Linux based Operating Systems for IoT takes lead with a massive
80% market share. URL: [Online]. Available:
https://iotgadgets.com/2017/07/report-linux-based-operating-systems-iot-takes-
lead-massive-80-market-share/. Visited on: 7/10/2017 .
32. Alasmary, Hisham, et al. (2019). Analyzing and Detecting Emerging Internet of
Things Malware: A Graph-based Approach. IEEE Internet Things J. Số 6.(5),
Tr.8977–88
33. Alasmary, Hisham, et al (2018). Graph-Based Comparison of IoT and Android
Malware. Springer, Cham, In International Conference on Computational Social
Networks. Lecture Notes in Computer Science Tr. 259–72.
34. Albawi Saad, Tareq Abed Mohammed, and Saad Al-Zawi (2017). Understanding
of a convolutional neural network. IEEE, In 2017 International Conference on
Engineering and Technology (ICET) Tr. 1–6.
35. Allix Kevin, et al. (2014). A Forensic Analysis of Android Malware--How is
Malware Written and How it Could Be Detected? IEEE, In 2014 IEEE 38th
Annual Computer Software and Applications Conference Tr. 384–93.
132
36. Amin Azmoodeh, et al. (2019). Robust Malware Detection for Internet Of
(Battlefield) Things Devices Using Deep Eigenspace Learning. IEEE Trans
Sustain Comput. Số 4.(1), Tr.88–95
37. Andrei Costin (2016). Large Scale Security Analysis of Embedded Devices’
Firmware, Thesis of Doctor. Paris Institute of Technology, France
38. Angrishi Kishore (2017). Turning internet of things (iot) into internet of
vulnerabilities (iov): Iot botnets. arXiv preprint arXiv:1702.03681
39. Annamalai Narayanan, et al. (2017). Graph2vec: Learning distributed
representations of graphs. ACM, Proceedings of the 13th International Workshop
on Mining and Learning with Graphs (MLG) Tr. 1–8. URL:
http://www.mlgworkshop.org/2017/paper/MLG2017_paper_21.pdf .
40. Annamalai Narayanan, Mahinthan Chandramohan, Rajasekar Venkatesan, Lihui,
Chen, Yang Liu and Shantanu Jaiswa (2017). graph2vec: Learning Distributed
Representations of Graphs. in KDD Workshop on Mining and Learning with
Graphs URL: https://arxiv.org/pdf/1707.05005.pdf .
41. Bai Jinrong, Qibin Shi, and Shiguang Mu. (2019). A Malware and Variant
Detection Method Using Function Call Graph Isomorphism.". Secur Commun
Netw. , Tr.1–13
42. Bai Jinrong, Yanrong Yang, Shiguang Mu, and Yu Ma (2013). Malware detection
through mining symbol table of Linux executables. Inf Technol J. Số 12.(2),
Tr.380–384
43. Baidu Research (2017). DeepBench. URL: [Online]. Available:
https://github.com/baidu-research/DeepBench.Visited on: 10/7/2018 .
44. Celeda, P., Krejci, R., & Krmicek, V. (2012). Revealing and analysing modem
malware. IEEE, In 2012 IEEE International Conference on Communications
(ICC) Tr. 971–5.
45. Celeda, P., Krejcí, R., Vykopal, J., & Drasar, M. (2010). Embedded malware-an
analysis of the Chuck Norris botnet. IEEE, In 2010 European Conference on
Computer Network Defense Tr. 3–10.
46. Cesare, Silvio, Yang Xiang, and Wanlei Zhou (2013). Control flow-based
malware variantdetection. IEEE Trans Dependable Secure Comput. Số 11.(4),
Tr.307–17
47. Chris Eagle (2011). The IDA Pro Book: The Unofficial Guide to the World’s Most
Popular Disassembler. 2nd ed. William Pollock, Canada.
48. Cisco Talos (2018). New VPNFilter malware targets at least 500k net- working
devices worldwide. URL: [Online]. Available:
https://blog.talosintelligence.com/2018/05/VPNFilter.html/. Visited on:
18/6/2018 .
133
49. Costin, Andrei, and Jonas Zaddach (2018). IoT malware: Comprehensive survey,
analysis framework and case studies. BlackHat USA
50. Cozzi Emanuele, et al. (2018). Understanding Linux Malware. IEEE, IEEE
Symposium on Security and Privacy (SP) Tr. 161–75.
51. D. Kiran el al. (2017). An Improved CBIR System Using Low-Level Image
Features Extraction and Representation. International Journal of Applied
Engineering Research. Số 12.(19), Tr.9032–7
52. Darabian Hamid, et al. (2019). An opcode-based technique for polymorphic
Internet of Things malware detection. Concurrency and Computation: Practice
and Experience. Số 32.(6), Tr.1–14
53. Darki, A., Faloutsos, M., Abu-Ghazaleh, N., & Sridharan, M (2019). IDAPro for
IoT malware analysis? In 12th {USENIX} Workshop on Cyber Security
Experimentation and Test ({CSET} 19). Tr. 1–9.
54. Darki, Ahmad, et al (2018). RARE: A systematic augmented router emulation for
malware analysis. Springer, Cham, In International Conference on Passive and
Active Network Measurement. Lecture Notes in Computer Science Tr. 60–72.
55. De Donno Michele, et al (2018). DDoS-capable IoT malwares: Comparative
analysis and Mirai investigation. Secur Commun Netw Hindawi. , Tr.1–30
56. De Paola Alessandra, et al. (2018). Malware Detection through Low-level
Features and Stacked Denoising Autoencoders. Italian Conference on Cyber
Security (ITASEC) URL: http://ceur-ws.org/Vol-2058/paper-07.pdf .
57. Dovom Ensieh Modiri, et al. (2019). Fuzzy pattern tree for edge malware
detection and categorization in IoT. J Syst Archit. Số 97.
58. E. Bertino and N. Islam (2017). Botnets and internet of things security. IEEE
Comput. Số 50.(2), Tr.76–79
59. Ed Skoudis, Lenny Zeltser (2004). Malware: fighting malicious code. Prentice
Hall
60. Fan, Ming, et al (2018). Android malware familial classification and
representative sample selection via frequent subgraph analysis. IEEE Trans Inf
Forensics Secur. Số 13.(8), Tr.1890–905
61. Felt Adrienne Porter, et al. (2011). A survey of mobile malware in the wild. ACM,
In Proceedings of the 1st ACM workshop on Security and privacy in smartphones
and mobile devices Tr. 3–14.
62. G Rothermel (2005). Representation and analysis of software. Angew Chem
Wiley. Số 46.(31), Tr.5896–900
134
63. Hallman, R., Bryan, J., Palavicini, G., Divita, J., & Romero-Mariona, J (2017).
IoDDoS-the internet of distributed denial of sevice attacks. In Proceedings of the
2nd International Conference on Internet of Things, Big Data and Security
(IoTBDS) Tr. 47–58.
64. Hassen, Mehadi, and Philip K. Chan (2017). Scalable function call graph-based
malware classification. In Proceedings of the Seventh ACM on Conference on
Data and Application Security and Privacy Tr. 239–48.
65. Helenius Marko (2002). A system to support the analysis of antivirus products’
virus detection capabilities. Tampere University Press
66. Ho, Hoang Nam, et al. (2013). Detecting recurring deformable objects: an
approximate graph matching method for detecting characters in comics books.
Springer, Berlin, Heidelberg, International Workshop on Graphics Recognition.
Lecture Notes in Computer Science Tr. 122–34.
67. Homayoun Sajad, et al. (2018). BoTShark: A deep learning approach for botnet
traffic detection. Springer, Cham., In Cyber Threat Intelligence. Advances in
Information Security Tr. 137–53.
68. Igor Santos, Felix Brezo, Xabier Ugarte-Pedrero, and Pablo G Bringas (2013).
Opcode sequences as representation of executables for data-mining-based
unknown malware detection. Inf Sci. Số 231., Tr.64–82
69. International Telecommunication Union. Overview of the Internet of things,
Recommendation ITU-T Y.20602013. URL: [Online]. Available:
https://www.itu.int/rec/T-REC-Y.2060-201206-I .
70. Islam Rafiqul, Ronghua Tian, Lynn M. Batten, and Steve Versteeg. (2013).
Classification of malware based on integrated static and dynamic featuresc. J
Netw Comput Appl. Số 36.(2), Tr.646–56
71. J Steven Perry. Anatomy of an IoT malware attack. URL: [Online]. Available:
https://developer.ibm.com/technologies/iot/articles/iot-anatomy-iot-malware-
attack/. Visited on: 31/11/2017 .
72. James King, Ali Ismail Awad (2016). A distributed security mechanism for
resource-constrained IoT devices. Informatica. Số 40.(1), Tr.133–143
73. Kevin Ashton (2009). That “Internet of Things” thing. RFID J. Số 22.(7), Tr.97–
114
74. Khoshhalpour Ehsan, and Hamid Reza Shahriari (2018). BotRevealer: Behavioral
detection of botnets based on botnet life-cycle. ISeCure- ISC Int J Inf Secur. Số
10.(1), Tr.55–61
75. Kim Yoon (2014). Convolutional neural networks for sentence classification.
arXiv preprint arXiv:1408.5882
135
76. Knud Lasse Lueth (2014). IoT Market – Forecasts at a glance. URL: [Online].
Available: https://iot-analytics.com/iot-market-forecasts-overview/. Visited on:
15/4/2018 .
77. Kolias Constantinos, et al. (2017). DDoS in the IoT: Mirai and other botnets. IEEE
Comput. Số 50.(7), Tr.80–4
78. Kolter J. Zico, and Marcus A. Maloof (2006). Learning to detect and classify
malicious executables in the wild. J Mach Learn Res ACM. Số 7., Tr.2721–44
79. Kotsiantis, S. B., Zaharakis, I., & Pintelas, P (2007). Supervised machine
learning: A review of classification techniques. Emerg Artif Intell Appl Comput
Eng. Số 160.(1), Tr.249–68
80. Krizhevsky, A (2014). One weird trick for parallelizing convolutional neural
networks. arXiv preprint arXiv:1404.5997
81. Kumar Ajit, K. S. Kuppusamy, and G. Aghila (2018). FAMOUS: Forensic
Analysis of MObile devices Using Scoring of application permissions. Future
Gener Comput Syst. Số 83., Tr.158–72
82. Le Quoc, and Tomas Mikolov. " (2014). Distributed representations of sentences
and documents. In Proceedings of the 31 st International Conference on Machine
Learning Tr. 1188–1196.
83. Lin, Zhaowen, Fei Xiao, Yi Sun, Yan Ma, Cong-Cong Xing, and Jun Huang.
(2018). A Secure Encryption-Based Malware Detection System. KSII Trans
Internet Inf Syst. Số 12.(4), Tr.1799–818
84. Liu Liu, Bao-sheng Wang, Bo Yu, and Qiu-xi Zhong (2017). Automatic malware
classification and new malware detection using machine learning. Front Inf
Technol Electron Eng. Số 18.(9), Tr.1336–47
85. Mikhail Kuzin, Yaroslav Shmelev, Vladimir Kuskov (2018). New trends in the
world of IoT threats. URL: [Online]. Available: https://securelist.com/new-
trends-in-the-world-of-iot-threats/87991/. Visited on: 15/2/2019 .
86. Mikolov Tomas, Ilya Sutskever, Kai Chen, Greg S. Corrado, and Jeff Dean
(2013). Distributed representations of words and phrases and their
compositionality. ACM, Proceedings of the 26th International Conference on
Neural Information Processing Systems Tr. 3111–9. URL:
https://dl.acm.org/doi/10.5555/2999792.2999959 .
87. Muhammad Junaid Bohio (2015). Analysis of a MIPS Malware. SANS Institute
URL: [Online]. Available: https://www.sans.org/reading-
room/whitepapers/malicious/analyzing-backdoor-bot-mips-platform-35902.
Visited on: 16/7/2017 .
88. Mwangi Karanja, Shedden Masupe, and Jeffrey Mandu. Internet of things
malware: Survey. Int J Comput Sci Eng Surv IJCSES. Số 8.(3), Tr.2017
136
89. Narayanan, A., Chandramohan, M., Chen, L., Liu, Y., & Saminathan, S (2016).
Subgraph2vec: Learning distributed representations of rooted sub-graphs from
large graphs. arXiv preprint arXiv:1606.08928
90. Pascanu Razvan, et al. (2015). Malware classification with recurrent networks.
IEEE, In 2015 IEEE International Conference on Acoustics, Speech and Signal
Processing (ICASSP) Tr. 1916–20.
91. Prokofiev, A. O., Smirnova, Y. S., & Surov, V. A (2018). A method to detect
Internet of Things botnets. IEEE, In 2018 IEEE Conference of Russian Young
Researchers in Electrical and Electronic Engineering (EIConRus) Tr. 105–8.
92. Rawat Waseem, and Zenghui Wang (2017). Deep convolutional neural networks
for image classification: A comprehensive review. Neural Comput. Số 29.(9),
Tr.2352–449
93. Sathya R., and Annamma Abraham (2013). Comparison of supervised and
unsupervised learning algorithms for pattern classification. Int J Adv Res Artif
Intell. Số 2.(2), Tr.34–8
94. Sebastián M., Rivera, R., Kotzias, P., & Caballero, J. (2016). Avclass: A tool for
massive malware labeling. Springer, Cham, In International Symposium on
Research in Attacks, Intrusions, and Defenses. Lecture Notes in Computer
Science Tr. 230–53.
95. Shafiq M. Zubair, Syed Ali Khayam, and Muddassar Farooq (2008). Embedded
malware detection using markov n-grams. Springer, Berlin, Heidelberg,
International conference on detection of intrusions and malware, and vulnerability
assessment. Lecture Notes in Computer Science Tr. 88–107.
96. Shahzad Farrukh, and Muddassar Farooq (2012). Elf-miner: Using structural
knowledge and data mining methods to detect new (linux) malicious executables.
Knowl Inf Syst. Số 30.(3), Tr.589–612
97. Shang Shanhu, et al. (2010). Detecting malware variants via function-call graph
similarity. IEEE, In 5th International Conference on Malicious and Unwanted
Software Tr. 113–20.
98. Sherwood Timothy, Erez Perelman, Greg Hamerly, and Brad Calder (2002).
Automatically characterizing large scale program behavior. ACM SIGPLAN
Not. Số 37.(10), Tr.45–57
99. Souri Alireza, and Rahil Hosseini (2018). A state‑of‑the‑art survey of malware
detection approaches using data mining techniques. Souri Alireza Rahil Hosseini.
Số 8.(3), Tr.1–22
100. Srivastava, N., Hinton, G., Krizhevsky, A., Sutskever, I., & Salakhutdinov, R
(2014). Dropout: a simple way to prevent neural networks from overfitting. J
Mach Learn Res. Số 15.(1), Tr.1929–58
137
101. Symantec Official Blog (2015). Linux.Wifatch. URL: [Online]. Available:
https://www.symantec.com/security_response/writeup.jsp?docid=2015-011216-
2314-99&tabid=2. Visited on: 19/9/2017 .
102. Symantec Security Response Security Response Team. Vpnfilter: New router
malware with destructive capabilities. URL: [Online]. Available:
https://www.symantec.com/blogs/threat-intelligence/vpnfilteriot-malware, 2018.
Visited on: 18/8/2018 .
103. W. Zhou, Y. Jia, A. Peng, Y. Zhang, and P. Liu (2018). The effect of iot new
features on security and privacy: New threats, existing solutions, and challenges
yet to be solved. IEEE Internet Things J. Số 6.(2), Tr.1606–16
104. Wang, Aohui, Ruigang Liang, Xiaokang Liu, Yingjun Zhang, Kai Chen, and Jin
Li. (2017). An Inside Look at IoT Malware. Springer, Cham, In International
Conference on Industrial IoT Technologies and Applications. Lecture Notes of the
Institute for Computer Sciences, Social Informatics and Telecommunications
Engineering, Tr. 176–86.
105. Wang Junfeng, Bai Jinrong (2018). Function call graph fingerprint based
malicious software detection method. CN105046152A, 2018. URL:
https://patents.google.com/patent/CN105046152B/en .
106. Wu Chun-Jung, Ying Tie, Satoshi Hara, Kazuki Tamiya, Akira Fujita, Katsunari
Yoshioka, and Tsutomu Matsumoto (2018). IoTProtect: Highly Deployable
Whitelist-based Protection for Low-cost Internet-of-Things Devices. J Inf Process.
Số 26., Tr.662–72
107. Xin Yang, et al. (2018). Machine learning and deep learning methods for
cybersecurity. IEEE Access. Số 6., Tr.35365–81
108. Xu Ming, Lingfei Wu, Shuhui Qi, Jian Xu, Haiping Zhang, Yizhi Ren, and Ning
Zheng (2013). A similarity metric method of obfuscated malware using function-
call graph. J Comput Virol Hacking Tech. Số 9.(1), Tr.35–47
109. Yashaswini J (2017). A Review on IoT Security Issues and Countermeasures.
Orient J Comp Sci Technol. Số 10.(2), Tr.454–9
110. Ye Yanfang, et al., (2017). A survey on malware detection using data mining
techniques. ACM Comput Surv CSUR. Số 50.(3), Tr.1–40
111. Zaddach Jonas, et al (2014). AVATAR: A Framework to Support Dynamic Security
Analysis of Embedded Systems. Internet Society, Proceedings of the Network and
Distributed System Security Symposium, Tr. 1–16.
112. Ziv Chang (2019). IoT Device Security Locking Out Risks and Threats to Smart
Homes. Trend Micro Research URL: [Online]. Available:
https://documents.trendmicro.com/assets/white_papers/IoT-Device-Security.pdf
138
113. Домът на Виерко (2013). lightaidra 0x2012 (aidra). URL: [Online]. Available:
https://vierko.org/tech/lightaidra-0x2012/. Visited on: 19/9/2017 .
114. (2019). Demystifying Neural Network in Skip-Gram Language Modeling. URL:
[Online]. Available:
https://aegis4048.github.io/demystifying_neural_network_in_skip_gram_langua
ge_modeling’. Visited on: 20/5/2019 .
115. Detect-It-Easy. URL: [Online]. Available: https://github.com/horsicq/Detect-It-
Easy. Visited on: 15/9/2017 .
116. Firmware Analysis Tool. URL: [Online]. Available::
https://github.com/ReFirmLabs/binwalk. Visited on: 17/9/2018 .
117. IDA pro. URL: [Online]. Available:: https://www.hex-rays.com. Visited on:
14/8/2017 .
118. IoT devices examples, definitions and e-shop for good price!,. URL: [Online].
Available: https://iotbuzzer.com/iot-devices-definition-and-examples/. Visited
on: 20/2/2020 .
119. OpenWrt. URL: [Online]. Available: https://openwrt.org. Visited on: 18/9/2018 .
120. Radware. Brickerbot results in PDOS attack. URL: [Online]. Available:
https://security.radware.com/ddos-threatsattacks/brickerbot-pdos-permanent-
denial-of-service/. Visited on: 18/5/2018 .
121. UPX - the Ultimate Packer for eXecutables. URL: [Online]. Available:
https://github.com/upx. Visited on: 15/9/2017 .
122. VirusShare, Because Sharing is Caring. URL: [Online]. Available:
https://virusshare.com. Visited on: 10/1/2019 .
123. VirusTotal. URL: [Online]. Available: https://www.virustotal.com. Visited on:
19/9/2018 .