Tổng quan về giáo trình

Giáo trình "Thực hành Phân tích Mã độc" (mã học phần: 2021.CMP399) được biên soạn bởi TS. Văn Thiên Hoàng và ThS. Dương Minh Chiến, phát hành nội bộ phục vụ công tác đào tạo tại Trường Đại học Công nghệ TP.HCM (HUTECH). Mọi đóng góp học thuật và phản hồi chuyên môn đối với tài liệu được tiếp nhận qua ban biên tập tại địa chỉ email tailieuhoctap@hutech.vn. Trong chương trình đào tạo bậc đại học khối ngành Công nghệ thông tin và An toàn thông tin, học phần này giữ vai trò trang bị kiến thức chuyên sâu thuộc nhóm kỹ thuật phòng thủ và phân tích mã nguy hại.

Mục tiêu học tập của giáo trình tập trung vào việc cung cấp cho sinh viên nền tảng nguyên tắc, các phương pháp tiếp cận kỹ thuật và năng lực giải quyết vấn đề thực tế liên quan đến cấu trúc tệp nhị phân, hành vi xâm nhập và kiến trúc hệ thống của mã độc. Tài liệu định hình lộ trình đào tạo từ mức độ nhận diện cơ bản đến phân tích chuyên sâu thông qua 4 bài thực hành lớn: Kỹ thuật phân tích cơ bản, Kỹ thuật phân tích tĩnh nâng cao, Kỹ thuật phân tích động nâng cao và Phân tích mã độc chuyên đề.

Điểm đặc thù của giáo trình là cách tiếp cận hoàn toàn dựa trên thực nghiệm (hands-on). Thay vì dừng lại ở các khái niệm lý thuyết trừu tượng, nội dung tài liệu liên kết trực tiếp với bộ mẫu nhị phân thực tế từ dự án Practical Malware Analysis Labs (như các tệp tin Lab01-01.exe, Lab01-02.exe, Lab03-01.exe, Lab05-01.dll, Lab09-01.exe). Từng bước hướng dẫn đều cung cấp chi tiết địa chỉ lệnh, trạng thái thanh ghi và các thông số kỹ thuật kiểm chứng trên môi trường phòng thí nghiệm an toàn.


Nội dung kiến thức cốt lõi

Các chương/chủ đề chính

