Pass-the-Hash
認証情報を再利用します
「Pass-the-Hash」はCoddyKit上の無料Ethical Hacking Academyレッスンです。 これはレッスン3/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはEthical Hacking Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Ethical Hacking Academyコースには全4レッスンが含まれています。
Pass-the-Hashとは
Pass-the-Hash(PtH)は、平文のパスワードではなく、ユーザーのNTLMパスワードハッシュを使って認証する手法です。
WindowsのNTLM認証では、ハッシュ自体が秘密情報として使われるため、そのユーザーとしてログインするためにハッシュをクラッキングする必要はありません。
NTLMハッシュ
WindowsはアカウントパスワードをNTLMハッシュ(UTF-16パスワードのMD4)として保存します。NTLM認証では、身元を証明するのはパスワードではなくハッシュです。
この設計上の欠陥により、ハッシュを盗むことは、NTLMベースのログインにおいてパスワードを盗むことと機能的に同等です。
ハッシュの保存場所
ハッシュは複数の場所から取得できます。
- ローカルマシン上のSAMデータベース。
- ログオン中のユーザーに対応するLSASSプロセスのメモリ。
- ドメインコントローラー上のNTDS.ditファイル。
必要な権限は取得元によって異なりますが、いずれも再利用可能なハッシュを取得できます。
Mimikatzによるダンプ
Mimikatzは、LSASSメモリから認証情報を抽出する代表的なツールです。sekurlsa::logonpasswordsコマンドを使うと、現在ログオンしているユーザーのNTLMハッシュが表示されます。
LSASSを読み取るには、ローカル管理者権限(多くの場合はSeDebugPrivilegeも)が必要です。
mimikatz # sekurlsa::logonpasswordssecretsdumpによるダンプ
Impacketのsecretsdump.pyは、有効な認証情報を使ってSAMとドメインデータベースからハッシュをリモートで抽出します。
適切なレプリケーション権限があれば、DCSyncを実行してドメインコントローラーからハッシュを直接取得することもできます。
secretsdump.py corp.local/admin:Pass@10.0.0.10ハッシュのパススルー
ハッシュを取得すると、ツールを使ってそれを直接認証に利用できます。Impacketのpsexec.pyは-hashesフラグでハッシュを受け取り、リモートシェルを提供します。
形式はLMHASH:NTHASHです。最新のシステムでは、LM部分は通常ゼロの空値です。
psexec.py -hashes :a1b2c3d4... administrator@10.0.0.20他のツールによるハッシュのパススルー
多くのツールがPtHをサポートしています。
- CrackMapExec / NetExec:多数のホストにハッシュをスプレーします。
- evil-winrm:ハッシュを使ってWinRMシェルを取得します。
- wmiexec.py / smbexec.py:別の実行方法を提供します。
1つのローカル管理者ハッシュをサブネット全体にスプレーすると、アクセス範囲を急速に拡大できます。
netexec smb 10.0.0.0/24 -u admin -H a1b2c3d4... ラテラルムーブメント
Pass-the-Hashは、主要なラテラルムーブメント手法です。あるマシンのローカル管理者ハッシュを他のマシンで再利用すると(同じローカル管理者パスワードを共有している場合に問題となります)、攻撃者はホストからホストへ移動できます。
新たに侵入したホストのメモリには、より高い権限を持つユーザーのハッシュが保存されている場合があります。
防御策
緩和策には次のものがあります。
- LAPS:マシンごとに一意でランダムなローカル管理者パスワードを設定します。
- Credential Guard:LSASSの秘密情報を分離します。
- 特権アカウントがログインできる場所を制限します(階層化)。
- 可能な場合はNTLMを無効化し、Kerberosを使用します。
関連する攻撃
Pass-the-Hashには派生手法があります。
- Pass-the-Ticket:盗んだKerberosチケットを再利用します。
- Overpass-the-Hash:NTLMハッシュを使ってKerberos TGTを要求します。
これらは認証情報の再利用をKerberosの領域にまで拡張する手法です。
NTLMとKerberosの比較
Pass-the-Hashは、NTLM認証を悪用する手法です。Kerberosを強制し、NTLMを無効化した環境では、攻撃対象領域を大幅に縮小できます。
ただし、互換性のために多くのネットワークではNTLMが残っているため、PtHは依然として広く有効です。このため、NTLMの無効化が推奨されるハードニング対策となっています。
確認問題
PtHでクラッキングが不要な理由を思い出してください。
まとめ
これでPass-the-Hashについて理解できました。
- NTLM認証ではハッシュを秘密情報として受け入れるため、クラッキングは不要です。
- ハッシュは、Mimikatzやsecretsdumpを使ってSAM、LSASS、NTDS.ditからダンプします。
- psexec.py、NetExec、evil-winrmなどのツールでハッシュを再利用し、ラテラルムーブメントを行います。
- LAPS、Credential Guard、階層化によって防御します。
次は、BloodHoundで攻撃経路をマッピングします。
よくある質問
「Pass-the-Hash」レッスンは無料ですか?
はい。「Pass-the-Hash」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Ethical Hacking Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Ethical Hacking Academyコースには全4レッスンが含まれています。
「Pass-the-Hash」で何を学びますか?
認証情報を再利用します ブラウザで直接実行するハンズオンコードでEthical Hacking Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
Ethical Hacking Academyを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのEthical Hacking Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン3/4です。
「Pass-the-Hash」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このEthical Hacking Academyレッスンでコードを書いて実行できますか?
はい。すべてのEthical Hacking Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- ADの基礎
- Kerberoasting
- Pass-the-Hash
- BloodHound