الانتقال إلى المحتوى

الفرز الجنائي في Windows للاستجابة للحوادث

دليل عملي لفرز أجهزة Windows المخترقة: التقاط الذاكرة، والاستجابة المباشرة، والبحث عن وسائل الاستمرار، وسجلات الأحداث، وآثار التنفيذ، والجمع عبر KAPE وVelociraptor.

ABYSSS Security Teamقراءة 23 دقيقة

جهاز Windows يغذي جدولًا زمنيًا للهجوم بأدلة من الذاكرة وسجلات الأحداث وسجل النظام وprefetch وAmcache وMFT.
المحتويات

المقدمة

الفرز هو المرحلة التقنية الأولى في الاستجابة للحوادث: نظرة سريعة ومنظمة على جهاز Windows مشبوه للإجابة عن أربعة أسئلة. هل هو مخترق؟ كيف دخل المهاجم؟ ماذا فعل ومتى؟ ما الأنظمة والحسابات الأخرى المعنية؟ يجيب الفرز الجيد عن ذلك خلال ساعات، ويحفظ الأدلة التي قد يحتاجها الفحص الجنائي الكامل، ويتجنب تنبيه مهاجم ما زال نشطًا. يغطي هذا الدليل ترتيب العمل والأوامر والأدوات اللازمة لذلك على Windows 10 وWindows 11 وWindows Server.

القواعد الأساسية قبل لمس الجهاز

  • اجمع حسب درجة التطاير (RFC 3227): الذاكرة وحالة الشبكة أولًا، ثم العمليات والجلسات، ثم آثار القرص والسجلات. فإعادة التشغيل أو إعادة التثبيت أو فحص مضاد الفيروسات الكامل أولًا يتلف أهم الأدلة.
  • لا تسجل الدخول تفاعليًا بحساب مسؤول النطاق. فتسجيلات الدخول التفاعلية وRDP تترك بيانات اعتماد قابلة لإعادة الاستخدام في ذاكرة LSASS على جهاز قد يسيطر عليه المهاجم. استخدم الاستجابة المباشرة عبر EDR، أو حساب استجابة مخصصًا بصلاحيات مسؤول محلي فقط، أو أدوات بعيدة تعتمد على دخول الشبكة.
  • شغّل الأدوات من وسيط موثوق للقراءة فقط أو مشاركة شبكية، وليس من برامج الجهاز المشبوه أبدًا، واكتب المخرجات إلى تخزين خارجي أو مشاركة جمع، وليس إلى قرص النظام أبدًا.
  • سجل كل شيء بتوقيت UTC: كل أمر، ومن نفذه، ومتى، وبصمة SHA-256 لكل ملف تجمعه. يصبح هذا السجل سلسلة الحيازة وأساس الجدول الزمني.
  • قرر مبكرًا هل ستحقق بهدوء أم ستحتوي فورًا. فالإجراءات الظاهرة مثل تعطيل الحسابات أو إيقاف العمليات تخبر المهاجم بأنك وجدته.
  • افترض أن أكثر من جهاز معني. افرز الجهاز الأول وعينك على المؤشرات التي يمكنك البحث عنها في بقية البيئة.

إعداد حقيبة الفرز

جهز الحقيبة واختبرها قبل أن تحتاج إليها. احفظها على قرص USB محمي من الكتابة أو مشاركة محدودة الوصول، وسجل بصمة كل ملف تنفيذي، وحدّثها كل ربع سنة. معظم الأدوات الأساسية مجانية.

حقيبة فرز Windows
الأداةالغرضملاحظات
Velociraptorاستجابة مباشرة عن بُعد وجمع الآثار وصيد على مستوى الأجهزة كلهامجانية ومفتوحة المصدر، وتنشئ أيضًا أدوات جمع دون اتصال
KAPEجمع سريع وموجه للآثار وتحليلها بالوحداتمجانية من Kroll، وتحقق من شروط الترخيص للأعمال المدفوعة
أدوات Eric Zimmermanمحللات لـ MFT وسجل النظام وسجلات الأحداث وprefetch وAmcache وLNK وjump lists وSRUMمجانية، مع Timeline Explorer وRegistry Explorer للمراجعة
حزمة SysinternalsAutoruns وProcess Explorer وTCPView وSigcheck وHandle وListDLLsمجانية من Microsoft، واستخدم نسخ سطر الأوامر للجمع
WinPmem أو Magnet RAM Captureالتقاط الذاكرة الفعليةمجانية، وتعمل بصلاحية المسؤول
Volatility 3 وMemProcFSتحليل الذاكرةمجانية، وتربط MemProcFS الذاكرة كنظام ملفات
Hayabusa وChainsawصيد سريع قائم على Sigma في سجلات الأحداثمجانية، على ملفات EVTX المصدرة أو مباشرة
FTK Imagerتصوير الأقراص وتصفح نظام الملفات بسرعةمجانية، وتنتج صور E01 مع بصمات تحقق
YARA وTHOR Lite وLokiفحص الملفات والذاكرة بالبصمات بحثًا عن الأدوات والبرمجيات الخبيثة المعروفةقواعد مجانية من المجتمع وNextron
Plaso (log2timeline)جداول زمنية شاملة من أنواع آثار كثيرةمجانية، ثقيلة لكنها شاملة
Cyber Triageجمع وفرز موجهان وتقييم للمحللينتجارية مع إصدار مجاني
الاستجابة المباشرة عبر EDRلوحات Defender for Endpoint وCrowdStrike وSentinelOneعزل وصدفة بعيدة وجمع ملفات دون تسجيل دخول

الدقائق الخمس عشرة الأولى

ابدأ بتحديد السياق. يجب أن تعرف بالضبط أي جهاز أنت عليه، ومنطقته الزمنية وفرق ساعته، ومن سجل الدخول، ومنذ متى يعمل. فالجهاز الذي أُعيد تشغيله قبل ساعة فقد أدلة الذاكرة، والساعة المتأخرة خمس دقائق تزيح كل حدث تربطه بالأنظمة الأخرى.

افتح جلسة PowerShell بصلاحيات مرتفعة وابدأ تسجيلًا على قرص الأدلة
$case = "E:\IR-2026-031\$env:COMPUTERNAME"
New-Item -ItemType Directory -Path $case -Force | Out-Null
Start-Transcript -Path "$case\transcript.txt"

(Get-Date).ToUniversalTime().ToString('o')
hostname; whoami /all
Get-TimeZone
w32tm /query /status
Get-CimInstance Win32_OperatingSystem |
  Select-Object Caption, Version, BuildNumber, InstallDate, LastBootUpTime
Get-CimInstance Win32_ComputerSystem | Select-Object Domain, Manufacturer, Model
Get-NetIPConfiguration | Format-List InterfaceAlias, IPv4Address, IPv4DefaultGateway, DNSServer
quser 2>$null

ثم قرر الاحتواء. إذا كان الجهاز يملك وكيل EDR، فعزل الشبكة من اللوحة هو غالبًا أفضل خطوة أولى: فهو يقطع المهاجم ويبقي الجهاز عاملًا ومتاحًا لـ EDR، فتبقى الذاكرة والحالة المباشرة. ودون EDR، وازن خطر الضرر الجاري، مثل التشفير أو خروج البيانات، مقابل الأدلة والرؤية التي تفقدها بفصل الشبكة. ولا تطفئ الجهاز ببساطة أبدًا.

