
مسارات الاستغلال التي تسمح لك بـ (إساءة) استخدام صلاحيات ويندوز لرفع صلاحياتك داخل نظام التشغيل.
الفكرة هي "ترجمة" صلاحيات نظام ويندوز إلى مسار يؤدي إلى:
تم سرد الصلاحيات وشرحها على: https://learn.microsoft.com/en-us/windows/win32/secauthz/privilege-constants
إذا كان الهدف يمكن تحقيقه بطرق متعددة، تكون الأولوية:
يمكنك التحقق من صلاحياتك الخاصة باستخدام whoami /priv. الصلاحيات المعطلة تعادل المفعلة. الشيء المهم الوحيد هو ما إذا كان لديك الصلاحية في القائمة أم لا.
ملاحظة 1: عندما ينتهي مسار الهجوم بإنشاء رمز (token)، يمكنك افتراض أن الخطوة التالية هي إنشاء عملية جديدة باستخدام هذا الرمز ثم السيطرة على نظام التشغيل.
ملاحظة 2:
أ. لاستدعاء NtQuerySystemInformation()/ZwQuerySystemInformation() مباشرة، يمكنك العثور على الصلاحيات المطلوبة هنا.
ب. بالنسبة لـ NtSetSystemInformation()/ZwSetSystemInformation()، تم سرد الصلاحيات المطلوبة هنا.
ملاحظة 3: أركز على نظام التشغيل فقط. إذا كانت الصلاحية تعمل في Active Directory ولكن ليس في نظام التشغيل نفسه، أصفها بأنها غير مستخدمة في نظام التشغيل. سيكون من الجيد أن يتعمق شخص ما في السيناريوهات الموجهة لـ AD.
لا تتردد في المساهمة و/أو مناقشة الأفكار المقدمة.
الشكر والتقدير:
| الصلاحية | التأثير | الأداة | مسار التنفيذ | ملاحظات |
|---|
SeAssignPrimaryToken | مسؤول | أداة طرف ثالث | "سيسمح للمستخدم بانتحال الرموز ورفع الصلاحية إلى NT SYSTEM باستخدام أدوات مثل potato.exe و rottenpotato.exe و juicypotato.exe" | شكرًا Aurélien Chalot على التحديث. سأحاول إعادة صياغتها إلى شيء أشبه بالوصفة قريبًا. |
SeAudit | تهديد | أداة طرف ثالث | كتابة أحداث إلى سجل أحداث الأمان (Security event log) لخداع التدقيق أو للكتابة فوق الأحداث القديمة. | يمكن كتابة الأحداث الخاصة باستخدام واجهة برمجة التطبيقات Authz Report Security Event.- انظر PoC بواسطة @daem0nc0re |
SeBackup | مسؤول | أداة طرف ثالث | 1. عمل نسخ احتياطي لخوادم التسجيل HKLM\SAM و HKLM\SYSTEM 2. استخراج تجزئات الحسابات المحلية من قاعدة بيانات SAM 3. تمرير التجزئة (Pass-the-Hash) كعضو في مجموعة Administrators المحلية بدلاً من ذلك، يمكن استخدامه لقراءة الملفات الحساسة. | لمزيد من المعلومات، راجع ملف SeBackupPrivilege.- انظر PoC بواسطة @daem0nc0re |
SeChangeNotify | لا شيء | - | - | الصلاحية مملوكة للجميع. إبطالها قد يجعل نظام التشغيل (Windows Server 2019) غير قابل للإقلاع. |
SeCreateGlobal | ? | ? | ? | |
SeCreatePagefile | لا شيء | أوامر مدمجة | إنشاء ملف hiberfil.sys، قراءته بدون اتصال، البحث عن بيانات حساسة. | يتطلب وصولاً بدون اتصال، مما يؤدي إلى صلاحيات المسؤول على أي حال. - انظر PoC بواسطة @daem0nc0re |
SeCreatePermanent | ? | ? | ? | |
SeCreateSymbolicLink | ? | ? | ? | |
SeCreateToken | مسؤول | أداة طرف ثالث | إنشاء رمز عشوائي بما في ذلك صلاحيات المسؤول المحلي باستخدام NtCreateToken.- انظر PoC بواسطة @daem0nc0re | |
SeDebug | مسؤول | PowerShell | تكرار رمز lsass.exe. | النص البرمجي موجود على FuzzySecurity. - انظر PoC بواسطة @daem0nc0re |
SeDelegateSession-UserImpersonate | ? | ? | ? | اسم الصلاحية مقطوع لتضييق العمود. |
SeEnableDelegation | لا شيء | - | - | الصلاحية غير مستخدمة في نظام تشغيل Windows. |
SeImpersonate | مسؤول | أداة طرف ثالث | أدوات من عائلة Potato (potato.exe, RottenPotato, RottenPotatoNG, Juicy Potato, SweetPotato, RemotePotato0), RogueWinRM, PrintSpoofer, إلخ. | على غرار SeAssignPrimaryToken، يسمح من الناحية التصميمية بإنشاء عملية تحت سياق أمان مستخدم آخر (باستخدام مقبض لرمز ذلك المستخدم). يمكن استخدام أدوات وتقنيات متعددة للحصول على الرمز المطلوب. |
SeIncreaseBasePriority | التوفر | أوامر مدمجة | start /realtime SomeCpuIntensiveApp.exe | قد يكون أكثر إثارة للاهتمام على الخوادم. |
SeIncreaseQuota | التوفر | أداة طرف ثالث | تغيير حدود وحدة المعالجة المركزية والذاكرة والتخزين المؤقت إلى قيم تجعل نظام التشغيل غير قابل للإقلاع. | - لا يتم التحقق من الحصص في الوضع الآمن، مما يجعل الإصلاح سهلاً نسبيًا. - يتم استخدام نفس الصلاحية لإدارة حصص التسجيل. |
SeIncreaseWorkingSet | لا شيء | - | - | الصلاحية مملوكة للجميع. يتم التحقق منها عند استدعاء وظائف ضبط إدارة الذاكرة الدقيقة. |
SeLoadDriver | مسؤول | أداة طرف ثالث | 1. تحميل برنامج تشغيل kernel معيب مثل szkg64.sys2. استغلال ثغرة برنامج التشغيل بدلاً من ذلك، قد تُستخدم الصلاحية لإلغاء تحميل برامج تشغيل متعلقة بالأمان باستخدام الأمر المدمج fltMC. مثال: fltMC sysmondrv | 1. ثغرة szkg64 مسجلة كـ CVE-2018-157322. كود استغلال szkg64 تم إنشاؤه بواسطة Parvez Anwar |
SeLockMemory | التوفر | أداة طرف ثالث | تجويع قسم ذاكرة النظام عن طريق نقل الصفحات. | تم نشر PoC بواسطة Walied Assar (@waleedassar) |
SeMachineAccount | لا شيء | - | - | الصلاحية غير مستخدمة في نظام تشغيل Windows. |
SeManageVolume | مسؤول | أداة طرف ثالث | 1. تمكين الصلاحية في الرمز 2. إنشاء مقبض إلى \.\C: مع SYNCHRONIZE | FILE_TRAVERSE3. إرسال FSCTL_SD_GLOBAL_CHANGE لاستبدال S-1-5-32-544 بـ S-1-5-32-5454. الكتابة فوق utilman.exe إلخ. | يمكن إجراء FSCTL_SD_GLOBAL_CHANGE باستخدام هذا الجزء من الكود. |
SeProfileSingleProcess | لا شيء | - | - | يتم التحقق من الصلاحية قبل تغيير (وفي مجموعة محدودة جدًا من الأوامر، قبل الاستعلام) معلمات Prefetch و SuperFetch و ReadyBoost. قد يتم تعديل التأثير، حيث أن التأثير الفعلي غير معروف. |
SeRelabel | تهديد | أداة طرف ثالث | تعديل ملفات النظام بواسطة مسؤول شرعي | انظر: وثائق MIC توفر ملصقات النزاهة حماية إضافية، بالإضافة إلى قوائم التحكم بالوصول المعروفة (ACLs). السيناريوهان الرئيسيان يشملان: - الحماية ضد الهجمات التي تستخدم تطبيقات قابلة للاستغلال مثل المتصفحات وقارئات PDF إلخ. - حماية ملفات نظام التشغيل. وجود SeRelabel في الرمز سيسمح باستخدام وصول WRITE_OWNER إلى مورد، بما في ذلك الملفات والمجلدات. لسوء الحظ، الرمز الذي يحتوي على IL أقل من High سيكون لديه صلاحية SeRelabel معطلة، مما يجعله عديم الفائدة لأي شخص ليس مسؤولًا بالفعل.انظر منشور مدونة ممتاز بواسطة @tiraniddo للحصول على التفاصيل. |
SeRemoteShutdown | التوفر | أوامر مدمجة | shutdown /s /f /m \\server1 /d P:5:19 | يتم التحقق من الصلاحية عندما يأتي طلب الإغلاق/إعادة التشغيل من الشبكة. سيناريو 127.0.0.1 قيد التحقيق. |
SeReserveProcessor | لا شيء | - | - | يبدو أن الصلاحية لم تعد مستخدمة وظهرت فقط في عدد قليل من إصدارات winnt.h. يمكنك رؤيتها مدرجة، على سبيل المثال، في الكود المصدري المنشور بواسطة Microsoft هنا. |
SeRestore | مسؤول | PowerShell | 1. تشغيل PowerShell/ISE مع وجود صلاحية SeRestore. 2. تمكين الصلاحية باستخدام Enable-SeRestorePrivilege). 3. إعادة تسمية utilman.exe إلى utilman.old 4. إعادة تسمية cmd.exe إلى utilman.exe 5. قفل وحدة التحكم والضغط على Win+U | قد يتم كشف الهجوم بواسطة بعض برامج مكافحة الفيروسات. الطريقة البديلة تعتمد على استبدال ملفات الخدمة الثنائية المخزنة في "Program Files" باستخدام نفس الصلاحية. - انظر PoC بواسطة @daem0nc0re |
SeSecurity | تهديد | أوامر مدمجة | - مسح سجل أحداث الأمان: wevtutil cl Security- تقليص سجل الأمان إلى 20 ميجابايت لجعل الأحداث تُفرغ قريبًا: wevtutil sl Security /ms:0- قراءة سجل أحداث الأمان لمعرفة العمليات والوصول وإجراءات المستخدمين الآخرين داخل النظام. - معرفة ما يتم تسجيله للعمل تحت الرادار. - معرفة ما يتم تسجيله لتوليد عدد كبير من الأحداث لإزالة القديمة بشكل فعال دون ترك أدلة واضحة على التنظيف. - عرض وتغيير SACLs للكائنات (عمليًا: إعدادات التدقيق) | انظر PoC بواسطة @daem0nc0re |
SeShutdown | التوفر | أوامر مدمجة | shutdown.exe /s /f /t 1 | يسمح باستدعاء معظم مستويات NtPowerInformation(). قيد التحقيق. يسمح باستدعاء NtRaiseHardError() مما يسبب BSOD فوري وتفريغ للذاكرة، مما يؤدي إلى احتمال كشف معلومات حساسة - انظر PoC بواسطة @daem0nc0re |
SeSyncAgent | لا شيء | - | - | الصلاحية غير مستخدمة في نظام تشغيل Windows. |
SeSystemEnvironment | غير معروف | أداة طرف ثالث | تسمح الصلاحية باستخدام NtSetSystemEnvironmentValue, NtModifyDriverEntry وبعض استدعاءات النظام الأخرى للتلاعب بمتغيرات UEFI. | الصلاحية مطلوبة لتشغيل sysprep.exe. بالإضافة إلى ذلك: |
SeSystemProfile | ? | ? | ? | |
SeSystemtime | تهديد | أوامر مدمجة | cmd.exe /c date 01-01-01cmd.exe /c time 00:00 | تسمح الصلاحية بتغيير وقت النظام، مما قد يؤدي إلى مشاكل في سلامة مسار التدقيق، حيث سيتم تخزين الأحداث بوقت/تاريخ خاطئ. - كن حذرًا مع تنسيقات التاريخ/الوقت. استخدم دائمًا قيمًا آمنة إذا لم تكن متأكدًا. - أحيانًا يُستخدم اسم الصلاحية بحرف "T" كبير ويشار إليه باسم SeSystemTime. |
SeTakeOwnership | مسؤول | أوامر مدمجة | 1. takeown.exe /f "%windir%\system32"2. icacls.exe "%windir%\system32" /grant "%username%":F3. إعادة تسمية cmd.exe إلى utilman.exe 4. قفل وحدة التحكم والضغط على Win+U | قد يتم كشف الهجوم بواسطة بعض برامج مكافحة الفيروسات. الطريقة البديلة تعتمد على استبدال ملفات الخدمة الثنائية المخزنة في "Program Files" باستخدام نفس الصلاحية. - انظر PoC بواسطة @daem0nc0re |
SeTcb | مسؤول | أداة طرف ثالث | التلاعب بالرموز لتضمين صلاحيات المسؤول المحلي. | نموذج كود + exe لإنشاء رموز عشوائية موجود في PsBits. |
SeTimeZone | فوضى | أوامر مدمجة | تغيير المنطقة الزمنية. tzutil /s "Chatham Islands Standard Time" | |
SeTrustedCredManAccess | تهديد | أداة طرف ثالث | تفريغ بيانات الاعتماد من مدير الاعتماد (Credential Manager) | منشور مدونة ممتاز بواسطة @tiraniddo. - انظر PoC بواسطة @daem0nc0re |
SeUndock | لا شيء | - | - | يتم تمكين الصلاحية عند الفصل (undocking)، ولكن لم يُلاحظ أبدًا التحقق منها لمنح/رفض الوصول. عمليًا يعني أنها غير مستخدمة ولا يمكن أن تؤدي إلى أي تصعيد. |
SeUnsolicitedInput | لا شيء | - | - | الصلاحية غير مستخدمة في نظام تشغيل Windows. |