
نص Powershell لتعداد تطبيقات DCOM الضعيفة
DCOMrade هي أداة Powershell قادرة على تعداد تطبيقات DCOM المعرضة للخطر والتي قد تسمح بالحركة الجانبية، تنفيذ الأكواد، استخراج البيانات، إلخ. تم بناء الأداة للعمل مع Powershell 2.0 ولكنها ستعمل مع جميع الإصدارات الأحدث أيضًا. تدعم الأداة حاليًا أنظمة تشغيل Windows التالية (لكل من x86 و x64):
أقوم حاليًا بالتدريب في HackDefense، وأبحث في تقنيات الحركة الجانبية الحالية لـ DCOM وأحاول إيجاد طريقة لأتمتة تعداد هذه التقنيات (وربما تقنيات جديدة). أسفر البحث عن إنشاء هذه الأداة والورقة البحثية المصاحبة لها والمرتبطة أدناه.
تم بناء الأداة بناءً على البحث الذي أجراه Matt Nelson (@enigma0x3)، خاصة الجولة الثانية من المقال الذي يتناول إيجاد تطبيقات DCOM التي قد تكون مفيدة لمختبري الاختراق وفرق الأمن الهجومية.
أولاً، يتم إنشاء اتصال عن بُعد مع النظام الهدف، يُستخدم هذا الاتصال في جميع أنحاء الأداة لعدد من العمليات. يتم تنفيذ أمر Powershell على النظام الهدف لاسترداد جميع تطبيقات DCOM ومعرفات AppID الخاصة بها. تُستخدم معرفات AppID للتكرار عبر سجل Windows والتحقق من أي AppID لا يحتوي على مفتاح LaunchPermission الفرعي في إدخاله، ويتم تخزين معرفات AppID هذه واستخدامها لاسترداد معرفات CLSID المرتبطة بها.
تستخدم الأداة قائمة سوداء محددة لكل نظام تشغيل، ولهذا السبب توجد خيارات مختلفة لنظام التشغيل المستهدف. القائمة السوداء تتخطى إدخالات CLSID التي قد تعلق الأداة بسبب تطبيقات DCOM التي لا يمكن تفعيلها، مما يقلل الحمل على النظام الهدف ويقلل الوقت الذي تستغرقه الأداة لإكمال المهمة.
باستخدام CLSID، يمكن تفعيل تطبيق DCOM المرتبط به. يُستخدم CLSID 'Shortcut' لحساب عدد MemberTypes المرتبطة به، ويتم ذلك للتحقق من العدد الافتراضي لـ MemberTypes. يُستخدم هذا الرقم للتحقق من معرفات CLSID التي تحتوي على أي شيء مختلف عن هذا العدد. تقوم الأداة بذلك باستخدام CLSID الخاص بـ 'Shortcut' (HKEY_CLASSES_ROOT\CLSID\{00021401-0000-0000-C000-000000000046}) لأن هذا CLSID مشترك عبر أنظمة تشغيل Microsoft Windows. معرفات CLSID التي تحتوي على عدد مختلف من MemberTypes قد تحتوي على Method أو Property يمكن إساءة استخدامها، وسيتم إضافتها إلى مصفوفة.
يتم فحص معرفات CLSID في المصفوفة بحثًا عن سلاسل في MemberTypes قد تشير إلى طريقة لإساءة الاستخدام، ويمكن العثور على قائمة هذه السلاسل في ملف VulnerableSubset. يرجى ملاحظة أن هذه القائمة ليست بأي حال من الأحوال قائمة كاملة للعثور على كل تطبيق DCOM معرض للخطر، ولكن كونها جزءًا ديناميكيًا من العملية يجب أن يمنح مستخدم الأداة طريقة للبحث عن سلاسل محددة قد تشير إلى وظيفة لتطبيق DCOM قد تكون مفيدة لهدفه.
يتم إخراج نتائج الأداة في تقرير HTML ويجب أن تكون قابلة للاستخدام لتدقيق النظام كإجراء وقائي. بالنسبة للجانب الهجومي، قمت بإنشاء وحدة Empire والتي، في وقت كتابة هذا التقرير، تنتظر الموافقة لإضافتها إلى الفرع الرئيسي. إذا كنت ترغب في إضافة هذا إلى Empire بنفسك، يمكنك فعل ذلك عن طريق إضافة الوحدة الموجودة هنا.
للحصول على شرح تقني كامل للفكرة، الأداة، وطرق الكشف المحتملة، يمكنك قراءة الورقة البحثية المرتبطة بهذا.
الأداة، بينما لا تُستخدم كوحدة Empire، لها بعض القيود حيث تختلف طريقة عمل الأداة وكيفية اتصالها بالجهاز الهدف.
Public، فيجب تنفيذ الأمر التالي للسماح باستخدام خدمات Windows Remote Management على النظام الهدف: Enable-PSRemoting -SkipNetworkProfilecheck -Forceعندما تكون في مجال Microsoft Windows:
.\DCOMrade.ps1 -ComputerName [Computername / IP] -User [Local Administrator] -OS [Operating System] -Domain [Domain name]
عندما لا تكون في مجال Microsoft Windows:
.\DCOMrade.ps1 -ComputerName [Computername / IP] -User [Local Administrator] -OS [Operating System]

تم استلهام هذه الأداة من ورشة عمل حول الحركة الجانبية عبر DCOM قدمتها Eva Tanaskoska، بدون هذه الورشة لما كانت فكرة محاولة تعداد هذا بشكل آلي قد وُلدت.
بفضل بحث Matt Nelson (المعروف بـ @enigma0x3) تمكنت من العثور على معلومات كافية للوصول إلى شكل من أشكال الأتمتة.
مقال Philip Tsukerman هنا الذي يلخص معظم تقنيات DCOM المتاحة للحركة الجانبية ويتعمق في كيفية عملها.