Windows Forensics — الآثار اللي بتفضح المهاجم
Sysmon و 4624/4688/7045 و MFT و ShimCache و Prefetch
فن قراءة ويندوز — البيانات بتتكلّم
كل عملية، كل تسجيل دخول، كل اتصال شبكة، كل ما تفتح ملف — بيسيب أثر في مكان معروف. الفرق بين محقق محترف ومبتدئ مش في الأدوات. لأ. الفرق في إنه عارف يبصّ فين وبأي ترتيب.
ويندوز فيه حوالي 40 مصدر artifact، 6 منهم بيكفوك في 80% من القضايا. اللي عمّال يفتح كل artifact واحدة واحدة بدون فرضية = بيعك في وقته. اشتغل بفرضية: "أنا شاكك إن فيه persistence" → روح للـ Run keys + Services + Scheduled Tasks. مش العكس.
- بيفتح الـ EVTX على الجهاز نفسه بـ Event Viewer — كده غيّرت الـ
$STANDARD_INFORMATIONtimestamps. الأدلة لمستها بإيدك. - بينسى الـ Order of Volatility — بيعمل disk image قبل memory dump. الذاكرة راحت.
- بيعتمد على Prefetch بس وينسى Amcache. Prefetch ممكن يبقى معطّل، Amcache مش بيتعطّل.
- بيقرا
$STANDARD_INFORMATIONومش بيقارنه بـ$FILE_NAME— ميمكاتز بيغيّر الأول، التاني بيفضح الـ timestomping.
الخريطة — أين تبحث عن ماذا
Sysmon — الـ EDR المجاني الذي يجب أن يكون على كل host
Sysmon من Sysinternals بيضيف أكتر من 20 نوع event مهم ويندوز ما بيسجّلهومش افتراضياً. مع config محترم (SwiftOnSecurity أو Olaf Hartong) بيبقى أقوى من EDRs تجارية في الكشف. كل ده ببلاش.
# تثبيت
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.
Event Log Analysis — استعلامات حرجة
Lateral Movement عبر RDP / SMB
# 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)
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
// 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, ScriptBlockRegistry — مخبأ الـ persistence
Hives الأكثر فحصاً: SYSTEM, SOFTWARE, NTUSER.DAT, UsrClass.dat.
HKCU\Software\Microsoft\Windows\CurrentVersion\Run
+ RunOnce, RunOnceEx, RunServices.
MFT و Timeline — الترتيب يحلّ القضية
كل ملف على NTFS له MFT record (1024 byte) فيه: created, modified, accessed, MFT-modified (4 timestamps × 2 attributes = 8 timestamps). هذا يكشف timestomping (Mimikatz, Cobalt Strike).
# على 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 KapeTriagePrefetch — ما الذي شُغّل و متى
Windows ينشئ ملف .pf في C:\Windows\Prefetch لأول 128 برنامج. يحتوي:
- اسم البرنامج + hash من path الكامل (يكشف لو نُسخ من مسار غريب).
- آخر 8 مرات تنفيذ (timestamps).
- قائمة DLLs و ملفات قرأها.
- عدد التنفيذات الكلي.
# تحليل Prefetch
PECmd.exe -d C:\Windows\Prefetch --csv .
# بحث: ملفات شُغّلت من %TEMP% (مؤشّر مشبوه)
Import-Csv .\PECmd_Output.csv | Where-Object { $_.ExecutablePath -match 'TEMP|AppData' }فرز سريع باستخدام KAPE و Velociraptor
في حادث live: لا تنسخ كل القرص (300GB). انسخ فقط ما يهمّ — ~3GB من artifacts.
# 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=YMemory Forensics — الذاكرة لا تكذب
# جمع الذاكرة (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 cachedAnti-forensics و كيف تغلبه
- Timestomping — يغيّر MFT $STANDARD_INFORMATION لكن غالباً ينسى $FILE_NAME. قارنهما.
- Log clearing — Event ID 1102 يُسجّل عند مسح Security log. أيضاً افحص USN Journal لـ .evtx deletes.
- Alternate Data Streams — file.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 دقيقة
- Memory dump أولاً (قبل أي تغيير). كل خطوة تانية بتغيّر الـ RAM.
- KAPE Triage على القرص.
- Sysmon + Security + System logs (آخر 30 يوماً).
- Autoruns full scan (autorunsc.exe -accepteula -a * -h -s -m -nobanner -c).
- Run keys, Services, Scheduled Tasks، WMI subscriptions.
- Process tree الحالي + network connections.
- Recent file modifications (last 24h).