خيارات الاحتواء وتكلفتها
الإجراءهل يوقف المهاجمالأثر على الأدلةمتى يُستخدم
عزل الشبكة عبر EDRنعم، باستثناء قناة EDRلا أثر، فالذاكرة والحالة محفوظتانالخيار الافتراضي عند وجود EDR
حظر عبر جدار الحماية أو منفذ المبدلنعممنخفض، وتحتاج الاستجابة المباشرة إلى وصول محليلا يوجد EDR لكن يمكنك العمل على اللوحة المحلية
فصل كابل الشبكة أو تعطيل Wi-Fiنعممنخفض، وقد يشغّل منطق تنظيف لدى المهاجمضرر جارٍ ولا يوجد خيار أفضل
تعليق جهاز افتراضينعملا أثر، فالذاكرة محفوظة على القرص (.vmem أو .vmsn)الخوادم الافتراضية، واجمع ملف الذاكرة
الإطفاء أو قطع الكهرباءنعممرتفع، إذ تضيع الذاكرة ومفاتيح التشفيرتجنبه، إلا لإيقاف تدمير جارٍ

التقط الذاكرة أولًا

تحتوي الذاكرة على ما لا يحتويه القرص: الكود المحقون، والبرمجيات الخبيثة دون ملفات، والحمولات المفكوكة، وسجل الصدفات العاملة، واتصالات الشبكة التي أُغلقت، وأحيانًا مفاتيح التشفير. التقطها قبل أي تغيير آخر. وتوقع نحو دقيقة واحدة لكل 4 إلى 8 GB من الذاكرة إلى قرص USB 3 سريع.

التقط الذاكرة واحسب بصمتها
# WinPmem (run from the kit drive, write to the evidence drive)
E:\tools\winpmem_mini_x64_rc2.exe E:\IR-2026-031\HOST01\HOST01.raw

Get-FileHash -Algorithm SHA256 E:\IR-2026-031\HOST01\HOST01.raw |
  Export-Csv E:\IR-2026-031\HOST01\hashes.csv -NoTypeInformation -Append

# Velociraptor alternative, run remotely from the server console:
#   artifact Windows.Memory.Acquisition

يحتوي ملف الصفحات وملف السبات أيضًا على صفحات ذاكرة ويستحقان الجمع مع آثار القرص. وهما مقفلان أثناء عمل Windows، لذا استخدم KAPE أو Velociraptor أو FTK Imager التي تقرأهما بالوصول المباشر إلى القرص. وعلى الأجهزة الافتراضية، تنتج اللقطة مع الذاكرة أو عملية التعليق ملف ذاكرة يقرؤه Volatility مباشرة.

التحليل الأول باستخدام Volatility 3
vol -f HOST01.raw windows.info
vol -f HOST01.raw windows.pstree                 # parent and child relationships
vol -f HOST01.raw windows.psscan                 # finds unlinked and exited processes too
vol -f HOST01.raw windows.cmdline
vol -f HOST01.raw windows.netscan                # connections and listeners with PIDs
vol -f HOST01.raw windows.malfind                # executable private memory, injected code
vol -f HOST01.raw windows.svcscan
vol -f HOST01.raw windows.dlllist --pid 4416
vol -f HOST01.raw windows.handles --pid 4416
vol -f HOST01.raw -o out windows.dumpfiles --pid 4416

# MemProcFS: browse processes, handles and timelines as files under M:\
MemProcFS.exe -device HOST01.raw -forensic 1

قارن pslist مع psscan: العملية التي يجدها psscan فقط أُزيلت من قائمة العمليات النشطة، وهذه تقنية rootkit، أو انتهت بالفعل. وفي نتائج malfind، تستحق مناطق الذاكرة التنفيذية التي تبدأ بترويسة MZ أو تحتوي على shellcode في عمليات مثل explorer.exe أو svchost.exe أو rundll32.exe نظرة أدق، مع أن مترجمات JIT في المتصفحات و.NET تنتج إنذارات خاطئة.

الاستجابة المباشرة: العمليات والشبكة والجلسات

بعد تأمين الذاكرة، سجل الحالة المباشرة بالأوامر المدمجة. هذه المخرجات سريعة القراءة أثناء الحادثة وسهلة المقارنة بين الأجهزة. احفظ كلًا منها بصيغة CSV لفرزها وتصفيتها لاحقًا في Timeline Explorer أو جدول بيانات.

العمليات مع الآباء والأوامر والبصمات
Get-CimInstance Win32_Process |
  Select-Object ProcessId, ParentProcessId, Name, CommandLine, ExecutablePath,
    @{n='Created';e={$_.CreationDate.ToUniversalTime()}},
    @{n='Owner';e={(Invoke-CimMethod -InputObject $_ -MethodName GetOwner).User}} |
  Export-Csv "$case\processes.csv" -NoTypeInformation

Get-Process | Where-Object Path | Select-Object -ExpandProperty Path -Unique |
  ForEach-Object { Get-FileHash -Algorithm SHA256 $_ } |
  Export-Csv "$case\process-hashes.csv" -NoTypeInformation

tasklist /svc /fo csv > "$case\tasklist-svc.csv"
حالة الشبكة
Get-NetTCPConnection |
  Select-Object LocalAddress, LocalPort, RemoteAddress, RemotePort, State, OwningProcess,
    @{n='Process';e={(Get-Process -Id $_.OwningProcess -ErrorAction SilentlyContinue).Name}},
    CreationTime |
  Export-Csv "$case\tcp.csv" -NoTypeInformation

Get-NetUDPEndpoint | Select-Object LocalAddress, LocalPort, OwningProcess |
  Export-Csv "$case\udp.csv" -NoTypeInformation

netstat -anob > "$case\netstat.txt"
Get-DnsClientCache | Export-Csv "$case\dns-cache.csv" -NoTypeInformation
Get-NetNeighbor | Export-Csv "$case\arp.csv" -NoTypeInformation
route print > "$case\routes.txt"
Get-SmbSession | Export-Csv "$case\smb-sessions.csv" -NoTypeInformation   # who is connected to us
Get-SmbMapping; net use                                                     # where we are connected
Get-SmbShare | Export-Csv "$case\shares.csv" -NoTypeInformation
netsh advfirewall show allprofiles > "$case\firewall.txt"

ذاكرة DNS المؤقتة قصيرة العمر، وكثيرًا ما تعرض نطاقات قيادة وتحكم لم يعد لها اتصال مفتوح. وتوضح جلسات SMB الواردة الأجهزة والحسابات المتصلة بهذا الجهاز الآن، وهذا دليل مباشر على حركة جانبية جارية.

المستخدمون والجلسات والمجموعات المحلية
quser; qwinsta
Get-CimInstance Win32_LogonSession |
  Select-Object LogonId, LogonType, AuthenticationPackage, StartTime
Get-LocalUser | Select-Object Name, Enabled, LastLogon, PasswordLastSet, Description
Get-LocalGroupMember Administrators
Get-LocalGroupMember 'Remote Desktop Users'
Get-ChildItem C:\Users -Directory | Select-Object Name, CreationTime, LastWriteTime
klist sessions

ابحث عن حساب محلي أُنشئ حديثًا، أو عضو غير متوقع في مجموعة Administrators، أو مجلد ملف شخصي أُنشئ داخل نافذة الحادثة. فمجلد الملف الشخصي الجديد يعني أن الحساب سجل دخوله تفاعليًا إلى هذا الجهاز لأول مرة.

