الفرق الزرقاء — الدفاعخبير100mL64

Memory Forensics — Volatility بيفضح كل حاجة

Memory capture و Vol3 plugins و rootkit hunting و injection

#Forensics#Volatility#Memory#Rootkit#DFIR

ليه الذاكرة أصعب وأهم من الـ Disk؟

تشبيه — شرح مبسط
انت محقق في جريمة في فندق. تبدأ منين؟ تفتح دفتر تسجيل النزلاء؟ ده الـ Disk — بيقولك مين حجز ومين خرج. بس مش هيقولك مين كان في الردهة لحظة الجريمة. الذاكرة (RAM) هي الردهة نفسها لحظة الحادثة: مين كان بيتكلم، أنهي عمليات شغّالة، أنهي اتصالات شبكة مفتوحة. ده اللي المالوير ما يقدرش يخبّيه عن الذاكرة. - طب يا حضرتك ما الـ EDR بياخد كل ده؟؟ يا نجم الجيل.. الـ EDR بيشوف ظاهر الكلام بس. الـ rootkit الجاد بيلعب مع الـ kernel نفسه فبيعمي عين الـ EDR. اللي بيكشفه؟ snapshot للذاكرة بيتقرأ offline. بس.

في 2025، أكتر من 70% من الـ malware المتطوّر بقى fileless — ما بيكتبش على الـ Disk خالص، عايش كله في الذاكرة. Cobalt Strike beacons، Sliver implants، PowerShell Empire، Meterpreter — كلهم في RAM بس. لو انت بتبصّ على الـ Disk بس، انت بتتفرّج على نص الفيلم.

الدرس ده عن Volatility 3، الإطار المعياري لتحليل dump الذاكرة على Windows / Linux / macOS. مش لأنه "الأحدث" — لأنه شغل Aaron Walters و13 سنة من البحث. مفيش بديل.

غلطات الـ junior في memory forensics
  • بيعمل reboot قبل dump — كل حاجة راحت. مفيش undo.
  • بيدوّر على process مشبوه بـ pslist بس وينسى psscan — الـ DKOM rootkits بتتخفى في الـ list ومش بتختفي من الـ scan.
  • بيلاقي injection بـ malfind ويفرح، وينسى يعمل dumpfiles للـ payload — كده ضيّع العيّنة الوحيدة.
  • بيشغّل Volatility على عيّنة من غير ما يحسب SHA256 الأول — chain of custody اتكسرت.

التقاط الذاكرة (Acquisition)

01
Windows
powershell
# WinPmem (مفتوح المصدر، Velociraptor الآن)
.\winpmem.exe -o C:\evidence\memory.raw

# Magnet RAM Capture (تجاري، GUI، صفر آثار)
# DumpIt — أبسط، single command

# Hyper-V / VMware: snapshot ثم vmss → vmem
# vmss2core أو vol3 يقرأ vmem مباشرة
02
Linux
bash
# AVML — Microsoft، يعمل بدون kernel module
sudo ./avml memory.lime

# LiME (Linux Memory Extractor)
sudo insmod lime.ko "path=/evidence/mem.lime format=lime"

# /proc/kcore — حذر: قد يكون متاحاً للقراءة، يحتاج dwarf للقراءة
03
السلسلة الجنائية (Chain of Custody)
SHA256 فوراً بعد الالتقاط. وقّع رقمياً. سجّل من، متى، وأي أداة. الذاكرة لا يمكن إعادة التقاطها — اللحظة فات.

Volatility 3 — الـ plugins الأساسية

bash
# تحديد البروفايل (Vol3 يفعل ذلك تلقائياً غالباً)
vol -f mem.raw windows.info

# 1. العمليات الجارية
vol -f mem.raw windows.pslist
vol -f mem.raw windows.pstree    # هرمي
vol -f mem.raw windows.psscan    # يكشف العمليات المخفية

# 2. الاتصالات الشبكية (مفتاح اكتشاف C2)
vol -f mem.raw windows.netscan
vol -f mem.raw windows.netstat

# 3. مكتبات DLL لكل عملية
vol -f mem.raw windows.dlllist --pid 1234

# 4. خيوط (Threads) و callstacks
vol -f mem.raw windows.threads --pid 1234

