Skip to content
KitploitKITPLOIT
ИнструментыБлог
Отправить
ИнструментыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
ghosthound — GhostHound — это расширение BloodHound OpenGraph, которое выводит реанимацию tombstone-объектов Active Directory на первый план как полноценный путь атаки: оно перечисляет удаленные объекты через SHOW_DELETED, определяет, кто может их восстановить, и показывает, когда реанимированная учетная запись вновь получает членство в привилегированных группах. | Kitploit
Инструменты/GitHubGitHub/jvbotelho/ghosthound
Повышение привилегийРазведкаЭксплуатацияЛатеральное перемещениеСбор информацииПост-эксплуатацияТестирование на ПроникновениеRed Teaming
GitHubjvbotelho/ghosthound

ghosthound

Репозиторий
42212 дней назадЕщё не проверено

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →

Описание

GhostHound — это расширение BloodHound OpenGraph, которое выводит реанимацию tombstone-объектов Active Directory на первый план как полноценный путь атаки: оно перечисляет удаленные объекты через SHOW_DELETED, определяет, кто может их восстановить, и показывает, когда реанимированная учетная запись вновь получает членство в привилегированных группах.

Поделиться

GhostHound

Crates.io docs.rs OpenSSF Scorecard

GhostHound — это расширение OpenGraph для Active Directory поверх BloodHound. SharpHound и все остальные сборщики AD пропускают CN=Deleted Objects: удалённые объекты (tombstones) невидимы для стандартного анализа путей атак BloodHound, хотя механизмы AD Recycle Bin и восстановления удалённых объектов могут позволить достаточно привилегированному субъекту восстановить такой объект — и перехватить контроль над любой идентичностью, которую он представляет. GhostHound перечисляет удалённые объекты по LDAP с управляющим элементом SHOW_DELETED, определяет, кто может восстановить каждый из них, и формирует полезную нагрузку JSON OpenGraph плюс определение расширения model.json, чтобы BloodHound CE v8+ мог отображать это как полноценную часть графа.

Только авторизованное использование. Это инструмент для оценки защищённости / red-team, предназначенный для авторизованных пентестов и исследований в detection-лабораториях. Запускайте его только против тех сред Active Directory, которые вам явно разрешено тестировать.

Предварительные требования

  • Права, эквивалентные Administrators (или явный делегированный доступ на чтение CN=Deleted Objects) в целевом домене. Непривилегированные учётные записи вообще не видят этот контейнер, независимо от используемого метода аутентификации — это ограничение, накладываемое AD, и GhostHound не может его обойти.
  • Сетевая доступность контроллера домена по LDAP (389) или LDAPS (636).
  • BloodHound CE v8+, если вы хотите импортировать полученный граф (сбор данных и вывод JSON работают автономно и без него).

Использование

root@kitploit:~
ghosthound -d ghost.local --dc-ip 10.0.0.10 -u alice -o tombstones.json