كيف تبدو العمليات المشبوهة

  • أب خاطئ: تطبيقات Office أو المتصفحات أو قارئات PDF أو w3wp.exe تشغل cmd.exe أو powershell.exe أو wscript.exe أو mshta.exe أو rundll32.exe.
  • مسار خاطئ: svchost.exe أو lsass.exe أو csrss.exe تعمل من غير C:\Windows\System32، أو برامج تعمل من AppData أو ProgramData أو Temp أو Public أو سلة المحذوفات.
  • أسماء مشابهة: scvhost.exe أو lsasss.exe أو svch0st.exe، أو اسم صحيح مع مسافة إضافية.
  • أوامر مرمزة أو مموهة: powershell مع EncodedCommand وIEX وDownloadString، أو سلاسل Base64 طويلة، أو استخدام كثيف لأحرف الهروب.
  • برامج غير موقعة في أماكن كل ما فيها موقع، وأدوات وصول عن بُعد لم يثبتها أحد في تقنية المعلومات، مثل AnyDesk أو ScreenConnect أو Atera أو ngrok.
  • عمليات لها اتصالات شبكة يجب ألا تكون لها، مثل اتصال notepad.exe أو rundll32.exe بالإنترنت.
فك ترميز أمر PowerShell مرمز
$b64 = 'SQBFAFgAIAAoAE4AZQB3AC0ATwBiAGoAZQBjAHQAIABOAGUAdAAuAFcAZQBiAEMAbABpAGUAbgB0ACkA'
[Text.Encoding]::Unicode.GetString([Convert]::FromBase64String($b64))
ابحث عن الملفات التنفيذية غير الموقعة وافحص التواقيع عبر Sigcheck
E:\tools\sigcheck64.exe -accepteula -nobanner -u -e -s -c -h C:\Users > "$case\unsigned-users.csv"
E:\tools\sigcheck64.exe -accepteula -nobanner -u -e -s -c -h C:\ProgramData > "$case\unsigned-programdata.csv"
# -u unsigned only, -e executables only, -s recurse, -c CSV, -h hashes
# Add -v to look hashes up on VirusTotal. It sends hashes only, never the files.

البحث عن وسائل الاستمرار

يحرص المهاجمون الراغبون في البقاء على أن يصمد وصولهم أمام إعادة التشغيل وتغيير كلمة المرور. يوفر Windows مئات الأماكن لذلك، لكن معظم الاختراقات تستخدم مجموعة صغيرة: مفاتيح Run والمهام المجدولة والخدمات واشتراكات WMI ومجلدات بدء التشغيل والحسابات الجديدة. ابدأ بأداة Autoruns التي تفحص معظمها دفعة واحدة، ثم أكد الإدخالات المهمة يدويًا.

Autoruns من سطر الأوامر
E:\tools\autorunsc64.exe -accepteula -nobanner -a * -c -h -s -m '*' > "$case\autoruns.csv"
# -a *   every category       -c  CSV output        -h  file hashes
# -s     verify signatures    -m  hide Microsoft-signed entries
# '*'    include every user profile, not only the current one

رتب ملف CSV حسب الموقّع، وانظر أولًا إلى الإدخالات غير الموقعة، وتلك التي تشير إلى مجلدات يمكن للمستخدم الكتابة فيها، وتلك التي يستدعي أمرها مضيف نصوص أو مفسرًا. يقلل إخفاء إدخالات Microsoft الضوضاء، لكن المهاجمين يسيئون استخدام برامج Microsoft الموقعة كثيرًا، فيبقى الإدخال الذي يشغل rundll32.exe أو mshta.exe بوسيط غير معتاد مهمًا حتى لو كان البرنامج موقعًا.

مواقع التشغيل التلقائي في سجل النظام
$keys = @(
  'HKLM:\Software\Microsoft\Windows\CurrentVersion\Run',
  'HKLM:\Software\Microsoft\Windows\CurrentVersion\RunOnce',
  'HKLM:\Software\WOW6432Node\Microsoft\Windows\CurrentVersion\Run',
  'HKCU:\Software\Microsoft\Windows\CurrentVersion\Run',
  'HKCU:\Software\Microsoft\Windows\CurrentVersion\RunOnce',
  'HKLM:\Software\Microsoft\Windows NT\CurrentVersion\Winlogon',
  'HKLM:\System\CurrentControlSet\Control\Session Manager'
)
foreach ($k in $keys) { "== $k"; Get-ItemProperty -Path $k -ErrorAction SilentlyContinue }

# Debugger hijacks: a program that runs instead of, or when, the target starts
Get-ChildItem 'HKLM:\Software\Microsoft\Windows NT\CurrentVersion\Image File Execution Options' |
  Get-ItemProperty | Where-Object { $_.Debugger -or $_.GlobalFlag } |
  Select-Object PSChildName, Debugger, GlobalFlag

في مفتاح Winlogon، يجب أن تكون قيمة Userinit هي C:\Windows\system32\userinit.exe متبوعة بفاصلة، وقيمة Shell هي explorer.exe. وأي إضافة إليهما تعمل عند كل تسجيل دخول. وفي Session Manager، افحص BootExecute التي يجب أن تحتوي عادةً على autocheck autochk * فقط. وإدخالات Image File Execution Options بقيمة Debugger على أدوات الوصول مثل sethc.exe أو utilman.exe باب خلفي تقليدي يفتح صدفة SYSTEM من شاشة الدخول.

المهام المجدولة
Get-ScheduledTask | Where-Object State -ne 'Disabled' |
  Select-Object TaskPath, TaskName, State, Author,
    @{n='Run';e={($_.Actions | ForEach-Object { "$($_.Execute) $($_.Arguments)" }) -join ' | '}},
    @{n='User';e={$_.Principal.UserId}} |
  Export-Csv "$case\tasks.csv" -NoTypeInformation

# Raw task XML, including tasks hidden by deleting their SD registry value
Get-ChildItem C:\Windows\System32\Tasks -Recurse -File |
  Sort-Object LastWriteTime -Descending | Select-Object -First 30 FullName, LastWriteTime
الخدمات
Get-CimInstance Win32_Service |
  Select-Object Name, DisplayName, State, StartMode, StartName, PathName |
  Export-Csv "$case\services.csv" -NoTypeInformation

# Services launching shells, scripts or binaries from writable folders
Get-CimInstance Win32_Service | Where-Object {
  $_.PathName -match 'cmd(\.exe)?\s*/c|powershell|mshta|rundll32|\\Users\\|\\ProgramData\\|\\Temp\\|\\AppData\\'
} | Select-Object Name, StartMode, PathName

كثيرًا ما تكون أسماء الخدمات التي تنشئها أدوات مثل PsExec أو Impacket أو Cobalt Strike سلاسل عشوائية من الأحرف أو الأرقام، ويكون مسارها غالبًا سطر أوامر لا ملفًا تنفيذيًا. وافحص أيضًا مسارات الخدمات غير المقتبسة التي فيها مسافات، لأن مجلدًا قابلًا للكتابة في هذا المسار طريق لرفع الصلاحيات يستخدمه المهاجمون أيضًا للاستمرار.

اشتراكات أحداث WMI ومهام BITS ومجلدات بدء التشغيل
Get-CimInstance -Namespace root\subscription -ClassName __EventFilter |
  Select-Object Name, Query
Get-CimInstance -Namespace root\subscription -ClassName CommandLineEventConsumer |
  Select-Object Name, CommandLineTemplate, ExecutablePath
Get-CimInstance -Namespace root\subscription -ClassName ActiveScriptEventConsumer |
  Select-Object Name, ScriptingEngine, ScriptText
Get-CimInstance -Namespace root\subscription -ClassName __FilterToConsumerBinding

Get-BitsTransfer -AllUsers | Select-Object DisplayName, JobState, OwnerAccount, FileList

