← All posts

Article

Memory Forensics: Thu Thập và Phân Tích RAM Dump

Hướng dẫn thu thập memory dump trên Windows và phân tích với Volatility 3 — từ triage nhanh đến truy tìm malware ẩn trong RAM.

RAM là nơi lưu trữ mọi thứ đang chạy trên hệ thống tại thời điểm xảy ra sự cố. Malware chạy trong bộ nhớ, credentials bị dump từ lsass, lateral movement tool nạp trực tiếp không chạm đĩa — tất cả đều ở trong RAM. Đây là lý do memory forensics là kỹ năng không thể thiếu trong IR.

Thu thập Memory Dump

Công cụ trên Windows:

  • WinPmem — mã nguồn mở, không cần cài đặt, phù hợp IR nhanh
  • DumpIt — đơn giản, click-to-run, output là file .raw
  • Magnet RAM Capture — GUI, free, ghi log timestamp
  • FTK Imager — có tùy chọn memory acquisition tích hợp

Khi thu thập trên live system, luôn ưu tiên ghi vào thiết bị ngoài (USB, network share) thay vì ổ đĩa cục bộ để tránh ghi đè artifact.

# WinPmem — dump toàn bộ RAM ra file
winpmem_mini_x64.exe memdump.raw

# DumpIt — đơn giản hơn
DumpIt.exe /output memdump.raw

Thứ tự thu thập (order of volatility): RAM → network connections → running processes → disk. Thu thập RAM trước tiên, trước khi làm bất cứ điều gì khác.

Volatility 3 — Framework phân tích

Volatility là công cụ phân tích memory dump phổ biến nhất. Version 3 không còn cần symbol profile thủ công như v2.

# Cài đặt
pip install volatility3

# Xác định OS và version
vol -f memdump.raw windows.info

Các plugin quan trọng

Process listing:

# Danh sách process đang chạy
vol -f memdump.raw windows.pslist

# Process tree — nhìn thấy parent-child relationship
vol -f memdump.raw windows.pstree

# Phát hiện hidden process (so sánh với kernel list)
vol -f memdump.raw windows.psscan

Sự khác biệt giữa pslistpsscan có thể là dấu hiệu process bị ẩn (rootkit).

Network connections:

# Kết nối mạng tại thời điểm dump
vol -f memdump.raw windows.netstat

Tìm kiếm: kết nối từ process lạ, port bất thường, kết nối đến IP nghi ngờ.

DLL và modules:

# DLL đã nạp trong từng process
vol -f memdump.raw windows.dlllist --pid 1234

# Tìm code inject vào process khác
vol -f memdump.raw windows.malfind

malfind tìm vùng nhớ có quyền MEM_PRIVATE + PAGE_EXECUTE_READWRITE — đây là dấu hiệu điển hình của shellcode injection.

Registry hives trong RAM:

# Liệt kê hive đang mở
vol -f memdump.raw windows.registry.hivelist

# Đọc key cụ thể
vol -f memdump.raw windows.registry.printkey --key "SOFTWARE\Microsoft\Windows\CurrentVersion\Run"

Persistence thường thấy: Run keys, Startup folder, services. Xem trực tiếp trong RAM cho thấy cả giá trị đã bị xóa khỏi đĩa.

Triage nhanh — Quy trình 30 phút

Thứ tự phân tích khi cần kết quả nhanh:

  1. windows.info — xác nhận dump hợp lệ, OS version, thời điểm thu thập
  2. windows.pstree — tìm process bất thường: parent sai (ví dụ explorer.exe sinh ra cmd.exe), tên giả mạo (svchost.exe chạy từ thư mục khác)
  3. windows.netstat — phát hiện C2 connection
  4. windows.malfind — tìm injected code
  5. windows.cmdline — xem command line của từng process
# Xem command line của toàn bộ process
vol -f memdump.raw windows.cmdline

# Dump process cụ thể ra file để phân tích thêm
vol -f memdump.raw windows.dumpfiles --pid 1234

Dấu hiệu đáng ngờ cần chú ý

Process:

  • svchost.exe chạy từ đường dẫn không phải C:\Windows\System32\
  • lsass.exe có nhiều hơn 1 instance
  • Process có tên giống system process nhưng PID thấp bất thường
  • explorer.exe chạy từ AppData hoặc Temp

Network:

  • Kết nối TCP từ notepad.exe, calc.exe, hay browser đến IP ngoài port 80/443
  • Beacon traffic: kết nối đều đặn với interval cố định
  • Kết nối đến domain mới đăng ký hoặc IP trong AS của hosting provider rẻ tiền

Memory regions:

  • Vùng MEM_PRIVATE + RWX trong process system hợp pháp
  • Code không có backing file trên đĩa (dấu hiệu fileless malware)

Ghi chú thực tế

Memory dump từ máy bị nhiễm thường có size bằng đúng RAM vật lý. Với máy 16GB RAM, dump sẽ tốn ~16GB dung lượng và vài phút để ghi.

Nếu không thể dump toàn bộ RAM (máy đang production), cân nhắc dump process cụ thể:

# Dump riêng lsass để tìm credentials
vol -f memdump.raw windows.dumpfiles --physaddr <addr>

Volatility 3 hỗ trợ cả Linux và macOS với cú pháp tương tự — thay prefix windows. bằng linux. hoặc mac..

↗ Mở SoundCloud chọn nhạc