
شغّل ملفات كائنات Beacon (BOFs) خارج Cobalt Strike من خلال تحليل ملفات كائنات COFF ذات 64 بت، مع توليد وسائط متوافقة مع Beacon وسكربتات مساعدة لاختبار الفريق الأحمر.
هذا محمّل COFF سريع وغير مُحكَم (يُعرف أيضًا باسم Beacon Object Files). يمكنه حاليًا تشغيل ملفات BOF غير معدّلة، لذا يمكن استخدامه للاختبار دون الحاجة إلى وكيل CS لتشغيله. الاستثناء الوحيد هو أن دوال توافق الـ beacon المرتبطة بالحقن تكون فارغة فقط.
الهدف الرئيسي هو توفير مثال عملي، وربما يكون مفيدًا لشخص ما.
يتكوّن المشروع من عدة أجزاء، وهي مُدرجة أدناه.
يُستخدم هذا لتوليد الوسائط لرمز COFFLoader؛ إذا كان BOF يقبل وسائط، فما عليك سوى إضافة الوسائط بالنوع المتوقع باستخدام هذه الأداة، ثم توليد السلسلة السداسية العشرية لاستخدامها.
مثال على الاستخدام هنا:
COFFLoader % python3 beacon_generate.py
Beacon Argument Generator
Beacon>help
Documented commands (type help <topic>):
========================================
addString addWString addint addshort exit generate help reset
Beacon>addWString test
Beacon>addint 4
Beacon>generate
b'120000000a0000007400650073007400000004000000'
Beacon>reset
Beacon>addint 5
Beacon>generate
b'0400000005000000'
Beacon>exit
يمكنك معرفة الوسائط المطلوبة لكل BOF من خلال الاطلاع على الكود المصدري. باستخدام BOF الخاص بـ Net User كمثال، يمكنك الاطلاع على ملف src/SA/netuser/entry.c الموجود في مستودع CS-Situational-Awareness-BOF على Github، ثم الاطلاع على الوسائط الموجودة في الدالة void go().
VOID go(IN PCHAR Buffer, IN ULONG Length)
{
datap parser;
wchar_t *username = NULL;
wchar_t *domain = NULL;
BeaconDataParse(&parser, Buffer, Length);
username = (wchar_t *)BeaconDataExtract(&parser, NULL);
domain = (wchar_t *)BeaconDataExtract(&parser, NULL);
domain = *domain == 0 ? NULL : domain;
netuserinfo(username, domain);
printoutput(TRUE);
};
يمكننا أن نرى أن BOF الخاص بـ Net User يتطلب "username" و"domain" (والتي يمكننا الحصول عليها بتشغيل BOF الخاص بـ whoami). باستخدام السكربت المساعد beacon_generate.py، سنولّد الوسائط على النحو التالي:
COFFLoader % python3 beacon_generate.py
Beacon Argument Generator
Beacon>addWString Administrator
Beacon>addWString client2
Beacon>generate
b'340000001c000000410064006d0069006e006900730074007200610074006f00720000001000000063006c00690065006e00740032000000'
Beacon>exit
أخيرًا، انسخ القيم الرقمية المُحوّلة إلى النظام الست عشري (الأرقام فقط) إلى أمر التنفيذ الخاص بك:
COFFLoader64.exe go ..\CS-Situational-Awareness-BOF\SA\netuser\netuser.x64.o 340000001c000000410064006d0069006e006900730074007200610074006f00720000001000000063006c00690065006e00740032000000
يمكنك العثور على أمثلة أكثر تفصيلًا على هذا الرابط:
https://trustedsec.com/blog/situational-awareness-bofs-for-script-kiddies
فيما يلي مثال لكيفية تشغيل BOF.
COFFLoader64.exe go test64.out
COFFLoader64.exe go ..\CS-Situational-Awareness-BOF\SA\whoami\whoami.x64.o