當前位置:
首頁 > 新聞 > Shadow Brokers自曝漏洞細節並論證Windows 10安全性,結果……

Shadow Brokers自曝漏洞細節並論證Windows 10安全性,結果……

4月14日,一個自稱 Shadow Brokers的團體通過發布了一套武器化的攻擊套件引起了安全界的關注。此後不久,其中一個漏洞被用來創建蠕蟲惡意軟體,我們現在將其稱為WannaCrypt,該惡意軟體的目標是那些大量的過時的Windows系統,並掌握了需要贖金才能解密的加密文件。

儘管這些漏洞在較新的平台上無效,或是嘗試在已經修補過該漏洞的系統中利用,但是它們仍然提供了一個機會來分析和評估在Windows 10系統上的創建者更新所使用的開發技術是否仍然可行。

在Windows 10中,使用Device Guard提供的關鍵安全增強功能(如內核地址空間布局隨機化(kASLR)),內核數據執行保護(DEP)和基於虛擬化的安全性(VBS)的功能都有助於打破野外發現的漏洞利用技術。通過VBS使用CPU管理程序功能,啟用Device Guard的系統可以驗證和強制映射到內核地址空間中的代碼的完整性。Device Guard是一個與Windows 10 Creators Update一起推出的新內核Control Flow Guard(kCFG)。kCFG可以防止許多依賴於破壞函數指針的開發技術來實現代碼執行。

在本文中,我們對Shadow Brokers發布的兩個漏洞進行了深入的分析。這兩個漏洞都允許通過伺服器消息塊(SMBv1)文件共享伺服器實現中的漏洞進行任意代碼執行。

我們會繼續討論Device Guard和kCFG是如何防止這些漏洞(以及許多其他漏洞)從內核內存中安裝後門的。

漏洞套件

該工具包的目錄結構顯示了一個模塊化的開發框架,其中有效負載與漏洞利用程序是分開放的。

圖1. Exploit工具包目錄結構

套件中的所有二進位文件都包含了描述其目的的多個字元串。此外,該工具包將通用功能導出到了DLL文件,通過引用的函數名稱顯示其他信息。雖然字元串和函數的調用對我們檢查該工具包來說是沒有必要的,但是這兩塊的分析有助於加快們的初步分析過程。

有關針對Microsoft產品的工具包中的各個漏洞的更多信息,請參閱Microsoft安全響應中心的博客文章。

ETERNALROMANCE SMB漏洞利用

我們先來挖一下套件中的一個漏洞的內臟。

ETERNALROMANCE是針對傳統SMBv1文件共享協議的遠程代碼執行(RCE)漏洞。它利用了已經使用MS17-010安全公告修補的CVE-2017-0145。可能大家會注意到,SMB上的文件共享通常僅在本地網路中使用,並且SMB埠通常在防火牆上是從阻止與互聯網連通的。然而,如果攻擊者可以訪問到運行著有漏洞的SMB的端點,那麼從遠程位置在內核上下文中運行任意代碼的能力將是一個嚴重的安全問題。

這個漏洞是為了遠程安裝和啟動SMB後門。這個漏洞的核心是一種類型混淆的漏洞,導致攻擊者的偏移可以控制任意堆的寫入。與幾乎任何heap corruption 漏洞利用一樣,攻擊者必須知道或控制堆的布局,以便始終如一地能夠成功利用漏洞。在SMB中,大多數對象都在非分頁的池中分配的。

獲得可靠的堆布局

該漏洞開始通過啟動多個並發的SMB_ COM_TRANSACTION實例來進行堆噴射。漏洞利用二進位文件支持三種不同的堆噴射方法,可以在Windows版本之間處理不同的池的行為。除了前幾個分配(確切的數量取決於池的狀態)之外,事務對象被分配到具有彼此固定的,可預測的位移中。噴射完成後,該漏洞又利用了TRANS_PEEK_NMPIPE事務中的信息泄漏。它使用信息泄漏來確定目標是運行著32位還是64位版本的Windows,並獲取各種SMB對象的內核指針。

網路跟蹤可以快速的展示到底發生了什麼:

圖2.包含了泄露的池的內存的網路數據包

從heap corruption中構建原語

噴射的過程將許多TRANSACTION對象放在堆上的彼此已知的位移中。而且因為漏洞利用了指針的大小,所以它知道TRANSACTION對象中所有欄位的偏移量。現在就可以使用精心構造的偏移量 —— 從一個對象使用類型混淆越界寫入來損壞相鄰的對象來進一步進行漏洞利用。

通過使用硬編碼的數字(零)覆蓋與受損對象相關聯的ID,現在可以在不知道原始ID的情況下引用該對象。

