คลัง
forensics

Memory Analysis

Memory Analysis คือการวิเคราะห์ memory dump (RAM) เพื่อหาหลักฐานที่ disk ไม่มี — process ที่รัน, network connection, รหัสผ่านใน memory, malware แบบ fileless บทนี้ลงลึกว่า RAM เก็บอะไร, การ acquire ทุก OS, สิ่งที่หาได้แต่ละประเภท, และ workflow เริ่มต้น (เนื้อหาเพื่อการศึกษา/ฝึกใน lab/CTF)

IntermediateAdvanced#memory#forensics#ram#dump#volatility#acquisition#ctf

1. ทำไม memory สำคัญ

RAM เก็บสถานะ ณ เวลานั้นที่ disk ไม่มี: process ที่กำลังรัน, network connection ที่เปิดอยู่, ข้อมูลที่ decrypt แล้ว, รหัสผ่าน/key ใน memory, malware ที่รันใน memory อย่างเดียว (fileless), command history, clipboard ในงาน forensics/IR และ CTF โจทย์ memory dump มักซ่อนหลักฐานใน process น่าสงสัย, injected code, หรือข้อมูลที่ attacker ทิ้งไว้ใน RAM

เนื้อหานี้เพื่อการศึกษาและฝึกในงาน forensics ที่ถูกต้อง (CTF, lab, IR ที่ได้รับอนุญาต) เท่านั้น
วิเคราะห์ memory dump — ลำดับ
ดู process: pslist + pstree + psscan
หา process ชื่อแปลก/parent ผิด/ซ่อน
ดู cmdline ของ process น่าสงสัย
เห็น argument/path ที่รัน
โจทย์ถามหาอะไร?
malwaremalfind → dumpfiles
network/C2netscan
credentialhashdump / lsadump
กิจกรรม userconsoles / cmdscan / clipboard
เจอ flag / หลักฐาน

2. การได้ memory dump (acquisition)

OS / สถานการณ์เครื่องมือ
CTF (ได้ไฟล์มาแล้ว).raw / .mem / .vmem / .dmp / .lime
Windows (live)WinPmem, DumpIt, Magnet RAM Capture, Belkasoft
Linux (live)LiME (kernel module), AVML, /proc/kcore
VMware VM.vmem (memory dump อยู่แล้ว)
VirtualBox.sav (suspend) → แปลง
Hibernationhiberfil.sys (Windows) → แปลงด้วย volatility
VM snapshot/suspend คือ memory dump ฟรี — ไฟล์ .vmem (VMware) ใช้กับ Volatility ได้เลยโดยไม่ต้อง acquire

3. สิ่งที่หาได้

หลักฐานใช้ทำอะไร
process list/treeหา process น่าสงสัย/malware, parent-child
network connectionsC2, การเชื่อมต่อตอน capture
command history (cmd/bash)คำสั่งที่ผู้ใช้/attacker รัน
loaded DLL/modulescode injection, malicious module
credentials (LSASS)NTLM hash, รหัสใน memory, clipboard
files/registry in memoryไฟล์ที่เปิด, registry hive
injected codemalware ที่ inject เข้า process อื่น
screenshots/clipboardสิ่งที่ผู้ใช้ทำ (บาง plugin)

4. Workflow เริ่มต้น

  1. 1ระบุ OS/profile ของ dump ก่อนเสมอ (Volatility windows.info / imageinfo)
  2. 2ดู process list/tree — หา process น่าสงสัย (ชื่อแปลก, path ผิด, parent ผิด)
  3. 3ดู command line ของ process น่าสงสัย (มักมีใบ้/flag)
  4. 4network connections — การเชื่อมต่อ C2
  5. 5malfind — หา injected code; ดึงไฟล์ที่น่าสนใจออกมา
  6. 6เฉพาะเรื่อง: credentials, clipboard, registry ตามโจทย์
เครื่องมือหลักคือ Volatility (ดูหัวข้อถัดไป) — memprocfs เป็นทางเลือกที่ mount dump เป็น filesystem ให้เดินดูได้สะดวก

5. Quick Reference

  • RAM เก็บสิ่งที่ disk ไม่มี (process, network, fileless malware, creds)
  • CTF: ได้ .raw/.mem/.vmem/.dmp; VM .vmem = dump ฟรี
  • acquire: WinPmem/DumpIt (Win), LiME/AVML (Linux)
  • หาได้: process, network, cmd history, creds, injected code
  • workflow: ระบุ OS → process → cmdline → network → malfind
  • เครื่องมือหลัก: Volatility; ทางเลือก memprocfs

