
إثبات مفهوم الحركة الجانبية عبر DCOM يستغل واجهة IMsiServer - يرفع وينفذ حمولة عن بُعد
POC لتحرك جانبي عبر DCOM يستغل واجهة IMsiServer
https://www.deepinstinct.com/blog/forget-psexec-dcom-upload-execute-backdoor
يحتوي الحل على مشروعين
DCOMUploadExec - مشروع C++ يستضيف كود هجوم التحرك الجانبي
AssemblyPayload - مكتبة DLL خاصة بـ .NET تعرض MessageBox. وهي الحمولة الافتراضية التي يستخدمها DCOMUploadExec
قم بتجميع الحل
Usage: DCOMUploadExec.exe [domain]\[user]:[password]@[address]
Local Usage: DCOMUploadExec.exe LOCALHOST (Run this as administrator)
سوف يقوم DCOMUploadExec.exe بـ:
رفع مكتبة DLL الخاصة بالحمولة الافتراضية، AssemblyPayload، إلى جهاز الكمبيوتر البعيد
تحميل مكتبة DLL في عملية MSIEXEC.exe عن بُعد
تنفيذ دالة مُصدَّرة من مكتبة DLL
استلام نتيجة من الدالة المُصدَّرة
يجب أن تكون الحمولة عبارة عن تجميع .NET باسم قوي
يُستخدم PayloadConfig.h لإعداد الحمولة التي سيستخدمها DCOMUploadExec.
وهو مُعيَّن افتراضيًا على مخرجات AssemblyPayload.
لاستخدام حمولة مخصصة:
قم بإنشاء تجميع .NET باسم قوي يُصدِّر دالة باسم InitializeEmbeddedUI - ستكون هذه هي الدالة التي سينفذها DCOMUploadExec في النهاية على الهدف البعيد
املأ تفاصيل حمولتك المخصصة في PayloadConfig.h:
PAYLOAD_ASSEMBLY_PATH = // المسار المحلي للحمولة التي أنشأتها
ASSEMBLY_NAME = // اسم التجميعة
ASSEMBLY_BITNESS = // "64" لحمولة x64, "32" لحمولة x86;
ASSEMBLY_VERSION = // القيمة من sigcheck.exe -n PAYLOAD_ASSEMBLY_PATH
ASSEMBLY_PUBLIC_KEY = // القيمة
من
sn.exe -T PAYLOAD_ASSEMBLY_PATH
قم بتجميع DCOMUploadExec واستخدمه
يجب أن تكون أجهزة المهاجم والضحية في نفس المجال أو الغابة.
يجب أن تكون أجهزة المهاجم والضحية متوافقة مع تصحيح تقوية DCOM - إما مع تطبيق التصحيح على كلا النظامين أو غيابه عنهما.
يجب أن يكون لحمولة التجميعة اسم قوي.
يجب أن تكون حمولة التجميعة إما x86 أو x64 (لا يمكن أن تكون AnyCPU).