Beschleunigung von BloodHound - Automatisierung von Neo4j Abfragen - TEAL Technology Consulting GmbH
2424
post-template-default,single,single-post,postid-2424,single-format-standard,bridge-core-2.4.8,,qode-title-hidden,qode-child-theme-ver-1.0.0,qode-theme-ver-23.3,qode-theme-bridge,disabled_footer_top,qode_header_in_grid,wpb-js-composer js-comp-ver-6.4.1,vc_responsive

Beschleunigung von BloodHound – Automatisierung von Neo4j Abfragen

Diesen Monat möchten wir gerne wieder etwas an die Community zurückgeben. Wie Ihr in unserem Novemberblog gelesen habt, nutzen wir zahlreiche Open-Source Tools für unser Active Directory Assessment. Ein prominentes Beispiel ist Bloodhound mit der Neo4j Graphendatenbank im Hintergrund. Bloodhound ist ein Tool, mit dem ein Angreifer das Active Directory mit Userrechten „scannt“ und die Daten im Anschluss offline auswerten kann. Es werden sämtliche Gruppen, Benutzer und Computer- Objekte, aber vor allem auch Anmeldedaten (wer hat wo eine Session) und Berechtigungen gespeichert. Diese können mit speziellen Abfragen ausgewertet werden und potenzielle Angriffsziele und Wege werden aufgezeigt.

Neben der Visualisierung der Angriffspfade in Bloodhound gibt es zahlreiche Abfragen, die man nur direkt gegen Neo4J absetzen kann, weil das Ergebnis kein Pfad, sondern eine Liste ist. Im Netz gibt es schon zahlreiche Seiten mit interessanten Abfragen, z.B. von @Haus3c oder auch von den Bloodhound Autoren (@wald0 und @CptJesus) selbst. Von letzteren gibt es auch einen guten Artikel wie man eigene Cypher- Abfragen (so heißt die Neo4j Sprache) schreibt.

Im Kontext unseres AD Assessments führen wir immer das gleiche Basis-Set an Queries zusammen mit kundenspezifischen Abfragen aus und übergeben das Ergebnis im CSV-Format dem Kunden als Teil der Assessment-Dokumentation. Genau diesen Schritt haben wir automatisiert und veröffentlichen das Script zusammen mit diesem Blogartikel 😊.

Das Skript funktioniert wie folgt:

Das Skript liest ein oder mehrere Cypher-Abfragen sowie deren Titel aus einer Eingabedatei im JSON-Format, übermittelt die Anfragen nacheinander mit den hinterlegten Credentials an die Neo4j API und schreibt das Ergebnis in eine CSV-Datei im gleichen Verzeichnis.

Die API URL, die Eingabedatei, Username, Passwort sowie das Ausgabeverzeichnis können als Parameter übergeben werden.

Beachtet bei der Nutzung bitte eins: Wenn mal eine Anfrage zu lange läuft und Ihr das PowerShell Skript abbrecht, läuft die Verarbeitung der Abfrage innerhalb von Neo4j weiter. Ihr müsst also den Neo4j Service neustarten, um die Abfrage abzubrechen.

Und so sieht das ganze aus:

Skript und Inputfile

Das Queryfile

Aufruf ohne Parameter

Skript und Inputfile

Die Ausgabedateien

Das Ergebnis

Ihr könnt das Skript in unserem GitHub Repo finden.

Viel Spaß damit. Bei Fragen kommt gerne auf uns zu. Sollten wir Euer Interesse an einem AD Assessment geweckt haben, könnt Ihr euch natürlich auch gerne bei uns melden 😊.

LATEST POSTS