المختبر 10.2: استغلال خدمات IPC
الأهداف التعليمية
في نهاية هذا المختبر، ستكون قادرًا على:
- فهم الثغرات المتعلقة بـ IPC في ويندوز
- تحديد خدمات IPC سيئة التكوين
- فهم هجمات من نوع "Potato"
- تحليل مخاطر انتحال التوكن
- تنفيذ دفاعات مناسبة
المدة المقدرة
50 دقيقة
المتطلبات المسبقة
- إكمال المختبر 10.1
- جهاز افتراضي ويندوز 10/11
- حقوق المسؤول
- معرفة أساسية بالتوكنات في ويندوز
السياق المهني
يتم استغلال ثغرات IPC في:
- 70% من تصعيد الامتيازات في ويندوز
- هجمات من نوع Potato (مثل JuicyPotato، PrintSpoofer، إلخ.)
- الحركة الجانبية في بيئة Active Directory
- البرمجيات الخبيثة المتقدمة وAPT
تحذير أخلاقي وقانوني
هذا المختبر تعليمي بحت.
التقنيات المقدمة تُستخدم من قبل:
- مختبري الاختراق أثناء الاختبارات المصرح بها
- فرق Red Teams لمحاكاة الهجمات
- فرق الأمان لفهم التهديدات
ممنوع بدون إذن صريح:
- على الأنظمة الإنتاجية
- على الأجهزة التي لا تملكها
- لأغراض خبيثة
الجزء 1: فهم التوكنات في ويندوز
الخطوة 1.1: أنواع التوكنات
يستخدم ويندوز التوكنات لإدارة الهوية والامتيازات:
| النوع | الوصف | الاستخدام |
|---|---|---|
| Primary Token | التوكن الرئيسي للعملية | هوية العملية |
| Impersonation Token | توكن مؤقت | العمل نيابة عن مستخدم آخر |
مستويات الانتحال:
SecurityAnonymous: لا توجد معلومات عن العميلSecurityIdentification: يمكن التعرف ولكن لا يمكن العملSecurityImpersonation: يمكن العمل محليًاSecurityDelegation: يمكن العمل عبر الشبكة
الخطوة 1.2: رؤية التوكن الحالي الخاص بك
# معلومات عن التوكن الحالي
whoami /all
# امتيازات التوكن
whoami /priv
أسئلة:
- ما هي الامتيازات التي لديك؟
- هل الامتياز
SeImpersonatePrivilegeموجود؟
الخطوة 1.3: من لديه SeImpersonatePrivilege؟
بشكل افتراضي، يُمنح هذا الامتياز لـ:
LOCAL SERVICENETWORK SERVICEAdministrators- خدمات ويندوز
# التحقق مما إذا كان لديك الامتياز
(whoami /priv) | Select-String "SeImpersonate"
الجزء 2: ثغرة الانتحال عبر الأنابيب
الخطوة 2.1: مفهوم الهجوم
1. المهاجم ينشئ أنبوبًا مسمىً بإذونات ضعيفة
2. عملية ذات امتيازات (SYSTEM) تتصل بالأنبوب
3. المهاجم "ينتحل" توكن SYSTEM
4. المهاجم ينفذ كودًا كـ SYSTEM
الخطوة 2.2: الشروط اللازمة
لاستغلال هذه الثغرة:
- امتلاك
SeImpersonatePrivilegeأوSeAssignPrimaryTokenPrivilege - القدرة على إنشاء أنبوب مسمى
- القدرة على إجبار عملية ذات امتيازات على الاتصال به
الخطوة 2.3: الخدمات الضعيفة تاريخيًا
| الخدمة | الثغرة | CVE |
|---|---|---|
| Print Spooler | SpoolFool، PrintNightmare | CVE-2021-1675 |
| BITS | انتحال التوكن | متعددة |
| WMI | تفعيل DCOM | متعددة |
| MSDTC | انتحال التوكن | متعددة |
الجزء 3: عائلة هجمات "Potato"
الخطوة 3.1: نظرة عامة
تستغل هجمات "Potato" الـ IPC لتصعيد الامتيازات:
| الاسم | السنة | الطريقة |
|---|---|---|
| Hot Potato | 2016 | انتحال NBNS + WPAD |
| Rotten Potato | 2016 | DCOM + ترحيل NTLM |
| Juicy Potato | 2018 | استغلال CLSID في DCOM |
| Rogue Potato | 2020 | محلل OXID مزيف |
| Sweet Potato | 2020 | تقنيات مركبة |
| PrintSpoofer | 2020 | أنبوب Print Spooler |
| GodPotato | 2022 | تقنية DCOM جديدة |
الخطوة 3.2: العمل العام
[خدمة مع SeImpersonate]
|
v
[إنشاء أنبوب أو مستمع]
|
v
[إجبار SYSTEM على الاتصال عبر DCOM/Spooler/إلخ.]
|
v
[التقاط توكن SYSTEM]
|
v
[تنفيذ أمر كـ SYSTEM]
الخطوة 3.3: PrintSpoofer - مثال مفاهيمي
يستغل PrintSpoofer خدمة Print Spooler:
- يحتوي الـ spooler على وظيفة تتصل بالأنابيب
- يتم إنشاء أنبوب باسم محدد
- يتم تحفيز اتصال الـ spooler
- يتم انتحال توكن SYSTEM الخاص بالـ spooler
ملاحظة: نحن لا ننفذ الاستغلال، بل نفهم الآلية.
الجزء 4: اكتشاف هجمات IPC
الخطوة 4.1: مؤشرات الاختراق (IOC)
أنابيب مشبوهة:
# البحث عن أنابيب بأسماء غير معتادة
Get-ChildItem \\.\pipe\ | Where-Object {
$_.Name -match "(spoof|potato|pipe[0-9]|test)"
}
عمليات مشبوهة:
# عمليات مع SeImpersonatePrivilege التي لا ينبغي أن تكون لديها
Get-Process | ForEach-Object {
$proc = $_
try {
$token = [System.Security.Principal.WindowsIdentity]::GetCurrent()
# تحليل الامتيازات...
} catch {}
}
الخطوة 4.2: أحداث Sysmon
# معرف الحدث 17: أنبوب تم إنشاؤه
Get-WinEvent -FilterHashtable @{
LogName = 'Microsoft-Windows-Sysmon/Operational'
ID = 17
} -MaxEvents 50 | Where-Object {
$_.Message -match "(spoof|potato)"
} | Format-Table TimeCreated, Message -Wrap
# معرف الحدث 18: أنبوب متصل
Get-WinEvent -FilterHashtable @{
LogName = 'Microsoft-Windows-Sysmon/Operational'
ID = 18
} -MaxEvents 50 | Format-Table TimeCreated, Message -Wrap
الخطوة 4.3: أحداث سجل الأمان
# معرف الحدث 4688: إنشاء عملية مع انتحال
Get-WinEvent -FilterHashtable @{
LogName = 'Security'
ID = 4688
} -MaxEvents 100 | Where-Object {
$_.Message -match "Impersonation"
}
أسئلة: 3. ما هي الأحداث التي وجدتها؟ 4. كيف ستكتشف هجوم Potato؟
الجزء 5: الدفاعات والتقوية
الخطوة 5.1: تقليل سطح الهجوم
تعطيل الخدمات غير الضرورية:
# التحقق من حالة Print Spooler
Get-Service Spooler
# تعطيل إذا لم يكن ضروريًا (تحذير في الإنتاج!)
# Stop-Service Spooler
# Set-Service Spooler -StartupType Disabled
الخطوة 5.2: تقييد SeImpersonatePrivilege
عبر سياسة الأمان المحلية:
secpol.msc- السياسات المحلية > تعيين حقوق المستخدم
- "انتحال هوية العميل بعد المصادقة"
- إزالة المجموعات غير الضرورية
الخطوة 5.3: تفعيل الحمايات
Windows Defender Credential Guard:
# التحقق مما إذا كان Credential Guard نشطًا
Get-CimInstance -ClassName Win32_DeviceGuard -Namespace root\Microsoft\Windows\DeviceGuard
حماية LSA:
# التحقق من حماية LSA
Get-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\Lsa" -Name "RunAsPPL"
الخطوة 5.4: سكربت التحقق من الأمان
# سكربت التحقق من تكوين IPC
Write-Host "=== التحقق من أمان IPC ===" -ForegroundColor Cyan
# 1. Print Spooler
$spooler = Get-Service Spooler -ErrorAction SilentlyContinue
if ($spooler.Status -eq "Running") {
Write-Host "[!] Print Spooler نشط" -ForegroundColor Yellow
} else {
Write-Host "[OK] Print Spooler غير نشط" -ForegroundColor Green
}
# 2. الأنابيب غير المعتادة
$suspectPipes = Get-ChildItem \\.\pipe\ | Where-Object {
$_.Name -match "(spoof|potato|test[0-9])"
}
if ($suspectPipes) {
Write-Host "[!] أنابيب مشبوهة مكتشفة:" -ForegroundColor Red
$suspectPipes | ForEach-Object { Write-Host " $_" }
} else {
Write-Host "[OK] لا توجد أنابيب مشبوهة" -ForegroundColor Green
}
# 3. SeImpersonatePrivilege
if ((whoami /priv) -match "SeImpersonate.*Enabled") {
Write-Host "[INFO] SeImpersonatePrivilege نشط" -ForegroundColor Yellow
}
Write-Host "`n=== نهاية التحقق ===" -ForegroundColor Cyan
أسئلة: 5. هل نظامك عرضة لهجمات Potato؟ 6. ما هي الإجراءات التي ستنفذها؟
الجزء 6: تمرين عملي
الخطوة 6.1: تدقيق كامل
قم بإجراء تدقيق لجهازك الافتراضي:
- قم بإدراج جميع الخدمات مع SeImpersonatePrivilege
- حدد الأنابيب النشطة ومالكها
- تحقق من حالة الخدمات المعرضة للخطر (Spooler، BITS، إلخ.)
- حلل السجلات للاتصالات المشبوهة بالأنابيب
الخطوة 6.2: تقرير التدقيق
قم بإنشاء تقرير يتضمن:
- الحالة الحالية لأمان IPC
- المخاطر المحددة
- توصيات العلاج
التسليمات
-
تقرير التدقيق (2-3 صفحات):
- جرد الخدمات المعرضة للخطر
- تحليل الامتيازات
- توصيات
-
لقطات شاشة:
- whoami /priv
- قائمة الأنابيب
- سكربت التحقق المنفذ
-
الإجابات على الأسئلة الستة
معايير التقييم
| المعيار | النقاط |
|---|---|
| فهم التوكنات | 20% |
| تحليل هجمات Potato | 25% |
| الكشف والتنفيذ | 25% |
| توصيات الأمان | 30% |
أوامر مرجعية
# الامتيازات
whoami /priv
whoami /all
# الخدمات
Get-Service Spooler, BITS, WMI
# الأنابيب
Get-ChildItem \\.\pipe\
# الأحداث
Get-WinEvent -FilterHashtable @{LogName='Security';ID=4688}
Get-WinEvent -FilterHashtable @{LogName='Microsoft-Windows-Sysmon/Operational';ID=17,18}
# التكوين
Get-ItemProperty "HKLM:\SYSTEM\CurrentControlSet\Control\Lsa"
موارد إضافية
تم تطوير المختبر في إطار دورة أنظمة التشغيل - الوحدة 10