Это репо преследует две цели. Во-первых, он предоставляет хороший набор основных команд ситуационной осведомленности, реализованных в объектном файле маяка (BOF). Это позволяет вам выполнить некоторые проверки хоста, прежде чем вы начнете выполнять команды, которые могут быть более агрессивными.
Его более крупная цель — предоставить другим пример кода и рабочий процесс, чтобы они могли начать создавать больше BOF. Это сопутствующий документ к сообщению в блоге, сделанному здесь: https://www.trustedsec.com/blog/a-developers-introduction-to-beacon-object-files/.
Если вы хотите использовать тот же рабочий процесс, что и этот репозиторий, ваши основные шаги следующие:
На самом деле, это можно было бы сжать во вспомогательный скрипт, но для этой цели эти шаги не были предприняты.
Команды | Использование | Примечания |
---|---|---|
adcs_enum | adcs_enum | Перечисление центров сертификации и шаблонов в AD с помощью функций Win32. |
adcs_enum_com | adcs_enum_com | Перечисление центров сертификации и шаблонов в AD с помощью COM-объекта ICertConfig. |
adcs_enum_com2 | adcs_enum_com2 | Перечислите центры сертификации и шаблоны в AD с помощью COM-объекта IX509PolicyServerListManager. |
adv_audit_policies | adv_audit_policies | Получить расширенные политики аудита безопасности |
арп | арп | Получение списка ARP-таблицы |
каклы | cacls [путь к файлу] | Список разрешений пользователя для указанного файла, поддерживаются подстановочные знаки. |
реж. | каталог [каталог] [/s] | Список файлов в каталоге. Поддерживает подстановочные знаки (например, «C:WindowsS*») в отличие от команды CobaltStrike ls |
водительские знаки | водительские знаки | Перечислите пути к изображениям установленных служб, чтобы проверить сертификат подписи на соответствие известным поставщикам AV/EDR. |
enum_filter_driver | enum_filter_driver [опция: компьютер] | Перечислить драйверы фильтров |
enumLocalSessions | enumLocalSessions | Перечислить текущие подключенные пользовательские сеансы как локально, так и через RDP. |
окружение | окружение | Получение списка переменных среды процесса |
НайтиLoadedModule | findLoadedModule [часть модуля] [opt:procnamepart] | Найдите, в какие процессы загружены *modulepart*, при необходимости просто выполнив поиск *procnamepart*. |
get_password_policy | get_password_policy [имя хоста] | Получите настроенную политику паролей и блокировки целевого сервера или домена. |
ipconfig | ipconfig | Список адресов IPv4, имени хоста и DNS-сервера |
ldapsearch | ldapsearch [запрос] [опция: атрибут] [опция: лимит_результатов] [опция: имя хоста или IP-адрес контроллера домена] [опция: отличительное имя] | Выполните поиск LDAP (ПРИМЕЧАНИЕ: укажите *,ntsecuritydescriptor в качестве параметра атрибута, если вы хотите, чтобы все атрибуты + ACL в кодировке base64 объектов, затем это можно решить с помощью BOFHound. Возможно, это может привести к нарушению нумерации страниц, хотя во время тестирования все выглядело нормально.) |
списокdns | списокdns | Список записей кэша DNS. Попытайтесь запросить и решить каждую |
list_firewall_rules | list_firewall_rules | Список правил брандмауэра Windows |
список модов | списокмодов [опция: pid] | Список модулей процесса (DLL). Целевой текущий процесс, если PID пуст. Дополнение к driversigs, чтобы определить, был ли наш процесс внедрен AV/EDR. |
трубы | трубы | Получение списка именованных каналов |
локаль | локаль | Вывести список языковых стандартов системы, идентификатор языкового стандарта, дату, время и страну. |
netGroupList | netGroupList [опция: домен] | Получение списка групп из домена по умолчанию или указанного домена |
netGroupListMembers | netGroupListMembers [имя группы] [опция: домен] | Список членов группы из домена по умолчанию или указанного домена |
netLocalGroupList | netLocalGroupList [опция: сервер] | Получение списка локальных групп с локального или указанного компьютера |
netLocalGroupListMembers | netLocalGroupListMembers [имя группы] [опция: сервер] | Получение списка локальных групп с локального или указанного компьютера |
netLocalGroupListMembers2 | netLocalGroupListMembers2 [опция: имя группы] [опция: сервер] | Модифицированная версия netLocalGroupListMembers , поддерживающая BOFHound. |
сетевой журнал | netloggedon [имя хоста] | Возврат пользователей, вошедших на локальный или удаленный компьютер |
netloggedon2 | netloggedon2 [опция: имя хоста] | Модифицированная версия netloggedon , поддерживающая BOFHound. |
сетевая сессия | netsession [опция:компьютер] | Перечислить сеансы на локальном или указанном компьютере |
netsession2 | netsession2 [опция: компьютер] [опция: метод разрешения] [опция: DNS-сервер] | Модифицированная версия netsession , поддерживающая BOFHound. |
чистые акции | сетевые ресурсы [имя хоста] | Получение списка общих ресурсов на локальном или удаленном компьютере |
нетстат | нетстат | Список портов TCP и UDP IPv4 |
чистое время | nettime [имя хоста] | Отображение времени на удаленном компьютере |
нетаптайм | netuptime [имя хоста] | Возвращать информацию о времени загрузки на локальном или удаленном компьютере |
сетевой пользователь | netuser [имя пользователя] [опция: домен] | Получить информацию о конкретном пользователе. Извлечение из домена, если указано имя домена |
netuse_add | netuse_add [имя_ресурса] [opt:имя пользователя] [opt:пароль] [opt:/DEVICE:имя устройства] [opt:/PERSIST] [opt:/REQUIREPRIVACY] | Привязать новое подключение к удаленному компьютеру |
netuse_delete | netuse_delete [устройство||имя_ресурса] [opt:/PERSIST] [opt:/FORCE] | Удалить привязанное устройство/имя общего ресурса] |
netuse_list | netuse_list [опт: цель] | Перечислите все связанные общие ресурсы или информацию о целевом локальном ресурсе. |
нетвью | нетвью | Список доступных компьютеров в текущем домене |
nslookup | nslookup [имя хоста] [опция: DNS-сервер] [опция: тип записи] | Сделайте DNS-запрос. DNS-сервер — это сервер, к которому вы хотите обратиться (не указывайте или 0 по умолчанию). тип записи — это что-то вроде A, AAAA или ANY. Некоторые ситуации ограничены из-за наблюдаемых сбоев |
зонд | зонд [хост] [порт] | Проверьте, открыт ли определенный порт |
рецессия | ресессия [опция: имя хоста] | Возвращает идентификаторы SID вошедших в систему пользователей, перечисляя HKEY_USERS. Совместимость с BOFHound |
reg_query | [opt:имя хоста] [улей] [путь] [opt: значение для запроса] | Запросить значение реестра или перечислить один ключ |
reg_query_recursive | [opt:имя хоста] [улей] [путь] | Рекурсивно перечислить ключ, начиная с пути |
ресурсы | ресурсы | Список использования памяти и доступного дискового пространства на основном жестком диске |
отпечаток маршрута | отпечаток маршрута | Получение списка маршрутов IPv4 |
sc_enum | sc_enum [опт:сервер] | Перечисление служб для контроля качества, запросов, qfailure и информации qtriggers |
sc_qc | sc_qc [имя службы] [опция:сервер] | внедрение sc qc в BOF |
sc_qdescription | sc_qdescription [имя службы] [опция: сервер] | реализация sc qdescription в BOF |
sc_qfailure | sc_qfailure [имя службы] [opt:server] | Запросить службу на предмет условий сбоя |
sc_qtriggerinfo | sc_qtriggerinfo [имя службы] [опция:сервер] | Запросить у службы условия триггера |
sc_query | sc_query [опция: имя службы] [опция: сервер] | реализация sc-запроса в BOF |
Штасксенум | schtasksenum [опция: сервер] | Перечисление запланированных задач на локальном или удаленном компьютере |
Штасксквери | schtasksquery [опция: сервер] [путь к задаче] | Запросить данную задачу на локальном или удаленном компьютере |
список задач | список задач [опция: сервер] | Список запущенных процессов, включая PID, PPID и ComandLine (использует wmi) |
время безотказной работы | время безотказной работы | Укажите время загрузки системы и время ее работы. |
всесенум | vssenum [имя хоста] [opt:sharename] | Перечисление теневых копий на некоторых серверах Server 2012+ |
эй | эй | Список whoami/all |
список окон | список окон [опция: все] | Список видимых окон в текущем сеансе пользователя |
wmi_query | запрос wmi_query [opt: сервер] [opt: пространство имен] | Запустите запрос wmi и отобразите результаты в формате CSV. |
Обратите внимание, что причина включения reg_query, когда CS имеет встроенную команду reg query(v), заключается в том, что она может быть нацелена на удаленные компьютеры и имеет возможность рекурсивно перечислять весь ключ.
Функциональный код для большинства этих команд был взят из проекта Reactos или примеров кода, размещенных на MSDN. Кодовая база driverigs взята из https://gist.github.com/jthuraisamy/4c4c751df09f83d3620013f5d370d3b9.
Спасибо всем участникам, перечисленным в разделе «Соавторы». Каждый из вас внес что-то значимое в этот репозиторий и занимался мной и моими процессами проверки. Я ценю каждого из вас за то, что вы научили меня и помогли сделать этот репозиторий BOF как можно лучше!
В этом проекте представлены предварительно скомпилированные файлы BOF, которые компилируются с использованием последней версии Mingw-w64, обычно устанавливаемой из Brew.
Эти BOF написаны с учетом поддержки Windows Vista+. Была создана новая ветка под названием winxp_2003, если вам нужно использовать основной набор BOF в старых системах. Эта ветка останется в менее поддерживаемом состоянии. Он будет функциональным, но не будет обновляться с каждым новым обновлением/функцией, которую мы можем добавить.