
AD-PathFinder v1.2.0
Построение карты путей атак для Active Directory, ADCS, SCCM и MSSQL с использованием данных BloodHound CE + OpenGraph.
ADPathFinder
ADPathFinder — это инструмент построения карты атак для пентестеров и red team-специалистов. Он анализирует данные SharpHound и объединяет их с плагинами OpenGraph, чтобы выявить пути атак до высокоценных целей, таких как Domain Admins и Domain Controllers, начиная от низкопривилегированных пользователей и компьютеров. MSSQLHound и ConfigManBearPig поддерживаются нативно, расширяя покрытие на AD, ADCS, SCCM и MSSQL.
Перейти к: Быстрый старт · Покрытие · Как это работает · Отчёты · Конфигурация · Участники
Покрытие
| Область | Примеры |
|---|---|
| Основной AD | Пути повышения привилегий, делегирование, права администратора, BadSuccessor, доступные высокоценные сессии |
| Пароли | Слабые пароли, пустые пароли, повторное использование, схожесть имён пользователей, использование LM-хешей, Kerberoast и AS-REP, сочетающиеся со слабыми паролями |
| ADCS | Риски шаблонов сертификатов и ЦС в стиле ESC |
| MSSQL (данные OpenGraph MSSQLHound) | Учётные записи, связанные серверы, имперсонация, relay и пути повышения привилегий |
| SCCM (данные OpenGraph ConfigManBearPig) | Пути захвата и relay, точки распространения с поддержкой PXE и получение политик с точек управления |
| Между доменами | Доверия, общие пароли и пути повышения привилегий между доменами |
Требования
- Python 3.9 или новее.
- BloodHound CE и Neo4j, доступные локально по умолчанию по адресу
neo4j://localhost:7687. - Учётные данные API BloodHound CE для операций импорта и удаления.
- ZIP-архив BloodHound CE / SharpHound для покрытия аудита AD.
- Необязательные ZIP-архивы плагинов OpenGraph от MSSQLHound и ConfigManBearPig для покрытия MSSQL и SCCM.
- Необязательный дамп хешей NTDS и potfile от hashcat для аудита паролей.
Быстрый старт
Установка из исходников
git clone https://github.com/NetSPI/AD-PathFinder.git
cd AD-PathFinder
python3 -m venv .venv
source .venv/bin/activate
pip install -e .
Настройка доступа к API BloodHound
adpathfinder --setup-bloodhound-api
Эта команда сохраняет настройки API BloodHound CE, используемые для операций импорта и удаления.
Импорт данных SharpHound
adpathfinder --import SharpHound.zip
Несколько ZIP-файлов SharpHound и плагинов OpenGraph можно импортировать одной командой:
adpathfinder --import SharpHound.zip MSSQLHound.zip ConfigManBearPig.zip
Импорт данных и полный аудит
adpathfinder -i SharpHound.zip MSSQLHound.zip ConfigManBearPig.zip --ad --pwd Contoso,ContosoIT --ntds ntds.txt -p hashcat.potfile
Используйте только те ZIP-файлы, которые у вас есть. Значение --pwd — это не домен AD; это разделённый запятыми список терминов компании, бренда или организации для пометки во взломанных паролях.
Запуск аудита домена
adpathfinder --ad
Запуск аудита паролей
adpathfinder --ad --pwd Contoso,ContosoIT --ntds ntds.txt -p hashcat.potfile
Используйте --unsafe-report только когда отчёты должны содержать пароли в открытом виде.
Запись диагностики
adpathfinder --ad --pwd Contoso,ContosoIT --ntds ntds.txt -p hashcat.potfile --diagnostics
Как это работает
| Этап | Что происходит |
|---|---|
| Ingest | Объединяет SharpHound и поддерживаемые ZIP-архивы OpenGraph в один граф. Данные MSSQLHound и ConfigManBearPig поддерживаются напрямую |
| Map | Находит кратчайшие пути от пользователей и компьютеров до высокоценных целей. Вы можете настроить набор рёбер, чтобы исключить шумные рёбра, например HasSession |
| Group | Группирует учётные записи с общим путём, чтобы повторяющиеся пути сообщались как одна находка, а не множество почти одинаковых |
| Pair | Сопоставляет NTDS-хеши и potfile от hashcat с данными графа, показывая, какие пути реально применимы в ходе оценки |
| Layer | Сообщает о самостоятельных находках, таких как отключённая подпись SMB или группы привилегированных по умолчанию, и повышает серьёзность, когда тот же хост или группа также находится на пути к высокоценным целям |
| Render | Формирует HTML-отчёты с SVG-графами путей, примечаниями по митигированию, шагами проверки в PowerShell и отслеживанием состояния устранения, а также текстовые, JSON и диагностические выводы |
HTML-отчёт AD
HTML-отчёт аудита паролей
Конфигурация
ADPathFinder читает config.ini из рабочего каталога. Значения также можно задавать через переменные окружения ADPF_*.
Запустите это, чтобы настроить доступ к API BloodHound CE для импорта и удаления:
adpathfinder --setup-bloodhound-api
Все параметры, настройки подключения к Neo4j, права на файлы и примеры конфигурации см. в разделе Configuration в вики. Фильтрацию вывода путей атак см. в разделе Excluded relationships.
Выводы
Отчёты записываются в каталог report_<domain>/, например report_training.local/.
| Вывод | Назначение |
|---|---|
<domain>_AD_report.html | HTML-отчёт для клиентов со сгруппированными находками, графами путей, примечаниями по митигированию, шагами проверки и отслеживанием состояния устранения |
<domain>_domain_audit.txt / <domain>_domain_audit.json | Текстовый и JSON выводы аудита домена для просмотра, автоматизации и последующего анализа |
<domain>_password_audit.html / <domain>_password_audit.txt / <domain>_password_audit.json | Выводы аудита паролей при наличии NTDS-хешей и potfile от hashcat |
<domain>_*_unsafe.* | Необязательные небезопасные отчёты, создаваемые только с флагом --unsafe-report; они могут содержать пароли в открытом виде |
diagnostics.json | Необязательная статистика запуска и отладочные данные, создаваемые с флагом --diagnostics |
Относитесь к данным NTDS, potfile и сгенерированным отчётам как к чувствительным данным оценки. Флаг --unsafe-report записывает пароли в открытом виде в выходные файлы; используйте его только когда вам действительно нужен открытый текст в отчёте, и храните полученные файлы _unsafe соответствующим образом.
Примеры вывода аудита домена и аудита паролей см. в sample_reports/.
Участники
Проверки — это небольшие классы, которые регистрируются через декоратор, объявляют свои требования к данным и возвращают словари находок. Платформенные проверки объявляют свой источник данных, поэтому обычные аудиты AD пропускают проверки MSSQL или SCCM, когда соответствующие данные OpenGraph отсутствуют.
См. Adding new checks, Working with OpenGraph plugins и Framework Guide в вики.
Тестирование
pip install -e ".[test]", затем pytest tests/ -m "not neo4j and not integration" запускает быстрые тесты фреймворка без Neo4j. Набор фикстур Neo4j и полный локальный процесс тестирования описаны в tests/README.md.
Благодарности
ADPathFinder опирается на данные, собранные другими проектами; спасибо их авторам и команде SpecterOps:
- BloodHound CE — данные графа Active Directory.
- MSSQLHound от Chris Thompson — сбор данных MSSQL.
- ConfigManBearPig от Chris Thompson — сбор данных SCCM.