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

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

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

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

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
ツール/GitHubGitHub/jakobfriedl/tgt-monitor-bof
横移動ポストエクスプロイトペネトレーションテスト認証レッドチーミングペイロード開発
GitHubjakobfriedl/tgt-monitor-bof

tgt-monitor-bof

ターゲットシステム上でKerberos TGTを自動的に抽出または更新するためのAsync BOF。

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

人気

すべて見る →

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

すべてのツールを探索

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

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

Kerberos TGT 監視 & 自動更新

このリポジトリには、2つの非同期ビーコンオブジェクトファイル(BOF)が含まれています。1つ目は tgt-monitor で、Kerberos ログオンイベントを監視し、新しい Kerberos TGT がキャプチャされるたびにエージェントを起動します。Rubeus の monitor コマンドと同様に、この BOF は無期限に実行され、定期的にシステム上の LSA チケットキャッシュをチェックします。新しい TGT が検出されると、チケットのメタデータを表示し、pass-the-ticket 攻撃による横方向の移動に使用できる base64 エンコードされた kirbi blob を出力します。2つ目は tgt-renew で、残りの有効期間が指定されたしきい値(例:15分)を下回った場合に、システム上の TGT を自動的に更新します。

[!Important] このリポジトリのBOFは、非同期オブジェクトファイル読み込み機能を必要とします。この機能は Conquest フレームワークによって提供されます。

  • Kerberos TGT 監視 & 自動更新
    • 仕組み
      • チケット監視
      • チケット更新
    • 使用方法
      • tgt-monitor
      • tgt-renew
    • インストール
    • 謝辞

仕組み

両方のBOFは、NT AUTHORITY\SYSTEM コンテキストから実行する必要があります。特権は同じロジックに従ってチェックされます。

  1. BOFは現在のプロセストークンがSYSTEMアクセス権を持っているかをチェックします。
  2. プロセストークンがSYSTEMでない場合、BOFは現在のプロセス内のすべてのスレッドをスキャンして、SYSTEM特権を持つ偽装トークンを探し、それを複製します。これにより、SYSTEMトークンを盗んだ低整合性エージェントプロセス(例:SeImpersonatePrivilege 経由)からの使用が可能になります。これでもSYSTEMレベルのアクセスが得られない場合、BOFは終了します。
  3. LSAおよびKerberos認証パッケージのハンドルが取得されます。

以下の手順は、BOFが停止イベントによってキャンセルされるまでループで繰り返されます。ユーザー定義の間隔がポーリングの遅延を設定します。

チケット監視

  1. すべてのアクティブなログオンセッションが列挙されます。各セッションについて、Kerberos チケットキャッシュが照会され、TGT にフィルタリングされます。--user 引数が指定された場合、そのユーザー名に一致するセッションのみが考慮されます。
  2. 現在のチケットキャッシュが前回のスナップショットと比較されます。新しい TGT がトリガーされると、メタデータの表示と base64 エンコードされた kirbi 出力が行われ、その後 BeaconWakeup() が呼び出されてエージェントがチェックインし、出力を返すように強制されます。

Workflow TGT Monitor

チケット更新

  1. すべてのアクティブなログオンセッションが列挙されます。各セッションについて、Kerberos チケットキャッシュが照会され、TGT にフィルタリングされます。--user 引数が指定された場合、そのユーザー名に一致するセッションのみが考慮されます。
  2. 各 TGT は2つの条件に対してチェックされます:
    • チケットが RenewUntil 時間を過ぎている場合、期限切れとしてフラグが立てられ、再認証が必要です。
    • チケットの残り有効期間がユーザー定義のしきい値内にある場合、TGT は更新されてインポートされます。成功すると、更新されたチケットメタデータと base64 エンコードされた kirbi 出力が表示され、その後 BeaconWakeup() が呼び出されます。

Workflow TGT Renew