# 5. Registry hive scan
vol -f mem.raw windows.registry.hivelist
vol -f mem.raw windows.registry.printkey --key "Software\Microsoft\Windows\CurrentVersion\Run"

اكتشاف Process Injection

الـ injection (T1055) هو حقن code في عملية شرعية لإخفاء النشاط. Volatility يكشفه عبر تحليل memory regions.

01
malfind — السلاح الأول
bash
vol -f mem.raw windows.malfind
# يكشف صفحات RWX غير مرتبطة بملف على القرص — عَلَم أحمر
$ vol -f compromise.raw windows.malfind
Process: explorer.exe PID: 4532 VAD: 0x7ff5d0000000-0x7ff5d000ffff Protection: PAGE_EXECUTE_READWRITE Notes: Hexdump shows MZ header — DLL injected without LoadLibrary [!] Injection detected
02
hollowfind
يكشف Process Hollowing (إفراغ عملية شرعية وملؤها بـ payload).
bash
vol -f mem.raw windows.hollowfind
03
استخرج الـ payload
bash
vol -f mem.raw windows.dumpfiles --pid 4532 --virtaddr 0x7ff5d0000000
# تستطيع تحليله بـ binwalk / ghidra لاحقاً

استخراج الاعتمادات

bash
# hashes من LSASS dump
vol -f mem.raw windows.hashdump
vol -f mem.raw windows.lsadump
vol -f mem.raw windows.cachedump

# Mimikatz inside memory analysis
vol -f mem.raw windows.mimikatz

حالة عملية: تحليل rootkit

01
مؤشر أولي
EDR رصد عملية باسم svchost.exe لكن من user context غير اعتيادي. dump الذاكرة فوراً.
02
فحص psscan vs pslist
bash
vol -f mem.raw windows.pslist > pslist.txt
vol -f mem.raw windows.psscan > psscan.txt
diff pslist.txt psscan.txt
# عمليات في psscan وليست في pslist = مخفية بـ DKOM rootkit
03
فحص ssdt و callbacks
bash
vol -f mem.raw windows.ssdt        # System Service Descriptor Table — kernel hooks
vol -f mem.raw windows.callbacks   # kernel callbacks — مكان شائع لـ rootkits
vol -f mem.raw windows.modules     # المكتبات النواة المحمّلة
vol -f mem.raw windows.modscan     # عبر pool tag scan — يكشف modules مخفية
الذاكرة بتطير — مفيش مرة تانية
بمجرد ما الجهاز يعمل restart، كل حاجة ضاعت. مفيش undo. مفيش "خليني أحاول تاني". قاعدة IR صارمة: dump الذاكرة قبل أي تفاعل مع الجهاز، حتى قبل ما المحقق يعمل login. كل خطوة بتغيّر الذاكرة، فاللحظة الأولى هي الأذكى. لو فات عليك الـ window ده، انت كتبت "سيب الـ adversary يفلت" في تقرير الحادثة.
الخلاصة الناشفة
الذاكرة هي المكان الوحيد اللي المهاجم ما يقدرش يكدب فيه. لو سيطر على الـ Disk، يقدر يمسح. لو سيطر على الـ logs، يقدر يعدّل. الـ RAM لحظة الـ snapshot هي الحقيقة الناشفة. اكتبها على الحيطة اللي قصاد مكتب الـ IR: خد الـ snapshot قبل أي حاجة. التحليل بعدين. مفيش "هخش login بس وأشوف" — لو خشيت، الذاكرة اتلوّثت وأنت ونصيبك.
الحماية — لتسهيل التحليل لاحقاً
  • فعّل Sysmon Event 1, 7, 10 (process creation, image load, lsass access)
  • EDR ينبغي أن يدعم triage automatic memory capture
  • نشر Velociraptor — يجمع memory artifacts من آلاف الأجهزة
  • سياسة Memory Integrity (Hypervisor-protected Code Integrity) لتقليل rootkits
  • اختبر playbook الـ IR شهرياً مع dump حقيقي من lab

مصادر

  • Volatility 3 documentation — volatility3.readthedocs.io
  • The Art of Memory Forensics — Ligh, Case, Levy, Walters
  • SANS FOR508 — Advanced Incident Response, Threat Hunting
  • 13Cubed YouTube — Volatility walkthroughs