當前位置:
首頁 > 新聞 > Microsoft Outlook漏洞CVE-2018-0950分析

Microsoft Outlook漏洞CVE-2018-0950分析

早在2016年,我的一位同事正在使用CERT BFF,他在考慮如何將Microsoft Office中看起來可利用的崩潰轉化為運行calc.exe的poc。鑒於現在Windows平台上的地址空間布局隨機化(ASLR),因此這並不會像以前那麼容易。在某些情況下,可以繞過ASLR的一種策略是利用內存泄漏來公開內存地址。另一種有可能的策略是暴力攻擊漏洞,使ASLR無關緊要。在這種情況下,最好的方法是簡單地使用Rich Text Format(RTF)內容來利用對象鏈接和嵌入(OLE)載入未使用ASLR的庫。

當我開始抓取RTF和OLE的線程時,我發現了比繞過ASLR更嚴重的漏洞。下面我們看看如何導致Windows系統崩潰和密碼被盜。

一、OLE

OLE是Microsoft於1990年發布的一項技術,它允許將來自一個程序的內容嵌入到另一個程序處理的文檔中。例如,在Windows 3.x中,Microsoft Write提供了嵌入「圖片」對象以及「聲音」或「Package」的功能。這些是可以插入Write文檔中的三個可用的OLE對象:

一旦插入,就有了一個嵌入畫筆圖片的Write文檔。

二、SMB

SMB是一種協議,它擴展了用於本地文件訪問的DOS API(中斷21h)來包含網路功能。也就是說,訪問遠程伺服器上的文件,就像訪問本地驅動器上的文件一樣。微軟在Windows for Workgroups 3.1中引入了SMB,該版本於1992年發布。

三、Microsoft Outlook

Microsoft Outlook是Microsoft Office附帶的電子郵件客戶端。Outlook包括了發送RTF電子郵件的功能。這些消息中可以包含OLE對象。

使用Microsoft Outlook客戶端查看時,這些RTF電子郵件將以RTF形式顯示。

四、三合一

總結一下到目前為止所了解的內容:

1.Microsoft Outlook可以創建和呈現RTF電子郵件。

2.RTF文檔(包括電子郵件)可以包含OLE對象。

3.由於SMB,OLE對象可以位於遠程伺服器上。

五、Microsoft Outlook行為

網際網路上的HTML電子郵件比RTF電子郵件更常見。因此,首先來看一下在當瀏覽包含位於Web伺服器上圖片的HTML消息時,Microsoft Outlook的行為:

可以看到遠程圖片沒有自動載入。為什麼會這樣?原因是因為如果Outlook允許遠程圖片自動載入,就可能會泄露客戶端的IP地址和其他元數據,例如查看電子郵件的時間。此限制有助於防止電子郵件中使用的web bug。

現在嘗試一下類似的信息,除了RTF格式。不是遠程圖片文件,它是從遠程SMB伺服器載入的OLE文檔:

這是意料之外的。由於web bug的隱私風險,Outlook會阻止遠程Web內容。但是,如果使用RTF電子郵件,則OLE對象將被載入而無需用戶交互。讓我們看一下Wireshark中的流量,看看由於這種自動遠程對象載入究竟泄露了什麼:

可以看到,SMB連接正在自動協商。觸發此協商的唯一操作是Outlook預覽發送給它的電子郵件。在上面的屏幕截圖中,可以看到泄露了以下內容:

1.IP地址

2.域名

3.用戶名

4.主機名

5.SMB會話密鑰

RTF電子郵件中的遠程OLE對象功能類似於steroids上的web bug!在2016年末,我通知了微軟這個問題。

六、OLE Web Bug的影響

這個bug會導致兩個主要問題,如下所述。

(一)客戶端崩潰

