1. 程式人生 > >利用CVE-2018-0950漏洞自動竊取Windows密碼

利用CVE-2018-0950漏洞自動竊取Windows密碼

0×00 前言

記得還在2016年的時候,我的一個同事那時還在使用CERT BFF(自動化模糊測試工具),他向我詢問到如何將微軟辦公軟體中看起來可利用的漏洞轉化成可以執行的病毒程式並進行概念論證。考慮到現代微軟平臺中所使用的隨機空間地址分配策略(ASLR),這項工作的實施並不像從前那麼容易。在某些情況下,可以繞過隨機空間地址分配的一種策略是利用記憶體洩漏來公開記憶體地址;另一種方法便是通過漏洞進行暴力破解從而使得隨機空間地址分配策略無法發揮作用。然而,在這種情況下,阻力最小的方法便是使用Rich Text Format(RTF)內容來利用物件連結和嵌入技術載入未選擇使用ASLR的庫。

當我開始加入富文字格式和物件連結和嵌入技術時,我發現了比ASLR旁通更嚴重的漏洞。在下文中,隨著我的研究,你將會發現這一缺陷能夠導致Windows系統崩潰和密碼被盜等情況的發生。

在繼續深入分析我的研究之前,先介紹一下相關基礎知識:

0×01 物件連線與嵌入(OLE)

OLE是Microsoft於1990年釋出的一項技術,它允許將來自一個程式的內容嵌入到另一個程式處理的文件中。 例如,在Windows 3.x中,Microsoft Write提供了嵌入“畫筆圖片”物件以及“聲音”或“包”的功能。 這些是可以插入Write文件中的三個可用的OLE物件:

image.png

一旦插入,我們就有一個嵌入了畫筆內容的文件。

image.png

0×02 伺服器報文塊協議(SMB)

SMB是一種協議,它擴充套件了用於本地檔案訪問的DOS API(中斷21h)以包含網路功能。也就是說,操作者可以像訪問本地驅動器上的檔案一樣訪問遠端伺服器上的檔案。微軟在Windows for Workgroups3.1中包含了SMB功能,該版本於1992年釋出。

image.png

2.1 Microsoft Outlook

Microsoft Outlook是Microsoft Office附帶的電子郵件客戶端。 Outlook包括髮送富文字(RTF)電子郵件的功能。 這些訊息可以包含OLE物件。

當使用Microsoft Outlook客戶端檢視電子郵件時,富文字電子郵件將會以更為酷炫的方式展現郵件內容。

0×03 前述內容小結

你可能已經知道我的想法了,如果仍不明晰,就讓我們總結一下目前為止所瞭解到的內容:

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

2.RTF文件(包括電子郵件訊息)可以包含OLE物件。

3.由於SMB,OLE物件可以位於遠端伺服器上。

3.1 觀察Microsoft Outlook行為

網際網路上的HTML電子郵件比富文字電子郵件更為常見,因此,讓我們首先檢視在Web伺服器上具有遠端影象的HTML訊息時Microsoft Outlook的行為:

image.png

在這裡我們可以看到遠端影象沒有自動載入。為什麼會出現這樣的情況?原因是如果Outlook允許遠端映像自動載入,它可能會洩露客戶端系統的IP地址和其他元資料,例如檢視電子郵件的時間。 此限制有助於防止電子郵件中使用的網路錯誤。現在讓我們以富文字格式的形式來檢視同樣的內容,現在它並不是遠端影象檔案,而是從遠端SMB伺服器上載入的OLE文件:

image.png

這種現象是意料之外的。由於網路錯誤的隱私風險,Outlook會阻止遠端Web內容。 但是,如果使用富文字電子郵件,則OLE物件將被載入而沒有使用者互動。讓我們看一下Wireshark(網路封包分析軟體)中的流量來弄清由於這種自動遠端物件載入洩露了什麼內容:

image.png

在這裡我們可以看到,SMB連線正在自動協商。觸發此協商的唯一操作是Outlook對傳送給它的電子郵件進行了預覽操作。 在上面的螢幕截圖中,我可以看到以下內容正在洩露:

1、IP地址

2、域名

3、使用者名稱

4、主機名

5、SMB會話金鑰

富文字電子郵件中的遠端OLE物件的作用就類似於網路錯誤中的興奮劑。在2016年末的分析中,我通知了微軟這個問題。

0×04 OLE網路錯誤的影響

這個錯誤將導致兩個主要的問題,如下所述:

4.1 客戶端崩潰

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