圖3.噴射後的堆布局

漏洞利用各種方式破壞事務結構,構建任意的讀寫(RW)原語。它寫入其他欄位以防止在消費時釋放事務,從而允許漏洞利用多個請求重新使用相同的事務,而無需選擇新的目標對象進行破壞。

圖4.在WinDbg中觀察到的InData指針被堆越界寫入

安裝內存後門

此時,漏洞利用代碼試圖在SMB驅動程序中生成後門代碼。此步驟包括將shellcode複製到非分頁池中,破壞函數指針以指向shellcode並執行該函數指針。請注意,從Windows 8開始,SMB已經轉移到使用非可執行的池,使得此方法在較新的平台上無效。

為了找到一個不錯的函數指針,漏洞利用了一個指向堆的指針來達到數據段。掃描數據段時,它繼續查找用於將不同的SMB_COM_TRANSACTION2 子命令分派到不同功能的函數指針表中。

當它找到函數指針表時,該漏洞將覆蓋此表上的第14個條目,該條目對應於TRANS2_SESSION_SETUP子命令。MSDN文檔將此子命令描述為保留位,使其成為觸發後門的理想選擇,因為它幾乎不存在於SMB流量中。

每當一個SMB數據包被發送到目標設備的這個子命令ID時,函數指針就會被執行,從而觸發shellcode的執行。這種機制和後門代碼並不是持久的 - 他們需要一個持久的第二階段的組件來重新啟動。

圖5.用於種植後門的反編譯代碼

ETERNALBLUE SMB漏洞利用

WannaCrypt惡意軟體通過使用適配版本的ETERNALBLUE漏洞利用進行傳播。這個針對不同的SMBv1漏洞的錯誤是池中的線性緩衝區溢出導致的。

當將擴展屬性(EA)的列表從一種格式轉換為另一種格式時,該特殊情況就會發生。如果列表包含了超出包緩衝區的EA條目,則列表將被截斷,就好像只包含了最後一個有效條目一樣。

當更新列表的長度時,大小會被寫入,就像它是一個16位的ushort類型,但它實際上是一個32位的ulong類型。這意味著當列表被截斷時,高16位是不會被更新的:

圖6.擴展屬性(EA)列表的大小

代碼分配了一個緩衝區,其大小被計算為所有EA條目到截斷的大小。但是隨著列表大小的增加,這導致了攻擊者控制數據的線性堆就發生了溢出。

與上述之前類似的方式一樣,發生了堆噴射,但這次使用了SMBv2協議中使用的srvnet!SRVBUFFER對象。該對象包含兩個目標指針:一個接收網路數據包有效負載的MDL指針和一個指向srvnet!SRVNET_CONNECTION對象的指針。這兩個指針都被覆蓋了,以便它們可以指向HAL區域中的固定地址(由硬體抽象層使用)。

由於MDL指針已經損壞,下一個數據包有效負載將被寫入到HAL區域。這個有效載荷包含了shellcode並初始化了一個假的srvnet!SRVNET_CONNECTION對象的內存結構。連接對象有一個指向srvnet的指針!SRVNET_CLIENT_CONNECTION_DISPATCH的結構包含了函數指針。

收到數據包有效載荷後,SRVNET_RECEIVE_HANDLER函數指針從攻擊者控制的srvnet執行!SRVNET_CLIENT_CONNECTION_DISPATCH結構,最後跳轉到shellcode。

Windows 7是攻擊目標的主要系統,HAL區域被映射為可讀,可寫和可執行。在較新的系統上,HAL區域不再是可執行的,這意味著在嘗試執行shellcode時CPU會出錯。此外,HAL區域和其他內核區域(如頁表)已經在最新的64位版本的Windows 10上進行了隨機化,從而打破了ETERNALBLUE漏洞在64位版本中利用的假設。

圖7.使用假的srvnet!SRVNET_CONNECTION對象注釋HAL區域的內容

使用基於虛擬化的安全性進行緩解

Windows 10提供的基於虛擬化的安全性(VBS)和帶有創建者更新功能的kCFG增強功能阻止了常見的利用技術,包括ETERNALROMANCE和ETERNALBLUE所使用的技術。

停止使用強制W ^ X的shellcode的執行

在啟用了Device Guard VBS的系統上,由於管理程序中的W ^ X強制策略,因此無法在內核中寫入並執行shellcode(例如ETERNALROMANCE後門)。這些策略確保內核內存頁面在任何給定的時間都不會是可寫和可執行的。

