
Запускайте Beacon Object Files (BOF) вне Cobalt Strike путем разбора 64-битных COFF-объектных файлов, с совместимой с Beacon генерацией аргументов и вспомогательными скриптами для тестирования red-team.
Это быстрый и грязный загрузчик COFF (также известный как Beacon Object Files). Он может запускать немодифицированные BOF-файлы, поэтому его можно использовать для тестирования без запущенного агента CS. Единственное исключение — функции совместимости beacon, связанные с внедрением, просто пусты.
Основная цель — предоставить рабочий пример и, возможно, быть полезным кому-то.
Он состоит из нескольких частей, перечисленных ниже.
Он используется для генерации аргументов для кода COFFLoader; если BOF принимает аргументы, просто добавьте аргументы ожидаемого типа и сгенерируйте hex-строку для использования.
Пример использования:
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