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

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

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

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

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
Internal-Monologue — Internal Monologue Attack: LSASSに触れずにNTLMハッシュを取得する | Kitploit
ツール/GitHubGitHub/eladshamir/internal-monologue
パスワード攻撃横移動ポストエクスプロイトペネトレーションテストレッドチーミング
GitHubeladshamir/internal-monologue

Internal-Monologue

Internal Monologue Attack: LSASSに触れずにNTLMハッシュを取得する

リポジトリを見る
1.7k2387年前Kitploit レビュー済み

人気

すべて見る →

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

すべてのツールを探索

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

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

Internal Monologue Attack: LSASSに触れずにNTLMハッシュを取得する

はじめに

Benjamin Delpy(@gentilkiwi)が開発したMimikatzは、よく知られたポストエクスプロイテーションツールであり、攻撃者がプレーンテキストパスワード、NTLMハッシュ、Kerberosチケットをメモリから抽出したり、pass-the-hash、pass-the-ticket、ゴールデンチケットの作成などの攻撃を実行することを可能にします。間違いなく、Mimikatzの主な用途は、LSASSプロセスメモリからユーザー資格情報を取得し、ポストエクスプロイテーションの横方向の移動に使用することです。

最近、MicrosoftはWindows 10 EnterpriseおよびWindows Server 2016にCredential Guardを導入しました。これは仮想化ベースのセキュリティを使用してシークレットを分離し、Mimikatzがメモリから直接ハッシュを取得するのを防ぐのに非常に効果的です。 また、Mimikatzはほとんどのエンドポイント保護ソリューションの主要なターゲットとなっており、それらはMimikatzの検出と防止に非常に積極的です。これらの取り組みは最終的には失敗する運命にありますが、次第に厄介なものになっています。

NetNTLM

NetNTLMは、主にKerberosがサポートされていない環境で使用されるWindowsのチャレンジレスポンスプロトコルです。NetNTLMでは、サーバーがクライアントにランダムな8バイトのnonceをチャレンジとして送信し、クライアントはNTLMハッシュ(ユーザーのパスワードのMD4ハッシュ)をキーとしてチャレンジを処理したレスポンスを計算します。NetNTLM認証プロトコルには2つのバージョンがあり、どちらも特定の攻撃に対して脆弱です。当然ながら、バージョン1はバージョン2よりもはるかに弱く、そのためWindows Vista/2008以降、NetNTLMバージョン1はデフォルトで無効になっています。

Pass the Hash

