Первый раз когда видишь BloodHound с загруженными данными реального домена — это немного шокирует. Путь от рядового пользователя до Domain Admin, который вы ожидали искать дни, оказывается тремя стрелками на экране. ACL, групповые вложенности, сессии на серверах — всё это сложилось в граф и стало видимым.
Сбор данных
Сначала нужен коллектор. С Linux-машины — Python-версия:
bloodhound-python -u user -p password -d target.local -ns 10.0.0.1 -c All
На Windows — оригинальный SharpHound, который даёт более полные данные:
SharpHound.exe -c All
На выходе — JSON-файлы, упакованные в zip. Их перетаскиваем в интерфейс BloodHound.
Встроенные запросы
Вкладка Analysis — это первое место куда смотреть после импорта. Самые полезные запросы:
- Shortest Paths to Domain Admins — кратчайшие пути захвата домена
- Find Principals with DCSync Rights — кто может выгрузить хеши контроллера
- Find Kerberoastable Accounts — учётки с SPN, уязвимые к Kerberoasting
- Find AS-REP Roastable Users — учётки без преаутентификации
Cypher-запросы
Под капотом — Neo4j с языком Cypher. Когда встроенных запросов не хватает, можно писать свои. Например, все пользователи с правом владения объектами:
MATCH p=(u:User)-[:Owns]->(n) RETURN p
Или учётки с правом GenericAll на другие объекты:
MATCH p=(u:User)-[:GenericAll]->(n) RETURN p
После сбора данных
BloodHound хорошо показывает что есть, но реализация пути — руками. Kerberoasting через impacket, релей через ntlmrelayx, lateral movement через netexec. BloodHound даёт карту, инструменты impacket — транспорт.
Место в рабочем процессе
Запускаю сразу после получения первых доменных учёток. Коллекция через bloodhound-python, импорт zip, смотрю Shortest Paths. Часто оказывается что от захваченной учётки до DA всего два-три перехода через неочевидные ACL — и это находится за секунды, не часы.
Пока нет комментариев. Будьте первым!