
Построение карты путей атак для Active Directory, ADCS, SCCM и MSSQL с использованием данных BloodHound CE + OpenGraph.
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 и получение политик с точек управления |
| Между доменами | Доверия, общие пароли и пути повышения привилегий между доменами |
neo4j://localhost:7687.git clone https://github.com/NetSPI/AD-PathFinder.git
cd AD-PathFinder
python3 -m venv .venv
source .venv/bin/activate
pip install -e .
adpathfinder --setup-bloodhound-api
Эта команда сохраняет настройки API BloodHound CE, используемые для операций импорта и удаления.
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
ADPathFinder читает config.ini из рабочего каталога. Значения также можно задавать через переменные окружения ADPF_*.
Запустите это, чтобы настроить доступ к API BloodHound CE для импорта и удаления:
adpathfinder --setup-bloodhound-api
Все параметры, настройки подключения к Neo4j, права на файлы и примеры конфигурации см. в разделе Configuration в вики. Фильтрацию вывода путей атак см. в разделе Excluded relationships.
Отчёты записываются в каталог report_<domain>/, например report_training.local/.
Относитесь к данным 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:
| Этап | Что происходит |
|---|
| Ingest | Объединяет SharpHound и поддерживаемые ZIP-архивы OpenGraph в один граф. Данные MSSQLHound и ConfigManBearPig поддерживаются напрямую |
| Map | Находит кратчайшие пути от пользователей и компьютеров до высокоценных целей. Вы можете настроить набор рёбер, чтобы исключить шумные рёбра, например HasSession |
| Group | Группирует учётные записи с общим путём, чтобы повторяющиеся пути сообщались как одна находка, а не множество почти одинаковых |
| Pair | Сопоставляет NTDS-хеши и potfile от hashcat с данными графа, показывая, какие пути реально применимы в ходе оценки |
| Layer | Сообщает о самостоятельных находках, таких как отключённая подпись SMB или группы привилегированных по умолчанию, и повышает серьёзность, когда тот же хост или группа также находится на пути к высокоценным целям |
| Render | Формирует HTML-отчёты с SVG-графами путей, примечаниями по митигированию, шагами проверки в PowerShell и отслеживанием состояния устранения, а также текстовые, JSON и диагностические выводы |
| Вывод | Назначение |
|---|
<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 |