Get-ChildItem 'C:\ProgramData\Microsoft\Windows\Start Menu\Programs\StartUp',
  'C:\Users\*\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup' -Force -ErrorAction SilentlyContinue |
  Select-Object FullName, CreationTime, LastWriteTime

يملك الجهاز السليم عادةً مرشحًا أو اثنين ومستهلكًا أو اثنين مدمجين في WMI، مثل SCM Event Log Consumer. وأي CommandLineEventConsumer أو ActiveScriptEventConsumer لا يمكنك نسبته إلى برنامج إدارة مشبوه جدًا، لأن استمرار WMI لا يترك ملفًا في موقع بدء التشغيل ويصمد أمام إعادة التشغيل.

العبث بأدوات الأمن
Get-MpComputerStatus |
  Select-Object AMServiceEnabled, RealTimeProtectionEnabled, IsTamperProtected, AntivirusSignatureLastUpdated
Get-MpPreference | Select-Object ExclusionPath, ExclusionProcess, ExclusionExtension, ExclusionIpAddress
Get-MpThreatDetection | Sort-Object InitialDetectionTime -Descending | Select-Object -First 20
Get-WinEvent -FilterHashtable @{LogName='Microsoft-Windows-Windows Defender/Operational'; Id=1116,1117,5001,5007} -MaxEvents 50 |
  Select-Object TimeCreated, Id, Message

يضيف المهاجمون استثناءات Defender لمجلد التجميع أو يعطلون الحماية الفورية قبل إسقاط الأدوات. يسجل الحدث 5007 كل تغيير في الإعدادات بما فيه مسار الاستثناء الجديد، ويسجل 5001 إيقاف الحماية الفورية. وتعد استثناءات الأقراص الكاملة أو مجلدات الملفات الشخصية أو الامتدادات الشائعة مثل .ps1 علامات خطر. تخفي إصدارات Defender الحالية قائمة الاستثناءات عن غير المسؤولين، فاجمعها من جلسة مرتفعة الصلاحيات.

  • أماكن أخرى تستحق الفحص عندما تكون المواقع الشائعة سليمة: اختطاف كائنات COM تحت HKCU\Software\Classes\CLSID، وإضافات Office وقوالبه (Normal.dotm)، وإضافات المتصفح، وملفات DLL المساعدة في netsh، ومراقبات الطباعة، وحزم مصادقة LSA أو إشعاراتها.
  • الحسابات وسيلة استمرار أيضًا: مسؤول محلي جديد، أو حساب معطل أُعيد تفعيله، أو كلمة مرور لا تنتهي لحساب خدمة، كلها تعيد المهاجم بعد إزالة برمجياته الخبيثة.
  • تعد برامج الوصول عن بُعد وسيلة استمرار. افحص البرامج والخدمات المثبتة بحثًا عن أدوات إدارة عن بُعد لا يستخدمها فريق تقنية المعلومات لديك.

سجلات الأحداث المهمة

سجلات أحداث Windows أقرب شيء إلى الصندوق الأسود على الجهاز. صدّرها مبكرًا: فالمهاجمون يمسحونها، وأحجامها الافتراضية على الأجهزة تجعلها تُستبدل خلال أيام. انسخ مجلد السجلات كاملًا، فهذا يحفظ كل قناة حتى تلك التي لم تفكر في طلبها.

تصدير سجلات الأحداث
New-Item -ItemType Directory "$case\evtx" -Force | Out-Null
foreach ($log in 'Security','System','Application',
  'Microsoft-Windows-PowerShell/Operational','Microsoft-Windows-Sysmon/Operational',
  'Microsoft-Windows-TaskScheduler/Operational','Microsoft-Windows-Windows Defender/Operational',
  'Microsoft-Windows-TerminalServices-LocalSessionManager/Operational',
  'Microsoft-Windows-TerminalServices-RemoteConnectionManager/Operational',
  'Microsoft-Windows-WMI-Activity/Operational','Microsoft-Windows-WinRM/Operational') {
  $name = ($log -replace '[/ ]', '_') + '.evtx'
  wevtutil epl $log "$case\evtx\$name" 2>$null
}

# Or simply copy every channel
robocopy C:\Windows\System32\winevt\Logs "$case\evtx-all" *.evtx /COPY:DAT /R:0 /W:0
أهم معرفات أحداث Windows للفرز
معرف الحدثالسجلما يخبرك به
4624 / 4625Securityتسجيلات الدخول الناجحة والفاشلة مع النوع وعنوان المصدر والعملية
4648Securityدخول ببيانات اعتماد صريحة، مثل runas أو أداة تمرر كلمة مرور
4672Securityصلاحيات خاصة عند الدخول: جلسة تعادل المسؤول
4688Securityإنشاء عملية، ويتضمن الأمر فقط إذا فُعّلت السياسة
4697 / 7045Security / Systemتثبيت خدمة: PsExec وImpacket وأبواب خلفية كثيرة
4698 / 4702Securityإنشاء مهمة مجدولة أو تحديثها مع XML الكامل
4720 / 4722 / 4738Securityإنشاء حساب أو تفعيله أو تغييره
4728 / 4732 / 4756Securityإضافة عضو إلى مجموعة أمان عامة أو محلية أو شاملة
4768 / 4769 / 4771Security (DC)طلبات تذاكر Kerberos وفشل المصادقة المسبقة
4776Securityالتحقق من بيانات اعتماد NTLM
1102 / 104Security / Systemمسح سجل التدقيق أو سجل النظام
4104PowerShell Operationalتسجيل كتل النصوص: الكود الذي شغله PowerShell فعلًا بعد فك الترميز
21 / 24 / 25TS LocalSessionManagerدخول جلسة RDP وانقطاعها وإعادة اتصالها مع عنوان المصدر
1149TS RemoteConnectionManagerنجاح مصادقة RDP عبر الشبكة
106 / 140 / 200TaskScheduler Operationalتسجيل مهمة وتحديثها وتشغيلها
5857 إلى 5861WMI-Activity Operationalتحميل مزود WMI، ويسجل 5861 اشتراك حدث دائمًا
1116 / 1117 / 5001 / 5007Defender Operationalالكشف والإجراء المتخذ وإيقاف الحماية الفورية وتغيير الإعدادات
1 / 3 / 10 / 11 / 13 / 22Sysmonإنشاء عملية واتصال شبكة والوصول إلى عملية وإنشاء ملف وكتابة في السجل واستعلام DNS
أنواع الدخول في الحدثين 4624 و4625
النوعالاسمالمصدر المعتاد
2Interactiveلوحة المفاتيح على الجهاز، وبيانات الاعتماد مخزنة في LSASS
3Networkالوصول إلى مشاركة SMB وPsExec وWMI ومعظم الأدوات البعيدة، دون ترك بيانات قابلة لإعادة الاستخدام
4Batchالمهام المجدولة
5Serviceخدمات تبدأ بحساب
7Unlockفتح قفل الجهاز
8NetworkCleartextمصادقة أساسية مثل IIS، وتُرسل كلمة المرور بوضوح إلى الجهاز
9NewCredentialsrunas /netonly وبعض أدوات pass-the-hash
10RemoteInteractiveسطح المكتب البعيد
11CachedInteractiveدخول نطاق ببيانات مخزنة أثناء تعذر الوصول إلى DC

خصائص الأحداث موضعية وتختلف بين المعرفات، لذا حلل XML حسب اسم الحقل لا الفهرس. يعمل هذا النمط مع أي حدث ويسهل تصفية المخرجات.