NTLMハッシュはレスポンスを計算するためのキーであるため、攻撃者はPass the Hashのために被害者のプレーンテキストパスワードを必ずしも入手する必要はありません。したがって、Mimikatzを使用してLSASSメモリからハッシュを取得することは、プレーンテキストパスワードを盗むこととほぼ同等です。 Chris Hummelは2009年にこのテクニックを説明した記事を公開し、それを「Pass the Hash」と名付けました [https://www.sans.org/reading-room/whitepapers/testing/crack-pass-hash-33219]。

Divide and Conquer

Defcon 2012で、Moxie MarlinspikeとDavid HultonはNetNTLMv1に対する「Divide and Conquer」攻撃を発表しました [https://www.youtube.com/watch?v=sIidzPntdCM]。NetNTLMv1では、クライアントは8バイトのチャレンジを受信し、NTLMハッシュの異なる部分をキーとしてDESを使用して3回暗号化することでレスポンスを計算します。DESのキー長は実質的に56ビット(7バイト)ですが、NTLMハッシュは16バイトです。NetNTLMv1はまずNTLMハッシュの最初の7バイトをキーとしてチャレンジを暗号化し、次にNTLMハッシュの次の7バイトをキーとしてチャレンジを暗号化し、最後にNTLMハッシュの最後の2バイトにnullバイトをパディングしたものをキーとしてチャレンジを暗号化します。これは実質的に、NetNTLMv1のチャレンジとレスポンスが与えられた場合、攻撃者は2つの56ビットDES鍵をクラックする必要があり、これは単一の128ビット鍵をクラックするよりも指数関数的に容易であることを意味します。 MoxieとHultonはこのタスクのためにカスタムハードウェアを開発し、24時間以内にDES鍵空間全体をブルートフォースすることに成功し、妥当な時間内にNTLMハッシュの取得を保証しました。 辞書攻撃やパスワードに対するブルートフォース攻撃とは異なり、この攻撃はNTLMハッシュの取得を保証することに注意してください。

Rainbow Tables

ToorConがhttps://crack.shで実証したように、選択したチャレンジ(例: 0x1122334455667788)に対するすべての可能なNetNTLMv1レスポンスについて完全なレインボーテーブルを作成することが可能であり、これにより与えられたレスポンスに対するNTLMハッシュを数分以内にクラックできます。その意味は、選択したチャレンジに対するNetNTLMv1レスポンスをキャプチャすれば、ほぼ瞬時に対応するNTLMハッシュに変換でき、Pass the Hashのためにパスワードを取得するのとほぼ同等であるということです。

NetNTLM Downgrade Attack

Mimikatzは通常、攻撃者がターゲットホストへの昇格したアクセスを取得した後に実行されます。この時点で、攻撃者はLMCompatibilityLevelなどのレジストリキーも変更でき、これはホストがNetNTLMv1とNetNTLMv2のどちらをネゴシエートするかを指定します。攻撃者は値を0、1、または2に変更してクライアントとしてNetNTLMv1を有効にし、その後、クライアントのレスポンスをキャプチャする不正なSMBサーバーに対して認証を試みることができます。Optivのブログ記事で説明されています [https://www.optiv.com/blog/post-exploitation-using-netntlm-downgrade-attacks]。

Extended NetNTLM Downgrade Attack

さらに2つの設定が、被害者がNetNTLMv1レスポンスをネゴシエートするのを防ぐ可能性があります:

  1. NTLMMinClientSec - 「NTLMv2セッションセキュリティを要求する」に設定されている場合、NTLMv2プロトコルがネゴシエートされなければ接続は失敗します。
  2. RestrictSendingNTLMTraffic - 「すべて拒否」に設定されている場合、クライアントコンピュータはリモートサーバーに任意のバージョンのNetNTLMで認証できません。 NetNTLMダウングレード攻撃と同様に、これらの設定は必要に応じて変更できます。LMCompatibilityLevelとは異なり、これらの設定はデフォルトではNetNTLMv1認証をブロックするようには構成されていないことに注意してください。

Internal Monologue Attack

Mimikatzを実行すべきではないセキュアな環境では、攻撃者はInternal Monologue Attackを実行できます。この攻撃では、SSPIを介してユーザーモードアプリケーションからNTLM認証パッケージ(MSV1_0)へのローカルプロシージャコールを呼び出し、拡張NetNTLMダウングレードを実行した後、ログオンしているユーザーのコンテキストでNetNTLMレスポンスを計算します。

Internal Monologue Attackのフローは以下の通りです:

  1. LMCompatibilityLevel、NTLMMinClientSec、RestrictSendingNTLMTrafficを前述の適切な値に変更して、NetNTLMv1の予防制御を無効にします。
  2. 現在実行中のプロセスからすべての非ネットワークログオントークンを取得し、関連するユーザーを偽装します。
  3. 偽装された各ユーザーについて、ローカルでNTLM SSPと対話し、偽装されたユーザーのセキュリティコンテキストで選択したチャレンジに対するNetNTLMv1レスポンスを引き出します。
  4. LMCompatibilityLevel、NTLMMinClientSec、RestrictSendingNTLMTrafficの元の値を復元します。
  5. レインボーテーブルを使用してキャプチャしたレスポンスのNTLMハッシュをクラックします。
  6. Pass the Hashを実行します。

更新: Credential Guardとの互換性

最近、Credential Guardが有効な環境でInternal Monologueを再テストしましたが、否定的な結果を得ました。初期テスト中に私のテスト環境でCredential Guardが正しく機能していなかったのか、それともその後何かが変わったのかはわかりません。 実装を更新し、AcceptSecurityContextから動的にサーバートークンを取得し、それを改変してローカル認証トラップを回避するようにしました。これにより、拡張セッションセキュリティなしのNetNTLMv1が失敗した場合でも、少なくともNetNTLMv2チャレンジレスポンスをキャプチャできるようになります。

監査証跡

Internal Monologue Attackは、保護されたプロセスにコードを注入したりメモリをダンプしたりする必要がないため、Mimikatzを実行するよりもステルス性が高いと言えます。 NetNTLMv1レスポンスはローカルでNTLM SSPと対話することによって引き出されるため、ネットワークトラフィックは発生せず、選択したチャレンジも容易には見えません。 ログに成功したNTLM認証イベントは記録されません。 NetNTLMダウングレードのためのレジストリ変更やトークンの窃取/他のユーザーの偽装は、指標を引き起こす可能性があります。

概念実証

このツールは、Internal Monologue AttackをC#で実装した概念実証です。コードをPowerShellに移植すると、監査証跡の特定のイベントログが他のものに置き換わる可能性があります。 PoCコードは完璧には程遠いです。積極的な貢献と改善を歓迎します。

著者

The Missing Link SecurityのElad Shamir

謝辞

  • アイデアのやり取りとこれをまとめるのを手伝ってくれたThe Missing Link SecurityのMatthew Bush(3xocyte)およびBeyond BinaryのShaun Williamson(AusJock)
  • Defcon 20での講演「Defeating PPTP VPNs and WPA2 Enterprise with MS-CHAPv2」に対してMoxie MarlinspikeとDavid Hulton
  • NetNTLMダウングレード攻撃に対してOptiv
  • Invoke-TokenManipulationに対してBialek Joseph(clymb3r)
  • Incognitoに対してMWR Labs
  • Selfhashに対してAnton Sapozhnikov(snowytoxa)
  • 複数の改善に対してTim Malcom Vetter(malcomvetter)
  • DLLライブラリの追加に対してMarcello Salvati(byt3bl33d3r)
ツールをダウンロード