パス・ザ・ハッシュ攻撃

**パス・ザ・ハッシュ攻撃**（パス・ザ・ハッシュこうげき、英語：**Pass the Hash**、略称PtH）とは、攻撃者がユーザーパスワードの基礎となるNTLMまたはLanManのハッシュを使用することで、通常必要とされる関連する平文パスワードを必要とせずに、リモートサーバーやサービスに対して認証を行うことを可能にするハッキング技術である。これは、アクセスを得るために平文パスワードを盗む必要を、ハッシュを盗むことに置き換えるものである。

この攻撃は、認証プロトコルの実装上の弱点、すなわち、パスワードのハッシュがパスワードが次に変更されるまでログインセッション間で静的であるという点を悪用している。Windows、Unix、またはその他のオペレーティングシステムで実行されているかどうかに関わらず、LMまたはNTLM認証を受け入れるあらゆるサーバーまたはサービスに対して実行可能である。

## 概要
NTLM認証を使用するシステムまたはサービスでは、ユーザーのパスワードは決して平文でネットワーク上に送信されない。その代わりに、パスワードはドメインコントローラなどの要求側システムに、チャレンジレスポンス認証スキームへの応答としてハッシュとして提供される。

ネイティブなWindowsアプリケーションは、ユーザーに平文パスワードを求め、そのパスワードを1つまたは2つのハッシュ値（LMまたはNTハッシュ）に変換し、NTLM認証中にそれをリモートサーバーに送信するLsaLogonUserのようなAPIを呼び出す。

攻撃者がユーザーのパスワードのハッシュを持っている場合、平文パスワードは必要なく、単にそのハッシュを使用してサーバーで認証を行い、そのユーザーになりすますことができる言い換えれば、攻撃者の視点から見ると、ハッシュはそれが生成された元のパスワードと機能的に同等である。

## 歴史
パス・ザ・ハッシュは、元々1997年にPaul Ashtonによって公開され、平文パスワードの代わりにユーザーパスワードのハッシュを受け入れるように変更されたSambaのSMBクライアントで構成されていた。後のバージョンのSambaや、SMBおよびNTLMプロトコルの他のサードパーティ実装にも、この機能が組み込まれた。

この技術の実装は、サードパーティ（例：Sambaなど）によって作成されたSMBスタックに基づいており、このため、ハッカーの視点からは、機能が限定的または部分的であるなど、一連の制限を抱えていた。SMBプロトコルは長年にわたって進化し続けており、これは独自のSMBプロトコル実装を作成するサードパーティが、新しいバージョンのWindowsやSMBによって導入された変更や追加を実装する必要があることを意味する（歴史的にはリバースエンジニアリングによって行われており、これは非常に複雑で時間がかかる）。このことは、パス・ザ・ハッシュを使用してNTLM認証を正常に実行した後でも、SambaのSMBクライアントのようなツールが攻撃者が使用したい機能を実装していない可能性があることを意味していた。これにより、DCOMやRPCを使用するWindowsプログラムを攻撃することが困難になっていた。

また、攻撃者は攻撃を実行する際にサードパーティのクライアントを使用することに制限されていたため、Net.exeや「Active Directoryユーザーとコンピュータ」ツールなどの組み込みのWindowsアプリケーションを使用することは不可能であった。なぜなら、これらのアプリケーションは認証のために平文パスワードの入力を求め、対応するパスワードハッシュ値を求めなかったためである。

2008年、Hernan Ochoaは「パス・ザ・ハッシュ Toolkit」と呼ばれるツールを公開した。これは、Windows上でネイティブに「パス・ザ・ハッシュ」を実行することを可能にした。このツールは、ユーザーが認証された*後に*、Local Security Authorityによってメモリにキャッシュされたユーザー名、ドメイン名、およびパスワードハッシュをランタイムで変更することを可能にした。これにより、標準のWindowsアプリケーションを使用して「パス・ザ・ハッシュ」を実行できるようになり、オペレーティングシステムに組み込まれた基本的な認証メカニズムを無力化することが可能になった。

このツールはまた、lsass.exeプロセスのメモリ（ディスク上の永続ストレージではない）にキャッシュされたパスワードハッシュをダンプすることを可能にする新しい技術を導入した。これは、ペネトレーションテスト担当者（および攻撃者）によって急速に広く使用されるようになった。このハッシュ収集技術は、以前に使用されていた技術（例：*pwdump*などのツールを使用したローカルのSecurity Accounts Managerデータベース（SAM）のダンプ）よりも高度である。主な理由は、メモリに保存されているハッシュ値には、そのマシンにログオンしたドメインユーザー（およびドメイン管理者）の資格情報が含まれる可能性があるためである。例えば、ローカルのSAMに永続的に保存されていない認証済みドメインユーザーのハッシュもダンプすることができる。これにより、ペネトレーションテスト担当者（または攻撃者）は、そのドメインのメンバーである単一のマシンを侵害した後、Windowsドメイン全体を侵害することが可能になる。さらに、この攻撃は即座に実装可能であり、ブルートフォース攻撃を実行するための高価なコンピューティングリソースを一切必要としない。

このツールキットはその後、「Windows Credential Editor」に取って代わられており、これは元のツールの機能とオペレーティングシステムのサポートを拡張している。一部のアンチウイルスベンダーは、このツールキットをマルウェアとして分類している。