تسجيلات الدخول البعيدة والشبكية في الأيام السبعة الماضية
Get-WinEvent -FilterHashtable @{LogName='Security'; Id=4624; StartTime=(Get-Date).AddDays(-7)} |
  ForEach-Object {
    $d = @{}
    ([xml]$_.ToXml()).Event.EventData.Data | ForEach-Object { $d[$_.Name] = $_.'#text' }
    [pscustomobject]@{
      TimeUtc = $_.TimeCreated.ToUniversalTime()
      User    = "$($d.TargetDomainName)\$($d.TargetUserName)"
      Type    = $d.LogonType
      Source  = $d.IpAddress
      Host    = $d.WorkstationName
      Auth    = $d.AuthenticationPackageName
      Process = $d.ProcessName
    }
  } | Where-Object { $_.Type -in '3','10' -and $_.Source -notin '-','127.0.0.1','::1' } |
  Export-Csv "$case\logons.csv" -NoTypeInformation
فحوص سريعة: السجلات الممسوحة والخدمات والمهام الجديدة وPowerShell
Get-WinEvent -FilterHashtable @{LogName='Security'; Id=1102} -ErrorAction SilentlyContinue
Get-WinEvent -FilterHashtable @{LogName='System'; Id=104,7045} -ErrorAction SilentlyContinue |
  Select-Object TimeCreated, Id, Message | Format-List
Get-WinEvent -FilterHashtable @{LogName='Security'; Id=4698} -ErrorAction SilentlyContinue |
  Select-Object TimeCreated, Message | Format-List

Get-WinEvent -FilterHashtable @{LogName='Microsoft-Windows-PowerShell/Operational'; Id=4104} -MaxEvents 500 |
  Where-Object Message -match 'DownloadString|IEX|Invoke-Expression|FromBase64String|Net.WebClient|-enc|Bypass|Mimikatz|Invoke-' |
  Select-Object TimeCreated, Message | Format-List

لا تصلح قراءة الأحداث باستعلام بعد آخر بعد الجهاز الأول. تطبق أدوات الصيد القائمة على Sigma آلاف القواعد المجتمعية على السجلات المصدرة خلال دقائق وتنتج جدولًا زمنيًا للأحداث المهمة فقط. شغّلها على ملفات EVTX المصدرة في جهاز التحليل لا على الجهاز المشبوه.

Hayabusa وChainsaw وEvtxECmd على السجلات المصدرة
# Hayabusa: Sigma and built-in rules, timeline output
hayabusa.exe update-rules
hayabusa.exe csv-timeline -d E:\IR-2026-031\HOST01\evtx-all -o host01-hayabusa.csv -p verbose -U -w
hayabusa.exe logon-summary -d E:\IR-2026-031\HOST01\evtx-all

# Chainsaw: Sigma hunting plus fast keyword search
chainsaw hunt E:\IR-2026-031\HOST01\evtx-all -s sigma\ --mapping mappings\sigma-event-logs-all.yml -r rules\ --csv --output host01-chainsaw
chainsaw search mimikatz -i E:\IR-2026-031\HOST01\evtx-all

# EvtxECmd: every event normalized into one CSV for Timeline Explorer
EvtxECmd.exe -d E:\IR-2026-031\HOST01\evtx-all --csv E:\out --csvf host01-evtx.csv

ابدأ المراجعة بأعلى نتائج Hayabusa أو Chainsaw خطورة، وسجل الأوقات، ثم اقرأ كل ما حدث في مخرجات EvtxECmd قبلها وبعدها ببضع دقائق. تخبرك قواعد الكشف أين تنظر، وتخبرك الأحداث العادية حولها بما حدث فعلًا.

أدلة التنفيذ

عندما تكون السجلات مفقودة أو ممسوحة، يتذكر Windows الكثير عن البرامج التي عملت ومتى ومن أين. ولكل أثر ثغراته وخصائصه، لذلك تأتي أقوى الاستنتاجات من اتفاق أثرين أو ثلاثة.

آثار التنفيذ والنشاط في Windows
الأثرالموقعما يثبتهالمحلل
PrefetchC:\Windows\Prefetch\*.pfعمل البرنامج، مع عدد المرات وآخر ثمانية أوقات والملفات المحملة. معطل افتراضيًا في Windows ServerPECmd
AmcacheC:\Windows\AppCompat\Programs\Amcache.hveكان البرنامج موجودًا، مع المسار الكامل وبصمة SHA-1، وغالبًا وقت التشغيل الأولAmcacheParser
ShimCache (AppCompatCache)خلية SYSTEMكان الملف موجودًا ورآه محرك التوافق، وليس إثباتًا للتنفيذ منذ Windows 10AppCompatCacheParser
BAM / DAMSYSTEM\CurrentControlSet\Services\bam\State\UserSettingsآخر تنفيذ لكل SID مستخدم للبرامج الحديثةRECmd وRegistry Explorer
UserAssistNTUSER.DATالبرامج الرسومية التي شغلها المستخدم مع العدد وآخر تشغيلRECmd
SRUMC:\Windows\System32\sru\SRUDB.datالبايتات المرسلة والمستلمة لكل تطبيق كل ساعة لمدة 30 إلى 60 يومًا تقريبًاSrumECmd
ملفات LNK وjump listsAppData\Roaming\Microsoft\Windows\Recentالملفات والمجلدات التي فتحها المستخدم، ومنها على USB والمشاركات الشبكيةLECmd وJLECmd
ShellBagsUsrClass.dat وNTUSER.DATالمجلدات التي تصفحها المستخدم حتى بعد حذفهاSBECmd وShellBags Explorer
سجل PowerShellAppData\Roaming\Microsoft\Windows\PowerShell\PSReadLine\ConsoleHost_history.txtالأوامر المكتوبة في جلسات PowerShell التفاعليةأي محرر نصوص
ذاكرة RDP المؤقتة للصورAppData\Local\Microsoft\Terminal Server Client\Cacheأجزاء من شاشة جلسات RDP الخارجة من هذا الجهازbmc-tools
حلل آثار التنفيذ (على النسخ المجمعة أو مباشرة بصلاحية المسؤول)
PECmd.exe -d C:\Windows\Prefetch --csv E:\out --csvf prefetch.csv
AmcacheParser.exe -f C:\Windows\AppCompat\Programs\Amcache.hve -i --csv E:\out
AppCompatCacheParser.exe --csv E:\out --csvf shimcache.csv
SrumECmd.exe -d E:\collect\C --csv E:\out
RECmd.exe -d E:\collect\C --bn BatchExamples\Kroll_Batch.reb --csv E:\out
LECmd.exe -d E:\collect\C\Users --csv E:\out
JLECmd.exe -d E:\collect\C\Users --csv E:\out

# PowerShell history for every user
Get-ChildItem C:\Users\*\AppData\Roaming\Microsoft\Windows\PowerShell\PSReadLine\ConsoleHost_history.txt -Force |
  ForEach-Object { "===== $($_.FullName)"; Get-Content $_.FullName }

بصمة SHA-1 في Amcache ثمينة لأنها تبقى بعد حذف الملف. فكثيرًا ما يترك المهاجم الذي نظف أدواته البصمة خلفه، ويمكنك البحث عنها في VirusTotal أو منصة الاستخبارات دون امتلاك البرنامج.

فرز نظام الملفات

يسجل Master File Table في NTFS كل ملف على القرص بأربعة أوقات في خاصيتين منفصلتين. ويسجل سجل USN كل إنشاء وإعادة تسمية وكتابة وحذف خلال الأيام أو الأسابيع الماضية. ويكشفان معًا مجلدات التجميع وإسقاط الأدوات والبرمجيات الخبيثة المعاد تسميتها والتشفير الجماعي، حتى بعد اختفاء الملفات.

