
Conjunto de herramientas automatizado y extensible que ejecuta consultas Cypher contra el backend Neo4j de BloodHound y guarda los resultados en hojas de cálculo.
Conjunto de herramientas automatizado y extensible que ejecuta consultas cypher contra el backend Neo4j de Bloodhound y guarda la salida en hojas de cálculo.
Este es un script Bash que automatiza la ejecución de consultas cypher contra datos de Bloodhound almacenados en una base de datos Neo4j.
Me encontré re-ejecutando las mismas consultas a través de la interfaz web de Neo4j en múltiples evaluaciones y pensé que debía haber una forma más fácil. 😅
La lista de consultas cypher a ejecutar es completamente extensible. El ejemplo de formato a continuación muestra cómo agregar las tuyas propias.
¡Por favor, comparte cualquier consulta adicional útil para que pueda agregarlas a este proyecto!
Probado completamente para funcionar en Bash en Linux, macOS y Windows
(Renderizado con termtosvg para su placer visual)
cypher-shell viene incluido con Neo4j y es necesario para que este script funcione
cypher-shell, es posible que tengas una versión desactualizada de Neo4jssconvert está presente, el script combinará toda la salida .csv en hojas dentro de un archivo .xls
En Windows recomendamos usar WSL para ejecutar este script, mientras la base de datos Neo4j se ejecuta en Windows. Solo necesitarás instalar el paquete cypher-shell en WSL (Linux).
Banderas:
-u Nombre de usuario de Neo4J (Requerido)
-p Contraseña de Neo4J (Requerido)
-d Nombre de dominio completamente calificado (Requerido) (Sensible a mayúsculas)
-a Dirección Bolt (Opcional) (Predeterminado: localhost:7687)
-t Tiempo de espera de consulta (Opcional) (Predeterminado: 30s)
-v Modo detallado (Opcional) (Predeterminado: FALSO)
-h Texto de ayuda y ejemplo de uso (Opcional)
Ejemplo con valores predeterminados:
./cypheroth.sh -u neo4j -p BloodHound -d TESTLAB.LOCAL
Ejemplo con todas las opciones:
./cypheroth.sh -u neo4j -p hunter2 -d BigTech.corp -a 10.0.0.1:7687 -t 5m -v true
Los archivos se agregan a un subdirectorio nombrado según el FQDN.
Actualmente hay casi 60 consultas en el script. Esta es una muestra de la información que recibirás:
Para agregar consultas adicionales, edita el arreglo queries dentro de cypheroth.sh y agrega una línea usando el siguiente formato:
Descripción;Consulta Cypher;Archivo de Salida
Si agregas una consulta que requiere que se establezca el valor de Dominio, guárdala como $DOMAIN.
Ejemplo 1:
All Usernames;MATCH (u:User) RETURN u.name;usernames.csv
Ejemplo 2:
All Domain Admins;MATCH (u:User) MATCH (g:Group {name:'DOMAIN ADMINS@$DOMAIN'}) RETURN u.displayname;domainAdmins.csv
Si necesitas analizar varios dominios, puedes ejecutar múltiples instancias de Cypheroth en paralelo, cada una trabajando en su dominio. Puedes usar el siguiente script como ejemplo (10 en paralelo).
#!/usr/bin/env bash
DOMAINS=(domA.example.net domB.example.net [...])
parallel -j10 --lb ./cypheroth.sh <args> -d {} ::: "${DOMAINS[@]}"
Si estás ejecutando una versión desactualizada de cypher-shell, es posible que recibas el siguiente error:
DateTime is not supported as a return type in Bolt protocol version 1.
Please make sure driver supports at least protocol version 2.
Driver upgrade is most likely required.
Para solucionarlo, actualiza Neo4j a la última versión.
Chris Farrell (@seajay)
#cypher_queries de Bloodhound Slack por la ayuda