
D(COM) V(ulnerability) S(canner) المعروف أيضًا باسم سكين الجيش السويسري الماكر - الحركة الجانبية باستخدام كائنات DCOM
هل تساءلت يومًا كيف يمكنك التحرك جانبيًا عبر الشبكات الداخلية؟ أو التفاعل مع الأجهزة البعيدة دون إثارة إنذارات EDRs؟
لنفترض أن لدينا بيانات اعتماد صالحة، أو جلسة نشطة مع إمكانية الوصول إلى جهاز بعيد، ولكننا لا نملك خيارًا لتنفيذ عملية عن بُعد بطريقة معروفة أو متوقعة أو تحت مراقبة عالية (مثل WMI، وجدولة المهام، وWinRM، وPowerShell Remoting).
في هذه السيناريوهات، يأتي إطار عمل DVS للإنقاذ.
إطار عمل DVS هو سكين جيش سويسري يسمح لك باستكشاف الوظائف الضعيفة لكائنات DCOM البعيدة، وتشغيلها، وحتى شن هجمات باستخدامها.
يتم تطوير الإطار بعقلية "الفريق الأحمر" ويستخدم أساليب خفية لاختراق الأجهزة البعيدة.
يحتوي إطار عمل DVS على طرق متنوعة لتجاوز التصلب البعيد ضد DCOM عن طريق إعادة تمكين الوصول إلى DCOM عن بعد ومنح الأذونات اللازمة تلقائيًا للمستخدم المهاجم.
يمكن للإطار أيضًا إرجاع التغييرات على الجهاز البعيد إلى حالتها الأصلية، قبل الهجوم - مما يخفي هذه التغييرات عن المدافعين.
رؤيتنا الرئيسية هي أن الأداة يمكنها أيضًا تنفيذ الأوامر باستخدام كائنات DCOM غير الضعيفة من خلال تقنية رائعة (اقرأ أدناه عن Invoke-RegisterRemoteSchema)
متوافق مع PowerShell 2.0 وما فوق
فيديو يوتيوب لإثبات المفهوم: DVS
هذه الأداة مخصصة لأغراض الاختبار والتعليم فقط. لا يُسمح بأي استخدام آخر لهذا الكود. استخدمها على مسؤوليتك الخاصة.
المؤلف لا يتحمل أي مسؤولية عن سوء استخدام هذه الأداة.
باستخدامك لها، فإنك تقبل حقيقة أن أي ضرر ناتج عن استخدام هذه الأداة هو مسؤوليتك.
الوصول إلى السجل عن بعد (MS-RRP)
AutoGrant، تحقق من أذونات الكتابة. وإلا، تحقق من أذونات القراءةموفر السجل القياسي (إذا تم رفض السجل البعيد)
StdRegProv متاحًاAutoGrant، تحقق من أذونات الكتابة، وإلا، تحقق من أذونات القراءةتتحقق أداة DVS أولاً مما إذا كانت الهوية الأساسية لديها حق الوصول إلى الجهاز البعيد من خلال الخطوات التالية:
الإجراءات الأساسية
SkipRegAuth)
AutoGrant)، وإلا تفشلadsi/WindowsIdentity) مخولين للتفاعل مع DCOM (عبر استعلامات السجل البعيد)AutoGrant)، وإلا تفشلHKLM أو HKCU Hives)Invoke-DCOMObjectScan
Get-ExecutionCommand
Invoke-ExecutionCommand
Invoke-RegisterRemoteSchema
git clone https://github.com/ScorpionesLabs/DVS
powershell -ep bypass
PS> Import-Module .\DVS.psm1
PS> Get-Help Invoke-DCOMObjectScan -Detailed # احصل على تفاصيل أمر Invoke-DCOMObjectScan
PS> Get-Help Get-ExecutionCommand -Detailed # احصل على تفاصيل أمر Get-ExecutionCommand
PS> Get-Help Invoke-ExecutionCommand -Detailed # احصل على تفاصيل أمر Invoke-ExecutionCommand
PS> Get-Help Invoke-RegisterRemoteSchema -Detailed # احصل على تفاصيل أمر Invoke-RegisterRemoteSchema
تتيح لك وظيفة Invoke-DCOMObjectScan مسح كائنات DCOM والعثور على الوظائف الضعيفة عبر قائمة من الأنماط أو أسماء الوظائف الدقيقة التي أدرجتها في ملف.
أمثلة:
تعداد ومسح كائن MMC20.Application (ProgID) من جهاز المهاجم إلى مضيف DC01 دون الاستعلام عن السجل.
Invoke-DCOMObjectScan -Type Single -ObjectName "MMC20.Application" -HostList DC01 -SkipRegAuth -Username "lab\administrator" -Password "Aa123456!" -Verbose
ملاحظة: لن تقوم الأداة بتحليل أذونات ACL، وعند نجاحها، ستحل جميع المعلومات حول الكائن، باستثناء التفاصيل المذكورة في السجل (مثل اسم الكائن، ملف التنفيذ، إلخ.)
التحقق مما إذا كان كائن MMC20.Application (ProgID) متاحًا من جهاز المهاجم إلى مضيف DC01 دون الاستعلام والتحقق من قائمة الوصول لكائن DCOM.
PS> Invoke-DCOMObjectScan -Type Single -ObjectName "MMC20.Application" -HostList DC01 -SkipPermissionChecks -CheckAccessOnly -Verbose
التحقق مما إذا كان MMC20.Application (ProgID) متاحًا عبر نطاق 10.211.55.4/24. إذا كان موجودًا، ستحاول الأداة تعداد المعلومات عنه. (باستخدام جلسة المستخدم المسجل حاليًا).
PS> Invoke-DCOMObjectScan -Type Single -ObjectName "MMC20.Application" -Hostlist "10.211.55.4/24" -CheckAccessOnly -Verbose
التحقق مما إذا كان CLSID {00020812-0000-0000-C000-000000000046} موجودًا وقابلاً للوصول عبر عنوان IP 10.211.55.4. إذا كان موجودًا، ستحل الأداة المعلومات عنه. (باستخدام بيانات اعتماد lab\administrator).
PS> Invoke-DCOMObjectScan -Type Single -ObjectName "{00020812-0000-0000-C000-000000000046}" -Hostlist "10.211.55.4" -CheckAccessOnly -Username "lab\administrator" -Password "Aa123456!" -Verbose
مسح جميع الكائنات المخزنة في مسار محدد (مثل C:\Users\USERNAME\Desktop\DVS\objects.txt) عبر عنوان IP 10.211.55.4، والعثور على قائمة الوظائف الموجودة في الملف المحدد مثل vulnerable.txt باستخدام بيانات اعتماد lab\administrator مع التكوين التالي:
أقصى عمق: 4
أقصى نتائج: 1 (نتيجة واحدة لكل كائن)
وضع AutoGrant: إذا لم يكن لدينا حق الوصول إلى الكائن أو إذا كانت ميزة DCOM معطلة، قم بتمكين ميزة DCOM وإجراء منح تلقائي لكائن DCOM ذي الصلة.
أخيرًا، أعد الجهاز إلى نفس الحالة التي كان عليها قبل الهجوم.