الملفات التنفيذية والنصوص المنشأة حديثًا في مواقع التجميع الشائعة
$since = (Get-Date).AddDays(-14)
Get-ChildItem C:\Users, C:\ProgramData, C:\Windows\Temp, C:\PerfLogs, 'C:\$Recycle.Bin' -Recurse -Force -File -ErrorAction SilentlyContinue -Include *.exe,*.dll,*.ps1,*.bat,*.cmd,*.vbs,*.js,*.hta,*.lnk,*.iso,*.zip,*.7z,*.rar |
  Where-Object { $_.CreationTime -gt $since -or $_.LastWriteTime -gt $since } |
  Select-Object FullName, Length, CreationTimeUtc, LastWriteTimeUtc |
  Sort-Object CreationTimeUtc | Export-Csv "$case\recent-files.csv" -NoTypeInformation

# Where did a file come from? Mark of the Web stores the download URL
Get-Content C:\Users\bob\Downloads\invoice.iso -Stream Zone.Identifier
حلل MFT وسجل USN من عملية جمع
MFTECmd.exe -f 'E:\collect\C\$MFT' --csv E:\out --csvf mft.csv
MFTECmd.exe -f 'E:\collect\C\$Extend\$J' --csv E:\out --csvf usn.csv
RBCmd.exe -d 'E:\collect\C\$Recycle.Bin' --csv E:\out       # deleted file names and times
  • Timestomping: يغيّر المهاجمون أوقات الملفات للتمويه. يسهل تغيير أوقات $STANDARD_INFORMATION، بخلاف أوقات $FILE_NAME. ويشير MFTECmd إلى السجلات التي يكون فيها وقت الإنشاء في $SI أقدم من $FN، أو تكون أجزاء الثانية فيها أصفارًا.
  • مجلدات التجميع: دفعة من ملفات الأرشيف (zip و7z وrar) في مجلد واحد قبل حركة خارجة كبيرة في SRUM بقليل نمط شائع لتسريب البيانات.
  • النسخ الظلية: نفذ vssadmin list shadows. فاختفاؤها المفاجئ مع أوامر vssadmin أو wmic shadowcopy أو wbadmin في أحداث 4688 أو Sysmon يشير إلى التحضير لبرنامج فدية.
  • مجلدات المهاجمين الشائعة: C:\PerfLogs وC:\Users\Public وC:\ProgramData وC:\Windows\Temp وجذر C:\، غالبًا بأسماء تشبه مجلدات النظام.
افحص الأدوات والبرمجيات الخبيثة المعروفة عبر YARA
yara64.exe -r -s -w E:\rules\index.yar C:\Users\Public C:\ProgramData C:\Windows\Temp > "$case\yara-files.txt"

# Scan a running process by PID
yara64.exe -s E:\rules\cobaltstrike.yar 4416

# Loki and THOR Lite bundle curated rules and IOC lists
loki.exe -p C:\ --noprocscan --csv

جمع صورة الفرز

صورة الفرز نسخة موجهة من الآثار المهمة، عادةً من 1 إلى 5 GB بدل قرص كامل. وتستغرق دقائق لا ساعات، ويمكن جلبها عبر الشبكة، وتكفي لمعظم أسئلة التحقيق. ولا تجمع صورة كاملة للقرص أيضًا إلا إذا كانت القضية قد تصل إلى المحكمة أو تركت صورة الفرز أسئلة مهمة دون إجابة.

KAPE: اجمع هدف KapeTriage في VHDX وحلله
E:\KAPE\kape.exe --tsource C: --tdest E:\IR-2026-031\%m\tout --target KapeTriage --vhdx %m --zv false --msource E:\IR-2026-031\%m\tout --mdest E:\IR-2026-031\%m\mout --module !EZParser

# Add memory-related files and browser history when relevant
E:\KAPE\kape.exe --tsource C: --tdest E:\IR-2026-031\%m\extra --target FileSystem,WebBrowsers,PowerShellConsole --vhdx %m-extra

يجمع KapeTriage كلًا من MFT وسجل USN وخلايا السجل وسجلات الأحداث وprefetch وAmcache وSRUM وملفات LNK وjump lists وغيرها، باستخدام القراءة المباشرة من القرص لنسخ الملفات المقفلة. وتشغل وحدة EZParser محللات Eric Zimmerman على النسخة، فتكون ملفات CSV جاهزة لـ Timeline Explorer عند انتهاء الجمع. ويشير المتغير %m إلى اسم الجهاز، مما يبقي عمليات الجمع من أجهزة كثيرة منظمة.

لأكثر من بضعة أجهزة، يعد Velociraptor الأداة الأفضل. يدير خادم واحد آلاف الأجهزة، وتعمل عمليات الجمع كصيد في البيئة كلها، ويمكن بناء أداة جمع دون اتصال كملف تنفيذي واحد للأجهزة التي لا تملك وكيلًا. تسمي الإصدارات الحديثة الأثر المتوافق مع KAPE باسم Windows.Triage.Targets، وتسميه الإصدارات الأقدم Windows.KapeFiles.Targets.

آثار Velociraptor لفرز Windows
الأثرما يجمعه
Windows.Triage.Targetsجمع ملفات متوافق مع KAPE (KapeTriage وSANS_Triage وغيرها)
Windows.System.Pslistالعمليات مع الأوامر والبصمات والتواقيع
Windows.Network.NetstatEnrichedالاتصالات مربوطة بتفاصيل العمليات
Windows.Sysinternals.Autorunsمخرجات Autoruns من كل جهاز
Windows.Persistence.PermanentWMIEventsمرشحات WMI ومستهلكوها وروابطها
Windows.System.TaskSchedulerXML المهام المجدولة وإجراءاتها
Windows.EventLogs.Hayabusaتشغيل Hayabusa على الجهاز وإعادة النتائج إلى الخادم
Windows.Detection.Yara.Processقواعد YARA على ذاكرة العمليات
Windows.Memory.Acquisitionصورة ذاكرة كاملة

إذا لم تتوفر أي من الأداتين، فيمكن لنص PowerShell قصير التقاط الأساسيات بطريقة متسقة. وهو لا يغني عن أداة جمع حقيقية، لكنه أفضل بكثير من أوامر مرتجلة تحت الضغط، ويحسب بصمة مخرجاته.

نص جمع فرز بسيط بالأدوات المدمجة
param([string]$Out = "E:\IR\$env:COMPUTERNAME-$((Get-Date).ToUniversalTime().ToString('yyyyMMddTHHmmssZ'))")
New-Item -ItemType Directory -Path $Out -Force | Out-Null
Start-Transcript "$Out\transcript.txt"

Get-CimInstance Win32_Process | Select-Object ProcessId,ParentProcessId,Name,CommandLine,ExecutablePath,CreationDate | Export-Csv "$Out\processes.csv" -NoTypeInformation
Get-NetTCPConnection | Select-Object LocalAddress,LocalPort,RemoteAddress,RemotePort,State,OwningProcess,CreationTime | Export-Csv "$Out\tcp.csv" -NoTypeInformation
Get-DnsClientCache | Export-Csv "$Out\dns.csv" -NoTypeInformation
Get-CimInstance Win32_Service | Select-Object Name,State,StartMode,StartName,PathName | Export-Csv "$Out\services.csv" -NoTypeInformation
Get-ScheduledTask | Select-Object TaskPath,TaskName,State,@{n='Run';e={($_.Actions.Execute + ' ' + $_.Actions.Arguments)}} | Export-Csv "$Out\tasks.csv" -NoTypeInformation
Get-LocalUser | Export-Csv "$Out\local-users.csv" -NoTypeInformation
Get-LocalGroupMember Administrators | Export-Csv "$Out\local-admins.csv" -NoTypeInformation
Get-CimInstance -Namespace root\subscription -ClassName __FilterToConsumerBinding | Out-File "$Out\wmi-bindings.txt"
Get-MpPreference | Select-Object Exclusion* | Out-File "$Out\defender-exclusions.txt"

