
sammeln sammeln sammeln
sammeln sammeln sammeln

Jackdaw sammelt alle Informationen in Ihrer Domäne, speichert sie in einer SQL-Datenbank und zeigt Ihnen schöne Graphen, wie Ihre Domänenobjekte miteinander interagieren und wie ein potenzieller Angreifer diese Interaktionen ausnutzen könnte. Es enthält auch eine praktische Funktion, die Sie bei einem Passwort-Cracking-Projekt unterstützt, indem Hashes/Passwörter/Benutzer gespeichert/nachgeschlagen/gemeldet werden.
dbinit erstellen.enum ausführen. Dies kann unter Windows automatisch durch Doppelklick auf die ausführbare Datei oder durch Eingabe von jackdaw.exe auto erfolgen.nest ausführen, um die Weboberfläche zu erhalten. Standardmäßig wird sie unter http://127.0.0.1:5000/nest bereitgestellt. Es gibt eine SWAGGER-dokumentierte API unter http://127.0.0.1:5000/ui.Generate graph cache klicken, um die Kanteninformationen in einer Cache-Datei zu erhalten. Es kann eine Weile dauern, aber in der Befehlszeile sehen Sie einen Fortschrittsbalken.Graphansicht spielen, aber vergessen Sie nicht, die korrekte Cache-Nummer oben links auszuwählen.Dieser Abschnitt wird regelmäßig auf Basis von Benutzer-Feedback aktualisiert.
Hier gibt es keinen Rat; während einige Verbesserungen im Code vorgenommen werden können, gibt es nichts, was ein generischer Ansatz tun kann.
Die Generierung der Graph-Daten-Cache-Datei muss für jeden Graphen einmal (und nur einmal) durchgeführt werden, was mit dem Standard-SQLAlchemy-Tool eine Weile dauern kann.
Leistung und Geschwindigkeit können erheblich verbessert werden (über 50x mehr Geschwindigkeit und 20x weniger Speicher), wenn Sie das SQLite-Backend verwenden UND das Befehlszeilentool "sqlite3" irgendwo im PATH ablegen. Ich würde dies jedem Benutzer empfehlen.
Hier kommt der große Kompromiss. Frühe Implementierungen von Jackdaw verwendeten das networkx-Modul als Graph-Backend, da es vollständig in Python geschrieben ist. Dies führte jedoch zu erheblichen Speicher- und Geschwindigkeitskosten. Um Jackdaw rein in Python zu halten, besteht diese Option weiterhin, aber die Verwendung des igraph-Backends ist jetzt die Standardeinstellung.
Hinweis: igraph ist eine C++-Bibliothek mit Python-Bindungen. Es hat vorkompilierte Wheels für Windows und die wichtigsten Linux-Distributionen, aber wenn Sie Jackdaw auf etwas anderem verwenden (eingebettete Systeme/Mobiltelefone/Webbrowser), müssen Sie entweder auf networkx zurückgreifen oder die stundenlange Kompilierzeit in Kauf nehmen.
Keine Notwendigkeit, die Datenbank vorzuinitialisieren, dies geschieht automatisch.
Mit der verteilten Binärdatei können Sie einfach auf jackdaw.exe doppelklicken.
Als Python-Skript verwenden: jackdaw auto
jackdaw --sql sqlite:///<full path here>/test.db dbinit
UNTER LINUX-SYSTEMEN enthält <full path here> den ersten /, sodass Sie //// vier (4) Striche vor dem Dateinamen haben. Keine Panik.
jackdaw --sql sqlite:///test.db enum 'ldap+sspi-ntlm://<domain>\<placeholder>@10.10.10.2' 'smb+sspi-ntlm://<domain>\<placeholder>@10.10.10.2'
Das Passwort ist Passw0rd!
jackdaw --sql sqlite:///test.db enum 'ldap+ntlm-password://TEST\victim:[email protected]' 'smb+ntlm-password://TEST\victim:[email protected]'
Das Passwort ist Passw0rd!
jackdaw --sql sqlite:///test.db ldap 'ldap+ntlm-password://TEST\victim:[email protected]'
jackdaw --sql sqlite:///<FULL PATH TO DB> nest
Öffnen Sie http://127.0.0.1:5000/ui für die API
Bitte lesen Sie den Abschnitt Building the UI weiter unten, um zu erfahren, wie Sie die UI erstellen. Sobald erstellt:
Öffnen Sie http://127.0.0.1:5000/nest für die Graph-Schnittstelle (zeigt den Graphen, aber noch nicht voll funktionsfähig)
Die LDAP-Enumeration-Phase erfasst Daten zu AD-Informationen, Benutzer-, Maschinen-, OU- und Gruppenobjekten, die als Knoten im Graphen und als separate Tabelle in der DB dargestellt werden. Zusätzlich werden alle Sicherheitsdeskriptoren der genannten Objekte geparst und die ACLs für die DACL zur DB hinzugefügt. Dies wird zusammen mit den Mitgliedschaftsinformationen als Kanten im Graphen dargestellt. Zudem können bei Bedarf benutzerdefinierte SQL-Abfragen auf jeden der genannten Datentypen ausgeführt werden.
Die SMB-Enumeration-Phase erfasst Daten zu Freigaben, lokalen Gruppen, Sitzungen, NTLM-Daten, indem sie eine Verbindung zu jeder Maschine in der Domäne herstellt (die via LDAP erfasst wird).
Das Kerberos-Modul führt automatisches Kerberoasting und AS-REP Roasting durch.
Das Framework ermöglicht es Benutzern, LSASS-Speicher-Dumps hochzuladen, um Anmeldeinformationen zu speichern und die Sitzungsinformations-Tabelle zu erweitern. Beide werden als zusätzliche Kanten im Graphen verwendet (gemeinsames Passwort bzw. Sitzung). Das Framework nutzt diese Informationen auch, um einen Passwortbericht über schwache/geteilte/geknackte Anmeldeinformationen zu erstellen.
Das Framework ermöglicht es Benutzern, DCSYNC-Dateien von Impacket hochzuladen, um Anmeldeinformationen zu speichern. Diese werden als zusätzliche Kanten im Graphen verwendet (gemeinsames Passwort). Das Framework nutzt diese Informationen auch, um einen Passwortbericht über schwache/geteilte/geknackte Anmeldeinformationen zu erstellen.
Das Framework ermöglicht es, die verfügbare DB manuell in jeder Hinsicht zu erweitern. Beispiel: Wenn Benutzersitzungsinformationen auf einem bestimmten Computer entdeckt werden (außerhalb der automatischen Enumeration), besteht die Möglichkeit, diese Sitzungen manuell hochzuladen, wodurch die DB und auch der Ergebnisgraph befüllt werden.
Das Framework kann einen Graphen unter Verwendung der in der Datenbank verfügbaren Informationen generieren und über die Weboberfläche (nest) darstellen. Darüber hinaus können die Graphgenerierung und Pfadberechnungen programmatisch aufgerufen werden, entweder über die Web-API (/ui-Endpunkt) oder die Funktionen des Graph-Objekts.
Das Framework kann häufige AD-Fehlkonfigurationen ohne Graphgenerierung identifizieren. Derzeit nur über die Web-API.
Die Erkennung von Benutzeranomalien umfasst die Erkennung unsicherer UAC-Berechtigungen und umfangreicher Benutzerbeschreibungswerte. Diese Funktionspalette wird voraussichtlich in Zukunft wachsen, wenn neue Funktionen implementiert werden.
Die Erkennung von Maschinenanomalien umfasst die Erkennung unsicherer UAC-Berechtigungen, nicht obligatorischer SMB-Signierung, veralteter Betriebssystemversionen und nicht in der Domäne befindlicher Maschinen. Diese Funktionspalette wird voraussichtlich in Zukunft wachsen, wenn neue Funktionen implementiert werden.
Das Framework führt kein Cracking durch, sondern organisiert nur die Hashes und die Cracking-Ergebnisse
Derzeit liegt der Hauptfokus auf Impacket und aiosmbs DCSYNC-Ergebnissen, nur !NT- und LM-Hashes!
Beispielprozess ist wie folgt:
Anmerkung des Autors: Diese Funktion wurde sowohl für Angreifer als auch für Verteidiger implementiert. Persönlich sehe ich nicht viel Mehrwert auf beiden Seiten, da man, sobald man den NT-Hash eines Benutzers hat, diesen genauso gut wie das Passwort verwenden kann... Dennoch führen immer mehr Unternehmen Passwortstärke-Übungen durch, und diese Funktion könnte ihnen helfen. Für Angreifer: Es ist nur eine Spielerei, aber nur zu. Vielleicht kann man das Management damit erschrecken.
Dieses Projekt befindet sich in der Experimentierphase! Das bedeutet mehrere Dinge:
Jackdaw verwendet das SQLAlchemy-ORM-Modul, das Ihnen die Möglichkeit gibt, jedes beliebige SQL-DB-Backend zu verwenden. Die Tests werden hauptsächlich auf SQLite durchgeführt, aus offensichtlichen Gründen. In diesem Projekt werden keine backend-spezifischen Befehle verwendet, die Sie einschränken würden.
DIES IST NUR ERFORDERLICH, WENN SIE ÜBER GIT INSTALLIEREN UND/ODER ETWAS IM UI-CODE ÄNDERN
Die UI wurde in React geschrieben. Vor der ersten Nutzung/Installation müssen Sie sie erstellen. Dazu benötigen Sie installierte nodejs und npm. Dann:
jackdaw/nest/site/nuinpm install ausnpm run build ausNach Abschluss der obigen Schritte ist die UI einsatzbereit.
"Wenn ich weiter gesehen habe, dann nur, weil ich auf den Schultern von Riesen stehe."
BloodHound-Team
@dirkjanm (https://github.com/dirkjanm/)
Zsolt Imre (https://github.com/keymandll)
siehe den Danksagungsabschnitt in den Modulen aiosmb und msldap