LSASS不要の窃取:DumpGuard BOFでNTLMv1ハッシュを抽出する

Image

DumpGuard BOF

最新のWindowsシステム上のセッションからNTLMv1ハッシュを抽出するためのDumpGuardのBeacon Object File(BOF)移植版。

このリポジトリには、Beacon Object File(BOF)として実装したDumpGuardが含まれています。元のC#/.NET実装を純粋なCに移植し、Havocや、BOF実行をサポートする他のC2フレームワークで利用できるようにしています。

これは概念実証(PoC)であり、学習目的の取り組みです。

このBOF移植版は、Remote Credential Guard プロトコル、Kerberos認証フロー、そして基盤となるWindowsのセキュリティ機構の詳細を理解するという、私個人の学習の一環として作成しました。このツールをC#からBOF実行向けの純Cへ移植するプロセスは、主として教育的な試みでした。

以下の点にご注意ください:

  • このコードにはバグ、誤り、または未完成の実装が含まれている可能性があります。
  • すべてのWindowsバージョンや構成にわたって十分なテストは行っていません
  • 一部のエッジケースやプロトコル上の細かな差異が適切に処理されない可能性があります。
  • 実装は、信頼性に影響する形でオリジナルと異なる場合があります。
  • これは本番利用向けのコードではありません。自己責任で使用してください Ü。

DumpGuardはWindows Remote Credential Guard(RCG)を悪用し、ログイン中ユーザーのNTLMv1ハッシュをLSASSメモリに触れることなく、かつ管理者権限を必要とせずに抽出します。Credential Guardが有効でも動作します。

仕組み

  1. ローカルでCredSSP/RDPサーバーになりすます。BOFは偽のRDPサーバーとして動作します。
  2. Windows SSPIをだまして、Kerberos + CredSSPの完全な認証を実行させます。
  3. ユーザーの資格情報TSRemoteGuardCredsでラップされた形で受け取ります。
  4. LSAのTSSSPパッケージを呼び出し、既知のチャレンジでNTLMv1レスポンスを計算させます。

4ラウンドのCredSSPダンス

ラウンド クライアント ->  サーバー サーバー -> クライアント
1 SPNEGO + TGT-REQ TGT-REPLY(実際のKDCから)
2 AP-REQ(サービスチケット) AP-REP + MIC
3 PubKeyAuth(バインディングハッシュ) サーバーのバインディングハッシュ
4 AuthInfo(TSRemoteGuardCreds) N/A

ラウンド4の後、暗号化された資格情報ブロブが手に入ります。魔法が起きるのは、TSSSPパッケージを指定してLsaCallAuthenticationPackageを呼び出したときです。LSAは要求をRDPEAR -> TSRemoteGuard -> MSV1_0へとルーティングし、そこで秘密情報が復号され、NTLMv1レスポンスがこちらのために計算されます。

背景

Credential Guardは、NTLMおよびKerberosの秘密情報を安全なVBS領域(LsaIso.exe)に隔離し、Mimikatzのような直接メモリアクセス攻撃を防ぎます。しかしCredential Guardは、正当な認証のためにそれらの秘密情報を使用する必要があります。この手法が悪用するのは、そのインターフェースです。

技術的な詳細な解説については、こちらを参照してください: Catching Credential Guard Off Guard

実装

このBOF移植版は、元のDumpGuardツールの「Self」モードのみを実装しています。「All」モードはこのバージョンでは実装されていません。

Selfモード

Remote Credential Guardプロトコルを介して、現在のプロセスユーザーのNTLMv1ハッシュをダンプします。

  • 必要権限: なし(現在のユーザーコンテキストで実行)
  • Credential Guardの状態: Credential Guardが有効かどうかに関わらず動作
  • 要件: SPNが登録されたアカウントの資格情報

他ユーザーのハッシュを抽出する

このBOFは「self」モードのみを実装していますが、例えばそのユーザーとして動作しているプロセスにインジェクトすることで、他ユーザーのNTLMv1ハッシュを抽出することも可能です。たとえば管理者権限がある場合、別のログイン中ユーザーが所有するプロセスにBOFをインジェクトして、そのユーザーのハッシュを取得できます。

ダウンロード

翻訳元: https://meterpreter.org/lsass-free-larceny-extracting-ntlmv1-hashes-with-dumpguard-bof/

ソース: meterpreter.org