New-Item -ItemType Directory "$Out\evtx" | Out-Null
robocopy C:\Windows\System32\winevt\Logs "$Out\evtx" *.evtx /R:0 /W:0 /NP | Out-Null
robocopy C:\Windows\Prefetch "$Out\prefetch" *.pf /R:0 /W:0 /NP | Out-Null
Get-ChildItem C:\Users\*\AppData\Roaming\Microsoft\Windows\PowerShell\PSReadLine\*.txt -Force -ErrorAction SilentlyContinue |
  ForEach-Object { Copy-Item $_.FullName "$Out\pshistory-$(($_.FullName -split '\\')[2]).txt" }

Stop-Transcript
Get-ChildItem $Out -Recurse -File | Get-FileHash -Algorithm SHA256 | Export-Csv "$Out\..\$(Split-Path $Out -Leaf)-sha256.csv" -NoTypeInformation

تحتاج الملفات المقفلة مثل خلايا السجل وMFT وملف الصفحات إلى وصول مباشر للقرص، وهذا النص لا يحاول ذلك. وكحل بديل لخلايا السجل، يعمل reg save HKLM\SYSTEM system.hiv من موجه مرتفع الصلاحيات مع SYSTEM وSOFTWARE وSAM وSECURITY، لكن خلايا المستخدمين المسجلين (NTUSER.DAT) ما زالت تحتاج إلى أداة نسخ مباشر.

الحركة الجانبية وسرقة بيانات الاعتماد

بعد معرفة الجهاز الأول، السؤال التالي هو أين ذهب المهاجم من هناك وما بيانات الاعتماد التي أخذها. انظر إلى هذا الجهاز كوجهة (من دخل إليه) وكمصدر (إلى أين اتصل).

تقنيات الحركة الجانبية وآثارها
التقنيةعلى الوجهةعلى المصدر
RDP4624 من النوع 10، وإعادة الاتصال 4778، وTS LocalSessionManager 21 و25، وRemoteConnectionManager 1149mstsc.exe في prefetch، وMRU في سجل Terminal Server Client، وذاكرة الصور، وحدث RDPClient 1024
PsExec وImpacket psexec أو smbexecتثبيت خدمة 7045 أو 4697 (PSEXESVC أو اسم عشوائي)، و4624 من النوع 3، ووصول 5145 إلى مشاركة ADMIN$بيانات اعتماد صريحة 4648، وpsexec.exe في prefetch، وقيمة EulaAccepted في السجل
WMI (wmic وImpacket wmiexec)تشغيل WmiPrvSE.exe لـ cmd.exe أو powershell.exe، و4624 من النوع 3، وملفات مخرجات في ADMIN$wmic.exe في prefetch و4688 مع /node:
WinRM وPowerShell Remotingعمليات فرعية لـ wsmprovhost.exe، وWinRM Operational 91، و4624 من النوع 3WinRM Operational 6، وEnter-PSSession أو Invoke-Command في 4104
المهام المجدولة عن بُعد4698 مع XML المهمة، وTaskScheduler 106 و200، و4624 من النوع 3schtasks.exe مع /s في 4688
نسخ الملفات عبر SMBوصول المشاركات 5140 و5145، وملفات جديدة في C$ أو ADMIN$ربط net use ومفتاح MountPoints2 في السجل
  • الوصول إلى LSASS: حدث Sysmon 10 مع TargetImage lsass.exe من عملية مصدر غير متوقعة، أو procdump أو rundll32 يحملان comsvcs.dll مع MiniDump، أو ملفات .dmp جديدة في مجلدات Temp. افترض أن كل بيانات الاعتماد المخزنة على الجهاز مسروقة.
  • Pass-the-hash: حدث 4624 من النوع 3 بمصادقة NTLM من جهاز إلى أجهزة كثيرة في وقت قصير، أو النوع 9 مع عملية الدخول seclogo على المصدر.
  • Kerberoasting: على وحدات التحكم بالنطاق، دفعة من أحداث 4769 لحسابات خدمة بنوع تشفير 0x17 (RC4) يطلبها مستخدم واحد.
  • DCSync: حدث 4662 على وحدة تحكم بالنطاق مع معرفات GUID لحقوق النسخ المتماثل (1131f6aa-9c07-11d1-f79f-00c04fc2dcd2 و1131f6ad-9c07-11d1-f79f-00c04fc2dcd2) يطلبها حساب ليس وحدة تحكم بالنطاق.
  • سرقة NTDS: ntdsutil أو vssadmin create shadow أو diskshadow على وحدة تحكم بالنطاق، تليها نسخ ntds.dit وخلية SYSTEM.

الفرز الخاص ببرامج الفدية

في حالة الفدية، يكون التشفير آخر خطوة في اختراق بدأ عادةً قبل أيام أو أسابيع. وللفرز مهمتان في وقت واحد: الحد من الضرر الآن، وتحديد نقطة الدخول والحسابات المستخدمة حتى لا يكرر المهاجم ذلك بعد الاستعادة.

  1. صوّر مذكرة الفدية وسجل امتداد الملفات واسم المذكرة. تحدد ID Ransomware ومشروع No More Ransom العائلة وأي أدوات فك تشفير مجانية.
  2. حدد بداية التشفير بترتيب مخرجات MFT أو سجل USN حسب الامتداد الجديد. يقودك أول ملف مشفر والعملية التي كتبته إلى برنامج التشفير والحساب الذي شغله.
  3. ابحث عن خطوات التحضير في 4688 وSysmon وسجلات PowerShell: vssadmin delete shadows وwmic shadowcopy delete وwbadmin delete catalog وbcdedit مع recoveryenabled no وإيقاف خدمات النسخ الاحتياطي وقواعد البيانات.
  4. تحقق من التسريب قبل التشفير، فمعظم الجماعات تسرق البيانات أولًا. ابحث عن rclone أو MEGAsync أو WinSCP أو restic أو عملاء المزامنة السحابية، وملفات rclone.conf في AppData، والأرشيفات الكبيرة في مجلدات التجميع، وحجم الخروج في SRUM.
  5. حدد طريقة النشر: المهام المجدولة عبر Group Policy أو PsExec أو WMI أو أداة إدارة عن بُعد تدفع برنامج التشفير عبر الشبكة، وكلها تشير إلى حساب مسؤول نطاق مخترق.
  6. تأكد من سلامة النسخ الاحتياطية وعدم اتصالها قبل الاعتماد عليها. يستهدف المهاجمون لوحات النسخ الاحتياطي ويحذفون المستودعات أولًا.
ابحث عن أقدم الملفات المشفرة في مخرجات MFT المحللة
Import-Csv E:\out\mft.csv |
  Where-Object { $_.Extension -eq '.lockbit' } |
  Sort-Object { [datetime]$_.Created0x10 } |
  Select-Object -First 20 ParentPath, FileName, Created0x10, LastModified0x10

بناء الجدول الزمني

الجدول الزمني هو المنتج الرئيسي للفرز. فهو يحول مئات الملاحظات إلى قصة: الوصول الأولي، والتنفيذ، والاستمرار، ورفع الصلاحيات، والحركة الجانبية، والجمع، والتسريب، والأثر. أبقه بتوقيت UTC، واذكر الأثر لكل إدخال، وافصل ما أكدته عما تستنتجه.