チケット更新プロセスは以下の手順を含みます:

  1. PTICKET_ENTRY 構造体から LUID と SPN を使用して、ExtractTicket() 経由で ASN.1 エンコードされた Kerberos TGT を抽出します。
  2. チケットを ASN.1 デコードし、Kerberos 資格情報を取得します。
  3. 期限切れのチケットを事前認証に使用して、チケット更新をリクエストする TGS-REQ パケットを作成します。
  4. TGS-REQ バイトをポート 88 でドメインコントローラに送信します。
  5. TGS-REP 応答を取得、ASN.1 デコード、解析します。
  6. 更新されたチケットを構築し、キャッシュから古いチケットを削除し、Pass-the-Ticket を使用して更新されたチケットをインポートします。
  7. PTICKET_ENTRY 構造体の startTime、endTime、renewUntil、ticketFlags、encryptionType を更新し、チケット情報と base64 を表示します。

使用方法

このリポジトリは、以下の2つのコマンドを実装した Conquest モジュール を提供します。

tgt-monitor

tgt-monitor BOF は、新しい TGT がキャプチャされると警告し、Base64 エンコードされた blob として返します。オブジェクトファイルには以下の引数を渡す必要があります:

名前型説明
intervalintチェック間のタイムアウト(秒)。
targetUsersstring大文字小文字を区別しない、ターゲットユーザー名のカンマ区切りリスト。このフィールドが設定されている場合、指定されたユーザーの TGT のみが取得されます。それ以外の場合は、すべてのユーザーの TGT が収集されます。コンピュータアカウントは末尾に が必要です。
root@kitploit:~
Usage: tgt-monitor [--interval interval] [--user user]
Example: tgt-monitor --interval 5 --user DC01$

Optional arguments:
  --interval interval       INT        Polling interval in seconds (default: 60).
  --user user               STRING     Comma-separated list of target usernames (default: all users).

TGT Monitor

エンコードされたチケットは、Rubeus.exe ptt /ticket:<base64> または impacket-ticketConverter を使用してさらに横方向の移動に直接利用できます(下のスクリーンショット参照)。Conquest では、ptt コマンドを使用して、現在のログオンセッションにチケットを直接注入し、対象ユーザーを偽装することが可能です。

Stealing tickets with TGT Monitor

tgt-renew

tgt-renew BOF は、もうすぐ期限切れになるチケットを、更新できなくなるまで自動的に更新します。オブジェクトファイルには以下の引数を渡す必要があります:

root@kitploit:~
Usage: tgt-renew [--interval seconds] [--threshold minutes] [--user user] [--luid luid]
Example: tgt-renew --luid 0x3e4 --interval 300 --threshold 30

Optional arguments:
  --interval seconds        INT        Polling interval in seconds (default: 60).
  --threshold minutes       INT        Ticket renewal threshold in minutes (default: 15).
  --user user               STRING     Comma-separated list of target usernames (default: all users).
  --luid luid               STRING     Comma-separated list of target LUIDs (default: all LUIDs).

--user フラグと --luid フラグは相互排他的です。

TGT Renew

インストール

root@kitploit:~
git clone https://github.com/jakobfriedl/tgt-monitor-bof
cd tgt-monitor-bof
make

その後、Conquest の Script Manager を使用して dist/tgt-monitor.py モジュールをロードします。

謝辞

この Beacon Object File の実装は、以下のプロジェクトに基づいています:

  • https://github.com/Ghostpack/Rubeus
  • https://github.com/RalfHacker/Kerbeus-BOF
    • ASN.1 エンコーディング/デコーディング実装
  • https://github.com/wavvs/nanorobeus
ツールをダウンロード
$
名前型説明
intervalintチェック間のタイムアウト(秒)。
thresholdint更新しきい値(分)。EndTime までの時間がこのしきい値より短くなるとチケットが更新されます。
targetUsersstring大文字小文字を区別しない、ターゲットユーザー名のカンマ区切りリスト。このフィールドが設定されている場合、指定されたユーザーの TGT のみが更新されます。それ以外の場合は、すべてのユーザーの TGT が更新されます。コンピュータアカウントは末尾に $ が必要です。
targetLuidsstring大文字小文字を区別しない、ターゲット LUID のカンマ区切りリスト。このフィールドが設定されている場合、指定された LUID の TGT のみが更新されます。