Порядок определения пароля: --password (избегайте — виден через ps//proc/<pid>/cmdline и историю командной оболочки), затем переменная окружения LDAP_PASSWORD, и, если ничего не задано, интерактивный запрос.

По умолчанию GhostHound подключается по LDAPS (636) с проверкой сертификата. Для сред, где это не подходит, есть два флага:

  • --disable-ldaps — откат к незашифрованному LDAP (389). Пароль для bind передаётся открытым текстом; избегайте этого вне изолированной лаборатории.
  • --insecure-tls — оставить LDAPS (шифрованный транспорт), но отключить проверку сертификата для самоподписанных/лабораторных сертификатов, которых нет в вашем хранилище доверия. Предпочитайте этот вариант --disable-ldaps, когда проблема только в сертификате контроллера домена.

--timeout-secs (по умолчанию 30) ограничивает как первоначальное подключение, так и каждую последующую операцию LDAP, поэтому недоступный контроллер домена или неверный --dc-ip завершится ошибкой в этом окне, а не зависнет.

Полный список флагов — ghosthound --help.

Структура рабочего пространства

GhostHound построен как workspace с приоритетом библиотек (library-first) — обоснование см. в docs/adr/0001-language-rust-library-first.md:

  • bloodhound-opengraph: сборщик JSON OpenGraph для BloodHound (Rust-аналог Python-библиотеки bhopengraph).
  • ad-secdesc: парсер ntSecurityDescriptor/DACL/ACE, написанный с нуля под разрешительной лицензией (почему это не зависимость от единственного существующего Rust-аналога, распространяемого под GPL-3.0, — см. docs/adr/0003-security-descriptor-parsing-strategy.md).
  • ad-secdesc-oracle: внутренний, непубликуемый дифференциальный тестовый стенд, сравнивающий ad-secdesc с той GPL-3.0 crate как black-box-оракулом; изолирован от сборки по умолчанию и графа зависимостей всех публикуемых crate.
  • ad-tombstone: перечисление через LDAP SHOW_DELETED, моделирование состояния AD Recycle Bin и анализ прав на восстановление (reanimation).
  • ghosthound: CLI, оркестрирующий всё перечисленное.

Импорт в BloodHound

  1. На странице OpenGraph Management в BloodHound CE один раз загрузите crates/ad-tombstone/model.json, чтобы зарегистрировать типы узлов GhostHound_TombstoneUser/GhostHound_TombstoneComputer/GhostHound_TombstoneGroup и типы связей GhostHound_CanReanimate/GhostHound_WasMemberOf/GhostHound_SameAs (все регистрируются как traversable, поэтому участвуют в запросах кратчайших путей).
  2. Загрузите JSON, сформированный GhostHound (через UI или ingest API), как обычную полезную нагрузку данных OpenGraph.
  3. Выполните crates/ad-tombstone/bridge_shadow_nodes.cypher напрямую в Neo4j (собственная строка поиска Cypher в BloodHound CE доступна только для чтения и отклонит его):
    root@kitploit:~
    docker exec -i <graph-db-container> cypher-shell -u neo4j -p <password> < crates/ad-tombstone/bridge_shadow_nodes.cypher
    
    Рёбра GhostHound к существующим субъектам AD (Domain Admins и т. д.) попадают на узлы-заглушки, а не на реальные, которые уже есть в BloodHound, — это ограничение ингеста OpenGraph, а не ошибка в данных; см. docs/adr/0006-opengraph-cross-source-node-identity.md. Этот скрипт связывает их, чтобы пути стали реально обходимыми. Безопасно повторно запускать после каждого импорта.

После связывания путь восстановления отображается как обычный обходимый путь: удалённый объект, который до удаления был членом Domain Admins, достижимый для любого субъекта с правом Reanimate-Tombstones, соединяется с реальным узлом Domain Admins:

Пример пути восстановления GhostHound из тестового прогона в домашней лаборатории: несколько субъектов с правами GhostHound_CanReanimate указывают на удалённого пользователя, у которого есть ребро GhostHound_WasMemberOf к узлу-заглушке, связанному через GhostHound_SameAs с реальной группой Domain Admins.

Позиция по цепочке поставок

Этот проект с первого дня уделяет приоритетное внимание безопасности с высокой уверенностью (docs/adr/0005-supply-chain-openssf-posture.md):

  • cargo deny для строгих запретов copyleft/GPL и аудита уязвимостей.
  • Workflow-процессы OpenSSF Scorecard.
  • cargo fuzz для защиты от паник при разборе сырых бинарных дескрипторов.
  • Отсутствие unsafe в базовых библиотеках.

Обоснование дизайна

Каталог docs/adr/ фиксирует решения, стоящие за этим дизайном (выбор языка, область аутентификации, лицензионное ограничение ad-secdesc, модель данных AD Recycle Bin, позиция по цепочке поставок), а docs/research/tombstone-viability-findings.md содержит лежащее в основе исследование.

Скачать инструмент
  • Импортируйте стартовые запросы из crates/ad-tombstone/queries.json и, при желании, один раз выполните crates/ad-tombstone/privilege_zones.cypher, чтобы пометить удалённые объекты в подразделениях Tier Zero как высокоценные; для этого также нужен cypher-shell, а не строка поиска, по той же причине, что и в шаге 3 (его SET — тоже обновляющее выражение).