
Recolector de datos de Active Directory basado en TUI que ingiere objetos LDAP, realiza recolección remota RPC/SMB/HTTP y genera volcados compatibles con BloodHound CE para análisis de rutas de ataque.
Una TUI para la recolección de Active Directory.
Los principales objetivos de este proyecto son:
Flashingestor implementa 3 pasos básicos separados: Ingestión LDAP, Recolección Remota y Conversión, a diferencia de otros recolectores que ejecutan los métodos especificados en un solo paso:
Ingest (Ctrl+l) - Recoge datos de atributos de objetos sin procesar de LDAP y los almacena en output/ldap en archivos intermedios msgpack. Las consultas se pueden personalizar en config.yaml.
Remote (Ctrl+r) - Lee estos archivos intermedios en memoria, calcula la lista de computadoras a recolectar y realiza una serie de solicitudes RPC/SMB/HTTP para obtener información remota relevante para objetos Computer y EnterpriseCA, que se almacenan en output/remote.
Convert (Ctrl+s) - Lee los archivos intermedios en memoria, fusiona la información de los pasos de ingestión y recolección remota, y genera un volcado compatible con Bloodhound en output/bloodhound - este paso es completamente offline.
Para más detalles técnicos y perspectivas, consulta nuestra 📖 Wiki.
$ git clone https://github.com/Macmod/flashingestor
$ cd flashingestor
# To build only:
$ go build ./cmd/flashingestor
# To install the executable to $GOBIN or $GOPATH/bin:
$ go install ./cmd/flashingestor
[!NOTE] También puedes usar binarios precompilados de los Lanzamientos proporcionados.
Primero autentícate con uno de los siguientes métodos:
# Anonymous
# [Requires dSHeuristics of 0000002 in the DirectoryServices object
# and can have limited visibility due to lack of Read ACEs]
$ ./flashingestor -u '@<DOMAIN>' -p '' [...]
# User + Password
$ ./flashingestor -u <USER>@<DOMAIN> -p <PASSWORD> [-k] [...]
# User + NTHash
$ ./flashingestor -u <USER>@<DOMAIN> -H <NTHASH> [-k] [...]
# User + PFX
$ ./flashingestor -u <USER>@<DOMAIN> --pfx <PFXPATH> [--pfx-password <PFXPASS>] [-k] [...]
# User + PEM
$ ./flashingestor -u <USER>@<DOMAIN> --cert <PEMPATH> --key <KEYPATH> [-k] [...]
# User + AESKey
$ ./flashingestor -u <USER>@<DOMAIN> --aes-key <AESKEY> -k [...]
# User + Ticket
$ ./flashingestor -u <USER>@<DOMAIN> --ccache /path/to/ticket.ccache -k [...]
or
$ KRB5CCNAME=/path/to/ticket.ccache ./flashingestor -u <USER>@<DOMAIN> -k [...]
Luego ejecuta los pasos según lo desees. Para una recolección solo LDAP (DCOnly con excepción de GPOLocalGroup y CertServices), solo ejecuta Ctrl+l, verifica si la ingestión fue exitosa y luego ejecuta Ctrl+s para generar el volcado final.
Se recomienda especificar --dc y --dns para ejecutar flashingestor. Si no especificas --dc, flashingestor intentará encontrarlo con búsquedas SRV / A, lo que puede retrasar el paso inicial Ingest.
Debes especificar --dns si tu servidor DNS estándar no conoce el dominio; cuando se utiliza DNS integrado en AD, simplemente apunta --dns al DC que lo aloja. Además, independientemente de --dc, si deseas ejecutar el paso Remote Collection y tu servidor DNS no conoce las computadoras del dominio, entonces debes especificar --dns para las búsquedas.
[!TIP] En entornos con múltiples DC, también puedes usar la utilidad
dcprobepara medir la latencia de todos los DCs y encontrar un buen candidato objetivo para la ingestión:$ go build ./cmd/dcprobe $ ./dcprobe --dns 192.168.88.6 -d creta.local -r 10
Si el archivo de configuración no está presente en el directorio actual como config.yaml o en la ruta proporcionada mediante --config, se asumirán las opciones predeterminadas (las mismas que en el config.yaml proporcionado); están codificadas en config/fallback.go. Para más información, lee Archivo de Configuración.
Considera usar --log para especificar un archivo de salida para los registros (en caso de que necesites revisarlos después de cerrar la TUI) y -vv para ver mensajes de registro de depuración, ya que estos pueden ayudar a solucionar posibles problemas. Para una referencia completa de los argumentos de línea de comandos, lee Argumentos de Línea de Comandos.
[!NOTE] Las consultas predeterminadas en el
config.yamlproporcionado están diseñadas teniendo en cuenta la información necesaria para la conversión de Bloodhound. Puedes optar por personalizar consultas o atributos enconfig.yaml, pero es mejor evitar eliminar atributos necesarios y evitar cambiar el significado de los filtros de búsqueda.
Si recurse_trusts está establecido en true, ingerirá cualquier dominio de confianza encontrado de forma recursiva con la credencial inicial proporcionada para la ingestión.
Si search_forest está establecido en true, ingerirá dominios que forman parte del mismo bosque que el dominio inicial desde la partición Configuration; no se emitirán consultas adicionales, ya que esto ya es parte del plan de ingestión predeterminado. Ambas opciones se pueden configurar al mismo tiempo, y flashingestor solo ingerirá cualquier dominio encontrado una vez (ya sea a través de una confianza o del bosque actual).
Si recurse_trusts está habilitado y recurse_feasible_only también está establecido en true, solo intentará ingerir un dominio de confianza si la confianza es:
Esto significa que las confianzas solo salientes no se recorrerán, y aparte del primer nivel de confianzas, las rutas de ingestión se detienen en confianzas no transitivas: si B confía en A de forma no transitiva, entonces A aún puede autenticarse en B; pero si C también confía en B de forma no transitiva, entonces A no puede autenticarse en C.