我們知道這一點,可以觸發Outlook啟動到任意主機的SMB連接。2017年2月1日,披露了Windows SMB客戶端漏洞(VU#867968)。連接到惡意SMB伺服器時,Windows會崩潰。如果在Outlook中創建了RTF電子郵件,但指向利用此漏洞的SMB伺服器,會發生什麼?

一旦Outlook預覽了這樣一封電子郵件,Windows就會崩潰,並出現藍屏死機(BSOD),如上所述。除此之外,每次遇到這種情況後Outlook都會啟動,Windows將再次崩潰,因為Outlook會記住最後一封打開的電子郵件,這相當於拒絕服務攻擊。我與微軟分享了攻擊細節。最終,微軟解決了這個SMB漏洞,幸運的是,我們沒有聽說任何基於此的大規模電子郵件攻擊。

(二)收集口令Hash

除了SMB漏洞之外,我決定深入挖掘客戶端啟動SMB連接到攻擊者伺服器的風險。根據在Wireshark中看到的,我知道它泄露的不僅僅是受害者的IP地址。這次我使用了Responder 和John the Ripper。

首先,我發送了一個RTF電子郵件,該電子郵件具有指向運行Responder的系統的遠程OLE對象。在Responder上,我在Outlook中預覽電子郵件後立即看到以下內容:

[SMB] NTLMv2-SSP Client : 192.168.153.136

[SMB] NTLMv2-SSP Username : DESKTOP-V26GAHF est_user

[SMB] NTLMv2-SSP Hash : test_user::DESKTOP-V26GAHF:1122334455667788:571EE693342B161C50A73D502EB49B5A:010100000000000046E1992B4BB2D301FFADACA3241B6E090000000002000A0053004D0042003100320001000A0053004D0042003100320004000A0053004D0042003100320003000A0053004D0042003100320005000A0053004D004200310032000800300030000000000000000100000000200000D3BDB30B62A8937256327776471E072C7C6DE9F4F98458D1FEA17CBBB6AFBA770A001000000000000000000000000000000000000900280063006900660073002F003100390032002E003100360038002E003100350033002E003100330038000000000000000000

我們得到一個NTLMv2 Hash,將它交給John the Ripper。如下所示,將Hash複製並粘貼到名為test_user.john的文件中:

john test_user.john

Using default input encoding: UTF-8

Loaded 1 password hash (netntlmv2, NTLMv2 C/R [MD4 HMAC-MD5 32/64])

Will run 24 OpenMP threads

Press "q" or Ctrl-C to abort, almost any other key for status

test (test_user)

Session completed

大約1秒就能夠確定打開我的RTF電子郵件的用戶test_user的密碼是test。強密碼的Hash(更長和更多類型的字元)需要更長時間才能破解。我已做了一些基本的測試,在單個中檔GPU(NVIDIA GTX 960)上破解8個字元密碼的全空間需要多長時間:

·小寫字母——16分鐘

·混合字母——3天

·混合大小寫字母和數字——12天

·混合大小寫字母,數字和符號——1年

以上統計數據是暴力破解隨機密碼的最壞情況。任何文字(比如test)或模式(比如asdf)的密碼比隨機密碼更容易破解,因為大多數破解工具都有規則來檢測這些事情。

另外,攻擊者可以使用多個高端GPU的系統,這些GPU可以將時間縮減為上述數字的一小部分。不過,添加到密碼長度的每個字元對暴力破解所需的時間都有指數效應。例如,雖然我的中檔GPU需要1年時間才能窮盡8個字元的密碼(混合大小寫字母,數字和符號)的全空間,但將密碼長度增加到9個字元窮盡全空間的時間將多達84年!

七、微軟補丁

微軟針對Outlook自動載入遠程OLE(CVE-2018-0950)的漏洞發布了一個補丁程序。一旦安裝了此補丁程序,預覽的電子郵件將不再自動連接到遠程SMB伺服器。此修復有助於防止上面列出的攻擊。很重要的一點,即使打上這個補丁,用戶仍然只需點擊一下即可成為上述攻擊類型的受害者。例如,如果電子郵件消息具有以「\」開頭的UNC鏈接,則單擊此鏈接會啟動到指定伺服器的SMB連接。

其他詳細信息可在CERT漏洞注釋VU#974272中找到。

八、結論和建議

在Windows平台上,有幾種方法可以使客戶端啟動SMB連接。每當啟動SMB連接時,客戶端的IP地址、域名、用戶名、主機名和口令Hash都可能泄漏。為防止涉及導致受害者機器啟動SMB連接的攻擊,請考慮以下緩解措施:

·安裝Microsoft update CVE-2018-0950。此更新防止在預覽RTF電子郵件時自動獲取Microsoft Outlook中的遠程OLE對象。但是,如果用戶單擊SMB鏈接,此行為仍會導致口令Hash泄漏。

·在網路邊界處阻止入站和出站SMB連接。這可以通過阻斷埠445/tcp, 137/tcp, 139/tcp以及137/udp和139/udp來完成。

· 按照Microsoft Security Advisory ADV170014中的規定,禁止NTLM單點登錄(SSO)身份驗證。從Windows 10和Server 2016開始,如果創建EnterpriseAccountSSO註冊表值並將其設置為0,則將禁用外部和未指定網路資源的SSO身份驗證。通過此註冊表更改,仍然允許訪問SMB資源,但外部和未指定的SMB資源將需要用戶輸入憑據,而不是自動使用當前登錄用戶的Hash。

·假設客戶端系統在某個時候會嘗試與攻擊者的伺服器建立SMB連接。因此,請確保任何Windows登錄名都有足夠複雜的密碼,以防止破解。以下兩種策略可以幫助實現這一目標:

1.使用密碼管理器來幫助生成複雜的隨機密碼。此策略可以幫助確保跨資源使用唯一密碼,並確保密碼具有足夠的複雜性和隨機性。

2.使用更長的密碼(使用混合大小寫字母,數字和符號)。這種策略足以生成令人難忘的憑證,無需其它軟體來存儲和生成。

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 嘶吼RoarTalk 的精彩文章:

Encryption 101系列:解密程序的設計思路
醫療影像領域安全狀況令人擔憂

TAG:嘶吼RoarTalk |