🧭 จับมือทำทีละขั้น (มีแค่ Kali) + ถ้าติดไปไหนต่อ

สมมติเพิ่งได้ memory dump มา (.raw/.mem/.vmem/.dmp) มีแค่ Kali เปล่าๆ ยังไม่รู้จะเริ่มตรงไหน ทำตามนี้ทีละขั้น

  1. 1เช็คไฟล์ก่อน: file dump.raw ดูขนาด/นามสกุลว่าใช่ memory dump ไหม
  2. 2ระบุ OS ด้วย Volatility3: vol -f dump.raw windows.info (ถ้าไม่ใช่ Windows ลอง vol -f dump.raw banners.Banners หา Linux kernel)
  3. 3ดู process: vol -f dump.raw windows.pslist แล้วเทียบกับ windows.pstree ดู parent-child
  4. 4หา process ที่ pslist ไม่เห็น: vol -f dump.raw windows.psscan (เจอที่ซ่อน/ถูก unlink)
  5. 5ดู cmdline ของ process ต้องสงสัย: vol -f dump.raw windows.cmdline
  6. 6เช็ค network connection: vol -f dump.raw windows.netscan
  7. 7หา injected code: vol -f dump.raw windows.malfind
  8. 8ดึงไฟล์ที่น่าสนใจออกมา: vol -f dump.raw windows.dumpfiles --pid --dump-dir out/
  9. 9ถ้าโจทย์ถามรหัสผ่าน: vol -f dump.raw windows.hashdump
  10. 10ถ้าเป็น Linux: vol -f dump.raw linux.bash ดูประวัติคำสั่งที่พิมพ์
ไล่หา flag/หลักฐานใน memory dump
ระบุ OS ได้ไหม (windows.info / banners.Banners)
✅ รู้ว่าเป็น Windows/Linux ชัดเจนn2
❌ ไม่รู้จัก/error→ ลอง Vol2 imageinfo/kdbgscan หรือเช็คว่าไฟล์ dump ไม่สมบูรณ์/ถูกตัด
pslist/pstree เจอ process แปลกไหม
✅ เจอ (ชื่อแปลก/parent ผิดปกติ)n3
❌ ดูปกติหมดn4
cmdline ของ process นั้นมี flag/เบาะแสไหม
✅ เจอ→ จบ อ่าน flag จาก command line ตรงๆ
❌ ไม่เจอn4
netscan เจอ connection น่าสงสัยไหม
✅ เจอ IP/port แปลกtoPcap
❌ ไม่เจอn5
malfind เจอ injected/RWX region ไหม
✅ เจอ→ dumpfiles ดึง region นั้นออกมาวิเคราะห์ (strings/RE)
❌ ไม่เจอn6
ยังไม่เจอ ต้องการอะไรต่อ
อยากได้ plugin ครบ/ลึกกว่านี้ (Vol2 vs Vol3)toVol
โจทย์ต้องเรียงลำดับเวลาการกระทำtoTimeline
ขั้นตอน/งานเครื่องมือใน Kaliติดตั้งเพิ่ม (ถ้าไม่มี)เครื่องมือออนไลน์
ตรวจ dump/หา OSvolatility3 (vol)pipx install volatility3-
ดู process/network/malwarevolatility3 plugins--
mount dump เป็น filesystem-git clone MemProcFS (build เอง)-
ดึงไฟล์จาก processvolatility3 (dumpfiles)--
วิเคราะห์ไฟล์ที่ดึงออกมาfile, strings, exiftoolapt install exiftoolvirustotal.com
crack hash ที่ดึงได้john, hashcat-crackstation.net, hashes.com
วิเคราะห์ pcap คู่โจทย์ (ถ้ามี)wireshark, tshark--
🚑 ถ้าตันสนิท ลองท่าถัดไป:
• netscan เจอ IP/traffic แปลก มี pcap คู่โจทย์ → ไป PCAP Analysis
• อยากรู้ plugin ครบ + วิธีต่าง Vol2/Vol3 → ไป Volatility
• ต้องเรียงเวลาการกระทำจากหลายหลักฐาน → ไป Timeline Analysis
• มี disk image คู่โจทย์เดียวกัน → ไป Disk Analysis

โน้ตของฉัน

ยังไม่มีโน้ตสำหรับหัวข้อนี้