
Automatisiertes, erweiterbares Toolkit, das Cypher-Abfragen gegen Bloodhounds Neo4j-Backend ausführt und die Ausgabe in Tabellenkalkulationen speichert.
Automatisiertes, erweiterbares Toolset, das Cypher-Abfragen gegen Bloodhounds Neo4j-Backend ausführt und die Ausgabe in Tabellenkalkulationen speichert.
Dies ist ein Bash-Skript, das die Ausführung von Cypher-Abfragen gegen Bloodhound-Daten, die in einer Neo4j-Datenbank gespeichert sind, automatisiert.
Ich habe festgestellt, dass ich bei mehreren Bewertungen immer wieder dieselben Abfragen über die Neo4j-Weboberfläche ausgeführt habe, und dachte mir, es muss einen einfacheren Weg geben. 😅
Die Liste der auszuführenden Cypher-Abfragen ist vollständig erweiterbar. Das folgende Formatierungsbeispiel zeigt, wie Sie eigene hinzufügen können.
Bitte teilen Sie weitere nützliche Abfragen mit, damit ich sie zu diesem Projekt hinzufügen kann!
Vollständig getestet unter Bash auf Linux, macOS und Windows
(Gerendert mit termtosvg zu Ihrem Vergnügen)
cypher-shell wird mit Neo4j gebündelt geliefert und ist für die Funktion dieses Skripts erforderlich
cypher-shell nicht gefunden wird, haben Sie möglicherweise eine veraltete Version von Neo4jssconvert vorhanden ist, kombiniert das Skript alle .csv-Ausgaben in Blätter innerhalb einer .xls-Datei
Unter Windows empfehlen wir, dieses Skript mit WSL auszuführen, während die Neo4j-Datenbank unter Windows läuft. Sie müssen lediglich das Paket cypher-shell in WSL (Linux) installieren.
Flags:
-u Neo4J Username (Required)
-p Neo4J Password (Required)
-d Fully Qualified Domain Name (Required) (Case Sensitive)
-a Bolt address (Optional) (Default: localhost:7687)
-t Query Timeout (Optional) (Default: 30s)
-v Verbose mode (Optional) (Default:FALSE)
-h Help text and usage example (Optional)
Beispiel mit Standardwerten:
./cypheroth.sh -u neo4j -p BloodHound -d TESTLAB.LOCAL
Beispiel mit allen Optionen:
./cypheroth.sh -u neo4j -p hunter2 -d BigTech.corp -a 10.0.0.1:7687 -t 5m -v true
Dateien werden in einem nach dem FQDN benannten Unterverzeichnis abgelegt.
Derzeit sind fast 60 Abfragen im Skript enthalten. Dies ist ein Beispiel für die Informationen, die Sie erhalten:
Um zusätzliche Abfragen hinzuzufügen, bearbeiten Sie das Array queries in cypheroth.sh und fügen Sie eine Zeile mit folgendem Format ein:
Description;Cypher Query;Output File
Wenn Sie eine Abfrage hinzufügen, die die Angabe des Domain-Werts erfordert, speichern Sie ihn als $DOMAIN.
Beispiel 1:
All Usernames;MATCH (u:User) RETURN u.name;usernames.csv
Beispiel 2:
All Domain Admins;MATCH (u:User) MATCH (g:Group {name:'DOMAIN ADMINS@$DOMAIN'}) RETURN u.displayname;domainAdmins.csv
Wenn Sie mehrere Domänen analysieren müssen, können Sie mehrere Instanzen von Cypheroth parallel ausführen, wobei jede an ihrer Domäne arbeitet. Sie können beispielsweise das folgende Skript verwenden (10 parallel).
#!/usr/bin/env bash
DOMAINS=(domA.example.net domB.example.net [...])
parallel -j10 --lb ./cypheroth.sh <args> -d {} ::: "${DOMAINS[@]}"
Wenn Sie eine veraltete Version von cypher-shell ausführen, erhalten Sie möglicherweise die folgende Fehlermeldung:
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.
Zur Behebung aktualisieren Sie Neo4j auf die neueste Version.
Chris Farrell (@seajay)
#cypher_queries für die Unterstützung