جدول زمني شامل عبر Plaso (على صورة كاملة أو VHDX من KAPE)
log2timeline.py --storage-file host01.plaso E:\IR-2026-031\HOST01\tout\HOST01.vhdx
psort.py -o dynamic -w host01-timeline.csv host01.plaso "date > '2026-10-20 00:00:00' AND date < '2026-10-28 00:00:00'"

للسرعة، حمّل ملفات CSV من EvtxECmd وMFTECmd وPECmd وAmcacheParser وHayabusa في Timeline Explorer جنبًا إلى جنب، وصفِّ على نافذة الحادثة، وانسخ الصفوف المهمة إلى جدول بسيط بأعمدة الوقت والجهاز والحساب والنشاط والأثر المصدر ودرجة الثقة. هذا الجدول هو ما ستسلمه إلى الإدارة والقانونيين وشركات التأمين والسلطات.

أمثلة على إدخالات الجدول الزمني للفرز
الوقت (UTC)الجهازالنشاطالمصدر
2026-10-21 08:14:09HOST01المستخدم bob يفتح invoice.iso من Downloads (Mark of the Web من موقع مشاركة ملفات)MFT وZone.Identifier وLNK
2026-10-21 08:14:31HOST01rundll32.exe يحمل DLL من ISO المربوط، واتصال HTTPS خارج إلى نطاق جديدSysmon 1 و3 وذاكرة DNS
2026-10-21 08:20:02HOST01إنشاء مهمة مجدولة لتشغيل DLL عند الدخول4698 وTaskScheduler 106
2026-10-22 01:47:55HOST01وصول rundll32.exe مع comsvcs.dll إلى ذاكرة LSASSSysmon 10 و4688
2026-10-22 02:03:12FS02دخول شبكي باسم svc_backup من HOST01 وتثبيت PSEXESVC4624 من النوع 3 و7045

الاحتواء والإزالة والتسليم

احتوِ في خطوة واحدة منسقة بعد فهم النطاق. فالاحتواء الجزئي، مثل تغيير كلمة مرور واحدة مع احتفاظ المهاجم بباب خلفي في مكان آخر، يعلمه الاختباء بشكل أفضل.

  1. اعزل كل جهاز مؤكد عبر EDR أو الشبكة، مع إبقائه يعمل حتى اكتمال الجمع.
  2. احظر المؤشرات عند المحيط والوكيل وDNS وEDR: نطاقات وعناوين القيادة والتحكم وبصمات الملفات والشهادات الخبيثة.
  3. عطّل الحسابات المخترقة وأعد تعيين كلمات مرورها مرتين. وإذا اختُرق مسؤول نطاق أو وحدة تحكم بالنطاق، فخطط لإعادة تعيين krbtgt (مرتين مع نسخ متماثل كامل بينهما) وأعد تعيين كل بيانات الاعتماد الامتيازية وحسابات الخدمة.
  4. أزل وسائل الاستمرار التي وجدتها من كل جهاز، مستخدمًا البحث عن المؤشرات في البيئة لإيجاد الأجهزة التي لم تفرزها.
  5. أعد بناء الأجهزة المخترقة من صور سليمة بدل تنظيفها، فالتنظيف يفوته ما لم تجده.
  6. أصلح مسار الوصول الأولي أو أغلقه: VPN الضعيف أو RDP المكشوف أو الحساب المستهدف بالتصيد دون MFA.
  7. راقب عن كثب لمدة 30 يومًا على الأقل المؤشرات والحسابات والتقنيات نفسها.

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

قائمة تحقق سريعة

  1. افتح سجل حالة بتوقيت UTC، وسجل من وماذا ومتى لكل إجراء.
  2. سجل هوية الجهاز والمنطقة الزمنية وفرق الساعة ومدة التشغيل والمستخدمين المسجلين.
  3. قرر الاحتواء، وفضّل عزل EDR على الإطفاء.
  4. التقط الذاكرة واحسب بصمتها.
  5. سجل العمليات مع الأوامر والآباء، واتصالات الشبكة، وذاكرة DNS، وجلسات SMB، والمسؤولين المحليين.
  6. شغّل Autoruns وراجع المهام المجدولة والخدمات واشتراكات WMI ومفاتيح Run واستثناءات Defender.
  7. صدّر كل سجلات الأحداث وشغّل عليها Hayabusa أو Chainsaw.
  8. اجمع صورة فرز عبر KAPE أو Velociraptor وحللها بأدوات Eric Zimmerman.
  9. راجع آثار التنفيذ: prefetch وAmcache وShimCache وBAM وSRUM وسجل PowerShell.
  10. راجع MFT وسجل USN بحثًا عن إسقاط الأدوات والتجميع والحذف.
  11. تتبع الحركة الجانبية في الاتجاهين وافترض أن البيانات المخزنة مسروقة.
  12. ابنِ الجدول الزمني، وابحث عن المؤشرات في البيئة، ثم احتوِ في خطوة واحدة منسقة.

الخاتمة

يتبع فرز Windows الجيد ترتيبًا ثابتًا: سجل السياق، والتقط الأدلة المتطايرة، وافحص وسائل الاستمرار وسجلات الأحداث، واجمع صورة فرز، ثم احتوِ. يحافظ هذا الترتيب على صلاحية الأدلة ويجيب عن الأسئلة المهمة: كيف دخل المهاجم، وماذا لمس، وهل ما زال موجودًا. تدرب على جهاز اختبار لتكون الحقيبة والخطوات مألوفة قبل أي حادثة حقيقية.

  • Windows
  • DFIR
  • الاستجابة للحوادث
  • الفرز
  • التحليل الجنائي
  • KAPE
  • Velociraptor
  • Volatility
  • سجلات الأحداث
  • صيد التهديدات
  • القيادة الأمنيةقراءة 24 دقيقة

    ستتعرض للاختراق. مهمتك أن تجعل ذلك مكلفًا.

    لا وجود للأمن الكامل، والذكاء الاصطناعي يخفض تكلفة الهجوم. دليل لمسؤولي أمن المعلومات عن مستويات التهديد، والدفاع بالذكاء الاصطناعي، والحوار مع مجلس الإدارة، ورفع ثمن اختراقك.

  • الاستجابة للحوادثقراءة 14 دقيقة

    كيف تستجيب لهجوم فدية: دليل خطوة بخطوة

    ما يجب فعله في الساعة الأولى من هجوم الفدية وما بعدها: الاحتواء والأدلة وتحديد النطاق وسرقة البيانات وقرار الدفع والإبلاغ والإزالة وترتيب التعافي والتحصين، مع الأوامر.

  • دليل التحصينقراءة 20 دقيقة

    تحصين خادم Linux VPS: دليل عملي كامل

    تحصين خطوة بخطوة لخادم Ubuntu أو Debian أو RHEL مكشوف على الإنترنت: SSH، وجدران الحماية، وإعدادات النواة، والعزل، والتدقيق، ومراقبة السلامة، والنسخ الاحتياطي، والتحقق.

  • الاستجابة للحوادثقراءة 21 دقيقة

    الفرز الجنائي في Linux للاستجابة للحوادث

    دليل عملي لفرز خوادم Linux والحاويات المخترقة: التقاط الذاكرة، وتحليل /proc، ومفاتيح SSH، والسجلات، والبحث عن وسائل الاستمرار، وفحص rootkit، والجمع عبر UAC.

الفرز الجنائي في Windows للاستجابة للحوادث | ABYSSS