Giáo trình được tổ chức thành 4 bài thực hành với logic phát triển kiến thức từ bề mặt cấu trúc tệp đến mã nguồn hợp ngữ và cơ chế tương tác hệ thống:

  • Bài 1: Kỹ thuật phân tích cơ bản (Trang 1 – 11): Tập trung vào các kỹ thuật phân tích bề mặt không cần thực thi mã. Nội dung chia làm hai phần chính:

    • Phân tích cấu trúc tập tin PE (Portable Executable) EXE và DLL: Sử dụng mẫu Lab01-01.exe và Lab01-01.dll. Người học thực hiện xác định mã băm SHA256 trên VirusTotal; dùng công cụ PEview để đối chiếu Time Date Stamp (chứng minh hai tệp biên dịch cách nhau trong vòng một phút, thuộc cùng gói tấn công); dùng PEiD nhận diện trình biên dịch Microsoft Visual C++ 6.0 DLL; dùng BinText lọc chuỗi ký tự (với tham số Min. Text length = 4) nhằm phát hiện các hàm Windows API (CreateProcessA, Sleep, FindNextFileA, FindFirstFileA, CopyFileA), các thư viện liên kết (KERNEL32.dll, WS2_32.dll, MSVCRT.dll), đường dẫn giả mạo hệ thống (C:\windows\system32\kerne132.dll thay chữ "l" bằng số "1"), và chuỗi cảnh báo WARNING_THIS_WILL_DESTROY_YOUR_MACHINE. Dùng Dependency Walker để khảo sát các hàm import xử lý mạng (bind, connect, ioctlsocket).
    • Phân tích tập tin đóng gói UPX: Sử dụng mẫu Lab01-02.exe. Nhận diện trạng thái bị nén qua PEiD với section UPX1, entrypoint 00005410 và bytes mở đầu 60,BE,00,50. Thực hiện kỹ thuật giải nén bằng công cụ dòng lệnh UPX (upx -d -o Lab01-02-unpacked.exe). Sau khi giải nén, kiểm tra lại bằng Dependency Walker và lệnh strings để trích xuất API mạng InternetOpenUrlA, InternetOpenA cùng chuỗi dịch vụ MalService và URL kết nối http://www.malwareanalysisbook.com.
  • Bài 2: Kỹ thuật phân tích tĩnh nâng cao (Trang 12 – 26): Trang bị phương pháp khảo sát mã máy và kỹ thuật dịch ngược (disassembly).

    • Mô phỏng hợp ngữ x86 với Jasmin 1.3: Làm việc trên môi trường giả lập Java để tìm hiểu kiến trúc CPU x86 32-bit: các thanh ghi dữ liệu (EAX, EBX, ECX, EDX), con trỏ ngăn xếp mở rộng (ESP), con trỏ lệnh (EIP), hệ thống cờ (Flags: Zero, Carry, Sign, Overflow). Thao tác với các chỉ lệnh cơ bản: lệnh nạp mov, lệnh số học add, cơ chế quản lý ngăn xếp LIFO/FILO qua cặp lệnh push và pop, cùng bài toán đảo ngược thứ tự dữ liệu trên bộ nhớ RAM mô phỏng giới hạn 4096 byte (0x1000).
    • Phân tích tĩnh với IDA Pro Freeware: Thực hành trực tiếp trên tệp tin Lab05-01.dll. Xác định địa chỉ xuất phát điểm DllMain trong Functions window; kiểm tra hàm API gethostbyname trong Imports window thuộc thư viện WS2_32.dll; khảo sát hàm con sub_10001656 tại địa chỉ 0x10001656 để đếm biến cục bộ (sub esp, 678h); sử dụng tính năng tìm kiếm chuỗi để định vị lệnh gọi \cmd.exe /c (và \command.exe /c); phân tích luồng điều khiển qua Graph View và tham chiếu chéo (XREF) tại hàm sub_1000FF58 để phát hiện cơ chế backdoor gửi chuỗi định dạng thông tin hệ thống Hi,Master [%d/%d/%d %d:%d:%d] (bao gồm Machine UpTime, Machine IdleTime, Encrypt Magic Number For This Remote Shell Session).
  • Bài 3: Kỹ thuật phân tích động nâng cao (Trang 27 – 45): Khảo sát hành vi mã độc trong quá trình chạy thực tế trên máy ảo.

    • Phân tích động cơ bản trên mẫu Lab03-01.exe: Phân tích sơ bộ qua PEview và Strings (chỉ import duy nhất ExitProcess, chứa chuỗi URL https://practicalmalwareanalysis.com và khóa VideoDriver). Thiết lập môi trường mạng cô lập: máy ảo Windows tương tác với máy ảo Kali Linux chạy dịch vụ INetSim đóng vai trò máy chủ HTTP/DNS giả lập. Sử dụng Process Explorer phát hiện mutant/mutex có tên WinVMX32 và kiểm tra DLL mạng nạp vào tiến trình (ws2_32.dll, wshtcpip.dll). Dùng Process Monitor thiết lập bộ lọc (Process Name, WriteFile, RegSetValue) để ghi nhận hành vi tự sao chép thành C:\Windows\System32\vmx32to64.exe và tạo cơ chế khởi động cùng hệ thống (Persistence Mechanism) thông qua Run key VideoDriver trong Windows Registry. Dùng Wireshark kết hợp log INetSim (/var/log/inetsim/report/report.txt) kiểm tra luồng TCP Stream trên cổng 443 nhằm xác định gói tin beaconing 256 bytes ngẫu nhiên.
    • Gỡ lỗi động với OllyDbg 1.10: Thực hành trên tệp Lab09-01.exe. Định vị hàm main tại địa chỉ 0x00402AF0 bằng IDA Pro, sau đó đặt Breakpoint trong OllyDbg. Dùng các phím chức năng F7 (Step into), F8 (Step over), F9 (Run) để theo dõi việc kiểm tra số lượng tham số dòng lệnh (argc = 1 tại 0x402AFD), kiểm tra khóa registry cấu hình SOFTWARE\Microsoft\XPS qua hàm RegOpenKeyExA tại 0x40101B, và giải mã hàm tự xóa mã độc (Self-deletion) tại 0x402410 bằng cách sử dụng GetModuleFileNameA, GetShortPathNameA để xây dựng chuỗi thực thi cmd.exe /c del <đường_dẫn> >> NUL.
  • Bài 4: Phân tích mã độc (Trang 46 – 56): Tổng hợp phân tích hành vi và giải thuật:

    • Phân tích hành vi kết hợp công cụ PEview, Process Monitor, và phân tích tài nguyên nhị phân bằng Resource Hacker.
    • Phân tích thuật toán mã hóa dữ liệu trong mã độc bằng việc phối hợp công cụ Strings, IDA Pro và PEview.

Kiến thức nền tảng được xây dựng

Giáo trình củng cố các khối lý thuyết hệ thống nền tảng:

  • Cấu trúc định dạng tệp PE: Cấu trúc các trường Header, bảng Section (.text, .data, .rdata), địa chỉ nạp nạp ảo (ImageBase), con trỏ vào (EntryPoint), bảng mục nhập import/export.
  • Kiến trúc máy tính và tập lệnh x86: Mô hình bộ nhớ phân đoạn, không gian địa chỉ ngăn xếp (Stack), khung hàm gọi (Stack Frame), các quy ước truyền tham số qua thanh ghi và ngăn xếp.
  • Tương tác hệ điều hành Windows cấp thấp: Hệ thống hàm Windows Native API quản lý tiến trình (CreateProcessA), quản lý luồng, cơ chế đồng bộ hóa tiến trình qua Mutex/Mutant, hệ thống Registry và kỹ thuật duy trì quyền kiểm soát (persistence).
  • Giao thức mạng phục vụ điều khiển mã độc: Phân tích luồng bắt tay TCP (TCP handshake), phân giải tên miền DNS giả lập, và các mẫu dữ liệu gửi định kỳ (beaconing) về máy chủ điều khiển (C2 Server).

Kỹ năng phát triển

  • Kỹ năng kỹ thuật: Vận hành thành thạo bộ công cụ phân tích an toàn thông tin chuyên dụng gồm PEview, PEiD, BinText, Dependency Walker, UPX, Jasmin, IDA Pro, Process Monitor, Process Explorer, Wireshark, INetSim, OllyDbg và Resource Hacker.
  • Kỹ năng phân tích logic: Năng lực đọc hiểu mã dịch ngược hợp ngữ, nhận dạng các khối lệnh điều kiện, phân tích các lệnh gọi API hệ thống để suy đoán mục đích hoạt động của phần mềm độc hại.
  • Kỹ năng thực hành an toàn: Xây dựng và cấu hình môi trường phân tích khép kín (Sandbox/Virtual Machine), cô lập mạng máy tính và kỹ thuật trích xuất các chỉ số cảnh báo xâm nhập (IOCs - Indicators of Compromise).

Phương pháp giảng dạy và học tập

Giáo trình áp dụng mô hình giảng dạy thực nghiệm dựa trên tình huống thực tế (case-based learning). Toàn bộ nội dung lý thuyết về cấu trúc mã độc được lồng ghép trực tiếp vào các bài lab cụ thể. Sinh viên được cung cấp các mẫu nhị phân đã được đóng gói hoặc điều chỉnh để tìm hiểu từng thuộc tính kỹ thuật. Các bước thực hiện được chuẩn hóa dưới dạng quy trình có chỉ dẫn chi tiết: tải công cụ, thiết lập tham số lọc, đặt điểm ngắt (breakpoint), theo dõi giá trị thay đổi trên thanh ghi và giải thích ý nghĩa sự kiện.

Hệ thống bài tập yêu cầu sinh viên phải trực tiếp thao tác và chụp lại ảnh minh chứng trên hệ thống phòng máy:

  • Minh chứng giá trị chuỗi băm SHA256 của tệp Lab01-01.exe và Lab01-01.dll trên VirusTotal.
  • Ảnh chụp màn hình vị trí hàm DLLMain, chuỗi gethostbyname, bảng biến cục bộ của hàm tại địa chỉ 0x10001656 trong IDA Pro.
  • Ảnh chụp các sự kiện hệ thống tạo tệp vmx32to64.exe và ghi khóa VideoDriver trong Process Monitor.
  • Ảnh chụp gói tin TCP stream chứa 256 byte ngẫu nhiên trong Wireshark.

Phương pháp đánh giá môn học được phân chia cụ thể theo quy chế đào tạo:

  • Điểm quá trình (trọng số 50%): Gồm điểm kiểm tra thường xuyên trong quá trình học tập, điểm kiểm tra giữa học phần, điểm làm bài tập thực hành trên lớp và điểm đánh giá chuyên cần.
  • Điểm thi kết thúc học phần (trọng số 50%): Tổ chức dưới hình thức bài thi tự luận trong thời gian 90 phút. Quy chế phòng thi quy định người học không được mang tài liệu vào phòng thi. Nội dung đề thi bao gồm các câu hỏi lý thuyết và bài tập phân tích tương tự hệ thống bài tập về nhà trong giáo trình.

Về phương pháp tự học, tài liệu đưa ra hướng dẫn rõ ràng: người học cần đọc trước nội dung bài học trước khi lên lớp, nghe giảng và nắm vững các tính chất, ví dụ mẫu. Sau buổi học, sinh viên phải thực hiện lại toàn bộ bài thực hành, trả lời hệ thống câu hỏi cuối bài và tìm đọc thêm các tài liệu kỹ thuật liên quan để hoàn thiện kỹ năng gỡ lỗi mã máy.


Điểm nổi bật và cập nhật

  • Tích hợp chuỗi công cụ phân tích tiêu chuẩn: Giáo trình kết hợp đầy đủ các phần mềm phân tích nhị phân phổ biến trong lĩnh vực dịch ngược (Reverse Engineering). Việc phối hợp giữa công cụ phân tích tĩnh (PEview, PEiD, IDA Pro) và công cụ giám sát động (Procmon, Procexp, OllyDbg) tạo nên quy trình điều tra mã độc hoàn chỉnh.
  • Mô hình mạng giả lập đa nền tảng: Giáo trình không chỉ giới hạn trong môi trường Windows độc lập mà xây dựng mô hình tương tác mạng giữa Windows Server 2008 / Windows XP và Kali Linux chạy INetSim. Kỹ thuật chuyển hướng DNS nội bộ về Kali Linux giúp phân tích hành vi mạng của mã độc mà không làm rò rỉ dữ liệu nguy hại ra mạng Internet thực tế.
  • Tính minh xác và kiểm chứng cao: Toàn bộ chỉ số trong giáo trình đều là dữ kiện kỹ thuật chính xác: tên biến (var_675, CommandLine, WSAData), địa chỉ con trỏ lệnh (0x00402AF0, 0x40101B, 0x402410), cấu trúc chuỗi format backdoor (Hi,Master [%d/%d/%d %d:%d:%d]), hay kích thước payload beaconing (256 byte). Điều này loại bỏ hoàn toàn tính suy diễn và tạo cơ sở đối chiếu rõ ràng cho sinh viên khi làm bài tập.

Đối tượng sử dụng giáo trình

  • Sinh viên đại học: Giáo trình phục vụ trực tiếp cho sinh viên năm thứ ba hoặc năm thứ tư thuộc các chuyên ngành An toàn thông tin, Mạng máy tính & Truyền thông dữ liệu, hoặc Kỹ thuật phần mềm đang theo học học phần Thực hành Phân tích Mã độc (CMP399).
  • Kiến thức tiên đề yêu cầu: Sinh viên bắt buộc phải hoàn thành các học phần hoặc có kiến thức nền tảng về: Kiến trúc máy tính, Kỹ thuật lập trình (ngôn ngữ C/C++), và nguyên lý hoạt động của các hệ điều hành phổ biến (Windows, Linux).
  • Giảng viên chuyên ngành: Tài liệu là khung hướng dẫn chuẩn để giảng viên triển khai các buổi thực hành tại phòng máy chuyên dụng, thiết lập đề thi giữa kỳ, đề thi kết thúc học phần và xây dựng tiêu chí chấm điểm bài tập tình huống.
  • Chuyên viên an toàn thông tin và người tự học: Tài liệu là nguồn tham khảo theo từng bước dành cho các kỹ sư mới bắt đầu nghiên cứu về dịch ngược mã độc, phân tích tệp thực thi PE và trích xuất chỉ số IOC trong điều tra sự cố bảo mật.

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ế cho sinh viên đại học chuyên ngành An toàn thông tin, Công nghệ thông tin tại Trường Đại học Công nghệ TP.HCM (HUTECH) theo học mã môn học CMP399, cùng những người học có nhu cầu nghiên cứu thực hành về kỹ thuật dịch ngược và phân tích hành vi mã độc.

2. Cần kiến thức nền nào để học?

Căn cứ mục Kiến thức tiên đề của giáo trình, người học bắt buộc phải có kiến thức căn bản về:

  • Kiến trúc máy tính (tổ chức bộ nhớ, hoạt động của vi xử lý).
  • Kỹ thuật lập trình.
  • Quản trị và cơ chế vận hành của một số hệ điều hành, đặc biệt là Windows và Linux.

3. Điểm khác biệt với giáo trình khác?

Giáo trình tiếp cận theo hướng thực hành từng bước (step-by-step) gắn liền với các mẫu nhị phân từ bộ bài tập Practical Malware Analysis. Tài liệu tập trung hướng dẫn thao tác chi tiết trên hệ thống công cụ chuyên sâu (IDA Pro, OllyDbg, Sysinternals, INetSim) và chỉ rõ các dấu hiệu kỹ thuật cụ thể (địa chỉ bộ nhớ, chuỗi lệnh hợp ngữ, registry key, network beacon) thay vì chỉ trình bày lý thuyết phân loại mã độc tổng quát.

4. Làm sao để tự học hiệu quả?

Người học cần tuân thủ hướng dẫn cách tiếp cận nội dung:

  • Đọc trước tài liệu lý thuyết và bài lab trước khi thực hành.
  • Thiết lập đúng môi trường phòng thí nghiệm ảo hóa an toàn (gồm máy ảo Windows và máy ảo Kali Linux cấu hình INetSim).
  • Thực hiện tuần tự từng lệnh gỡ lỗi (F7, F8, F9), đối chiếu trạng thái thanh ghi và bộ nhớ với ảnh chụp minh họa trong giáo trình.
  • Làm đầy đủ các bài tập tự luận và câu hỏi củng cố cuối bài.

5. Có tài liệu bổ trợ nào kèm theo?

Tài liệu sử dụng hệ thống mẫu mã độc thuộc thư viện Practical Malware Analysis Labs (tải từ đường dẫn https://practicalmalwareanalysis.com/labs/, thư mục Chapter_1L, Chapter_5L, Chapter_9L), các phần mềm phân tích mã nguồn mở/freeware (PEview, PEiD, BinText, Jasmin, IDA Freeware, OllyDbg, Wireshark, INetSim), cùng hệ thống tài liệu tham khảo API hệ thống từ Microsoft MSDN.


Kết luận

Giáo trình "Thực hành Phân tích Mã độc" của TS. Văn Thiên Hoàng và ThS. Dương Minh Chiến là tài liệu học tập chuẩn hóa về mặt kỹ thuật cho học phần CMP399 tại Trường Đại học Công nghệ TP.HCM. Giá trị cốt lõi của tài liệu nằm ở cấu trúc sư phạm rõ ràng, kết hợp hài hòa giữa lý thuyết cấu trúc tệp tin, mã máy x86 với kỹ năng thao tác trên các công cụ phân tích hàng đầu hiện nay.

Lộ trình học tập được thiết kế xuyên suốt theo chu trình: nhận diện hình ảnh PE tĩnh -> dịch ngược mã hợp ngữ -> giám sát hành vi động trong mạng giả lập -> gỡ lỗi và giải mã thuật toán. Để học tập đạt kết quả tốt nhất, người học cần kết hợp chặt chẽ việc thực hành các bài lab với việc tra cứu tài liệu hàm Windows API từ MSDN và bộ tài liệu hướng dẫn kỹ thuật của Practical Malware Analysis.