
BOF مزيج من KillDefender و Backstab
28/6/2022: أصدرت مايكروسوفت تحديثًا يمنع فتح مقبض (handle) لرمز MsMpEng.exe، وبناءً عليه لم يعد جزء KillDefender من هذه الأداة يعمل. لا يزال Backstab يعمل. لست متأكدًا من معرف التحديث، قد يعمل على الأنظمة القديمة غير المحدثة. تم التحقق على Win10 21H2 و Win11.
هذا تطبيق مدمج لملف Beacon Object File من Backstab الخاص بـ Yaxser و KillDefender الخاص بـ pwn1sher للاستخدام مع Cobalt Strike.

KDStab هي أداة استغلال بعد الاختراق (post-exploitation) لهزيمة Windows Defender (نظريًا يمكن أن تعمل مع حلول أخرى أيضًا ولكن لم يتم اختبارها) بحيث يمكن استخدام أدوات أخرى بعد الاختراق دون خوف كبير من الاكتشاف. تستخدم الأداة Backstab و KillDefender لتحقيق ذلك، ويتم استدعاؤهما عند الحاسبة بواسطة أمر kdstab الخاص بـ Cobalt Strike.
تم اختبار KDStab بنجاح على Windows 10 x64 و Windows 11 و Server 2019.
يتطلب KDStab وصولًا على مستوى المسؤول (Administrator) أو النظام (System).
الوظائف الأساسية:
التحقق من مستوى سلامة عملية

تجريد عملية من صلاحياتها وتعيين رمزها (token) إلى غير موثوق

نتيجة الأمر /STRIP

قتل عملية محمية بـ PPL

صادفت KillDefender الخاص بـ pwn1sher بعد إصداره بفترة قصيرة واعتقدت أنه رائع؛ بالإضافة إلى جعل MsMpEng.exe (Defender) عديم الفائدة، فإنه يترك العملية قيد التشغيل وهو أمر مرغوب من وجهة نظر OPSEC (بالإضافة إلى أن السلوك الافتراضي لخدمة WinDefend هو إعادة تشغيل MsMpEng.exe عند الفشل – وهو أمر سيكون مفيدًا لاحقًا).
بينما تعمية Defender رائعة أثناء المهمة، إلا أننا كمحترفين مسؤولون عن إعادة أصول العميل إلى الحالة التي وجدناها عليها؛ بالإضافة إلى أننا لا نريد ترك أنظمتهم معرضة لمهاجمين آخرين لأننا قتلنا Defender.
المشكلة هي أنه من الصعب "استعادة" MsMpEng.exe إلى حالتها العاملة. يعمل KillDefender عن طريق تجريد العملية المستهدفة من صلاحياتها (مثل SeDebugPrivilege) وتعيين سلامة رمزها إلى غير موثوق. لا يمكن ببساطة "إعادة تصعيد" الرمز إلى System واستعادة الصلاحيات، بل يجب قتل العملية وبدء مثيل جديد. بالطبع MsMpEng.exe هي أيضًا عملية من نوع PsProtectedSignerAntimalware-Light، لذا حتى كمستخدم System لا يمكننا إنهاء العملية ببساطة. ومن المحبط أنه تم مؤخرًا إزالة مجموعة TrustedInstaller من MsMpEng.exe (يمكنك العثور على بعض الأبحاث الأخرى حول هذا) مما جعل تلك التقنية لقتل عملية MsMpEng.exe (أو خدمة WinDefend) التي كانت مستخدمة لسنوات غير فعالة. في ضوء ذلك، يبدو الخيار الوحيد القابل للتطبيق هو إعادة تشغيل الجهاز مما قد يسبب مشاكل للعميل إذا كنا نتحدث عن خوادم وخوادم تحكم (DC).
مسلحًا بهذه المشكلة، بدأت بالبحث وسرعان ما وجدت Backstab الخاص بـ Yaxser. يمكن لـ Backstab قتل العمليات المحمية بـ PPL من خلال الاستفادة من برنامج تشغيل (driver) ProcExp؛ وهو برنامج تشغيل موقع من Microsoft من Sysinternals يعمل لصالحنا. يقوم Backstab ببعض الإجراءات غير الآمنة من وجهة نظر OPSEC؛ فهو يسقط البرنامج التشغيل على القرص وينشئ مفاتيح التسجيل (reg keys). ومع ذلك، إذا كان Defender أعمى بالفعل... :).
شرعت في نقل كلتا الأداتين إلى تنسيق BOF بحيث يمكن استخدامهما من خلال Cobalt Strike Beacon دون الحاجة إلى إسقاطهما على القرص (كان الملف الثنائي الأصلي لـ Backstab محظورًا أثناء التشغيل بواسطة Defender).
أنا جديد في C/C++ وكذلك في كتابة BOFs وقد تعلمت الكثير خلال العملية. ستجد بعض التناقضات في الكود (مثل كيفية كتابة Backstab_bof وتجميعه على Linux باستخدام gcc و KillDefender_bof مكتوبة ومجمعة في Visual Studio) بسبب تعلمي أثناء الإنشاء، لكنني أجريت قدرًا لا بأس به من الاختبارات لضمان الوظائف، كما بنيت العديد من القضبان في سكربت aggressor لضمان الاستخدام السليم والإدخال المناسب إلى BOFs. آمل أن تجد هذه الأداة مفيدة.
تم إجراء بعض التغييرات الملحوظة على الكود المصدري للأدوات واتخذت بعض الخيارات البرمجية التي سيتم ذكرها هنا:
لم أحاول تجميع أي من الأداتين لـ x86؛ إذا كنت بحاجة حقًا إلى إصدار من هذا لذلك، سأترك الأمر لك لتجده.
لتجميع Backstab_bof باستخدام gcc:
x86_64-w64-mingw32-gcc -o backstab.x64.o -Os -c main.c -DBOF -D_UNICODE
تأكد من تحديث mingw الخاص بك إلى أحدث إصدار! واجهت مشاكل حيث كان إصدار الملفات الرأسية قديمًا، لكن أحدث إصدار يحتوي على ملفات رأسية صحيحة.
لتجميع KillDefender_bof باستخدام سطر الأوامر الأصلي x64:
cl.exe /c /GS- /TP killdefender_bof.cpp /FoKillDefender.x64.o