Pass the Hash
Pass the Hash (Pass-the-Hash, パス ザ ハッシュ)とは、ハッキングテクニックの1つです。攻撃者は、通常、平文のパスワードユーザが要求されるケースで、パスワードの代わりにパスワードのNTLMハッシュ や LMハッシュを使用して、リモートのサーバやサービスを認証します。
読み方
- Pass the Hash
- ぱす ざ はっしゅ
- Pass-the-Hash
- ぱす ざ はっしゅ
目次
概要
攻撃者は、有効なユーザ名とハッシュ化されたパスワードを取得(他の方法やツールを使用して取得する)した後で、平文パスワード を得るために、ハッシュ に対する総当たり攻撃( brute-force) なしに、LMハッシュ / NTLMハッシュ を利用して、リモートのサーバ/サービスの認証に使用します。 攻撃者は、ソルトが利用されていないハッシュ化されたパスワードの認証プロトコルの脆弱な実装を悪用します。 その結果、パスワードが変更されるまでセッションは、固定化された形式のセッションのままです。
このテクニックは、LMハッシュ / NTLMハッシュ 認証を受け入れる Windows, Unix, その他のOS が動作しているマシンのサーバ/サービス に対して有効です。
ハッシュの収集
攻撃者は、Pass the Hash 攻撃を実行する前に、ターゲットのユーザアカウントのハッシュ化されたパスワード を入手しなければなりません。ペネトレーションテスター/攻撃者は、多くの異なる方法を用いて、ハッシュ化されたパスワード を入手できます。
- ハッシュ/クレデンシャルは、マシンの管理者権限レベルのユーザによって SAMデータベース からダンプできます。ハッシュ/クレデンシャルのキャッシュは、システム管理者 によって無効かできますので、この方法は、いつも使えるわけではありません。
- ローカルユーザアカウントデータベース (SAMデータベース) をダンプします。このデータベースは、乗っ取った特定のマシンのローカルユーザアカウントだけを持っています。例えば、ドメイン環境において、マシンのSAMデータベースは、ドメインユーザを含んでいません。
- クライアントとサーバ間の LMハッシュ と NTLMハッシュ のチャレンジレスポンスの対話を スニッフ し、キャプチャした暗号化されたハッシュを総当たり攻撃します。
- Windows の lsass.exe プロセスのメモリに格納されている認証されたユーザのクレデンシャルをダンプします。この方法でのクレデンシャルのダンプは、RDP を通じてログインしているような、ドメインのユーザ/システム管理者 を含んでいます。このテクニックは、乗っ取ったコンピュータのローカルではないユーザアカウントのクレデンシャルを取得できます。
対策
いくつものプロトコルで(SMB, ftp, rpc, HTTP など)使われる LMハッシュ / NTLMハッシュ を使っているシステムは、この攻撃のリスクにさらされています。このエクスプロイトから防衛するのは、非常に難しいです。Windows には、いくつものエクスプロイト と攻撃者が権限昇格してハッシュを収集することに利用できる Windowsで実行されているアプリケーション があります。 その上、Windows ドメインのマシンが正しく設定されていなかったり、攻撃者がに利用されるセキュリティパッチがちゃんと適用されていないことがあります。幅広いペネトレーションテストツールは、マシンの弱点を発見する手順が自動化されています。
この攻撃に対して、1つの防衛策はありません。標準的な多層防御が必要です。例えば、ファイアーウォール、IPS (侵入防止システム)、IEEE 802.1x 認証、IPsec、ウイルス対策ソフト、完全なディスク暗号化、権限昇格できる人の数を減らすこと、積極的なパッチの提供なのです。
Windows のクレデンシャルキャッシュの防止は、メモリからハッシュを入手しようとする攻撃者を制限します。攻撃を実行したときにマシンにログインしているターゲットアカウントだけに絞られます。乗っ取られた、もしくは、信頼できないシステムにログインするドメインのシステム管理者 は、システム管理者のハッシュが攻撃者の対象になるシナリオを許してしまいます。 信頼できるドメインコントローラーにドメインのシステム管理者 がログインを制限することにより、攻撃者の機会を制限できます。最小権限の原則 ( Principle of least privilege, POLP) は、ユーザは、タスクに必要な最低限の権限異常のアカウントを持たない、最小限のユーザアクセスのアプローチを提案します。 LMハッシュ / NTLMハッシュ を使用しないように設定されたシステムは、セキュリティが強力ですが、新しいエクスプロイトが、kerberos チケットにあります。システムのデバッグ権限のスコープを制限することで、センシティブなプロセスのメモリからハッシュを盗もうとするコードインジェクションのいくつかの攻撃を無効化できるでしょう。
Pass the Hash リモートデスクトップ
freerdp-x11のxfreerdpを使用して、Pass the Hashのテストができます。
Ubuntu/Debianにインストールする場合
apt-get コマンドでインストールする場合です。
sudo apt-get install freerdp-x11
xfreerdpとPass the Hash
xfreerdpの以下のオプションを使用します。
- /u
- は、ユーザー名を指定します。ドメインユーザー(username)です。
- /ptn
- パスワードハッシュを指定します。
- /d
- ドメインを指定します。
- /v
- 接続先ホストを指定します。
% xfreerdp /u:username /ptn:ハッシュパスワード /d:domain /v:192.168.0.2
関連項目
- パスワードクラック
- Windowsのパスワード
- Windowsアカウントのパスワードをクラッキングする方法
- ハッシュ化されたパスワード
- Windows Credentials Editor ( WCE )
- keimpx
- PsExec
- RDP
- Windowsアカウントのパスワードをクラッキングする方法
- Windowsのパスワード
- LMハッシュ
- NTLMハッシュ
- SAMデータベース
ツイート