即使攻擊者試圖攻擊頁表,管理程序仍然可以通過擴展頁表(EPT)強制執行禁用標誌位。這反過來迫使攻擊者依賴代碼重用方法,如返回語句編程(ROP)。因此,Shadow Brokers版本中的shellcode植入庫與VBS保護的系統基本不兼容。

防止使用帶kCFG的損壞函數指針

在Windows 10 Creators Update中,我們在支持VBS的系統的內核空間中引入了新的安全緩解措施。內核現在使用Control Flow Guard(CFG)進行編譯- 控制流完整性解決方案旨在防止依賴於損壞函數指針或C ++虛擬方法表的常見堆棧轉換技術。

編譯內核(也稱為kCFG)中的Control Flow Guard 的目的是在調用它們之前驗證所有間接的調用目標。這使得攻擊者更難以通過濫用函數指針或其他間接調用來執行代碼。

在ETERNALROMANCE利用的情況下,破壞的函數指針將在調用時導致安全性錯誤,從而使漏洞在利用其當前形式時不起作用。這同樣適用於ETERNALBLUE,它也依賴於損壞的函數指針來實現代碼執行。

圖8.啟用kCFG後,函數指針現在由__guard_dispatch_icall_ptr驗證

在早期的Windows 10系統上,在創建者更新之前以及沒有Device Guard時,可以攻擊HAL區域的頁表,使其可執行,並使用ETERNALBLUE漏洞利用技術獲取代碼執行。

使用Windows 10創建者更新進行安全計算

雖然我們積極的為諸如SMBv1之類的服務中的漏洞提供了修補程序,但我們力求提供越來越多的全系統緩解措施,主動保護用戶免受當前以及未來的漏洞利用和攻擊。

運行Windows 10 Creators Update的客戶將受益於Device Guard和安全增強功能,如kCFG和W ^ X。他們還受益於Windows 10創新者更新加強了許多其他安全功能,其中包括:

1. Windows Defender Antivirus端點反惡意軟體保護,由 Microsoft Intelligent Security Graph提供支持,Intelligent Security Graph可從全球數十億台設備中進行學習。

2. Windows Defender高級威脅防護(Windows Defender ATP)使企業能夠及早發現違規活動並快速響應; 使用Windows 10 Enterprise可以免費試用。

3. Microsoft Edge是通過虛擬化和Windows Defender SmartScreen保護的經過驗證的快速瀏覽器。

減少對舊版平台上的SMBv1漏洞的利用

Microsoft強烈建議客戶及時應用所有可用的安全更新。要減少網路上的攻擊面,請阻止防火牆上的入站SMB流量,如果可能,禁用SMBv1兼容性驅動程序。

Viktor Brange

Windows防禦安全研究團隊

點擊展開全文

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

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


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

AppDomainManager後門的實現思路
開創一個安全極智的未來
使用 apache mod_rewrite 方法隨機提供 payloads
CIA 曾經做過一套黑客工具,可以破解數百款品牌路由器
揭秘中國網路虛假新聞「製造器」,看傳播者如何操縱操縱大眾輿論?

TAG:嘶吼RoarTalk |

您可能感興趣

細節高清欣賞!Air Jordan 1「Shattered Backboard」Satin 官方照釋出!
致敬主題!Air Jordan 32 Low 「Free Throw Line」 細節滿滿!
完整細節釋出!Curren$y x Reebok Question 「Jet Life」 五月發售!
細節出眾!Air Jordan 5 「Paris Saint-Germain」 今夏發售!
細節暗藏玄機!Curren$y x Reebok Question 「Jet Life」 即將發售
實物美照!Air Jordan 3 「Dunk Contest」 完整細節釋出!
帆布材質?Air Jordan 1 Paris Saint-Germain 細節近賞!
細節滿滿!Curren$y x Reebok Question 「Jet Life」 五月來襲!
簡約且不失細節!JUICE x adidas Consortium Gazalle 即將發售!
玫瑰金裝扮!Air Foamposite One 「Elemental Rose」 細節曝光!
vol.41懂細節,才biger than biger!
細節豐富!Nike VaporMax Moc 2 全新配色「Neutral Olive」
「Black Toe」最佳情侶配色?!近賞Air Jordan 1 「Clay Green」細節!
Pharrell x adidas聯名鞋款細節曝光,mastermind TOKYO即將開業
less is more,BoConcept細節控的北歐奢華情結!
分散式共享 Session之SpringSession 源碼細節
精準還原每個細節,CH Precision C1 Mono D/A Controller解碼控制器
誘人彩蛋!Nike Air Force 1 Low Easter Egg 最新細節近賞
細節到位,專屬詹姆斯的Nike LeBron 15「Air Zoom Generation」
又是 45 號,Air Jordan 11 Retro Concord 後跟細節曝光