image.png

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

4.2 收集密碼雜湊值

除了SMB的漏洞之外,我決定深入挖掘客戶端試圖啟動SMB連線到攻擊者伺服器的風險。 根據我在Wireshark(網路封包分析軟體)中看到的,我已經知道它洩露的不僅僅是受害者的IP地址。這次我同時使用了Responder)(響應系統)和John the Ripper(快速密碼破解工具)。

首先,我傳送了一個富文字電子郵件,該電子郵件具有指向執行響應程式的系統的遠端OLE物件。在響應系統上,我在Outlook中預覽電子郵件後立即看到以下內容:

[SMB] NTLMv2-SSP Client   : 192.168.153.136[/size]

[size=3][SMB] NTLMv2-SSP Username : DESKTOP-V26GAHF\test_user[/size]

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

這裡我們有一個NTLMv2雜湊,我們可以將它交給John the Ripper(快速密碼破解工具)。 如下所示,我將雜湊複製並貼上到名為test_user.john的檔案中:

john test_user.john[/size]

[size=3]Using default input encoding: UTF-8[/size]

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

[size=3]Will run 24 OpenMP threads[/size]

[size=3]Press ‘q’ or Ctrl-C to abort, almost any other key for status[/size]

[size=3]test             (test_user)[/size]

[size=3]Session completed

在不到1秒的時間內,我就可以確定開啟我富文字電子郵件的使用者“test_user”的密碼是“test”。 更強密碼的雜湊(更長和更多型別的字元)需要更長時間才能破解。我已經做了一些基本的測試,在單箇中檔GPU(NVIDIA GTX 960)上破解8字元密碼的整個解決方案空間需要多長時間:

1、小寫字母 – 16分鐘

2、混合大小寫字母 – 3天

3、混合大小寫字母和數字 – 12天

4、混合大小寫字母,數字和符號 – 1年

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

另外,攻擊者可以訪問具有多個高階GPU的系統,這些GPU可以將他們的時間縮減為上述數字的一小部分。不過,新增到密碼長度的每個字元對暴力破解密碼所需的時間都有指數效應。例如,雖然我的中檔GPU需要1年的時間才能耗盡8個字元的密碼(混合大小寫字母,數字和符號)的整個解決方案空間,但將密碼長度增加到9個字元也會增加耗時,將需84年來獲取全部解決方案空間!

0×05 微軟的修復

微軟針對Outlook自動載入遠端OLE內容(CVE-2018-0950)的問題釋出了一個修復程式。一旦安裝了此修復程式,預覽的電子郵件將不再自動連線到遠端SMB伺服器。 此修復有助於防止上面列出的攻擊。但意識到即使使用這個補丁,使用者仍然只需點選一下即可成為上述攻擊型別的受害者,這一點很重要。例如,如果電子郵件訊息具有以“\\”開頭的UNC樣式連結,則單擊此連結會啟動到指定伺服器的SMB連線。

image.png

其他詳細資訊可在CERT漏洞註釋VU#974272中找到。

0×06 結論與建議

在Windows平臺上,有幾種方法可以使客戶端啟動SMB連線。 任何時候SMB連線啟動時,客戶端的IP地址,域名,使用者名稱,主機名和密碼雜湊都可能洩漏。 為了防止涉及導致受害者機器啟動SMB連線的攻擊,請考慮以下緩解措施:

安裝Microsoft更新CVE-2018-0950。此更新防止在預覽富文字電子郵件時自動檢索Microsoft Outlook中的遠端OLE物件。 但是,如果使用者單擊SMB連結,此行為仍會導致密碼雜湊洩漏。

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

按照Microsoft安全通報ADV170014中的規定,阻止NTLM單點登入(SSO)身份驗證。從Windows10和Server2016開始,如果建立EnterpriseAccountSSO登錄檔值並將其設定為0,則將禁用外部和未指定網路資源的SSO身份驗證。通過此登錄檔更改,仍然允許訪問SMB資源,但外部和未指定的SMB資源將需要使用者輸入憑據,而不是自動嘗試使用當前登入的使用者的雜湊。

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

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

2.使用更長的密碼(使用混合大小寫字母,數字和符號)而不是密碼。這種策略可以產生令人難忘的憑證,不需要額外的軟體來儲存和檢索。

  • 作者:Will Dormann  
  • 翻譯:i春秋翻譯小組
  • 責任編輯:F0rmat、淺安
  • 發表於Vulnerability Discovery
  • 轉載請註明來自bbs.ichunqiu.com