「Pass the Hash」の版間の差分
行12: | 行12: | ||
このテクニックは、[[LMハッシュ]] / [[NTLMハッシュ]] 認証を受け入れる [[Windows]], [[Unix]], その他の[[OS]] が動作しているマシンのサーバ/サービス に対して有効です。 | このテクニックは、[[LMハッシュ]] / [[NTLMハッシュ]] 認証を受け入れる [[Windows]], [[Unix]], その他の[[OS]] が動作しているマシンのサーバ/サービス に対して有効です。 | ||
− | |||
== ハッシュの収集 == | == ハッシュの収集 == | ||
攻撃者は、[[Pass the Hash]] 攻撃を実行する前に、ターゲットのユーザアカウントの[[ハッシュ化されたパスワード]] を入手しなければなりません。ペネトレーションテスター/攻撃者は、多くの異なる方法を用いて、[[ハッシュ化されたパスワード]] を入手できます。 | 攻撃者は、[[Pass the Hash]] 攻撃を実行する前に、ターゲットのユーザアカウントの[[ハッシュ化されたパスワード]] を入手しなければなりません。ペネトレーションテスター/攻撃者は、多くの異なる方法を用いて、[[ハッシュ化されたパスワード]] を入手できます。 | ||
行21: | 行20: | ||
* [[Windows]] の [[lsass.exe]] プロセスのメモリに格納されている認証されたユーザのクレデンシャルをダンプします。この方法でのクレデンシャルのダンプは、[[RDP]] を通じてログインしているような、ドメインのユーザ/[[システム管理者]] を含んでいます。このテクニックは、乗っ取ったコンピュータのローカルではないユーザアカウントのクレデンシャルを取得できます。 | * [[Windows]] の [[lsass.exe]] プロセスのメモリに格納されている認証されたユーザのクレデンシャルをダンプします。この方法でのクレデンシャルのダンプは、[[RDP]] を通じてログインしているような、ドメインのユーザ/[[システム管理者]] を含んでいます。このテクニックは、乗っ取ったコンピュータのローカルではないユーザアカウントのクレデンシャルを取得できます。 | ||
== 対策 == | == 対策 == | ||
− | いくつものプロトコルで( | + | いくつものプロトコルで(SMB, [[ftp]], rpc, [[HTTP]] など)使われる [[LMハッシュ]] / [[NTLMハッシュ]] を使っているシステムは、この攻撃のリスクにさらされています。この[[エクスプロイト]]から防衛するのは、非常に難しいです。[[Windows]] には、いくつもの[[エクスプロイト]] と攻撃者が[[権限昇格]]して[[ハッシュ]]を収集することに利用できる [[Windows]]で実行されているアプリケーション があります。 |
その上、Windows ドメインのマシンが正しく設定されていなかったり、攻撃者がに利用されるセキュリティパッチがちゃんと適用されていないことがあります。幅広いペネトレーションテストツールは、マシンの弱点を発見する手順が自動化されています。 | その上、Windows ドメインのマシンが正しく設定されていなかったり、攻撃者がに利用されるセキュリティパッチがちゃんと適用されていないことがあります。幅広いペネトレーションテストツールは、マシンの弱点を発見する手順が自動化されています。 | ||
− | この攻撃に対して、1つの防衛策はありません。標準的な[[多層防御]]が必要です。例えば、[[ファイアーウォール]]、[[IPS]] ([[侵入防止システム]])、 | + | この攻撃に対して、1つの防衛策はありません。標準的な[[多層防御]]が必要です。例えば、[[ファイアーウォール]]、[[IPS]] ([[侵入防止システム]])、'''IEEE 802.1x''' 認証、[[IPsec]]、[[ウイルス対策ソフト]]、完全な[[ディスク暗号化]]、[[権限昇格]]できる人の数を減らすこと、積極的なパッチの提供なのです。 |
[[Windows]] のクレデンシャルキャッシュの防止は、メモリから[[ハッシュ]]を入手しようとする攻撃者を制限します。攻撃を実行したときにマシンにログインしているターゲットアカウントだけに絞られます。乗っ取られた、もしくは、信頼できないシステムにログインするドメインの[[システム管理者]] は、[[システム管理者]]の[[ハッシュ]]が攻撃者の対象になるシナリオを許してしまいます。 | [[Windows]] のクレデンシャルキャッシュの防止は、メモリから[[ハッシュ]]を入手しようとする攻撃者を制限します。攻撃を実行したときにマシンにログインしているターゲットアカウントだけに絞られます。乗っ取られた、もしくは、信頼できないシステムにログインするドメインの[[システム管理者]] は、[[システム管理者]]の[[ハッシュ]]が攻撃者の対象になるシナリオを許してしまいます。 | ||
信頼できる[[ドメインコントローラー]]にドメインの[[システム管理者]] がログインを制限することにより、攻撃者の機会を制限できます。[[最小権限の原則]] ( Principle of least privilege, POLP) は、ユーザは、タスクに必要な最低限の権限異常のアカウントを持たない、最小限のユーザアクセスのアプローチを提案します。 | 信頼できる[[ドメインコントローラー]]にドメインの[[システム管理者]] がログインを制限することにより、攻撃者の機会を制限できます。[[最小権限の原則]] ( Principle of least privilege, POLP) は、ユーザは、タスクに必要な最低限の権限異常のアカウントを持たない、最小限のユーザアクセスのアプローチを提案します。 | ||
− | [[LMハッシュ]] / [[NTLMハッシュ]] を使用しないように設定されたシステムは、セキュリティが強力ですが、新しいエクスプロイトが、[[kerberos]] チケットにあります。システムのデバッグ権限のスコープを制限することで、センシティブなプロセスのメモリから[[ハッシュ]]を盗もうとする | + | [[LMハッシュ]] / [[NTLMハッシュ]] を使用しないように設定されたシステムは、セキュリティが強力ですが、新しいエクスプロイトが、[[kerberos]] チケットにあります。システムのデバッグ権限のスコープを制限することで、センシティブなプロセスのメモリから[[ハッシュ]]を盗もうとする'''コードインジェクション'''のいくつかの攻撃を無効化できるでしょう。 |
− | + | ||
== Pass the Hash リモートデスクトップ == | == Pass the Hash リモートデスクトップ == | ||
[[freerdp-x11]]のxfreerdpを使用して、[[Pass the Hash]]のテストができます。 | [[freerdp-x11]]のxfreerdpを使用して、[[Pass the Hash]]のテストができます。 | ||
行37: | 行35: | ||
;/u:は、ユーザー名を指定します。ドメインユーザー(username)です。 | ;/u:は、ユーザー名を指定します。ドメインユーザー(username)です。 | ||
;/ptn:[[パスワードハッシュ]]を指定します。 | ;/ptn:[[パスワードハッシュ]]を指定します。 | ||
− | ;/d: | + | ;/d: ドメインを指定します。 |
;/v: 接続先ホストを指定します。 | ;/v: 接続先ホストを指定します。 | ||
<syntaxhighlight lang="bash"> | <syntaxhighlight lang="bash"> | ||
% xfreerdp /u:username /ptn:ハッシュパスワード /d:domain /v:192.168.0.2 | % xfreerdp /u:username /ptn:ハッシュパスワード /d:domain /v:192.168.0.2 | ||
</syntaxhighlight> | </syntaxhighlight> | ||
− | |||
== 関連項目 == | == 関連項目 == | ||
* [[パスワードクラック]] | * [[パスワードクラック]] |
2015年9月22日 (火) 17:03時点における版
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