Bối cảnh và vấn đề nghiên cứu
Trong những năm gần đây, tần suất và mức độ thiệt hại do các cuộc tấn công bằng phần mềm độc hại (malware) trên hệ điều hành Windows gia tăng nghiêm trọng. Điển hình là cuộc tấn công mã độc tống tiền WannaCry vào năm 2017, gây tê liệt các cơ sở y tế và lây nhiễm các hệ thống tập đoàn tại hơn 150 quốc gia. Thực trạng này đặt ra yêu cầu cấp thiết về việc xây dựng các giải pháp phát hiện mã độc hiệu quả, chính xác nhằm giảm thiểu thiệt hại cho hệ thống thông tin.
Các phương pháp phân tích mã độc truyền thống hiện nay gồm ba hướng chính: phân tích tĩnh, phân tích động và phân tích lai. Phân tích tĩnh có tốc độ nhanh nhưng dễ bị vô hiệu hóa bởi các kỹ thuật làm rối mã (obfuscation), mã hóa hoặc đóng gói (packing). Phân tích động chạy tệp trong môi trường kiểm soát giúp phát hiện hành vi thực tế nhưng tốn tài nguyên, thời gian và có thể bị né tránh bởi kỹ thuật chống máy ảo (anti-sandbox, anti-debug). Việc ứng dụng Xử lý ngôn ngữ tự nhiên (Natural Language Processing - NLP) trong phát hiện mã độc đã xuất hiện ở một số nghiên cứu gần đây nhưng phần lớn chỉ khai thác đơn lẻ một nguồn thuộc tính tĩnh hoặc động, dẫn đến nguy cơ bỏ sót các biến thể tinh vi.
Nhằm giải quyết các hạn chế trên, khóa luận tốt nghiệp ngành An toàn thông tin của sinh viên Lâm Thiệu An và Nguyễn Quang Huy (Trường Đại học Công nghệ Thông tin, Đại học Quốc gia TP.HCM, thực hiện năm 2024 dưới sự hướng dẫn của ThS. Đỗ Thị Thu Hiền) tập trung vào các mục tiêu, đối tượng và phạm vi sau:
- Mục tiêu nghiên cứu:
- Nghiên cứu và áp dụng kỹ thuật NLP kết hợp phương pháp đầu vào đa thể thức (multimodal) để phát hiện và phân loại mã độc Windows dựa trên nhiều dạng dữ liệu khác nhau thu được từ phân tích lai.
- Giảm thiểu tỷ lệ nhận diện nhầm, nâng cao độ chính xác trong cả tác vụ phân loại nhị phân (lành tính / mã độc) và phân loại đa nhãn (phân loại họ mã độc).
- Đối tượng nghiên cứu:
- Các tập tin thực thi Portable Executable (PE) của mã độc trên hệ điều hành Windows.
- Các kỹ thuật phân tích mã độc (phân tích tĩnh, phân tích động, phân tích lai).
- Các kỹ thuật xử lý ngôn ngữ tự nhiên (Tokenizing, Encoding, Word Embedding).
- Các mô hình học sâu (1D CNN, Bi-LSTM) trong bài toán an toàn thông tin.
- Phạm vi nghiên cứu:
- Về không gian dữ liệu: Tập trung vào định dạng tập tin thực thi PE trên hệ điều hành Windows.
- Về chủng loại mã độc: Khảo sát các dòng mã độc phổ biến bao gồm Backdoor, Trojan, Virus, Worm (cùng dữ liệu tệp lành tính Benign) trong tập dữ liệu đa nhãn gồm 7.596 mẫu.
Cơ sở lý thuyết và phương pháp
Khung lý thuyết và mô hình sử dụng
Nghiên cứu xây dựng trên nền tảng cấu trúc tập tin Portable Executable (PE) của hệ điều hành Windows (bao gồm MS-DOS Header, PE Header, Section Table như .text, .data, .rdata, .idata, Import Table, Export Table, Relocation Table, Resource Table) và cơ chế vận hành của 7 chủng loại mã độc phổ biến (Virus, Worm, Trojan, Ransomware, Spyware, Adware, Backdoor).
Về mặt xử lý dữ liệu, tác giả vận dụng các khái niệm xử lý ngôn ngữ tự nhiên để khai thác 4 dạng thông tin mang tính chất ngôn ngữ từ mã độc:
- Chuỗi ký tự (Strings): Các chuỗi ký tự đọc được trích xuất từ tập tin PE (địa chỉ IP, URL, tên tệp, chuỗi thông báo...).
- Chuỗi mã lệnh máy (Opcode sequence): Tập hợp các chỉ thị thực thi của CPU thu được từ quá trình dịch ngược section chứa mã nguồn thực thi.
- Chuỗi gọi hàm API (API sequence): Thứ tự các hàm giao diện lập trình ứng dụng hệ điều hành được thực thi trong môi trường sandbox.
- Hoạt động mạng (Network traffic): Chuỗi byte n-gram trích xuất ở cấp gói tin từ luồng giao tiếp mạng lưu trong tập tin pcap.
Phương pháp nghiên cứu thực tế
Nghiên cứu sử dụng phương pháp thực nghiệm kết hợp thiết kế hệ thống với các kỹ thuật cụ thể:
- Phân tích lai (Hybrid Analysis): Kết hợp trích xuất tĩnh (sử dụng disassembler để lấy Opcode và công cụ trích xuất Strings) với trích xuất động trên môi trường Cuckoo Sandbox độc lập.
- Tiền xử lý và làm sạch dữ liệu chuyên biệt:
- Dữ liệu chuỗi (Strings): Quy trình làm sạch 2 giai đoạn (Giai đoạn 1: chuẩn hóa chữ thường, lọc chuỗi dưới 3 ký tự, giữ lại các ký tự đặc biệt có nghĩa
., _, /; Giai đoạn 2: xây dựng từ điển tần suất và loại bỏ 30% từ xuất hiện phổ biến).
- Dữ liệu API: Thuật toán lọc trùng lặp liên tiếp và thuật toán loại bỏ chuỗi API con tuần hoàn có tính chất cấp số cộng dựa trên MalDAE; thiết lập ngưỡng cắt độ dài $N = 1.000$ API đầu tiên.
- Dữ liệu Opcode: Định vị Entry Point từ
Optional Header (AddressOfEntryPoint và ImageBase) để xác định chính xác section thực thi, sử dụng Capstone Disassembler và loại bỏ các opcode giả lệnh của trình biên dịch (dd, db, align).
- Dữ liệu mạng: Sử dụng thư viện
dpkt trích xuất các byte không trùng lặp theo kỹ thuật 3-gram ($n = 3$).
- Mô hình hóa và Học sâu đa thể thức: Token hóa bằng Keras Tokenizer kết hợp Post-padding; nhúng từ bằng Keras Embedding (cho String và API) và Word2Vec Continuous Bag-of-Words (CBOW) cho Opcode và Network; huấn luyện các nhánh mạng nơ-ron chuyên biệt (1D CNN, LSTM) và kết hợp qua lớp Concatenate trước khi phân loại.
Nguồn dữ liệu
- Mẫu mã độc (Malware): Thu thập các tệp thực thi PE thô từ kho lưu trữ mở VirusShare.
- Mẫu lành tính (Benign): Trích xuất từ tập hợp tệp hợp pháp thuộc bộ dữ liệu PE Malware Machine Learning Dataset của Practical Security Analytics LLC.
- Gán nhãn xác thực: Sử dụng REST API của VirusTotal để kiểm tra mã hash SHA-256 hoặc quét toàn bộ tệp, xác định nhãn theo số đông đánh giá của các hãng bảo mật.
Thiết kế và triển khai hệ thống
Hệ thống được thiết kế theo kiến trúc xử lý tuần tự gồm 3 giai đoạn: Phân tích lai $\rightarrow$ Tiền xử lý dữ liệu $\rightarrow$ Phân loại đa thể thức (Multimodal).
[Tập tin PE Windows]
[Tiền xử lý & Làm sạch]
(Lọc nhiễu, NLP, Embedding)
[Mô hình Học sâu Đa thể thức]
[Concatenate Layer]
[Classifier Layer]
[Phân loại nhị phân] [Phân loại đa nhãn]
(Lành tính / Độc hại) (Benign/Trojan/Virus/Worm/Backdoor)
Chi tiết kiến trúc các nhánh học sâu
Mỗi nhánh đầu vào trong mô hình đa thể thức được cấu hình kiến trúc riêng nhằm phù hợp với đặc tính của từng loại dữ liệu:
| Nhánh dữ liệu |
Tầng Embedding |
Kiến trúc mạng nơ-ron thành phần |
Cơ chế trích xuất đặc trưng |
| String |
Keras Embedding (output_dim = 256) |
1D CNN (128 filters, kernel=5, ReLU) $\rightarrow$ 1D CNN (64 filters, kernel=5, ReLU) |
GlobalMaxPooling1D |
| API |
Keras Embedding (output_dim = 256) |
1D CNN (128 filters, kernel=8, ReLU) $\rightarrow$ 1D CNN (64 filters, kernel=8, ReLU) $\rightarrow$ LSTM (32 units, tanh) $\rightarrow$ LSTM (32 units, tanh) |
GlobalMaxPooling1D |
| Opcode |
Word2Vec CBOW (output_dim = 100, window = 5, min_count = 1) |
LSTM (128 units, tanh) $\rightarrow$ LSTM (128 units, tanh) |
Tầng ẩn cuối chuỗi tuần tự |
| Hoạt động mạng |
Word2Vec CBOW (output_dim = 128, window = 1, min_count = 5) |
1D CNN (128 filters, kernel=8, ReLU) $\rightarrow$ MaxPooling1D (pool=5) $\rightarrow$ 1D CNN (64 filters, kernel=4, ReLU) $\rightarrow$ MaxPooling1D (pool=5) $\rightarrow$ 1D CNN (32 filters, kernel=2, ReLU) |
GlobalMaxPooling1D |
Đầu ra của 4 nhánh trên được hợp nhất qua lớp Concatenate để tổng hợp vector đặc trưng đa thể thức, sau đó đưa qua các lớp Dense phân loại (Classifier layer) để đưa ra dự đoán cuối cùng.
Môi trường triển khai thực nghiệm
- Môi trường Sandbox phân tích động: Máy chủ chạy hệ điều hành Ubuntu 18.04, sử dụng VirtualBox để vận hành máy ảo Windows 7 Professional 64-bit SP1. Máy ảo được cài đặt sẵn Adobe Reader 9.0 và Java Runtime Environment (JRE 7). Quá trình phân tích được tự động hóa thông qua Cuckoo REST API (cổng mặc định 8090 hoặc cấu hình 1337). Báo cáo phân tích JSON và tệp lưu lượng
pcap được trích xuất tự động qua script Python bằng phương thức HTTP GET.
- Hạ tầng huấn luyện mô hình: Thực hiện trên hạ tầng máy ảo Kaggle với thông số kỹ thuật:
- CPU: Intel Xeon @ 2.20GHz (4 vCPU cores).
- Bộ nhớ RAM: 29 GB.
- Bộ xử lý đồ họa GPU: NVIDIA Tesla P100 (16 GB VRAM).
- Dung lượng lưu trữ đĩa: 73 GB.
Nội dung chính theo từng chương
Chương 1: TỔNG QUAN ĐỀ TÀI
Chương 1 giới thiệu tính cấp thiết của bài toán bảo vệ hệ thống Windows trước các mối đe dọa mã độc ngày càng gia tăng. Tác giả phân tích các ưu - nhược điểm của 3 hướng tiếp cận hiện hữu (phân tích tĩnh, phân tích động, phân tích lai) và tổng hợp những nghiên cứu ứng dụng NLP tiêu biểu: công trình của Mimura & Ito (dùng printable strings), Tran & Sato (dùng chuỗi API với độ chính xác đạt 99%), Lu (dùng opcode với AUC đạt 0.9x). Từ đó, chương nêu bật hạn chế của các giải pháp trước đây (chỉ dùng đơn thể thức hoặc phụ thuộc vào dữ liệu tĩnh) và xác lập tính mới của đề tài: tiếp cận đa thể thức kết hợp phân tích lai và NLP.
Chương 2: KIẾN THỨC NỀN TẢNG
Chương 2 trình bày chi tiết cơ sở lý thuyết kỹ thuật:
- Cấu trúc tệp tin PE Windows: Phân tích chi tiết các trường dữ liệu quan trọng từ MS-DOS Header (
e_magic, e_lfanew), PE Header, Section Table đến các bảng điều hướng (Import, Export, Relocation, Resource Table).
- Phân loại mã độc: Định nghĩa và mô tả đặc điểm hành vi của 7 loại mã độc: Virus, Worm, Trojan, Ransomware, Spyware, Adware, Backdoor.
- Kỹ thuật phân tích & NLP: Phân tích cú pháp, từ vựng, ngữ nghĩa, ngữ cảnh và so khớp mẫu trong mã độc; đồng thời mô tả bản chất 4 dạng thông tin ngôn ngữ (Strings, API sequence, Opcode, Network traffic cấp gói tin và cấp luồng).
Chương 3: PHƯƠNG PHÁP ĐỀ XUẤT
Chương 3 là phần trọng tâm mô tả chi tiết phương pháp tiếp cận:
- Kiến trúc tổng quan hệ thống 3 khối chức năng.
- Quy trình trích xuất tĩnh: Trích xuất String và thuật toán bóc tách Opcode từ vị trí Entry Point thông qua tính toán
ImageBase và AddressOfEntryPoint, kèm giải pháp lọc bỏ các lệnh không thực thi (dd, db, align).
- Quy trình trích xuất động qua Cuckoo Sandbox để thu thập danh sách tên gọi API và tệp pcap.
- Quy trình tiền xử lý: Thuật toán làm sạch String 2 giai đoạn, thuật toán loại bỏ chuỗi API lặp liên tiếp và chuỗi tuần hoàn cấp số cộng
PURIFY_API_SEQUENCE, kỹ thuật tách byte 3-gram cho dữ liệu mạng bằng thư viện dpkt.
- Thiết lập tầng Tokenizer, Keras Embedding, Word2Vec CBOW và kiến trúc mô hình học sâu kết hợp (1D CNN, LSTM, Concatenate layer).
Chương 4: THỰC NGHIỆM VÀ ĐÁNH GIÁ
Chương 4 trình bày quy trình triển khai và kết quả thử nghiệm:
- Thiết lập môi trường Cuckoo Sandbox trên Ubuntu và cấu hình API client.
- Xây dựng 2 bộ dữ liệu: Tập phân loại nhị phân và Tập phân loại đa nhãn gồm 7.596 mẫu thuộc 5 lớp (Lành tính, Trojan, Virus, Worm, Backdoor) sau khi gắn nhãn qua VirusTotal API.
- Thực nghiệm tối ưu hóa tham số tiền xử lý:
- Xác định tỷ lệ lọc từ phổ biến cho String là 30% sau thử nghiệm trên 20.000 tệp.
- Xác định ngưỡng độ dài chuỗi API tối ưu $N = 1.000$ sau khi khảo sát trên 18.000 tệp (vượt trội hơn các ngưỡng 500, 1.500, 2.000).
- Xác định độ dài n-gram cho dữ liệu mạng tối ưu ở giá trị $n = 3$ (vượt trội hơn $n = 2, 4, 5$).
- Huấn luyện và đánh giá mô hình đa thể thức trên Kaggle GPU qua ma trận nhầm lẫn (confusion matrix) và các chỉ số đánh giá cho cả 2 kịch bản nhị phân và đa nhãn.
Chương 5: KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN
Chương 5 tóm tắt các đóng góp chính của khóa luận trong việc xây dựng hệ thống phát hiện mã độc đa thể thức kết hợp phân tích lai, khẳng định tính khả thi của việc xử lý dữ liệu nhị phân/hành vi dưới góc độ NLP. Đồng thời, chương đề xuất các định hướng mở rộng cho các nghiên cứu tiếp theo.
Kết quả và đóng góp
Kết quả thực nghiệm chính
- Tối ưu hóa tham số tiền xử lý:
- Đã xác định thực nghiệm tỷ lệ loại bỏ từ vựng phổ biến $30%$ cho dữ liệu String để triệt tiêu nhiễu từ các chuỗi thông điệp mặc định.
- Xác lập ngưỡng độ dài $N = 1.000$ cuộc gọi API đầu tiên là khoảng tối ưu nhất về độ chính xác nhận diện hành vi độc hại, giảm độ phức tạp tính toán $O(n^2)$ của thuật toán lọc cấp số cộng.
- Xác định giá trị $n = 3$ (3-gram byte) mang lại hiệu quả phân loại cao nhất đối với dữ liệu lưu lượng mạng pcap.
- Hiệu năng mô hình đa thể thức: Kết quả huấn luyện trên 7.596 mẫu đa nhãn chứng minh mô hình đa thể thức kết hợp 4 nhánh đặc trưng (Strings, API, Opcode, Network) cho khả năng nhận diện toàn diện hơn so với các mô hình đơn thành phần, thể hiện qua ma trận nhầm lẫn của từng nhánh và mô hình tổng hợp.
| Thành phần dữ liệu |
Phương pháp trích xuất |
Kỹ thuật tiền xử lý & NLP |
Tham số tối ưu từ thực nghiệm |
| String |
Phân tích tĩnh tập tin PE |
Làm sạch 2 giai đoạn, Keras Tokenizer |
Lọc bỏ 30% từ tần suất cao |
| API |
Phân tích động (Cuckoo Sandbox) |
Lọc trùng, thuật toán khử cấp số cộng |
Ngưỡng $N = 1.000$ API |
| Opcode |
Disassemble từ Entry Point |
Lọc bỏ dd, db, align, Word2Vec |
Khởi tạo vector chiều 100 |
| Hoạt động mạng |
Trích xuất tệp pcap qua dpkt |
Byte n-gram không trùng lặp, Word2Vec |
Kỹ thuật 3-gram ($n = 3$) |
Đóng góp của đề tài
- Đề xuất quy trình phân tích lai trích xuất đồng thời 4 dạng thông tin mang tính chất ngôn ngữ của tập tin PE Windows (Strings, Opcode, API sequence, Network traffic).
- Xây dựng thuật toán lọc nhiễu chuỗi API có tính chất cấp số cộng và quy trình 2 giai đoạn làm sạch chuỗi String, giúp tối ưu hóa dữ liệu đầu vào cho các mô hình NLP.
- Thiết kế kiến trúc mạng học sâu đa thể thức kết hợp 1D CNN và Bi-LSTM/LSTM thông qua tầng Concatenate, cho phép tích hợp đồng thời các đặc trưng tĩnh và động để tăng cường độ chính xác phân loại mã độc.
Hạn chế và hướng nghiên cứu tiếp
Hạn chế được ghi nhận
- Quá trình phân tích động phụ thuộc vào Cuckoo Sandbox, đòi hỏi tài nguyên và thời gian thực thi môi trường ảo, gây khó khăn cho các kịch bản kiểm tra thời gian thực hoàn toàn.
- Một số họ mã độc có số lượng mẫu thu thập được quá ít trong tập dữ liệu thực tế (như Adware, Ransomware, Spyware, Downloader) nên chưa thể đưa vào tập huấn luyện đa nhãn (phải giới hạn về 5 lớp chính).
- Thuật toán làm sạch chuỗi API khử cấp số cộng có độ phức tạp thời gian lên đến $O(n^2)$, đòi hỏi phải giới hạn độ dài chuỗi $N$ để đảm bảo hiệu năng.
Hướng phát triển tiếp theo
- Mở rộng tập dữ liệu sang nhiều họ mã độc khác và cân bằng dữ liệu cho các nhóm mã độc ít phổ biến.
- Tối ưu hóa thuật toán tiền xử lý chuỗi API nhằm giảm độ phức tạp tính toán.
- Nghiên cứu áp dụng các mô hình ngôn ngữ lớn hoặc kiến trúc Transformer (như BERT) trong việc biểu diễn đặc trưng chuỗi lệnh và hành vi mã độc.
Giá trị tham khảo
Khóa luận là tài liệu tham khảo chuyên môn phù hợp cho:
- Sinh viên, học viên ngành An toàn thông tin, Mạng máy tính và Khoa học máy tính: Tham khảo phương pháp luận kết hợp giữa kỹ thuật dịch ngược tập tin PE, phân tích hành vi sandbox và ứng dụng mô hình học sâu/NLP trong an ninh mạng.
- Nhà nghiên cứu về Phát hiện phần mềm độc hại (Malware Detection): Tham khảo chi tiết về thuật toán xử lý dữ liệu chuỗi API (
PURIFY_API_SEQUENCE), phương pháp bóc tách Opcode chuẩn xác từ Entry Point (AddressOfEntryPoint) và kỹ thuật nhúng byte lưu lượng mạng 3-gram.
- Kỹ sư bảo mật và phân tích mã độc (SOC/DFIR): Tham khảo mô hình tự động hóa phân tích tập tin PE qua Cuckoo Sandbox REST API kết hợp kiểm tra nhãn VirusTotal.
Câu hỏi thường gặp
1. Tại sao đề tài lại trích xuất Opcode bắt đầu từ Entry Point thay vì chỉ đọc section .text?
Trong các tập tin PE bị nén (packed) hoặc làm rối mã (obfuscated), tên section .text có thể bị thay đổi hoặc phân bổ lại. Việc tính toán địa chỉ bắt đầu thực thi thông qua trường AddressOfEntryPoint trong Optional Header kết hợp với ImageBase giúp xác định chính xác vị trí bắt đầu thực thi thực tế trong không gian địa chỉ ảo, từ đó disassemble chính xác các lệnh thực thi đầu tiên của chương trình.
2. Thuật toán loại bỏ chuỗi API con cấp số cộng giải quyết vấn đề gì của mã độc?
Nhiều loại mã độc sử dụng cơ chế gây nhiễu bằng cách gọi lặp đi lặp lại một nhóm API không quan trọng theo chu kỳ nhằm làm tràn bộ nhớ phân tích hoặc đánh lừa các hệ thống nhận diện mẫu. Thuật toán phát hiện vị trí xuất hiện của API theo cấp số cộng giúp định vị và xóa bỏ các chuỗi con tuần hoàn này, chỉ giữ lại một đại diện duy nhất để làm gọn chuỗi dữ liệu.
3. Những tham số tiền xử lý nào đã được tối ưu hóa qua thực nghiệm trong khóa luận?
Tác giả đã xác định được 3 ngưỡng tham số tối ưu thông qua thực nghiệm:
- Tỷ lệ lọc từ vựng tần suất cao cho String: $30%$ (thực nghiệm trên 20.000 tệp).
- Giới hạn độ dài chuỗi API đầu vào: $N = 1.000$ API đầu tiên (thực nghiệm trên 18.000 tệp).
- Bậc n-gram trích xuất byte hoạt động mạng từ tệp pcap: $n = 3$ (3-gram).
4. Tập dữ liệu phân loại đa nhãn trong nghiên cứu gồm những nhãn nào và có bao nhiêu mẫu?
Tập dữ liệu đa nhãn gồm tổng cộng 7.596 mẫu được chia thành 5 nhãn: Lành tính (Benign), Trojan, Virus, Worm và Backdoor. Các nhãn khác trong tập ban đầu (Adware, Downloader, Ransom, Spyware) bị loại bỏ do số lượng mẫu quá ít, không đảm bảo tính tin cậy cho quá trình huấn luyện.
Kết luận
Khóa luận tốt nghiệp của tác giả Lâm Thiệu An và Nguyễn Quang Huy đã xây dựng thành công một hướng tiếp cận đa thể thức cho bài toán phát hiện và phân loại mã độc Windows bằng cách kết hợp phân tích lai và các kỹ thuật xử lý ngôn ngữ tự nhiên. Bằng việc bóc tách và tinh chỉnh 4 nguồn dữ liệu đặc trưng (Strings, Opcode, API, Network traffic), hệ thống đã tối ưu hóa được vector biểu diễn hành vi của tập tin PE thông qua các mạng 1D CNN và LSTM. Kết quả nghiên cứu chứng minh tính hiệu quả của việc mô hình hóa các thuộc tính mã độc dưới dạng ngôn ngữ tự nhiên, mở ra giải pháp khả thi trong việc nâng cao độ chính xác nhận diện các biến thể phần mềm độc hại.