Trong báo cáo này nhóm em thực hiện phân loại mã độc phổ biến và các biến thể của chúng bằng cách sử dụng học máy.. Việc phát hiện và phân loại phần mềm độc hại hiệu quả có thể được thực
Trang 1KHOA CÔNG NGHỆ THÔNG TIN
-BÁO CÁO THỰC NGHIỆM HỌC PHẦN
AN NINH MẠNG TÊN CHỦ ĐỀ NGHIÊN CỨU
PHÂN LOẠI MÃ ĐỘC (VIRUS, WORM, TROJAN, BACKDOOR,
RANSOMWARE, …) SỬ DỤNG HỌC MÁY
Nhóm thực hiện: Nhóm 4
Sinh viên thực hiện: Nguyễn Văn Vũ 2020601029
Trần Thị Khánh Linh 2020602060 Nguyễn Việt Hùng 2020602728 Trần Tiến Điệp 2020603359
Trang 3MỤC LỤC
CHƯƠNG 1 TỔNG QUAN VỀ BÀI TẬP LỚN 1
1.1 Giới thiệu Mã độc 1
1.2 Portable Executable Files (Tệp thực thi) 3
1.2.1 Header 4
1.2.2 Section 6
1.3 Phương pháp thực hiện 9
1.4 Kỹ thuật học máy cho phân loại mã độc 10
CHƯƠNG 2 NỘI DUNG THỰC HIỆN 11
2.1 Tiền xử lý dữ liệu 11
2.2 Tạo mô hình 12
CHƯƠNG 3 KẾT QUẢ NGHIÊN CỨU 15
3.1 Các kết quả đạt được 15
3.2 Các kết quả chưa đạt được 15
TÀI LIỆU THAM KHẢO 16
Trang 4MỤC LỤC HÌNH ẢNH
Ảnh 9 Hàm chuyển dữ liệu dạng hex sang ảnh xám 11
Ảnh 11 Độ chính xác khi áp dụng các mô hình khác nhau 13
Trang 5CHƯƠNG 1 TỔNG QUAN VỀ BÀI TẬP LỚN
1.1 Giới thiệu Mã độc
An ninh mạng là một lĩnh vực quan trọng và ngày càng được chú trọng trong thế giới kỹ thuật số ngày nay Với sự phát triển nhanh chóng của công nghệ thông tin và mạng internet, việc bảo vệ thông tin và dữ liệu trở thành một thách thức đối với cá nhân, tổ chức và cả quốc gia
An ninh mạng bao gồm các biện pháp và hoạt động nhằm bảo vệ hệ thống mạng và dữ liệu khỏi các mối đe dọa, tấn công và vi phạm bảo mật An ninh mạng liên quan đến việc đảm bảo tính toàn vẹn, sẵn sàng và bảo mật của các hệ thống, mạng dữ liệu
Các vụ tấn công mạng có thể gây thiệt hại nghiệm trọng cho cá nhân và tổ chức Các vụ tấn công đó có thể dẫn đến mất tài chính, mất dữ liệu quan trọng, huỷ hoại danh tiếng và gây ảnh hưởng xấu đến hoạt động kinh doanh Do đó, việc đầu tư vào an ninh mạng trở thành một yếu tố cực kỳ quan trọng để bảo vệ các hệ thống thông tin
Trong lĩnh vực an ninh mạng, mã độc (malware) là một thuật ngữ được sử dụng để chỉ các phần mềm hay mã nguy hiểm được tạo ra để xâm nhập vào hệ thống mạng hoặc thiết bị người dùng mà không được sự cho phép Mã độc có thể nhiều hình thức và mục đích khác nhau, từ việc đánh cắp thông tin cá nhân, gây hỗn loạn, tới kiểm soát các hệ thống
Có rất nhiều các loại mã độc khác nhau, trong số đó gồm các phân loại chính như:
Virus: Loại chương trình này vô cùng nguy hiểm ví có khả năng sinh sôi,
lây lan khắp hệ thống phần mềm gây thiệt hại đến phần cứng, hư hại dữ liệu, xóa hoặc thay đổi thông tin,… với tốc độ rất nhanh bằng cách gắn kết các tệp tin hoặc chương trình khác
Worm: Là một loại mã độc tự nhân bản và lây lan trong mạng máy tính mà
không cần sự tương tác của người dùng Chúng khai thác các lỗ hổng bảo mật
Trang 6trong hệ điều hành hoặc các ứng dụng mạng để lây lan và thường gửi bản sao của chính mình đến các máy khác
Trojan horse: Loại mã độc này lừa người dùng bằng cách giấu mình dưới
dạng phần mềm hữu ích hoặc không đáng ngờ Khi được cài đặt, Trojan horse
có thể mở cổng truy cập từ xa cho tin tặc, ghi lại thông tin cá nhân, hoặc thực hiện các hoạt động độc hại khác
Ransomware: Loại mã độc được thiết kế để mã hoá dữ liệu trên máy tính
người dùng và yêu cầu một khoản tiền chuộc để khôi phục dữ liệu Ransomware
là một trong những mối đe doạ phổ biến và nguy hiểm trong an ninh mạng Trong báo cáo này nhóm em thực hiện phân loại mã độc phổ biến và các biến thể của chúng bằng cách sử dụng học máy Bộ dữ liệu được sử dụng trong báo cáo này được trích từ Malimg Dataset gồm 9339 tệp mã độc thuộc 25 loại
mã độc khác nhau
Trang 71.2 Portable Executable Files (Tệp thực thi)
Phương pháp dựa trên dấu hiệu nhận dạng được sử dụng trong các phần mềm antivirus khó có khả năng phát hiện chính xác mã độc mới Mặt khác, dấu hiệu nhận dạng của mã độc phải được lưu trữ trước để thực hiện so sánh mẫu
Do vậy, cần chi phí cho việc lưu trữ chữ ký và thời gian so sánh Ngoài ra, khả năng phát hiện của phần mềm antivirus không hiệu quả với mã độc loại đa hình, biến hình, hay mã độc được sửa đổi
Việc phát hiện và phân loại phần mềm độc hại hiệu quả có thể được thực hiện dựa trên việc phân tích tiêu đề PE (Portable Executable) Header của các tệp thực thi (EXE, DLL), kết hợp với các kỹ thuật học máy khác nhau
Mục đích của công việc này trước hết là để thử nghiệm đánh giá, xem xét tổng thể các phương pháp phân loại, phát hiện tách mã độc với file sạch và thứ hai là phát triển một hệ thống tự động để phát hiện mã độc dựa trên PE Header các file thực thi (EXE, DLL) với độ chính xác cao và thời gian thực hiện nhanh chóng
Bộ dữ liệu nhóm em sử dụng tất cả là Tệp thực thi PE, là định dạng tệp riêng của Win32 Tất cả các tệp có thể thực thi được trên Win32 như *.EXE, *.DLL (32 bit), *.COM, *.NET,… đều là định dạng PE; ngoại trừ các tập tin VxDs và
*.DLL (16bit) Trong báo cáo này nhóm em sử dụng chính đó là tệp *.EXE
Trang 8Ảnh 1 Cấu tạo của các tệp thực thi PE
Tệp thực thi PE được chia làm 2 phần Header và Section, trong đó Header dùng để lưu các giá trị định dạng tệp và các offset (vị trí của từng section trong tệp thực thi), phần section trong tệp đại diện cho một phần của chương trình
1.2.1 Header
DOS Header: Tất cả các tệp thực thi đều bắt đầu bằng một đoạn mã DOS
MZ Header đơn giản Đoạn mã này chiếm 64 bytes đầu tiên trong đó 4 byte cuối
mô tả định vị điểm bắt đầu phần NT Header Vùng này được dùng trong trường hợp chương trình chạy trên nền DOS (Disk Operating System), hệ điều hành DOS nhận biết đây là một tệp thực thi hợp lệ và thực thi các nội dung trong phần DOS STUB Trong phần này có trường cần chú ý đó là “e_magic” – chữ ký của tệp PE có giá trị là MZ (0x4D5A) (chiếm 2 byte đầu tiên) Ký tự “MZ” là tên người sáng lập MS – DOS, Mark Zbikowski Giá trị này đánh dấu một DOS Header hợp lệ và được phép thực thi tiếp
DOS stub: Là một chương trình DOS EXE nhỏ hiển thị một thông báo
lỗi, phần tương thích với Windows 16 bit, phần này được biên dịch chỉ để xuất
ra thông báo: “This is program cannot be run in DOS mode”
Trang 9Ảnh 2 Ví dụ về DOS STUB
PE Header (NT Header): là cấu trúc IMAGE_NT_HEADERS bao gồm
các thông tin cần thiết cho quá trình loader nạp dữ liệu lên bộ nhớ Cấu trúc này gồm 3 phần được định nghĩa trong windows.inc: PE-Signature, File Header và Optional Header
Ảnh 3 Cấu trúc PE Header
PE Header được đánh dấu bằng chữ kí “PE\0\0” (0x50 0x45 0x00 0x00)
để xác định điểm bắt đầu Đầu tiên file header chứa thông tin về kiến trúc, số phiên bản của tệp PE và các thuộc tính khác như kích thước của các phần khác trong file
Trang 10Ảnh 4 Cấu trúc FILE HEADER
Machine: Giá trị xác định tệp thực thi được biên dịch cho dòng máy nào NumberOfSections: Chứa số lượng section của tệp, có thể thay đổi thêm sửa xóa Characteristics: Là bit cờ, xác định định dạng của tệp thực thi, …
Optional header: gồm 224 bytes tiếp theo sau FILE_HEADER Chứa
thông tin chi tiết hơn về cấu trúc và thuộc tính của tệp PE, bao gồm kiểu của file (32-bit hay 64-bit), thông tin về bộ nhớ, điểm nhập (entry point), các kích thước
và địa chỉ của các phần trong file (như section headers, import/export tables, resource data, và exception handling data), và các thuộc tính bổ sung
Section table: gồm một danh sách các section trong tệp PE, mỗi section
đại diện cho một phần cụ thể của chương trình như mã máy (code), dữ liệu khởi tạo (initialized data), dữ liệu không khởi tạo (uninitialized data), hoặc tài nguyên (resources) Mỗi section header chứa thông tin như tên section, kích thước, địa chỉ bắt đầu, thuộc tính và thuộc tính bổ sung của section đó
1.2.2 Section
.text: Đây là phần đầu tiên và chứa mã thực thi cho phần mềm Trong
phần này sẽ có một entry point của hệ thống Địa chỉ đầu tiên của hệ thống sẽ được thực thi Một hệ thống có thể có nhiều hơn một phần chứa mã thực thi
.data: Đầy là phần chứa dữ liệu đã được khởi tạo của một ứng dụng, có
vai trò quan trọng trong việc đảm bảo an toàn và bảo mật của ứng dụng Dữ liệu được lưu trữ trong data thường là các giá trị đã được khởi tạo và sử dụng trong
Trang 11quá trình thực thi ứng dụng Tuy nhiên, trong môi trường an ninh mạng, phần
“.data” cũng có thể trở thành một mục tiêu cho các cuộc tấn công Các kẻ tấn công cố gắng thay đổi, xâm nhập hoặc khai thác các dữ liệu đã được khởi tạo trong phần này để thực hiện các hành vi độc hại
.rdata và idata: được sử dụng để đặt tên cho các bảng nhập trong ứng
dụng Bảng này liệt kê các Window API được sử dụng bởi ứng dụng Bảng này giúp cho Window biết API cần tìm trong DLL hệ thống nào để lấy địa chỉ Phần này cũng đóng vai trò quan trọng trong việc kiểm soát và bảo mật ứng dụng Điều này liên quan đến việc đảm bảo tính toàn vẹn và an toàn của các Windows API được sử dụng bởi ứng dụng Các kẻ tấn công có thể thay đổi API hợp lệ thành API mã độc hại hoặc có thể thay đổi DLL liên quan
.reloc: phần này chứa thông tin về địa chỉ của bảng điều chỉnh địa chỉ.
Bảng này chứa danh sách các vị trí trong mã thực thi của ứng dụng cần được điều chỉnh lại địa chỉ khi ứng dụng được tải vào một vùng bộ nhớ khác
.rsrc: được sử dụng để chỉ phần chứa tài nguyên (resource – container
section) trong một ứng dụng Chứa các tài nguyên được sử dụng cho giao diện người dùng của ứng dụng gồm các hình ảnh, biểu tượng, âm thanh, văn bản hoặc các tài liệu khác
Trang 12Ảnh 5 Cấu trúc tệp thực thi PE tổng quát
Trang 131.3 Phương pháp thực hiện
Để phân loại trực tiếp các mã độc thông qua các tệp *.EXE thuần sẽ gây khó khăn cho việc phân loại Vì vậy nhóm chúng em áp dụng cách tiếp cận khác
đó là chuyển các tệp *.EXE thành dạng *.bytes và từ đó chuyển thành *.png Lý
do nhóm em làm vậy là do mỗi tệp thực thi *.EXE có thể biểu diễn dưới dạng mảng bytes một chiều, mỗi giá trị trong đó nằm trong khoảng từ 0 đến 255 Mảng kết quả có thể được sắp xếp thành mảng 2 chiều với việc định hình lại kích thước của mảng Do đó chỉ cần chuyển tệp *.EXE thành ảnh xám và đưa vào mô hình phân loại học máy
Ảnh 6 Quy trình biến đổi EXE thành ảnh xám
Trang 141.4 Kỹ thuật học máy cho phân loại mã độc
Ảnh 7 Quy trình thực hiện của học máy
Học máy rất phù hợp để xử lý khối lượng dữ liệu lớn Trên thực tế, một trong những điểm mạnh của học máy là khả năng phân tích và hiểu được lượng
dữ liệu khổng lồ mà con người có thể khó hoặc không thể xử lý thủ công Quy trình làm việc học máy có mục tiêu đào tạo một mô hình để giải quyết một nhiệm vụ, trong trường hợp này là phân loại phần mềm độc hại
Trang 15CHƯƠNG 2 NỘI DUNG THỰC HIỆN
2.1 Tiền xử lý dữ liệu
Trong việc áp dụng khoa học dữ liệu nói chung hay học máy nói riêng vào trong phân loại mã độc, các nhà khoa học dữ liệu cần hiểu rõ và đưa ra các phương án xử lý dữ liệu thô như tệp PE trong bài toán này thành một dạng dữ liệu mới Dạng dữ liệu này phải tinh gọn hơn, có cách thể hiện các đặc trưng một các nổi bật hơn và phù hợp để đưa vào các mô hình học máy có giám sát phân loại Như ở phần phương pháp bên trên đã đề cập, nhóm em đã sử dụng các hàm tiền xử lý dữ liệu dưới đây
Ảnh 8 Hàm chuyển dữ liệu dạng exe sang bytes
Ảnh 9 Hàm chuyển dữ liệu dạng hex sang ảnh xám
Trong python có hỗ trợ đọc tệp thực thi theo dạng byte, thực hiện đọc dữ liệu đó bằng hàm bytearray Sau đó lưu dữ liệu với đuôi tệp là bytes Khi đã có các dữ liệu dạng hex, thực hiện chuyển sang hình ảnh để thực hiện phân loại Dữ
Trang 16liệu gồm 25 loại Malware (Mã độc) và các Bengin (Mã lành tính) ở dạng hình ảnh sau khi đã được tiền xử lý từ PE
Ảnh 10 Trực quan hoá 25 loại mã độc
Đây là 25 loại malware với mỗi hình được lấy ngẫu nhiên trong bộ dữ liệu hình ảnh về mã của các malware này
2.2 Tạo mô hình
Dựa trên bài báo [4], nhóm em đã quyết định chọn mô hình Inception V3
để học bộ dữ liệu ảnh malware đã được xử lý bên trên do độ chính xác cao trung bình với tất cả 25 loại malware
Trang 17Ảnh 11 Độ chính xác khi áp dụng các mô hình khác nhau
Trong báo cáo này, nhóm chúng em sử dụng môi trường lập trình là Ngôn ngữ lập trình Python, Thư viện học máy, học sâu Tensorflow và các thư viện phụ thuộc liên qua kèm theo, Hệ điều hành Linux Sau đó, nhóm em đã thực hiện đào tạo mô hình với độ chính xác dù không đạt được mức như trên bảng thống kê bên trên, nhưng cũng đạt được một con số độ chính xác ở mức tạm chấp nhận
Trang 18Ảnh 12 Kết quả huấn luyện
Trang 19CHƯƠNG 3 KẾT QUẢ NGHIÊN CỨU
3.1 Các kết quả đạt được
Về ứng dụng nhóm đã thực hiện triển khai mô hình của đề tài PHÂN LOẠI
MÃ ĐỘC (VIRUS, WORM, TROJAN, BACKDOOR, RANSOMWARE, …)
SỬ DỤNG HỌC MÁY chạy trên thiết bị cá nhân là laptop của các thành viên trong nhóm Và khi có một ảnh mới tương ứng với một mã PE mới thì mô hình
có thể dự đoán được với độ chính xác nhất định xem PE đó thuộc loại Malware nào hay chỉ là mã lành tính
Về mặt lý thuyết, nhóm đã tìm được các bài báo liên quan để đọc hiểu các
ý tưởng và phương pháp để hiểu được luồng hoạt động chính của bài toán Sau
đó triển khai ứng dụng từ những ý tưởng đó để có một chương trình chạy ở mức Console
3.2 Các kết quả chưa đạt được
Nhóm vẫn chưa triển khai được ứng dụng hoàn chỉnh để thực hiện một cách tự động chuyển từ mã PE sang Image khi người dùng muốn cung cấp thêm
dữ liệu về các loại malware mới cho mô hình học
Chưa thu thập được nhiều mẫu Malware để tiến hành phân tích và lấy làm
dữ liệu đào tạo cho mô hình Số lượng nhãn chỉ dừng lại ở mức 25 malware Chưa triển khai được một ứng dụng Console hoàn chỉnh bao gồm auto pipeline (đường ống xử lý) để thực hiện các thao tác cập nhật malware và mô hình tự động transfer learning (học chuyển tiếp) ngay sau đó
Chưa tìm hiểu được thêm các phương pháp phân loại mã độc khác do thời gian có hạn
Trang 20TÀI LIỆU THAM KHẢO
TIẾNG ANH
[1] Gibert, D., Mateu, C., Planes, J et al Using convolutional neural
networks for classification of malware represented as images J Comput Virol Hack Tech 15, 15–28 (2019)
[2] Songqing Yue, Tianyang Wang, Imbalanced Malware Images
Classification: a CNN based Approach Imbalanced Malware Images Classification: a CNN based Approach
[3] Nataraj, Lakshmanan & Karthikeyan, Shanmugavadivel & Jacob,
Grégoire & Manjunath, B (2011) Malware Images: Visualization and Automatic Classification
[4] Ahmed Bensaoud, Nawaf Abudawaood, and Jugal Kalita, Classifying
Malware Images with Convolutional Neural Network Models