باستخدام هذه الأداة، ستتمكن من اكتشاف:
التحكم غير الصحيح في الوصول إلى كائن COM (LaunchPermission، AccessPermission) - LPE من خلال أساليب COM التي يمكن إساءة استخدامها، وترحيل مصادقة DCOM. هذا هو PermissionHunter
.
حقوق التسجيل غير صحيحة لكائن COM - LPE من خلال اختطاف COM. هذا هو ComDiver
.
ابحث عن لقب الارتفاع الجديد - تجاوز UAC. هذا هو MonikerHound
.
احصل على معلومات مفصلة حول CLSID محدد - قم بفحص كائن COM للعثور على أساليب COM غير الصالحة. هذا هو ClsidExplorer
.
تحقق من التنشيط عبر الجلسات نيابةً عن مستخدم ذي امتيازات منخفضة - محاولة إنشاء كائن في جلسة شخص آخر لـ LPE. هذا هو ComTraveller
.
إذا قمنا بنشر هذه الأداة قبل بضعة أشهر (على سبيل المثال، ربيع 2024)، كنت قد اكتشفت CVE-2024-38100 (FakePotato) وCVE-2024-38061 (SilverPotato).
ابدأ في استخدام هذه الأداة ويمكنك العثور على المزيد من الطرق لرفع الامتيازات على أنظمة Windows. إنها مثل OleViewDotnet الآلي :)
PermissionHunter هي أداة تسمح لك بفحص LaunchPermission وActivatePermission على كافة كائنات COM الموجودة على النظام.
ملاحظة أ:mzhmo> .PermissionHunter.exe -h ، `-. .-' ,-"`````""-__ | / '-.._ _.-'` '-o, _>--:{{< ) |) .-'' '-.__ .-o` '-.______..-/` | ,-' / `-. `PermissionHunter - البحث عن LaunchPermission وActivatePermission CICADA8 Research Team غير الصحيحين من Michael Zhmaylo (MzHmO)PermissionHunter.exe أداة صغيرة تسمح لك بالعثور على كائنات COM المعرضة للخطر باستخدام LaunchPermission وActivatePermission[OPTIONS]-outfile غير الصحيحين: تنسيق اسم ملف الإخراج: تنسيق الإخراج. تم قبول "csv" و"xlsx"-h/--help: يعرض هذه النوافذ
لا يوجد سوى حجتين هنا:
-outfile
- اسم الملف مع تقرير الحقوق؛
-outformat
- تنسيق الملف مع التقرير، يمكنك إخراج كل من CSV وXLSX. من الأفضل أن يتم الإخراج بتنسيق CSV، لأنه إذا لم يكن لديك برنامج Excel، فلن تتمكن من الإخراج بتنسيق xlsx.
مثال:
PS A:mzhmo> .PermissionHunter -نتيجة الملف الخارجي -تنسيق xlsx ، `-. .-' ,-"`````""-__ | / '-.._ _.-'` '-o, _>--:{{< ) |) .-'' '-.__ .-o` '-.______..-/` | ,-' / `-. `PermissionHunter - البحث عن LaunchPermission وActivatePermission غير الصحيحة لفريق أبحاث CICADA8 من Michael Zhmaylo (MzHmO)[+] ستكون النتيجة بالنتيجة، بتنسيق xlsx[+] نجاح
بعد ذلك سوف تحصل على ملف result.xlsx، والذي سوف يسرد كافة الحقوق لكائنات COM الموجودة.
أقوم بإخراج الأعمدة التالية:
ApplicationID
- معرف التطبيق لكائن COM محدد. على سبيل المثال: {69AD4AEE-51BE-439b-A92C-86AE490E8B30}
؛
ApplicationName
- اسم التطبيق لكائن COM محدد. على سبيل المثال: Background Intelligent Transfer Service
؛
RunAs
- مفتاح التسجيل RunAs لكائن COM. على سبيل المثال: Interactive User
؛
LaunchAccess
، LaunchType
، LaunchPrincipal
، LaunchSid
- مفتاح التسجيل LaunchPermission. يحدد LaunchPrincipal المستخدم الذي لديه حقوق LaunchAccess لكائن COM. LaunchType - نوع ACE: تمكين أو تعطيل. LaunchSID - SID الخاص بـ LaunchPrincipal. السابق:
LocalLaunch. RemoteLaunch. التنشيط المحلي. RemoteActivation AccessAllowed NT AUTHORITYSYSTEM S-1-5-18
وهذا يعني أن النظام لديه أذونات LocalLaunch وRemoteLaunch وLocalActivation وRemoteActivation على كائن COM هذا؛
AccessAccess
، AccessType
، AccessPrincipal
، و AccessSID
- الحقول لها نفس معنى LaunchPermissions، فقط في سياق AccessPermission؛
AuthLevel
و ImpLevel
- مستوى المصادقة ومستوى الانتحال. افتراضيًا، يتم تعيينهما على RPC_C_AUTHN_LEVEL_CONNECT
و RPC_C_IMP_LEVEL_IDENTIFY
؛
CLSIDs
- معرفات CLSID لكائن COM.
إذا وجدت كائن COM يمكنك الوصول إليه نيابة عن مستخدم ذي امتيازات منخفضة، على سبيل المثال، فيمكنك إساءة استخدامه على النحو التالي:
قم بإنشاء مثيل واستدعاء أساليب كائن COM هذا، على سبيل المثال، لكتابة ملف عشوائي نيابة عن النظام. على سبيل المثال، عثرت على كائن COM بأسلوب DeployCmdShell()
الذي يعمل بالنيابة عن حساب NT AUTHORITYSYSTEM
ولديك LaunchPermissions
و AccessPermissions
. يمكنك بدء تشغيل كائن COM هذا، واستدعاء أسلوب DeployCmdShell()
، والحصول على تنفيذ التعليمات البرمجية نيابة عن النظام. يمكنك عرض الطرق المتاحة باستخدام ClsidExplorer
.
إساءة استخدام مصادقة DCOM. لهذا، راجع RemoteKrbRelay
جميع المعلومات حول كائنات COM موجودة في التسجيل. ولكن ماذا لو كان التسجيل غير صحيح؟ في مثل هذه الحالة لدينا إمكانية تجاوز إعدادات COM، على سبيل المثال، لاختطاف الملف القابل للتنفيذ.
تتيح لك هذه الأداة اكتشاف مثل هذه الثغرات الأمنية، وتقوم بفحص السجل وفقًا لأولوية المفاتيح التي يتم عرضها عند البحث عن كائنات COM. بهذه الطريقة، يمكنك أيضًا العثور على Shadow COM Hijacking. الأولوية هي كما يلي:
1. التعامل مع HKCUSoftwareClasses(GUID) كـ 2. تعامل HKLMSoftwareClasses(GUID) كـ 3.HKCUSoftwareClasses(GUID)InprocServer32 4. HKLMSoftwareClasses(GUID)InprocServer32 5.HKCUSoftwareClasses(GUID)LocalServer32 6.HKLMSoftwareClasses(GUID)LocalServer32
وهكذا يظهر على الأقل اتجاهان لتصعيد الامتيازات:
إذا كان لدينا أذونات الكتابة إلى HKCU...TreatAs
، وكان الملف القابل للتنفيذ COM الأصلي موجودًا في HKCU...LocalServer32
، فيمكننا القيام بـ Shadow COM Hijacking عن طريق كتابة الملف القابل للتنفيذ إلى HKCU..TreatAs
.
إذا كان كائن COM موجودًا في HKCU..LocalServer32
ويمكننا الكتابة إلى HKCU..LocalServer32
، فيمكننا القيام باختطاف COM
دعونا نلقي نظرة فاحصة على الأداة:
PS A:ssdgitrepoCOMThanasiaComDiverx64Debug> .ComDiver.exe -h / o ^ o / ( ) / ____________(%%%%%%%)____________ ( / / )%%%%%%%( ) (__/____/__/ ________) ( / /(%%%%%%%)) (__/____/ (%%%%%%%) _____) /() / (%%%%%) (%%%) !----------- COM DIVER -------------- [؟] أداة صغيرة للتحقق من أذونات التسجيل والقرص غير الآمنة على كائنات com [؟] ARGS -h/--help <- إظهار هذه الرسالة --من<- قم بتحليل معرفات CLSID من هذا clsid --target <- قم بتحليل هدف واحد clsid --no-context <- لا تتحقق من سياق خادم COM آخر. تحليل التسجيل فقط --no-create <- لا تقم بإنشاء كائن COM الهدف. هذا هو الوضع الأسرع
يقبل الحجج التالية:
--from
- يوجد الكثير من معرفات CLSID على نظام Windows. إذا كنت لا تريد أن تنظر الأداة إلى كل معرفات CLSID بدءًا من الأول، فيمكنك تحديد CLSID ليبدأ به، على سبيل المثال، --from {50FDBB99-5C92-495E-9E81-E2C2F48CDDA}
--target
- تحليل clsid محدد؛
--no-context
- لا تتحقق من اسم المستخدم الذي تم تشغيل كائن COM نيابة عنه؛
--no-create
- عدم إنشاء كائن COM الذي تم اكتشافه. وهذا يحد من المعلومات التي يمكنك الحصول عليها حول هذا الموضوع. ومع ذلك، هذه هي أسرع طريقة لفحص حقوق التسجيل فقط.
مثال:
.ComDiver.exe - لا يوجد إنشاء
في هذه الحالة يمكننا أن نرى أنه لا توجد مفاتيح داخل HKCU ولدينا أذونات الكتابة لهذه المفاتيح. وبناءً على ذلك، إذا كتبنا قيمتنا الخاصة على هذا المسار، فسنقوم باختطاف COM.
إذا رأيت خطوطًا حمراء في مخرجات الأداة، فهذه طريقة محتملة لإساءة استخدام كائن COM! يمكنك تنفيذ اختطاف COM (انتحال ملف قابل للتنفيذ موجود)، أو اختطاف COM الظل (انتحال ملف قابل للتنفيذ مفقود). اقرأ المزيد عن اختطاف COM هنا
هناك طريقة مدمجة لتجاوز UAC على نظام Windows، ويتم ذلك من خلال Elevation Moniker. يمكنك قراءة المزيد عنها هنا. يتطلب هذا النوع من تجاوز UAC طريقة غير قياسية لتسجيل كائن COM في السجل، وهو أمر يسهل تتبعه إلى حد ما. لذا يمكنك استخدام أداتي للعثور على طرق جديدة لتجاوز UAC.
مثال:
PS أ:ssdgitrepoCOMThanasiaMonikerHoundx64Debug> .MonikerHound.exe ،_ _ _، س/ ،(.-.)، _/ |) (| _ /=-=/ ،| =/ |، _/ | / _ _!_/ MonikerHound - ابحث عن تجاوز UAC الخاص بك! فريق أبحاث سيكادا 8 من مايكل زميلو (MzHmO) [+] تم العثور على خادم COM محتمل لقب الارتفاع! الاسم: CEIPLuaElevationHelper CLSID: {01D0A625-782D-4777-8D4E-547E6457FAD5} سلسلة مترجمة: @%systemroot%system32werconcpl.dll,-351 تمكين: 1 مرجع الرمز: @%systemroot%system32werconcpl.dll,-6 تفعيل: النجاح رقم التعريف الشخصي: 15800 DllHost.exe [+]..............................[+] [+] تم العثور على خادم COM محتمل لقب الارتفاع! الاسم: فئة CTapiLuaLib CLSID: {03e15b2e-cca6-451c-8fb0-1e2ee37a27dd} سلسلة مترجمة: @%systemroot%system32tapiui.dll,-1 تمكين: 1 مرجع الرمز: @%systemroot%system32tapiui.dll,-201 تفعيل: النجاح معرف المنتج: 440 DllHost.exe [+]..............................[+]
بمجرد اكتشاف المرشحين المحتملين لـ UAC Bypass، يمكنك البدء في التحقق منهم. كقالب رائع لتشغيل Elevation Moniker، يمكنك استخدام هذه الوظيفة أو هذا البرنامج.
يسمح لك ClsidExplorer باسترداد معلومات حول CLSID محدد. يقوم البرنامج بإخراج البيانات التالية:
AppID
- معرف التطبيق لكائن COM محدد؛
ProgID
- ProgID لكائن COM محدد؛
PID
- PID الذي يعمل فيه كائن COM هذا؛
Process Name
- اسم عملية PID؛
Username
- اسم المستخدم الذي تجري العملية نيابة عنه؛
Methods
- الأساليب المتاحة لكائن COM. تم إجراؤه عن طريق تحليل TypeLib.
PS أ:ssdgitrepoCOMThanasiaClsidExplorerx64Debug> .CLSIDExplorer.exe -h CLSIDExplorer.exe - تحديد كافة المعلومات عن طريق clsid الاستخدام: .CLSIDExplorer.exe --clsid "{00000618-0000-0010-8000-00aa006d2ea4}"
يقبل البرنامج وسيطة واحدة فقط:
--clsid
- الهدف CLSID للتحليل
ملاحظة أ:ssdgitrepoCOMThanasiaClsidExplorerx64Debug> .CLSIDExplorer.exe --clsid "{00000618-0000-0010-8000-00aa006d2ea4}"[{00000618-0000-0010-8000-00aa006d2ea4}] معرف التطبيق: غير معروف معرف البرنامج: غير معروف رقم التعريف الشخصي: 1572 اسم العملية: CLSIDExplorer.exe اسم المستخدم: WINPCMichael طُرق: [0] __stdcall void QueryInterface(IN GUID*, OUT void**) [1] __stdcall غير موقعة AddRef () طويلة [2] __stdcall إصدار طويل غير موقع () [3] __stdcall void GetTypeInfoCount(OUT unsigned int*) [4] __stdcall void GetTypeInfo(IN unsigned int, IN unsigned long, OUT void**) [5] __stdcall void GetIDsOfNames(IN GUID*, IN char**, IN unsigned int, IN unsigned long, OUT long*) [6] __stdcall void Invoc(في فترة طويلة، في GUID*، في فترة طويلة غير موقعة، في مسافة قصيرة غير موقعة، في حالات الرفض*، خارج المتغير*، خارج EXCEPINFO*، خارج غير موقعة*) [7] __stdcall BSTR الاسم() [8] __stdcall اسم باطل (في BSTR) [9] __stdcall RightEnum GetPermissions(IN VARIANT, IN ObjectTypeEnum, IN VARIANT) [10] __stdcall void SetPermissions(IN VARIANT, IN ObjectTypeEnum, IN ActionEnum, IN RightEnum, IN InheritTypeEnum, IN VARIANT) [11] __stdcall باطل تغيير كلمة المرور(IN BSTR، IN BSTR) [12] __stdcall المجموعات* المجموعات() [13] خصائص __stdcall* الخصائص() [14] __stdcall _Catalog* ParentCatalog() [15] __stdcall باطل ParentCatalog(IN _Catalog*) [16] __stdcall باطل ParentCatalog(IN _Catalog*) [نهاية]
يعد هذا البرنامج رائعًا للتحقق من فئة COM التي تم اكتشافها باستخدام ComTraveller
أو PermissionHunter
أو MonikerHound
بحثًا عن الأساليب المثيرة للاهتمام التي يمكن إساءة استخدامها.
ComTraveller - تتيح لك هذه الأداة استكشاف جميع كائنات COM المتوفرة. أولاً، يسمح لك بالتعرف بسرعة على كائنات COM ذات القيم المثيرة للاهتمام (RunAs Interactive User)، وتوافر TypeLib، وإمكانيات التنشيط عبر الجلسات. وبالتالي، يمكنك اكتشاف الكائنات التي قد يتم إنشاء مثيل لها في جلسة مستخدم أخرى بسرعة، مما يؤدي إلى تصعيد الامتيازات.
PS أ:SSDgitrepoCOMThanasiaComTravellerx64Debug> .ComTraveller.exe -h ،،_ zd$$؟؟= ض$$P؟ F:`c, _ d$$, `c'cc$$i ,cd$?R $$$$ cud$,?$$$i ,=P"2?z " $" " ?$$$, ؟$$$. ,-''`>, bzP 'cLdb,?$$,?$$$ ,h' "I$'J$P ... `?$$$,"$$,`$$h $$PxrF'd$"d$PP""?-,"?$$,?$h`$$,,$$'$F44 "?,_`=4c,?=,"?hu?$`?L4$'? ' `"?==""=-"" `""-`'_,,,, .ccu? m?e?JC,-"=? """=='؟"ComTraveller - أداة صغيرة لتحليل واستخراج المعلومات حول جميع معرفات CLSID المسجلة على النظامUsage:--file
--file
- اسم الملف الذي سيتم إخراج المعلومات حول كائنات COM إليه؛
--from
- يوجد الكثير من معرفات CLSID على نظام Windows. إذا كنت لا تريد أن تنظر الأداة إلى كل معرفات CLSID بدءًا من الأول، فيمكنك تحديد CLSID ليبدأ به، على سبيل المثال، --from {50FDBB99-5C92-495E-9E81-E2C2F48CDDA}
--session
- حاول إنشاء كائن في جلسة شخص آخر
--target
- تحليل clsid هدف واحد فقط
مثال:
.ComTraveller.exe --ملف rep.csv --الجلسة 1
بعد ذلك ستجد ملف rep.csv يحتوي على معلومات حول كائنات COM. هناك عدة أعمدة هنا:
CLSID
- CLSID لكائن COM؛
AppId
- معرف التطبيق لكائن COM؛
ProgId
- معرف التطبيق لكائن COM؛
RunAs
- القيمة في سجل RunAs. إذا كانت القيمة هي The Interactive User
أو NT AUTHORITYSYSTEM
، فيمكنك محاولة إنشاء LPE؛
Username
- اسم المستخدم الذي يتم تشغيل كائن COM نيابة عنه؛
PID
- معرف PID الذي يعمل فيه كائن COM؛
ProcessName
- اسم العملية التي يتم فيها تشغيل كائن COM؛
HasTypeLib
- ما إذا كان كائن COM يحتوي على TypeLib. إذا كان الأمر كذلك، فيمكنك إعطاء هذا الكائن إلى ClsidExplorer
لرؤية الطرق المتاحة؛
canCrossSessionActivate
- ما إذا كان من الممكن إساءة استخدام فئة COM هذه لـ LPE من خلال التنشيط في جلسة شخص آخر. إذا كانت القيمة +
أو الخطأ هو ACCESS DENIED
، فقد يكون هذا مرشحًا محتملاً لـ LPE.
على سبيل المثال، إذا قمت بتطبيق عوامل التصفية، فستجد على الفور فئات COM مثيرة للاهتمام :) واو، هل هذه فئة COM يمكن تنشيطها بين الجلسات وتعمل نيابة عن النظام؟
تجدر الإشارة إلى أن البرنامج قد يتعطل بسبب وفرة كائنات COM. وفي هذه الحالة، يمكنك إعادة تشغيله بهذه الطريقة:
.ComTraveller.exe --ملف rep.csv --الجلسة 1 --من "{0006F071-0000-0000-C000-000000000046}"