Pass the Hash攻撃/NTLM認証【情報処理安全確保支援士・情報セキュリティマネジメント試験・応用情報】
Pass the Hash攻撃/NTLM認証
文字おこし
Pass The Hash攻撃について説明していきます。
以前の動画でハッシュ値の特性について説明しましたが、
ハッシュ値から元の値を推測するのは困難な特性があります。
また同じハッシュ値になる元の値を作ることも困難です。
そして、入力値が同じ内容なら、必ず同じハッシュ値となります。
入力文字を少しでも変えると全く違うハッシュ値となります。
サーバに侵入されてパスワード自体の漏洩を防ぐために、
パスワード自体は破棄して、パスワードに対するハッシュ値を保持することが多いです。
Pass The Hash攻撃の説明の前に、NTLM認証の概要について説明します。
NTLM認証自体は比較的古い認証方式ですが、チャレンジレスポンス認証を利用しています。
サーバにはハッシュ化されたパスワードを保持しているとします。
ここではUsee1のパスワード「password12」のハッシュ値は「kjfe9e93f3」とします。
クライアントパソコンは、サーバに対して認証要求をします。
サーバは一時的な乱数であるチャレンジコードをクライアントに返却します。
クライアントユーザは自身のパスワードは知っているので、
パスワードを入力します。
そしてクライアントPCはそのパスワードを元にハッシュ値を生成します。
このハッシュ値はサーバで保持しているものと同じになります。
ハッシュ値とサーバから送られてきたチャレンジコードをハッシュ関数に入れて新たなハッシュ値を生成して、サーバに返却します。
サーバは自らの送信したチャレンジコードとパスワードのハッシュ値を元にハッシュ値を求めます。
その求めたハッシュ値とクライアントから送られてきたハッシュ値を突き合わせて一致すれば認証が通ります。
このフローだけ見れば、サーバはパスワード自体を管理していないし、通信経路上もパスワードが流れないので安全と言えます。
Pass the Hash攻撃の手順について説明していきます。
端末のメモリには過去にログインした認証情報が残存していることがあります。
攻撃者は何らかの方法をつかって、クライアントパソコンにある、パスワードから生成したハッシュ値を盗みます。
不正ログインしたいサーバにログイン要求をし、送られてきたチャレンジコードと不正に入手したハッシュ値から、サーバに返却するハッシュ値を求めます。
それをサーバ側に送信します。
サーバは自らの送信したチャレンジコードとパスワードのハッシュ値を元にハッシュ値を求めます。
その求めたハッシュ値とクライアントから送られてきたハッシュ値を突き合わせて一致すればサーバから見たら正規のユーザが送ってきた、チャレンジコードとパスワードのハッシュ値から生成した値と同じになるので認証が通ります。
このようにPass the Hash攻撃はパスワード自体が分からなくても、パスワードを元にしたハッシュ値が分かればログインできる仕組みを悪用した攻撃になります。
これは令和3年秋の情報処理安全確保支援士試験で問われています。
参考文献・参考サイト
Active Directoryに対する攻撃の検知と対策手法のドキュメント、JPCERT/CCが公開 - クラウド Watch (impress.co.jp)
https://cloud.watch.impress.co.jp/docs/news/1049364.html
NTLM認証(NT LAN Manager authentication)とは - IT用語辞典 e-Words
https://e-words.jp/w/NTLM%E8%AA%8D%E8%A8%BC.html
ログを活用したActive Directory に対する攻撃の検知と対策 1.2 版 (jpcert.or.jp)
https://www.jpcert.or.jp/research/AD_report_20170314.pdf
この記事が気に入ったらサポートをしてみませんか?