Phân Tích Malware: Hướng Dẫn Sử Dụng Công Cụ và Kỹ Thuật (CMP399)
Tổng quan về giáo trình
Giáo trình thực hành "Phân Tích Malware: Hướng Dẫn Sử Dụng Công Cụ và Kỹ Thuật" mang mã học phần CMP399, được biên soạn và lưu hành trong hệ thống học liệu học thuật của Trường Đại học Công nghệ TP.HCM (HUTECH) thông qua cổng thông tin tailieuhoctap@hutech. Tài liệu được thiết kế nhằm phục vụ khối ngành Công nghệ thông tin, Kỹ thuật mạng và chuyên ngành An toàn thông tin ở cấp độ đào tạo đại học.
Mục tiêu học tập của học phần CMP399 tập trung vào việc trang bị cho người học phương pháp luận chuẩn mực về quy trình giải mã, thẩm định hành vi và bóc tách cấu trúc của các phần mềm độc hại (malware) trên nền tảng hệ điều hành Windows. Sau khi hoàn thành học phần, người học có khả năng:
- Phân loại và nhận dạng cấu trúc tệp thực thi di động (Portable Executable - PE format) bao gồm các tệp tin thực thi (.exe) và thư viện liên kết động (.dll).
- Áp dụng các phương pháp phân tích tĩnh cơ bản (Basic Static Analysis) và nâng cao (Advanced Static Analysis) bằng các công cụ dịch ngược (Disassembler) và mô phỏng tập lệnh hợp ngữ x86.
- Thiết lập môi trường mạng cô lập an toàn để thực thi phân tích động (Dynamic Analysis), giám sát hoạt động hệ thống và điều tra lưu lượng mạng.
- Sử dụng trình gỡ lỗi (Debugger) để theo dõi luồng thực thi cấp thanh ghi và vô hiệu hóa các kỹ thuật chống phân tích hoặc tự hủy của mã độc.
Tài liệu được cấu trúc theo phương pháp tiếp cận thực hành trực tiếp (hands-on lab-driven), xây dựng dựa trên bộ mẫu thử nghiệm chuẩn hóa quốc tế Practical Malware Analysis Labs (practicalmalwareanalysis.com/labs). Điểm đặc thù của giáo trình là sự kết hợp tuần tự từ các kỹ thuật phân tích bề mặt, phân tích tĩnh tầng thấp đến kỹ thuật theo dõi động thời gian thực, cung cấp một khung làm việc có hệ thống cho quá trình điều tra mã độc.
Nội dung kiến thức cốt lõi
Các chương/chủ đề chính
Nội dung giáo trình CMP399 được chia thành các bài thực hành chuyên đề với lộ trình phát triển kiến thức từ cơ bản đến nâng cao:
Bài 1: Kỹ thuật Phân tích Tĩnh Cơ bản (Basic Static Analysis)
Bài học tập trung vào việc khảo sát tệp tin mà không cần kích hoạt mã thực thi:
- Khảo sát chữ ký số và dữ liệu nhận dạng: Sử dụng nền tảng
VirusTotalđể quét các mẫuLab01-01.exevàLab01-01.dll. - Phân tích cấu trúc PE Header: Sử dụng công cụ
PEviewđể kiểm tra mốc thời gian biên dịch (Time Date Stamp) và cấu trúc phân vùng tệp. - Phát hiện Packer và Trình biên dịch: Ứng dụng
PEiDnhằm xác định mã độc có bị nén hay che giấu bằng các công cụ đóng gói hay không. - Trích xuất chuỗi ký tự (Strings Extraction): Ứng dụng công cụ
BinTextvà tiện íchStrings(Sysinternals) với bộ lọc độ dài chuỗi tối thiểu (Min. Text length). Qua đó nhận diện các hàm API quan trọng nhưCreateProcessA,Sleep,FindNextFileA,FindFirstFileA, cùng các dấu hiệu giả mạo thư viện hệ thống (kỹ thuật typosquatting: sử dụngC:\windows\system32\kerne132.dllthay vìkernel32.dll). - Phân tích bảng nhập hàm (Import Table): Sử dụng
Dependency Walkerđể kiểm tra các tệp tin phụ thuộc hệ thống nhưMSVCRT.DLLvàKERNEL32.DLL. - Giải nén tệp tin (Unpacking): Thực hiện giải nén mẫu
Lab01-02.exebị đóng gói bằng UPX thông qua câu lệnh:
Sau đó phân tích môi trường biên dịchUPX -d -o Lab01-02-unpacked.exeMicrosoft Visual C++ 6.0, các hàm API mạng nhập vào (InternetOpenUrlA,InternetOpenA) và chuỗi dịch vụ độc hại mang tênMalService.
Bài 2: Kỹ thuật Phân tích Tĩnh Nâng cao (Advanced Static Analysis)
Chủ đề này đào tạo chuyên sâu về kiến trúc máy tính và dịch ngược mã nhị phân:
- Mô phỏng kiến trúc vi xử lý x86 với Jasmin: Thiết lập môi trường Java và công cụ giả lập
Jasmin(Jasmin-1.jar) để nghiên cứu hoạt động của các thanh ghi đa năng (EAX,EBX,ECX,EDX), con trỏ ngăn xếp (ESP), con trỏ lệnh (EIP) và các cờ trạng thái (Zero Flag). - Khảo sát tập lệnh hợp ngữ x86:
- Lệnh truyền dữ liệu
movvà tính toán số họcadd:mov eax, 4 mov ebx, 6 mov [eax], ebx mov ecx, eax add ecx, ebx mov [eax + 4], ecx - Lệnh thao tác ngăn xếp
pushvàpop: Nghiên cứu cơ chế vào sau ra trước (LIFO) qua chuỗi lệnh đẩy các giá trị từEAX,EBX,ECX,EDXvào Stack và rút ngược lại bằng chế độ thực thi từng bước (Step).
- Lệnh truyền dữ liệu
- Dịch ngược tệp tin bằng IDA Pro: Sử dụng phiên bản
IDA Pro Freewaređể phân tích tệp thư viện độngLab05-01.dll:- Xác định hàm nhập môn
DLLMaintrong cửa sổFunctions window. - Tra cứu bảng nhập hàm (Imports window) để tìm địa chỉ gọi hàm phân giải tên miền
gethostbyname. - Điều hướng biểu đồ hàm và mã assembly bằng phím cách (
SPACEBAR) tại địa chỉ biến cục bộ0x10001656. - Tìm các điểm tham chiếu chéo (Cross-references / Xrefs) đối với chuỗi thực thi dòng lệnh
\cmd.exe /cvà các định danh mã độc nhưaHiMasterDDDD.
- Xác định hàm nhập môn
Bài 3: Kỹ thuật Phân tích Động Cơ bản và Nâng cao (Dynamic Analysis & Debugging)
Bài học hướng dẫn thực thi mẫu độc hại trong môi trường kiểm soát:
- Thiết lập môi trường giả lập mạng: Cấu hình hệ thống bao gồm máy chủ nạn nhân Windows Server 2008 và máy ảo Kali Linux chạy dịch vụ mô phỏng Internet
INetSim. Cấu hình địa chỉ DNS cục bộ trên card mạng trỏ trực tiếp về địa chỉ IP của máy Kali Linux. - Giám sát thời gian thực với Sysinternals Suite:
Process Explorer: Xác định các tiến trình con được sinh ra (nhưservices.exe,setup), bóc tách tệp tin độc hại tự sao chép vàoC:\Windows\System32\vmx32to64.exe, nhận diện đối tượng Mutant/Mutex nhằm tránh chạy trùng lặp, xem danh sách DLL nạp vào tiến trình (wshtcpip.dll).Process Monitor (Procmon): Thiết lập bộ lọc sự kiện theo tên tiến trình (Process Name = Lab03-01.exe), lọc các tác vụ ghi khóa cấu hình (RegSetValue) và ghi tệp (WriteFile). Bóc tách cơ chế duy trì quyền điều khiển (Persistence mechanism) thông qua khóa Run key registry và các sự kiện sinh chuỗi ngẫu nhiên (RNG\Seed).
- Bắt và phân tích lưu lượng mạng bằng Wireshark và INetSim: Kiểm tra tệp nhật ký
/var/log/inetsim/report/report.*, bắt gói tin Wireshark với bộ lọcFrame contains practicalmalwareanalysis, kiểm tra quá trình bắt tay ba bước (TCP handshake), phân tích luồng kết nối HTTPS mã hóa (Change Cipher Spec) và tái tạo luồng dữ liệu truyền tải (Follow TCP Stream) để phát hiện tín hiệu liên lạc máy chủ điều khiển (C2 Beacons). - Kỹ thuật gỡ lỗi động với OllyDbg: Phân tích luồng thực thi mẫu
Lab09-01.exe:- Đối chiếu điểm vào hàm
Maintừ IDA Pro sang OllyDbg tại các địa chỉ bộ nhớ/offset:0x403945,0x401000,0x40101B,0x402B08. - Đặt các điểm dừng thực thi (Breakpoints), phân tích các mã lỗi trả về (Non-zero error code theo MSDN Registry API).
- Phát hiện cơ chế tự hủy thông qua câu lệnh gọi thực thi xóa tệp:
ASCII /c del path-to-executable >> NUL.
- Đối chiếu điểm vào hàm
flowchart TD
A["Tệp tin mẫu (PE Files)"] --> B["BÀI 1: Phân tích Tĩnh Cơ bản"]
B --> B1["VirusTotal / PEview / PEiD"]
B --> B2["Trích xuất Strings & Imports"]
B --> B3["Xử lý Packed File (UPX)"]
B --> C["BÀI 2: Phân tích Tĩnh Nâng cao"]
C --> C1["Mô phỏng Hợp ngữ x86 (Jasmin)"]
C --> C2["Dịch ngược IDA Pro & Xrefs"]
C --> D["BÀI 3: Phân tích Động & Debugging"]
D --> D1["Giám sát Hệ thống (ProcMon / ProcExp)"]
D --> D2["Mô phỏng Mạng (INetSim / Wireshark)"]
D --> D3["Gỡ lỗi thời gian thực (OllyDbg)"]
Kiến thức nền tảng được xây dựng
Giáo trình thiết lập hệ thống lý thuyết và nền tảng nguyên lý kỹ thuật bao gồm:
- Cấu trúc Định dạng Tệp PE (Portable Executable): Cấu tạo của Header, Data Directories, Import Address Table (IAT), Export Table và Section Headers (.text, .data, .rsrc).
- Kiến trúc Vi xử lý x86 và Quản lý Bộ nhớ: Cấu trúc thanh ghi, cơ chế định địa chỉ con trỏ, tổ chức khung ngăn xếp hàm (Stack Frame) và hoạt động của lệnh rẽ nhánh/nhảy có điều kiện.
- Mô hình Giao tiếp Windows API: Phương thức các phần mềm độc hại tương tác với hệ điều hành thông qua việc gọi các hàm API quản lý tiến trình, registry, thao tác tệp và mạng.
- Hành vi Độc hại và Kỹ thuật Che giấu: Kỹ thuật nén tệp (packing), kỹ thuật giả mạo tên thư viện (typosquatting), cơ chế duy trì quyền khởi động (persistence qua Run Keys), kỹ thuật đồng bộ qua Mutex và kỹ thuật tự xóa dấu vết (self-deletion).
Kỹ năng phát triển
- Kỹ năng Kỹ thuật (Technical Skills): Khả năng sử dụng thành thạo các công cụ chuyên ngành (PEview, PEiD, Dependency Walker, UPX, Jasmin, IDA Pro, Process Explorer, Process Monitor, Wireshark, INetSim, OllyDbg).
- Kỹ năng Phân tích (Analytical Skills): Bóc tách mối liên hệ giữa các lời gọi hàm API và hành vi thực tế; giải mã các chuỗi ký tự bị che giấu; đọc hiểu mã hợp ngữ; nhận diện dấu vết mạng (IOCs - Indicators of Compromise).
- Năng lực Thực hành (Practical Competencies): Xây dựng môi trường sandbox an toàn, thiết lập các bộ lọc dữ liệu chính xác trên Procmon và Wireshark để cô lập sự kiện đáng ngờ giữa hàng nghìn tác vụ hệ điều hành.
Phương pháp giảng dạy và học tập
Phương pháp tiếp cận sư phạm
Giáo trình áp dụng mô hình sư phạm thực nghiệm kết hợp giải quyết vấn đề (Lab-based & Problem-based learning). Người học không tiếp cận mã độc thuần túy qua lý thuyết trừu tượng mà thông qua chuỗi các bước hướng dẫn thao tác cụ thể trên từng mẫu nhị phân được chuẩn bị trước. Quy trình học tập luôn đi theo mô hình phễu: từ quan sát các dấu hiệu tĩnh bên ngoài, mô phỏng cấu trúc bên trong, đến quan sát trực tiếp hành vi khi kích hoạt mã.
Bài tập và Tình huống thực hành (Case Studies)
Tài liệu sử dụng hệ thống bài lab chuẩn hóa:
- Tình huống tệp tin đóng gói (Packed Binary Case): Phân tích
Lab01-02.exeyêu cầu sinh viên phải sử dụng dòng lệnh UPX để giải nén nhị phân trước khi có thể đọc được các hàm API mạng và chuỗiMalService. - Tình huống thư viện liên kết động ẩn (Dynamic Library Case): Phân tích
Lab05-01.dlltrong IDA Pro, truy vết các chuỗi thực thi ẩn và xác định các hàm xuất/nhập. - Tình huống mã độc chạy nền và tự hủy (Persistence & Self-Deletion Case): Phân tích mẫu
Lab03-01.exevàLab09-01.exe, giám sát việc tự nhân bản thànhvmx32to64.exe, tạo Mutex và thực thi lệnh gỡ bỏ chính nó thông qua Command Prompt.
sequenceDiagram
autonumber
participant A as Máy phân tích (Windows VM)
participant M as Malware (Lab03-01.exe)
participant R as Windows Registry / FS
participant N as Kali Linux (INetSim)
A->>M: Kích hoạt thực thi mẫu
M->>R: Ghi tệp C:\Windows\System32\vmx32to64.exe
M->>R: Thiết lập khóa Run Key để Persistence
M->>N: Gửi truy vấn DNS & kết nối Beacon
N-->>M: Phản hồi dịch vụ mạng giả lập
A->>A: Ghi nhận qua ProcMon, Wireshark & INetSim
Phương pháp đánh giá và Hướng dẫn tự học
- Đánh giá thực hành: Đánh giá sinh viên dựa trên khả năng trích xuất chính xác các chỉ số thỏa hiệp (IOCs), bao gồm: mã băm tệp, danh sách hàm API đáng ngờ, khóa Registry bị can thiệp, địa chỉ IP/tên miền C2 và chữ ký Mutex.
- Hướng dẫn tự học: Sinh viên cần tuân thủ nghiêm ngặt nguyên tắc an toàn phòng lab: chỉ thao tác trên máy ảo biệt lập (Host-Only Network), tắt các tính năng chia sẻ thư mục giữa máy thật và máy ảo, luôn tạo các điểm phục hồi (Snapshots) trước khi thực thi bất kỳ mẫu mã độc nào.
Điểm nổi bật và cập nhật
Tích hợp công cụ phân tích tiêu chuẩn công nghiệp
Giáo trình tổng hợp đầy đủ các công cụ cốt lõi được sử dụng trong các trung tâm điều hành an ninh mạng (SOC) và các đội ứng cứu sự cố (DFIR):
- Nhóm công cụ thẩm định tĩnh:
PEview,PEiD,Dependency Walker,BinText,Strings. - Nhóm công cụ dịch ngược và giả lập:
Jasmin,IDA Pro. - Nhóm công cụ giám sát hành vi hệ thống: Bộ công cụ
Sysinternals(Process Explorer,Process Monitor). - Nhóm công cụ mô phỏng và phân tích mạng:
Wireshark,INetSim. - Nhóm công cụ gỡ lỗi nhị phân:
OllyDbg.
Tính ứng dụng thực tế và Chuẩn hóa quốc tế
Nội dung tài liệu bám sát hệ thống bài tập thực hành từ bộ giáo trình quốc tế Practical Malware Analysis, bảo đảm tính chuẩn xác về mặt kỹ thuật và tính tương thích với các tiêu chuẩn nghề nghiệp trong lĩnh vực phân tích mã độc và dịch ngược phần mềm (Reverse Engineering). Các tình huống phân tích phản ánh chính xác các kỹ thuật tấn công thực tế như tạo dịch vụ ẩn danh, duy trì quyền kiểm soát hệ thống, giao tiếp C2 beacon qua giao thức HTTP/HTTPS và cơ chế tự xóa dấu vết sau khi lây nhiễm.
Đối tượng sử dụng giáo trình
Phân loại người học và Ngành đào tạo
- Sinh viên chuyên ngành: Tài liệu được biên soạn cho sinh viên năm 3 và năm 4 thuộc các ngành An toàn thông tin, Kỹ thuật mạng, Khoa học máy tính hoặc Công nghệ thông tin.
- Yêu cầu kiến thức tiên quyết (Prerequisites):
- Kiến thức cơ bản về Hệ điều hành Windows (quản lý tiến trình, dịch vụ, tệp tin hệ thống và Windows Registry).
- Kiến thức mạng căn bản (mô hình TCP/IP, DNS, HTTP/HTTPS, phân tích gói tin).
- Khái niệm cơ bản về Kiến trúc máy tính và tập lệnh Assembly x86.
Ứng dụng cho Giảng viên và Tự học
- Giảng viên: Sử dụng tài liệu làm đề cương bài giảng và tài liệu hướng dẫn thực hành trong phòng lab (Lab manual) cho học phần Phân tích mã độc hoặc An toàn mạng nâng cao.
- Kỹ sư bảo mật và Tự nghiên cứu: Cung cấp tài liệu tham khảo theo từng bước cho các chuyên viên phân tích bảo mật sơ cấp (Junior SOC Analyst, Incident Responder) mong muốn củng cố kỹ năng phân tích nhị phân và dịch ngược phần mềm.
Câu hỏi thường gặp
1. Giáo trình này phù hợp với ai?
Giáo trình được thiết kế chuyên biệt cho sinh viên đại học chuyên ngành An toàn thông tin, Công nghệ thông tin (đặc biệt tại HUTECH với mã môn CMP399), cũng như các kỹ sư an ninh mạng muốn học phương pháp phân tích mã độc trên hệ điều hành Windows một cách bài bản.
2. Cần kiến thức nền nào để học tốt giáo trình này?
Người học cần nắm vững kiến thức về kiến trúc máy tính, nguyên lý hoạt động của hệ điều hành Windows, giao thức mạng căn bản (TCP/IP, DNS) và có hiểu biết cơ bản về ngôn ngữ lập trình C/C++ hoặc Assembly.
3. Điểm khác biệt của giáo trình này so với các tài liệu lý thuyết khác là gì?
Tài liệu tập trung hoàn toàn vào kỹ năng thực hành thông qua các case study cụ thể (bộ lab chuẩn hóa từ Lab01-01 đến Lab09-01). Toàn bộ quy trình được minh họa chi tiết từng câu lệnh, từng thông số bộ nhớ, địa chỉ offset và giao diện công cụ cụ thể.
4. Làm sao để tự thực hành an toàn theo tài liệu?
Người học bắt buộc phải xây dựng môi trường phòng thí nghiệm ảo hóa (sử dụng VMware hoặc VirtualBox) với hai máy ảo: một máy Windows nạn nhân và một máy Kali Linux chạy dịch vụ INetSim. Cả hai máy phải được cấu hình trong mạng nội bộ cô lập (Host-Only/Internal Network) và tuyệt đối không kết nối Internet trực tiếp.
5. Có những công cụ bổ trợ nào được hướng dẫn trong tài liệu?
Tài liệu hướng dẫn sử dụng đồng bộ nhiều công cụ bao gồm: VirusTotal, PEview, PEiD, BinText, Strings, Dependency Walker, UPX, Jasmin, IDA Pro, Process Explorer, Process Monitor, Wireshark, INetSim và OllyDbg.
Kết luận
Giáo trình "Phân Tích Malware: Hướng Dẫn Sử Dụng Công Cụ và Kỹ Thuật" (Mã học phần CMP399) cung cấp một lộ trình đào tạo thực hành toàn diện về kỹ thuật phân tích mã độc trên hệ thống Windows. Thông qua việc phân bổ kiến thức mạch lạc từ phân tích tĩnh cơ bản, phân tích mã nguồn hợp ngữ, dịch ngược nhị phân cho đến phân tích động và gỡ lỗi bộ nhớ, tài liệu trang bị cho người học nền tảng kỹ năng điều tra an ninh mạng vững chắc. Việc tuân thủ theo các bước hướng dẫn và khai thác hiệu quả hệ thống bài lab chuẩn hóa sẽ giúp người học hình thành tư duy phân tích hệ thống và năng lực ứng phó sự cố an toàn thông tin chuyên nghiệp.