الفرق الزرقاء — الدفاعخبير90mL55

التحقيق الجنائي في ويندوز — تحليل السجلات والآثار

تحليل MFT و ShimCache و Prefetch وسجلات الأحداث

#Windows#Sysmon#MFT#Registry#Prefetch

فن قراءة ويندوز — البيانات تتكلّم

كل عملية، تسجيل دخول، اتصال شبكة، فتح ملف — يترك أثراً في مكان معروف. الفرق بين محقّق متمرّس و مبتدئ ليس الأدوات — بل أين ينظر و بأي ترتيب. ويندوز يحوي ~40 مصدر artifact، 6 منها تكفي لـ 80% من القضايا.

تشبيه — شرح مبسط
ويندوز كمنزل فيه آلاف العدّادات. عدّاد الكهرباء يخبرك بالاستهلاك العام، لكن إذا عرفت أن العدّاد الفرعي للمطبخ ارتفع فجأة الساعة 3 صباحاً، تعرف من كان مستيقظاً و ماذا كان يفعل.

الخريطة — أين تبحث عن ماذا

من سجّل دخول؟
Security Event Log: 4624 (logon), 4625 (failed), 4634 (logoff), 4672 (special privileges).
ماذا شغّل؟
Sysmon Event 1, Security 4688 (process creation), Prefetch (C:\Windows\Prefetch), Amcache, ShimCache.
هل أُنشئت خدمة؟
System log: 7045 (service installed), 7036 (start/stop). Sysmon Event 6 (driver loaded).
هل تم تنفيذ PowerShell؟
Microsoft-Windows-PowerShell/Operational: 4103/4104 (script block, command), 600/400 in old logs.
هل تم اتصال شبكة؟
Sysmon Event 3 (network connect). إذا غاب: NetFlow / Zeek / firewall logs.
هل عُدّل ملف؟
MFT ($MFT) — كل ملف على NTFS. USN Journal ($UsnJrnl) لتسلسل التغييرات.

Sysmon — الـ EDR المجاني الذي يجب أن يكون على كل host

Sysmon من Sysinternals يضيف >20 نوع حدث ضرورية لا يسجّلها ويندوز افتراضياً. مع config جيد (SwiftOnSecurity أو Olaf Hartong) يصبح أقوى من EDRs تجارية للكشف.

bash
# تثبيت
sysmon64.exe -accepteula -i sysmonconfig.xml

# تحديث config دون إعادة تثبيت
sysmon64.exe -c sysmonconfig.xml

# إلغاء التثبيت
sysmon64.exe -u

أهم Event IDs:

  • 1 Process Create — مع CommandLine, ParentImage, Hashes (MD5/SHA256/IMPHASH).
  • 3 Network Connection — مع process المسبّب.
  • 7 Image Loaded — DLLs المحمّلة (مفيد لكشف DLL hijacking).
  • 8 CreateRemoteThread — كشف process injection.
  • 10 ProcessAccess — من فتح handle لـ LSASS؟ (Mimikatz).
  • 11 FileCreate — كتابة ملفات.
  • 12/13/14 Registry create/set/rename.
  • 22 DNS Query — مع process.
  • 25 ProcessTampering — كشف Process Hollowing/Doppelganging.
config جاهز
ابدأ من github.com/SwiftOnSecurity/sysmon-config ثم طبّق github.com/olafhartong/sysmon-modular لتعديل modular.

Event Log Analysis — استعلامات حرجة

Lateral Movement عبر RDP / SMB

powershell
# 4624 Logon Type 3 (Network) أو 10 (RDP) — من IP خارجي
Get-WinEvent -FilterHashtable @{LogName='Security'; Id=4624} -MaxEvents 1000 |
  Where-Object { $_.Properties[8].Value -in 3,10 -and $_.Properties[18].Value -notmatch '^10\.' } |
  Select-Object TimeCreated, @{n='User';e={$_.Properties[5].Value}}, @{n='SrcIP';e={$_.Properties[18].Value}}

إنشاء خدمة جديدة (مؤشّر persistence)

powershell
Get-WinEvent -FilterHashtable @{LogName='System'; Id=7045} -MaxEvents 50 |
  Format-Table TimeCreated,
    @{n='Service';e={$_.Properties[0].Value}},
    @{n='Path';e={$_.Properties[1].Value}},
    @{n='StartType';e={$_.Properties[3].Value}}

PowerShell scriptblock logging

kql
// Microsoft Sentinel KQL
Event
| where Source == "Microsoft-Windows-PowerShell" and EventID == 4104
| extend ScriptBlock = tostring(EventData["ScriptBlockText"])
| where ScriptBlock matches regex @"(?i)Invoke-Mimikatz|Invoke-Expression|DownloadString|FromBase64String"
| project TimeGenerated, Computer, ScriptBlock

Registry — مخبأ الـ persistence

Hives الأكثر فحصاً: SYSTEM, SOFTWARE, NTUSER.DAT, UsrClass.dat.