## ハッシュ収集
攻撃者がパス・ザ・ハッシュ攻撃を実行する前に、標的とするユーザーアカウントのパスワードハッシュを取得する必要がある。この目的のために、ペネトレーションテスト担当者や攻撃者は、いくつかの異なる方法を使用してパスワードハッシュを収集することができる。

* 以前にマシンにログオンしたユーザー（例えば、コンソールまたはRDP経由）のキャッシュされたハッシュまたは資格情報は、管理者レベルの特権を持つ者であれば誰でもSAMから読み取ることができる。オフラインで使用するためのハッシュまたは資格情報をキャッシュするデフォルトの動作は、管理者によって無効にすることができるため、マシンが十分に強化されている場合はこの技術は常に機能するとは限らない。
* ローカルユーザーのアカウントデータベース（SAM）をダンプする。このデータベースには、侵害された特定のマシンにローカルなユーザーアカウントのみが含まれる。例えば、ドメイン環境では、マシンのSAMデータベースにはドメインユーザーは含まれず、そのマシンにローカルなユーザーのみが含まれるため、ドメイン上の他のサービスに認証するために非常に有用である可能性は低い。ただし、同じローカル管理者アカウントのパスワードが複数のシステムで再利用されている場合、攻撃者はローカルユーザーアカウントのハッシュを使用してそれらのシステムにリモートアクセスすることができる。
* クライアントとサーバー間のLMおよびNTLMチャレンジ-レスポンスのダイアログをスニッフィングし、後でキャプチャされた暗号化されたハッシュをブルートフォース攻撃する（この方法で取得されたハッシュは暗号化されているため、実際のハッシュを取得するにはブルートフォース攻撃を実行する必要がある）。
* Windowsがlsass.exeプロセスのメモリに保存している認証済みユーザーの資格情報をダンプする。この方法でダンプされた資格情報には、RDP経由でログインしたドメインユーザーや管理者などのものが含まれる場合がある。したがって、この技術は、侵害されたコンピュータにローカルではないが、そのマシンがメンバーであるセキュリティドメインから発信されたユーザーアカウントの資格情報を取得するために使用される可能性がある。

## 対策
LMまたはNTLM認証を任意の通信プロトコル（SMB、FTP、RPC、HTTPなど）と組み合わせて使用するシステムは、すべてこの攻撃のリスクにさらされている。このエクスプロイトは、WindowsおよびWindows上で実行されているアプリケーションにおける、攻撃者が権限昇格させ、その後、攻撃を容易にするハッシュ収集を実行するために使用できる可能性のあるエクスプロイトのために、防御することが非常に困難である。さらに、攻撃者が侵入経路を見つけるためには、Windowsドメイン内のたった1台のマシンが正しく構成されていないか、セキュリティパッチが欠落しているだけでよい可能性がある。さらに、弱点を発見するプロセスを自動化するための幅広いペネトレーションテストツールが利用可能である。

この技術に対する単一の防御策は存在しないため、標準的な多層防御が適用される。例えば、ファイアウォール、侵入防止システム、802.1x認証、IPsec、アンチウイルスソフトウェアの使用、昇格された特権を持つ人数の削減、プロアクティブなセキュリティパッチ適用などである。Windowsがキャッシュされた資格情報を保存しないようにすることで、攻撃者がメモリからハッシュを取得することに限定される可能性があり、これは通常、攻撃が実行されるときにターゲットアカウントがマシンにログオンしている必要があることを意味する。ドメイン管理者が侵害される可能性のあるシステムや信頼されていないシステムにログインできるようにすると、管理者のハッシュが攻撃者の標的になるシナリオが生まれる。したがって、ドメイン管理者のログオンを信頼できるドメインコントローラに限定することで、攻撃者の機会を制限することができる。最小権限の原則は、ユーザーが手元のタスクを完了するために必要な特権よりも多くの特権を持つアカウントを使用すべきではないという、最小ユーザーアクセス（LUA）アプローチを採用すべきであることを示唆している。

パス・ザ・チケットシステムをLMまたはNTLMを使用しないように構成することもセキュリティを強化することができるが、新しいエクスプロイトは同様の方法でTGTを転送することができる。システム上のデバッグ特権の範囲を制限することは、機密プロセスのメモリからハッシュを盗むまたは注入する一部の攻撃を阻止する可能性がある。

制限付き管理者モード（Restricted Admin Mode）は、セキュリティ情報2871997を通じて2014年に導入された新しいWindowsオペレーティングシステム機能であり、攻撃の有効性を低下させるように設計されている。

## 関連項目
*反射攻撃

## 脚注

## 参考文献

## 外部リンク
* Microsoft Pass the Hash Mitigation Guidance
* Amplia Security
* SMBShell
* Patrick Jungles et al.: [''Mitigating Pass-the-Hash (PtH) Attacks and Other Credential Theft Techniques''](http://download.microsoft.com/download/7/7/A/77ABC5BD-8320-41AF-863C-6ECFB10CB4B9/Mitigating%20Pass-the-Hash%20(PtH)%20Attacks%20and%20Other%20Credential%20Theft%20Techniques_English.pdf), Microsoft Corp., 2012年, 2015年2月3日取得
* Uninformed Break-the-hash paper
* Reducing the Effectiveness of Pass-the-Hash (NSA)
* CWE-836: Use of Password Hash Instead of Password for Authentication