キャッシュされたActive Directoryドメインの資格情報は、Windowsクライアントにどのように保存されますか?それらはローカルのSAMデータベースに保存されているので、ローカルユーザーアカウントが影響を受けるのと同じRainbowテーブル攻撃の影響を受けやすくなりますか、それとも別の方法で保存されますか?それらがプレーンテキストで保存されないようにソルトおよびハッシュされていることを私は知っていますが、ローカルアカウントと同じ方法でハッシュされ、同じ場所に保存されていますか?
少なくとも、ブルートフォース攻撃を受けやすいことはわかっていますが、マシンが盗まれた場合にRainbowテーブルに対して脆弱であるよりもはるかに良い状況です。
ADドメインのキャッシュされた資格情報は、実際にはパスワードの二重ハッシュされ、HKLM\Security Hiveに保存されます。 Hiveのファイルの場所は次のとおりです:%systemroot%\System32\config\SECURITY
「システム」ユーザーのみがレジストリキーにアクセスできます。HKLM\Security\Cache\NL$n
ここで、n
は、キャッシュされた資格情報の最大数のインデックス1です。
WinNTからWinXPはlocalアカウントに "Lan Manager"ハッシュを使用しましたが、これは最新のハードウェアでは簡単に壊れます。クラッキングは通常「通常の」デスクトップコンピュータで数分かかります(私は最近00:08:06に3つのパスワードを入力しました)。 Lan Managerのハッシュはソルト処理されていないため、レインボーテーブルも公開されています。
Vista以降ではlocalアカウントにNTハッシュを使用します。 Windows 2000以降ではdomainアカウントにもNTハッシュを使用します。 NTハッシュはソルト付きダブルMD4ハッシュです。エントリごとのソルトはRainbowテーブルの使用を防ぎますが、MD4は最新のハードウェアで非常に高速に実行できます。運と6 GPUクラスターがあれば、クラッカーはこの種のパスワードを約6か月で解読できます。これをクラウドに導入すると、Amazon EC2 GPUで約35,000ドル-可用性にもよりますが、数時間かかる場合があります。
資格情報は実際にはローカルマシンにキャッシュされません。 MSからのこの抜粋を参照してください。
キャッシュされたドメイン資格情報のセキュリティ
資格情報のキャッシュという用語は、Windowsがドメインログオンのログオン情報をキャッシュする方法を正確に説明していません。 Windows 2000以降のバージョンのWindowsでは、ユーザー名とパスワードはキャッシュされません。代わりに、システムはパスワードの暗号化されたベリファイアを保存します。このベリファイアは、2回計算されるソルト付きMD4ハッシュです。二重計算により、ベリファイアはユーザーパスワードのハッシュのハッシュになります。この動作は、Microsoft Windows NT 4.0および以前のバージョンのWindows NTの動作とは異なります。
これらは、Credential Manager APIがあるCredential Managerによって処理されます。ソルトハッシュは、ディスク上に安全な方法で保存され、HKLM\Securityを介してアクセスされます。 (これは、デフォルトではLocalSystemによってのみアクセスできますが、たとえば、psexec -i -s regedit.exeによって簡単にバイパスできます。)
ただし、実行中のWindowsシステムでは、DLLをLsassにフックすることにより、最近使用した資格情報を取得して簡単にプレーンテキストに戻すことができるため、状況はさらに悲惨です(Mimikatzを参照してください)。
つまり、クライアントのHKLM\Security\Cacheで、ある種のハッシュ(またはハッシュのハッシュ、または「ベリファイア」など、呼び出したいもの)を見つけます。しかし、ディスク上のハッシュを攻撃する実行可能な方法はないと思います。これは、攻撃可能なNTLMハッシュとは異なります。