Run Keys
HKLM\Software\Microsoft\Windows\CurrentVersion\Run
HKCU\Software\Microsoft\Windows\CurrentVersion\Run
+ RunOnce, RunOnceEx, RunServices.
Services
HKLM\System\CurrentControlSet\Services — كل خدمة + binPath.
UserAssist
HKCU\...\UserAssist — برامج شغّلها المستخدم (ROT13 encoded).
ShimCache (AppCompat)
HKLM\System\CurrentControlSet\Control\Session Manager\AppCompatCache — أسماء ملفات نُفّذت أو فُحصت (آخر 1024).
Amcache
C:\Windows\AppCompat\Programs\Amcache.hve — معلومات أكثر: SHA1, publisher, last modified.
ASEPs الغريبة
AppInit_DLLs, Image File Execution Options (IFEO), Winlogon Shell, COM hijacking, WMI subscriptions.

MFT و Timeline — الترتيب يحلّ القضية

كل ملف على NTFS له MFT record (1024 byte) فيه: created, modified, accessed, MFT-modified (4 timestamps × 2 attributes = 8 timestamps). هذا يكشف timestomping (Mimikatz, Cobalt Strike).

bash
# على Linux — تحليل image
mmls disk.img                                   # partitions
fls -r -m C: -o 2048 disk.img > body.txt        # body file
mactime -d -b body.txt 2026-04-25 > timeline.csv

# Plaso (log2timeline) — الأقوى للـ super-timeline
log2timeline.py timeline.plaso /mnt/evidence
psort.py -o l2tcsv timeline.plaso > super.csv

# أو Eric Zimmerman's Tools (سريعة جداً)
MFTECmd.exe -f $MFT --csv .
KAPE.exe --tsource C: --tdest C:\triage --target KapeTriage

Prefetch — ما الذي شُغّل و متى

Windows ينشئ ملف .pf في C:\Windows\Prefetch لأول 128 برنامج. يحتوي:

  • اسم البرنامج + hash من path الكامل (يكشف لو نُسخ من مسار غريب).
  • آخر 8 مرات تنفيذ (timestamps).
  • قائمة DLLs و ملفات قرأها.
  • عدد التنفيذات الكلي.
powershell
# تحليل Prefetch
PECmd.exe -d C:\Windows\Prefetch --csv .

# بحث: ملفات شُغّلت من %TEMP% (مؤشّر مشبوه)
Import-Csv .\PECmd_Output.csv | Where-Object { $_.ExecutablePath -match 'TEMP|AppData' }
ملاحظة
Prefetch معطّل افتراضياً على Windows Server. على workstations نشط.

فرز سريع باستخدام KAPE و Velociraptor

في حادث live: لا تنسخ كل القرص (300GB). انسخ فقط ما يهمّ — ~3GB من artifacts.

bash
# KAPE — جمع artifacts فقط
KAPE.exe --tsource C: --tdest C:\triage --target !BasicCollection --vhdx triage

# ثم تشغيل modules للتحليل
KAPE.exe --msource C:\triage --mdest C:\out --module !EZParser

# Velociraptor — جمع عن بعد لـ thousands of hosts
velociraptor.exe artifact collect Windows.KapeFiles.Targets \
  --args Device=C: --args _Triage=Y

Memory Forensics — الذاكرة لا تكذب

bash
# جمع الذاكرة (live)
winpmem.exe -o memory.raw

# أو DumpIt.exe (single click)

# تحليل بـ Volatility 3
vol -f memory.raw windows.pslist
vol -f memory.raw windows.netscan
vol -f memory.raw windows.malfind            # injected code
vol -f memory.raw windows.cmdline
vol -f memory.raw windows.dlllist --pid 1234
vol -f memory.raw windows.hashdump           # SAM hashes
vol -f memory.raw windows.lsadump            # secrets cached
ترتيب التطايُر (Order of Volatility)
CPU regs → cache → RAM → network state → disk → logs offsite. اجمع بهذا الترتيب — لا تطفئ الجهاز قبل الـ memory!

Anti-forensics و كيف تغلبه

  • Timestomping — يغيّر MFT $STANDARD_INFORMATION لكن غالباً ينسى $FILE_NAME. قارنهما.
  • Log clearing — Event ID 1102 يُسجّل عند مسح Security log. أيضاً افحص USN Journal لـ .evtx deletes.
  • Alternate Data Streamsfile.txt:hidden.exe. اكتشفها بـ dir /R أو streams.exe.
  • WMI persistence — لا يظهر في autoruns عادية. استخدم Get-WmiObject -Namespace root\\subscription -Class __EventFilter.
  • Wiping with cipher /w — يكتب صفر/واحد على free space. يبقى MFT records و metadata.

منهجية أول 60 دقيقة

Triage playbook
  1. Memory dump أولاً (قبل أي تغيير).
  2. KAPE Triage على القرص.
  3. Sysmon + Security + System logs (آخر 30 يوماً).
  4. Autoruns full scan (autorunsc.exe -accepteula -a * -h -s -m -nobanner -c).
  5. Run keys, Services, Scheduled Tasks، WMI subscriptions.
  6. Process tree الحالي + network connections.
  7. Recent file modifications (last 24h).
أدوات أساسية
KAPE, Velociraptor, Eric Zimmerman tools (MFTECmd, PECmd, RECmd, EvtxECmd, AmcacheParser), Volatility 3, Plaso, Hayabusa (sigma لـ EVTX), Chainsaw.