Pass-the-Hash攻撃(パスザハッシュ)とは | 意味や読み方など丁寧でわかりやすい用語解説
Pass-the-Hash攻撃(パスザハッシュ)の意味や読み方など、初心者にもわかりやすいように丁寧に解説しています。
読み方
日本語表記
パス・ザ・ハッシュ攻撃 (パス・ザ・ハッシュ)
英語表記
Pass-the-Hash (パスザハッシュ)
用語解説
Pass-the-Hash攻撃とは、認証に必要なパスワードそのものではなく、パスワードから生成されたハッシュ値(hash value)を盗み出し、それを用いて認証を突破するサイバー攻撃の一種である。特にWindows環境で広く認識され、利用される。一般的な認証では、ユーザーが入力したパスワードは直接送信されず、パスワードから一方向の関数で生成されたハッシュ値が認証サーバーに送られ、サーバーが持つハッシュ値と比較されることで本人確認が行われる。この攻撃は、この認証の仕組みの盲点をつくもので、攻撃者はパスワード自体を知らなくても、有効なハッシュ値さえ手に入れれば、あたかも正規のユーザーであるかのようにシステムやネットワークリソースへアクセスできる。
詳細を説明する。Windows環境では、ユーザーがログオンする際に、パスワードはNTLMハッシュやKerberosキーとしてメモリ(具体的にはLSASSプロセス:Local Security Authority Subsystem Service)にキャッシュされる。これは、ユーザーがネットワーク上の共有フォルダや他のサーバーへアクセスする際に、毎回パスワードを入力する手間を省き、スムーズな認証を可能にするためである。このキャッシュされたハッシュ値が、Pass-the-Hash攻撃の主な標的となる。
攻撃の手順は概ね以下の通りである。まず、攻撃者は何らかの方法で標的となるシステムに侵入し、管理者権限などを利用して、メモリ上に存在するユーザーのハッシュ値を窃取する。この窃取には、Mimikatzのようなツールがよく用いられる。Mimikatzは、LSASSプロセスから平文のパスワードやNTLMハッシュ、Kerberosチケットなどを抽出できる強力なツールとして知られている。ハッシュ値が窃取されると、攻撃者はこのハッシュ値を認証プロトコルに直接提示する。例えば、Windowsネットワーク認証の主要なプロトコルであるNTLM(NT LAN Manager)認証では、クライアントはサーバーからのチャレンジ(乱数)を受け取り、それと自身のパスワードハッシュを組み合わせてレスポンスを生成し、サーバーに送り返す。サーバーはこのレスポンスと自身の持つハッシュ値から計算した正しいレスポンスを比較することで、認証の成否を判断する。Pass-the-Hash攻撃では、攻撃者は正規のユーザーのハッシュ値を持っているため、サーバーが期待する正しいレスポンスを生成し、サーバーに提示できる。これにより、サーバーはハッシュ値が正しいと判断し、攻撃者を正規のユーザーとして認証してしまう。攻撃者はパスワードを知らなくても、ハッシュ値があれば認証を突破できるのである。
この攻撃の深刻な点は、一度ハッシュ値が窃取されると、そのハッシュ値が有効である限り、パスワード変更がない限り、攻撃者は継続的にシステムにアクセスできる可能性があることである。特に、ドメイン管理者など特権を持つアカウントのハッシュが窃取された場合、攻撃者はドメインコントローラーにアクセスし、Active Directory全体を制御できる可能性がある。これにより、ネットワーク内の他のシステムへの横展開(Lateral Movement)が容易になり、情報窃取、データの改ざん、システムの破壊といった重大な被害につながる。また、Kerberos認証で利用される「チケット」の概念を悪用した「Pass-the-Ticket攻撃」や、偽のKerberosチケットを生成する「ゴールデンチケット攻撃」など、さらに高度な攻撃手法の足がかりとなる場合もある。
対策としては、まず最小権限の原則を徹底することが重要である。すべてのユーザーが常に管理者権限を持つ必要はなく、必要な時だけ特権を使用する運用を心がけるべきである。次に、強力なパスワードポリシーの適用と、定期的なパスワードの変更も有効な手段となる。パスワードが複雑であれば、ブルートフォース攻撃に対する耐性が向上するだけでなく、Pass-the-Hash攻撃で窃取されたハッシュ値が他のシステムで使い回されるリスクも軽減される。さらに、多要素認証(MFA)の導入は、ハッシュ値が窃取されても、別の要素(スマートフォンの認証コードなど)がなければ認証を突破できないため、Pass-the-Hash攻撃に対する強力な防御策となる。Windows OS自体も、Credential GuardやLSA Protectionといったセキュリティ機能を搭載しており、これらを有効化することで、LSASSプロセス内の認証情報を保護し、ハッシュ値の窃取を困難にできる。定期的なセキュリティパッチの適用や、不審なネットワークアクティビティを監視することも、攻撃の早期発見と対処につながる。これらの対策を複合的に実施することで、Pass-the-Hash攻撃のリスクを低減できる。