Skip to content
KitploitKITPLOIT
ToolsBlog
Einreichen
ToolsBlog
Einreichen

Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!

Kitploit ist ein Verzeichnis von Hacking-, Cybersicherheits- und Pentesting-Tools. Entdecken Sie die neuesten Projekt-Updates, um Schwachstellen zu finden, Systeme zu analysieren, Tests zu automatisieren und Ihre Sicherheit zu stärken.

··Feeds·Kontakt·Datenschutz·© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
ImproHound — Identifizieren Sie die Angriffspfade in BloodHound, die Ihr AD-Stufenmodell durchbrechen. | Kitploit
Tools/GitHubGitHub/improsec/improhound
Privilege EscalationSchwachstellenanalyseInformationsbeschaffungPenetrationstests
GitHubimprosec/improhound

ImproHound

Identifizieren Sie die Angriffspfade in BloodHound, die Ihr AD-Stufenmodell durchbrechen.

Repository anzeigen
32836vor 3 JahrenVon Kitploit geprüft

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen

GitHub release (latest SemVer) GitHub all releases

ImproHound

Identifizieren Sie die Angriffspfade in BloodHound, die Ihr AD-Tiering verletzen

ImproHound ist eine eigenständige dotnet Win x64-EXE mit GUI. Um ImproHound zu verwenden, müssen Sie SharpHound ausführen, um die erforderlichen Daten aus der AD zu sammeln. Anschließend laden Sie die Daten in Ihre BloodHound-Installation hoch. ImproHound stellt eine Verbindung zur zugrunde liegenden Neo4j-Datenbank von BloodHound her. In ImproHound kategorisieren Sie die AD mithilfe der OU-Struktur in Tiers, und ImproHound identifiziert die AD-Beziehungen, die es AD-Objekten ermöglichen, ein Objekt eines höheren (näher an Null gelegenen) Tiers zu kompromittieren, und speichert die Tiering-Verstöße in einer CSV-Datei.

ImproHound-Blogbeitrag

ImproHound-Demovideo

ImproHound DEF CON Adversary Village Präsentation

Inhaltsverzeichnis
  • Installation
  • Nutzung
  • Richtlinien für das Tiering von AD-Objekten
  • Zuletzt getestete Version der Abhängigkeiten

Installation

1. Richten Sie Ihre BloodHound-Datenbank ein

  1. Installieren Sie BloodHound

  2. Sammeln Sie BloodHound-Daten mit SharpHound in Ihrer AD

    Hinweis: Dies erzeugt Rauschen in Ihrer AV, SIEM usw.

    Beispiel: Führen Sie SharpHound.exe von der Eingabeaufforderung aus, sammeln Sie alle (ja, GPOLocalGroup ist nicht in All enthalten):

    root@kitploit:~
    SharpHound.exe --CollectionMethods All,GPOLocalGroup
    

    Tipp 1: Verwenden Sie den Parameter Domain, um Daten aus anderen Domänen der Gesamtstruktur zu sammeln.

    Tipp 2: Um noch mehr Daten zu erhalten, verwenden Sie die The Session Loop Collection Method

  3. Laden Sie Ihre BloodHound-Daten in der BloodHound-GUI hoch

    Es gibt einen Bug in BloodHound, der manchmal dazu führt, dass die JSON-Datei der Domäne beim Hochladen eines BloodHound-Daten-ZIPs übersprungen wird. Überprüfen Sie die DB-Statistiken in BloodHound nach dem Daten-Upload und stellen Sie sicher, dass die Domänenobjekte existieren.

2. Installieren Sie das APOC Neo4j-Plugin (ermöglicht großartige Graph-Operationen, die wir benötigen)

  1. Laden Sie die zu Ihrer Neo4j-Version passende APOC-Version herunter (apoc-x.x.x.x-all.jar).

    Die passende APOC-Version für Ihre Neo4j-Version finden Sie in der Versionskompatibilitätsmatrix.

  2. Versuchen Sie sich zu erinnern, wo Sie Neo4j installiert haben, und legen Sie die APOC-JAR-Datei unter: $NEO4J_HOME/plugins/ ab

    • $NEO4J_HOME in Linux: /var/lib/neo4j/
    • $NEO4J_HOME in Windows: Überprüfen Sie den Neo4j-Dienst. Dieser zeigt den Pfad an.
  3. Bearbeiten Sie neo4j.conf in Ihrem bevorzugten Texteditor, um uneingeschränkten APOC-Zugriff zu erlauben, indem Sie die Zeile: #dbms.security.procedures.unrestricted=my.extensions.example,my.procedures.* ersetzen mit dbms.security.procedures.unrestricted=apoc.*

    • neo4j.conf in Linux: /etc/neo4j/neo4j.conf
    • neo4j.conf in Windows: $NEO4J_HOME/conf/neo4j.conf

    Wenn Sie ImproHound auf einem Host und BloodHound auf einem anderen ausführen möchten, müssen Sie Remote-Verbindungen zur Neo4j-Datenbank auf dem BloodHound-Host zulassen. Entfernen Sie dazu das # aus der Zeile #dbms.default_listen_address=0.0.0.0 in .

