انتقل إلى المحتوى الرئيسي

المختبر 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

أسئلة:

  1. ما هي الامتيازات التي لديك؟
  2. هل الامتياز SeImpersonatePrivilege موجود؟

الخطوة 1.3: من لديه SeImpersonatePrivilege؟​

بشكل افتراضي، يُمنح هذا الامتياز لـ:

  • LOCAL SERVICE
  • NETWORK SERVICE
  • Administrators
  • خدمات ويندوز
# التحقق مما إذا كان لديك الامتياز
(whoami /priv) | Select-String "SeImpersonate"

الجزء 2: ثغرة الانتحال عبر الأنابيب​

الخطوة 2.1: مفهوم الهجوم​

1. المهاجم ينشئ أنبوبًا مسمىً بإذونات ضعيفة
2. عملية ذات امتيازات (SYSTEM) تتصل بالأنبوب
3. المهاجم "ينتحل" توكن SYSTEM
4. المهاجم ينفذ كودًا كـ SYSTEM

الخطوة 2.2: الشروط اللازمة​

لاستغلال هذه الثغرة:

  • امتلاك SeImpersonatePrivilege أو SeAssignPrimaryTokenPrivilege
  • القدرة على إنشاء أنبوب مسمى
  • القدرة على إجبار عملية ذات امتيازات على الاتصال به

الخطوة 2.3: الخدمات الضعيفة تاريخيًا​

الخدمةالثغرةCVE
Print SpoolerSpoolFool، PrintNightmareCVE-2021-1675
BITSانتحال التوكنمتعددة
WMIتفعيل DCOMمتعددة
MSDTCانتحال التوكنمتعددة

الجزء 3: عائلة هجمات "Potato"​

الخطوة 3.1: نظرة عامة​

تستغل هجمات "Potato" الـ IPC لتصعيد الامتيازات:

الاسمالسنةالطريقة
Hot Potato2016انتحال NBNS + WPAD
Rotten Potato2016DCOM + ترحيل NTLM
Juicy Potato2018استغلال CLSID في DCOM
Rogue Potato2020محلل OXID مزيف
Sweet Potato2020تقنيات مركبة
PrintSpoofer2020أنبوب Print Spooler
GodPotato2022تقنية DCOM جديدة

الخطوة 3.2: العمل العام​

[خدمة مع SeImpersonate]
|
v
[إنشاء أنبوب أو مستمع]
|
v
[إجبار SYSTEM على الاتصال عبر DCOM/Spooler/إلخ.]
|
v
[التقاط توكن SYSTEM]
|
v
[تنفيذ أمر كـ SYSTEM]

الخطوة 3.3: PrintSpoofer - مثال مفاهيمي​

يستغل PrintSpoofer خدمة Print Spooler:

  1. يحتوي الـ spooler على وظيفة تتصل بالأنابيب
  2. يتم إنشاء أنبوب باسم محدد
  3. يتم تحفيز اتصال الـ spooler
  4. يتم انتحال توكن 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​

عبر سياسة الأمان المحلية:

  1. secpol.msc
  2. السياسات المحلية > تعيين حقوق المستخدم
  3. "انتحال هوية العميل بعد المصادقة"
  4. إزالة المجموعات غير الضرورية

الخطوة 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: تدقيق كامل​

قم بإجراء تدقيق لجهازك الافتراضي:

  1. قم بإدراج جميع الخدمات مع SeImpersonatePrivilege
  2. حدد الأنابيب النشطة ومالكها
  3. تحقق من حالة الخدمات المعرضة للخطر (Spooler، BITS، إلخ.)
  4. حلل السجلات للاتصالات المشبوهة بالأنابيب

الخطوة 6.2: تقرير التدقيق​

قم بإنشاء تقرير يتضمن:

  • الحالة الحالية لأمان IPC
  • المخاطر المحددة
  • توصيات العلاج

التسليمات​

  1. تقرير التدقيق (2-3 صفحات):

    • جرد الخدمات المعرضة للخطر
    • تحليل الامتيازات
    • توصيات
  2. لقطات شاشة:

    • whoami /priv
    • قائمة الأنابيب
    • سكربت التحقق المنفذ
  3. الإجابات على الأسئلة الستة


معايير التقييم​

المعيارالنقاط
فهم التوكنات20%
تحليل هجمات Potato25%
الكشف والتنفيذ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