
GhostHound es una extensión de BloodHound OpenGraph que expone la reanimación de tombstone de Active Directory como una ruta de ataque de primera clase, enumerando objetos eliminados a través de SHOW_DELETED, mapeando quién puede restaurarlos y revelando cuándo una identidad reanimada recupera membresía en un grupo privilegiado.
GhostHound es una extensión de OpenGraph de BloodHound para Active Directory. SharpHound y todos los demás recopiladores de AD omiten CN=Deleted Objects: los objetos eliminados (tombstones) son invisibles para el análisis de rutas de ataque estándar de BloodHound, aunque la Papelera de reciclaje de AD y los mecanismos de reanimación de tumbas pueden permitir que un principal con suficientes privilegios restaure uno y tome el control de la identidad que represente. GhostHound enumera tumbas a través de LDAP con el control SHOW_DELETED, determina quién puede reanimar cada una, y emite un payload JSON de OpenGraph más una definición de extensión model.json para que BloodHound CE v8+ pueda renderizar esto como una parte de primera clase del grafo.
Solo para uso autorizado. Esta es una herramienta de seguridad ofensiva / equipo rojo destinada a pruebas de penetración autorizadas e investigación en laboratorios de detección. Ejecútela únicamente contra entornos de Active Directory para los que tenga autorización explícita para realizar pruebas.
Administrators (o una delegación explícita de acceso de lectura a CN=Deleted Objects) en el dominio de destino. Las cuentas no privilegiadas no pueden ver el contenedor en absoluto, independientemente del método de autenticación utilizado; esta es una restricción impuesta por AD, no algo que GhostHound pueda eludir.ghosthound -d ghost.local --dc-ip 10.0.0.10 -u alice -o tombstones.json
Orden de resolución de contraseña: --password (evitar, visible a través de ps//proc/<pid>/cmdline y el historial del shell), luego la variable de entorno LDAP_PASSWORD, luego un mensaje interactivo si no se establece ninguna.
Por defecto, GhostHound se conecta a través de LDAPS (636) con verificación de certificados activada. Existen dos banderas para entornos donde eso no encaja:
--disable-ldaps — retroceder a LDAP en texto claro (389). La contraseña de enlace se envía en texto plano; evite esto contra cualquier cosa que no sea un laboratorio aislado.--insecure-tls — mantener LDAPS (transporte cifrado) pero omitir la verificación de certificados, para certificados autofirmados/de laboratorio que no estén en su almacén de confianza. Prefiera esto sobre --disable-ldaps siempre que el certificado del DC sea el único problema.--timeout-secs (por defecto 30) limita tanto la conexión inicial como cada operación LDAP subsiguiente, por lo que un DC inalcanzable o un --dc-ip incorrecto falla dentro de esa ventana en lugar de colgarse.
Ejecute ghosthound --help para la lista completa de banderas.
GhostHound está construido como un espacio de trabajo centrado en bibliotecas; consulte docs/adr/0001-language-rust-library-first.md para la justificación:
bloodhound-opengraph: Constructor JSON de OpenGraph de BloodHound (la contraparte en Rust del bhopengraph de Python).ad-secdesc: Analizador permisivo y escrito desde cero para ntSecurityDescriptor/DACL/ACE (consulte docs/adr/0003-security-descriptor-parsing-strategy.md para saber por qué esto no depende del único equivalente existente en Rust, que es GPL-3.0).ad-secdesc-oracle: Banco de pruebas diferencial interno no publicado que compara ad-secdesc con esa caja GPL-3.0 como un oráculo de caja negra — aislado de la compilación predeterminada y del gráfico de dependencias de cada caja publicada.ad-tombstone: Enumeración LDAP SHOW_DELETED, modelado del estado de la Papelera de reciclaje de AD y análisis de derechos de reanimación.ghosthound: La CLI que orquesta lo anterior.crates/ad-tombstone/model.json una vez para registrar los tipos de nodo GhostHound_TombstoneUser/GhostHound_TombstoneComputer/GhostHound_TombstoneGroup y los tipos de relación GhostHound_CanReanimate/GhostHound_WasMemberOf/GhostHound_SameAs (todos registrados como transitables, por lo que participan en consultas de ruta más corta).crates/ad-tombstone/bridge_shadow_nodes.cypher directamente contra Neo4j (la barra de búsqueda Cypher de BloodHound CE es de solo lectura y lo rechazará):
docker exec -i <graph-db-container> cypher-shell -u neo4j -p <password> < crates/ad-tombstone/bridge_shadow_nodes.cypher
docs/adr/0006-opengraph-cross-source-node-identity.md. Este script los puentea para que las rutas sean realmente transitables. Es seguro volver a ejecutarlo después de cada importación.Una vez puenteado, la ruta de reanimación se renderiza como una ruta transitable normal — una tumba que era miembro de Domain Admins antes de la eliminación, alcanzable por cada principal con el derecho Reanimate-Tombstones, puenteada al nodo real de Domain Admins:

Este proyecto prioriza la seguridad de alta confianza desde el día 1 (docs/adr/0005-supply-chain-openssf-posture.md):
cargo deny para prohibiciones estrictas de copyleft/GPL y auditoría de vulnerabilidades.cargo fuzz para seguridad de pánico en el análisis de descriptores binarios sin procesar.unsafe en bibliotecas fundamentales.El directorio docs/adr/ registra las decisiones detrás de este diseño (elección de lenguaje, alcance de autenticación, la restricción de licencia de ad-secdesc, el modelo de datos de la Papelera de reciclaje de AD, postura de la cadena de suministro), y docs/research/tombstone-viability-findings.md contiene la investigación subyacente.
crates/ad-tombstone/queries.json y, opcionalmente, ejecute crates/ad-tombstone/privilege_zones.cypher una vez para etiquetar tumbas bajo OU de Tier Zero como de alto valor — esto también necesita cypher-shell en lugar de la barra de búsqueda, por la misma razón que el paso 3 (su SET también es una cláusula de actualización).