3. Laden Sie die neueste Version von ImproHound.exe herunter und führen Sie sie unter Windows (x64) aus

    Bestätigen Sie, dass Sie sich mit denselben Anmeldeinformationen, die Sie in der BloodHound-GUI verwenden, bei der BloodHound-Datenbank anmelden können.

Nutzung

Verbindung zur Datenbank herstellen

alt text

Geben Sie die Datenbank-Anmeldeinformationen ein und stellen Sie eine Verbindung her. Es sind dieselben Anmeldeinformationen, die Sie in der BloodHound-GUI verwenden.

Fortsetzen oder neu beginnen

alt text

ImproHound erstellt ein ‚TierX‘-Label auf Knoten in der BloodHound-Datenbank. Wenn Sie ImproHound bereits zuvor mit dieser BloodHound-Datenbank verwendet haben, werden Sie gefragt, ob Sie mit dem bereits erstellten Tiering fortfahren oder neu beginnen möchten.

Standard-Tiering oder alle in Tier 2

alt text

ImproHound bietet Ihnen die Möglichkeit, ‚Standard-Tiering‘ zu setzen, wodurch Domänen-Admins in Tier 0, Domänen-Benutzer in Tier 2 usw. gesetzt werden, oder alle Objekte in Tier 2 zu setzen.

OU-Struktur

alt text

Dies ist die Seite, auf der Sie die AD-Objekte in Tiers kategorisieren. Das Fenster zeigt die OU-Struktur an. Jedes AD-Objekt hat einen Tier-Wert, der mit den Pfeilen erhöht und verringert werden kann.

Setze untergeordnete Objekte auf Tier

Wenn Sie eine Domäne oder einen AD-Container auswählen, können Sie auf ‚Setze untergeordnete Objekte auf Tier‘ klicken, um alle untergeordneten Objekte (rekursiv) auf die Tier-Stufe der angegebenen Domäne/des Containers zu setzen.

Setze Mitglieder auf Tier

Wenn Sie eine Gruppe auswählen, können Sie auf ‚Setze untergeordnete Objekte auf Tier‘ klicken, um alle Mitglieder (rekursiv) auf die Tier-Stufe der angegebenen Gruppe zu setzen.

Setze Tier für GPOs

Wenn Sie auf ‚Setze Tier für GPOs‘ klicken, wird für jede GPO die Tier-Stufe auf die Tier-Stufe der OU mit der höchsten Stufe (nähe Null) gesetzt, mit der die GPO verknüpft ist. GPOs, die nicht mit einer OU verknüpft sind, behalten ihre Tier-Stufe.

Hole Tiering-Verstöße

Finden Sie alle Beziehungen in der BloodHound-Datenbank, bei denen ein AD-Objekt die Kontrolle über ein AD-Objekt aus einer höheren Stufe (nähe Null) hat.

Es werden zwei CSV-Dateien als Ausgabe erzeugt:

  • adobjects-[timestamp].csv: Alle AD-Objekte und in welcher Stufe sie sich befinden.

  • tiering-violations-[timestamp].csv: Die Tiering-Verstöße.

Beispiel für Einträge in der Verstöße-CSV:

Der erste Eintrag ist ein Tier-1-Dienstkonto mit der Berechtigung, das Passwort eines Tier-0-Benutzerkontos zu ändern. Die Beziehung wird vererbt. Leider ist es nicht immer möglich, in den BloodHound-Daten zu sehen, von wo die Beziehung vererbt wird, aber Sie können dies manuell überprüfen, indem Sie die Berechtigungen für das Ziel-AD-Objekt in Benutzer und Computer einsehen. Der zweite Eintrag ist eine Gruppe mit der Berechtigung, eine GPO zu bearbeiten, die wahrscheinlich mit einer OU verknüpft ist, die Tier-0-Server enthält, da es sich um eine Tier-0-GPO handelt.

Sie können alle Beziehungstypen und deren Ausnutzung hier nachschlagen.

Wenn Sie feststellen, dass ein Objekt in einer zu hohen Stufe (nähe Null) ist, sollten Sie es in ImproHound korrigieren und dann auf Verstöße mit diesem Objekt als QUELLE prüfen. Wenn ein Objekt in einer zu niedrigen Stufe (nähe Unendlich) ist, sollten Sie es in ImproHound korrigieren und auf Verstöße mit dem Objekt als ZIEL prüfen.

Tiering löschen

Alle Tier-Label und von ImproHound erstellte Knoten in der BloodHound-Datenbank werden gelöscht.

Richtlinien für das Tiering von AD-Objekten

