
HVNC لـ Cobalt Strike
سطح المكتب المخفي (غالبًا ما يُشار إليه بـ HVNC) هو أداة تتيح للمشغلين التفاعل مع جلسة سطح مكتب عن بعد دون علم المستخدم. لا يتم استخدام بروتوكول VNC، لكن النتيجة تجربة مماثلة. تم إنشاء تطبيق Cobalt Strike BOF هذا كبديل لـ TinyNuke/النسخ المشتقة التي كُتبت بلغة C++.
هناك أربعة مكونات لسطح المكتب المخفي:
مُهيئ BOF: برنامج صغير مسؤول عن حقن كود HVNC في عملية Beacon.
شيل كود HVNC: تطبيق PIC لـ TinyNuke HVNC.
الخادم وواجهة المستخدم للمشغل: خادم يستمع للاتصالات من شيل كود HVNC وواجهة مستخدم تتيح للمشغل التفاعل مع سطح المكتب عن بُعد. يدعم حاليًا نظام Windows فقط.
BOFs لتشغيل التطبيقات: مجموعة من ملفات Beacon Object التي تنفذ التطبيقات في سطح المكتب الجديد.
قم بتنزيل الإصدار الأحدث أو قم بالتجميع بنفسك باستخدام make. ابدأ تشغيل خادم HVNC على جهاز Windows يمكن الوصول إليه من خادم الفريق. يمكنك بعد ذلك تشغيل العميل باستخدام:
HiddenDesktop <server> <port>
يجب أن ترى نافذة فارغة جديدة على جهاز الخادم. لا يقوم BOF بتشغيل أي تطبيقات افتراضيًا. يمكنك استخدام BOFs لتشغيل التطبيقات لتنفيذ البرامج الشائعة على سطح المكتب الجديد:
hd-launch-edge
hd-launch-explorer
hd-launch-run
hd-launch-cmd
hd-launch-chrome
يمكنك أيضًا تشغيل البرامج من خلال مستكشف الملفات باستخدام الماوس ولوحة المفاتيح. يمكن تنفيذ التطبيقات الأخرى باستخدام الأمر التالي:
hd-launch <command> [args]
https://github.com/WKL-Sec/HiddenDesktop/assets/9327972/82f73393-ba44-42b4-8eae-b36b7181fac0
يقوم نص Aggressor بتوليد أسماء عشوائية للأنبوب (pipe) وسطح المكتب. يتم تمرير هذه الأسماء إلى مُهيئ BOF كوسيطات. يتم تخزين اسم سطح المكتب في تفضيلات CS (Cobalt Strike) عند التنفيذ ويستخدم بواسطة BOFs لتشغيل التطبيقات. يتم إعادة توجيه حركة مرور HVNC إلى خادم الفريق باستخدام rportfwd. يتم إرسال تحديثات الحالة إلى Beacon عبر أنبوب مسمى (named pipe).
يبدأ مُهيئ BOF بحل الوحدات والوظائف المطلوبة. يتم حل الوسيطات من نص Aggressor. يتم تمرير مؤشر إلى هيكل يحتوي على الوسيطات وعناوين الوظائف إلى دالة InputHandler في شيل كود HVNC. يستخدم BeaconInjectProcess لتنفيذ الشيل كود، مما يعني أنه يمكن تخصيص السلوك في ملف تعريف Malleable C2 أو باستخدام BOFs لحقن العمليات. يمكن تعديل سطح المكتب المخفي لاستهداف عمليات بعيدة، لكن هذا غير مدعوم حاليًا. يتم ذلك حتى يتمكن BOF من الخروج ويستمر شيل كود HVNC في العمل.
يقوم InputHandler بإنشاء أنبوب مسمى جديد ليتصل به Beacon. بمجرد إنشاء اتصال، يتم فتح سطح المكتب المحدد (OpenDesktopA) أو إنشاؤه (CreateDesktopA). يتم إنشاء مأخذ توصيل جديد من خلال إعادة توجيه المنفذ العكسي (rportfwd) إلى خادم HVNC. يقوم معالج الإدخال بإنشاء خيط جديد لدالة DesktopHandler الموصوفة أدناه. سيستقبل هذا الخيط إدخال الماوس ولوحة المفاتيح من خادم HVNC ويقوم بإعادة توجيهه إلى سطح المكتب.
ينشئ DesktopHandler اتصال مأخذ توصيل إضافي بخادم HVNC من خلال إعادة توجيه المنفذ العكسي. سيقوم هذا الخيط بمراقبة النوافذ بحثًا عن التغييرات وإعادة توجيهها إلى خادم HVNC.
تم اختبار HiddenDesktop BOF باستخدام example.profile على الإصدارات/البنى التالية من Windows: