
Set di strumenti automatizzato ed estensibile che esegue interrogazioni Cypher contro il backend Neo4j di Bloodhound e salva l'output in fogli di calcolo.
Set di strumenti automatizzati ed estensibili che esegue query Cypher contro il backend Neo4j di Bloodhound e salva l'output in fogli di calcolo.
Questo è uno script bash che automatizza l'esecuzione di query Cypher sui dati di Bloodhound memorizzati in un database Neo4j.
Mi sono ritrovato a rieseguire le stesse query attraverso l'interfaccia web di Neo4j su più valutazioni e ho pensato che dovesse esserci un modo più semplice. 😅
L'elenco delle query Cypher da eseguire è completamente estensibile. L'esempio di formattazione qui sotto mostra come aggiungere le proprie query.
Per favore, condividi eventuali altre query utili in modo che io possa aggiungerle a questo progetto!
Completamente testato e funzionante in Bash su Linux, macOS e Windows
(Renderizzato con termtosvg per il tuo piacere visivo)
cypher-shell è incluso in Neo4j ed è necessario per il funzionamento di questo script
cypher-shell non viene trovato, potresti avere una versione obsoleta di Neo4jssconvert è presente, lo script combinerà tutti i file .csv di output in fogli all'interno di un file .xls
Su Windows consigliamo di usare WSL per eseguire questo script, mentre il database Neo4j viene eseguito su Windows. Dovrai solo installare il pacchetto cypher-shell in WSL (Linux).
Flag:
-u Nome utente Neo4J (Obbligatorio)
-p Password Neo4J (Obbligatorio)
-d Nome di dominio completamente qualificato (Obbligatorio) (Maiuscole/minuscole)
-a Indirizzo Bolt (Opzionale) (Default: localhost:7687)
-t Timeout query (Opzionale) (Default: 30s)
-v Modalità verbosa (Opzionale) (Default:FALSE)
-h Testo di aiuto ed esempio di utilizzo (Opzionale)
Esempio con impostazioni predefinite:
./cypheroth.sh -u neo4j -p BloodHound -d TESTLAB.LOCAL
Esempio con tutte le opzioni:
./cypheroth.sh -u neo4j -p hunter2 -d BigTech.corp -a 10.0.0.1:7687 -t 5m -v true
I file vengono aggiunti a una sottodirectory denominata con il FQDN.
Ci sono quasi 60 query nello script al momento. Questo è un esempio delle informazioni che riceverai:
Per aggiungere ulteriori query, modifica l'array queries all'interno di cypheroth.sh e aggiungi una riga usando il formato seguente:
Descrizione;Query Cypher;File di output
Se aggiungi una query che richiede l'impostazione del valore del dominio, salvalo come $DOMAIN.
Esempio 1:
All Usernames;MATCH (u:User) RETURN u.name;usernames.csv
Esempio 2:
All Domain Admins;MATCH (u:User) MATCH (g:Group {name:'DOMAIN ADMINS@$DOMAIN'}) RETURN u.displayname;domainAdmins.csv
Se devi analizzare più domini, puoi eseguire più istanze di Cypheroth in parallelo, ciascuna che lavora sul proprio dominio. Puoi usare il seguente script come esempio (10 in parallelo).
#!/usr/bin/env bash
DOMAINS=(domA.example.net domB.example.net [...])
parallel -j10 --lb ./cypheroth.sh <args> -d {} ::: "${DOMAINS[@]}"
Se stai eseguendo una versione obsoleta di cypher-shell, potresti ricevere il seguente errore:
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.
Per risolvere, aggiorna Neo4j all'ultima versione.
Chris Farrell (@seajay)
#cypher_queries di Bloodhound Slack per l'assistenza