Es ist wichtig, die AD-Objekte richtig zu stufen. Wenn Sie einen DC und einen normalen Benutzer mit niedrigen Berechtigungen als Tier-0-Objekte setzen, wird ImproHound nicht feststellen, dass der Administratorzugriff des Benutzers auf den DC ein Tiering-Verstoß ist. Gleicher Fall, wenn Sie beide zu Tier 2 hinzufügen.

Computer

Computer werden danach gestuft, wie kritisch es wäre, wenn der Computer kompromittiert würde.

  • Tier 0 – Domänencontroller und andere als kritisch kategorisierte Systeme. Systeme wie SCCM, ADFS, PKI und Virtualisierungsserver (VMware, Hyper V usw.)
  • Tier 1 – Die restliche Serverinfrastruktur
  • Tier 2 – Reguläre Arbeitsstationen

Benutzer

Benutzer werden nach den Computern gestuft, bei denen sie sich anmelden können, und nach den AD-Objekten, über die sie Kontrolle haben. Ein Beispiel für eine Kontrollberechtigung könnte ein Benutzer mit Rechten zur Bearbeitung von GPOs sein, die mit Tier-1-Servern verknüpft sind, was den Benutzer zu einem Tier-1-Objekt machen würde.

Gruppe

Eine Gruppe gehört zur niedrigsten Stufe (nähe Unendlich) ihrer Mitglieder, es sei denn, die Gruppe hat schlechte Mitglieder, z. B. einen regulären Benutzer als Mitglied von Domänen-Admins.

Beispiele: Domänen-Benutzer ist eine Tier-2-Gruppe, obwohl Ihre Tier-0-Benutzer Mitglieder der Gruppe sind, weil nicht die Mitgliedschaft in Domänen-Benutzern den Benutzern Berechtigungen verleiht. Andererseits ist die Gruppe Domänen-Admins eine Tier-0-Gruppe, weil die Mitgliedschaft in dieser Gruppe Benutzer sehr privilegiert macht. Cloneable Domain Controllers hat meines Wissens keine AD-Berechtigungen, sollte aber nur Tier-0-Objekte, also DCs, enthalten, daher ist es eine Tier-0-Gruppe.

Container (inkl. OU und Domäne)

Ein Container gehört zur höchsten Stufe (nähe Null) seiner untergeordneten Objekte oder zu einer höheren.

Beispiel: Sie haben alle Tier-0-, Tier-1- und Tier-2-Benutzer im Container Benutzer. Ein Benutzer mit Vollzugriffsberechtigung auf den Container Benutzer wäre in der Lage, alle Benutzer einschließlich der Tier-0-Benutzer zu kompromittieren (außer einige, die geschützt sind, aber das ist für das Beispiel nicht wichtig), daher muss der Container Benutzer ein Tier-0-Objekt sein.

GPO

Die Tier-Stufe einer GPO wird durch die Tier-Stufe der OUs bestimmt, mit denen sie verknüpft ist. Die GPO gehört zur höchsten Stufe (nähe Null) der OUs, mit denen sie verknüpft ist. Verwenden Sie die Schaltfläche ‚Setze Tier für GPOs‘, um sicherzustellen, dass alle GPOs diesem Prinzip folgen.

Beispiel: Ein Benutzer mit der Berechtigung, eine GPO zu bearbeiten, die mit einer Tier-1-OU verknüpft ist, könnte durch Ändern der GPO die Mitgliedschaft der Administratoren auf allen Servern unter der Tier-1-OU kontrollieren.

Zuletzt getestete Version der Abhängigkeiten

  • BloodHound 4.2.0
  • Neo4j 4.4.10
  • APOC 4.4.0.8
  • Java/OpenJDK 11.0.16.1 LTS

TODO

  • Filtern von GetChanges/GetChangesAll, wenn nur eine davon existiert.
  • Mehr Tier 0 standardmäßig: RODC (inkl. krbtgt_xxxxxx), MSOL_, AdminSDHolder, usw.
Tool herunterladen
neo4j.conf
  • Starten Sie Neo4j neu

    • Linux: systemctl restart neo4j
    • Windows (cmd): net stop neo4j && net start neo4j (PowerShell: net stop neo4j; net start neo4j)
  • Quell-TierQuell-TypQuell-NameQuell-DistinguishednameBeziehungIstVererbtZiel-TierZiel-TypZiel-NameZiel-Distinguishedname
    Tier1User[email protected]CN=svc-monitor,CN=Users,DC=hot,DC=localForceChangePasswordTrueTier0User[email protected]CN=T0_JBK,CN=Users,DC=hot,DC=local
    Tier2Group[email protected]CN=Wrk-Admins,CN=Groups,DC=hot,DC=localGenericWriteTier0GPO[email protected]CN={6AC1786C-016F-11D2-945F-00C04fB984F9},CN=Policies,CN=System,DC=hot,DC=local