當你正用瀏覽器訪問網站時,Windows的一個古老漏洞就可能泄露了你電腦的用戶名密碼、微軟登錄信息,甚至還有你VPN的賬號密碼。
多年以前當Windows還在使用單核處理器和256M的RAM的時候,微軟的員工想出了單點登錄,也就是說你只需要登錄一次,就能夠訪問所有的內部資源,無需再次訪問。
當用戶使用NTLM驗證方式時,操作系統會發送域名、用戶名和密碼哈希值給對方主機。只有驗證不成功時才會出現登錄框。但是現在看來,這樣的機制是不安全的。因此,微軟修復了一些問題,有些修復了一般,還有一些根本沒有修復,以至直到今天還能被利用。
這些沒有修復的漏洞中其中一個就是系統會把賬號登錄信息傳輸給SMB服務器。SMB是一個使用非常廣泛的協議,它能夠訪問網絡共享的文件、文件夾、打印機等。SMB的這個漏洞幾乎每年都會提一次,去年的Blackhat US 2015也提過,但好像微軟根本不打算修復的樣子,安上最新更新的Windows 10仍然存在這個漏洞。
工作原理
當你用標準瀏覽器(IE或Edge)訪問帶有SMB資源的鏈接或者使用含有標準Windows API或者使用IE做HTML渲染的程序(如Outlook),SMB服務器會在你看到登錄提示框之前就獲取到你的賬號密碼。攻擊者只需網頁或者郵件中添加一個指向SMB資源的鏈接或者隱藏的圖片,你的賬號信息就被竊取了。不過有的時候危害也沒這么大,因為黑客可能只能獲取到你的用戶名,用戶名還有可能是某個默認的用戶名,至于密碼很多人可能還沒設定。要想通過那些信息進行進一步的攻擊難度很大。
不過如果涉及到企業的域帳號,危害就不同了。首先,從域的名字很容易判斷電腦屬于哪個公司,然后攻擊者可以從hash爆破出密碼,之后就可以嘗試訪問公司內部資源了。
有時候也不一定要爆破密碼,如果你事先知道哪個host有NTLM驗證的話,只要客戶端連接上了你的SMB服務器的話,就可以對認證進行實時的代理。
Windows 8和微軟賬號
新的Windows版本都和互聯網緊密結合,基本上不讓你創建本地賬號,而是要你創建一個微軟賬號。沒有用微軟賬號就無法使用OneDrive和Cortana。
基本上這方面的研究都是在Windows 8之前做的,在Blackhat的ppt里面也沒怎么提到微軟賬戶。但其實,當使用Windows 8, 8.1和10系統時,傳輸的不是你本地賬號的數據,而是微軟賬號的登錄信息!
原本這個漏洞只能對企業用戶產生大的危害,現在還可以用來針對家庭用戶了。
新發現
當筆者在測試問題的時候,我發現3個舊的Windows 10與簡化的SMB服務器工作正常(Responder, Impacket),但新安裝的Windows不行。幾天后我發現,NetBIOS和工作站名稱得要相同才行。但如果你連接了系統自帶的,有MSCHAPv2認證的VPN連接協議(IPsec, PPTP, L2TP),Windows就不會傳輸你的賬號密碼了,而是傳輸VPN用戶名密碼hash!!我認為原因可能出在MSCHAPv2上,不過Wi-Fi WPA-Enterprise (PEAP/MSCHAPv2)協議下不行。
如何利用
現在我們知道只要我們試圖打開遠程SMB服務器上的任何文件或者目錄,系統都會自動把賬號密碼或者VPN的賬號密碼傳輸過去。那我們應該如何利用呢?
大部分郵箱的web界面都會過濾file://,但是Yandex郵箱卻沒有過濾。Yandex是俄羅斯最大的郵箱提供商。這種攻擊危害更大,因為它不僅能夠把用戶名和IP關聯起來,還會把郵件也關聯起來。
Chrome也支持file://,但是只會在復制粘貼或者直接在地址欄輸入時才會生效。Chrome比IE流行很多,因此我們有必要做一些社會工程學來誘騙用戶復制粘貼或者手動輸入。
我們竊取到的信息可以用作很多用途。很多VPN服務商的管理賬號和VPN連接本身的用戶名密碼是一樣的,從IP地址我們在可以判斷VPN是哪家供應商的,足夠幸運的話我們就可以把別人的VPN拿來用了。而拿到了微軟賬號,我們可以爆破hash,然后就可以訪問它的OneDrive文件、Outlook郵件、Skype賬號了。
如何自保?
別以為你不用IE不打開file://就安全了。你還是有可能會不小心運行某個不安全的程序。程序可能沒有權限直接獲取你的密碼,但是它可以用標準函數如URLDownloadToFile()發送請求到遠程服務器,你的賬號可能就這樣被盜了。
要想修復問題,我們可以新建一個reg文件,內容如下:
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlLsaMSV1_0]
"RestrictReceivingNTLMTraffic"=dword:00000002
"RestrictSendingNTLMTraffic"=dword:00000002
另一種方法是用防火墻把所有的SMB流量都禁掉。只需要把所有445 TCP端口的流量都禁掉,除了一下這些目標IP段:
192.168.0.0/16
169.254.0.0/16
172.16.0.0/12
10.0.0.0/8
fd00::/8
fe80::/10
有些ISP已經幫你把他們屏蔽掉了。
結語
作者已經把NTLM hash泄露檢測加入到了WITCH?網站里了。小編使用IE瀏覽器確實發現了我的用戶名:
大家也可以用IE或者Edge打開,看看你的賬號密碼有沒有泄露?網站會嘗試抓取你的密碼并用一個小字典嘗試爆破。連個VPN再訪問成功幾率更高哦
有些VPN服務商已經知道了這個問題,他們通過屏蔽445端口,或者在客戶端軟件屏蔽解決了這一問題。
很遺憾,大部分流行的爆破軟件都不能破解NTLMv2哈希。Hashcat會跳過一些,John The Ripper with OpenCL也是,哪怕把密碼都放在字典里了還是無法破解。oclHashCat, Hashcat 3.0和John The Ripper的non-OpenCL版本可以破解。