2018年3月末,ESET研究人員發(fā)現(xiàn)了一個有趣的惡意PDF樣本。仔細(xì)觀察發(fā)現(xiàn),該示例利用了兩個先前未知的漏洞:Adobe Reader中的遠(yuǎn)程代碼執(zhí)行漏洞和Microsoft Windows中的特權(quán)升級漏洞。 組合的漏洞的使用非常強大,因為它允許攻擊者執(zhí)行任意代碼,對易受攻擊的目標(biāo)具有最高可能的特權(quán),并且只有最少量的用戶交互。APT組織經(jīng)常使用這種組合來執(zhí)行他們的攻擊,例如去年的Sednit活動。 一旦發(fā)現(xiàn)了PDF樣本,ESET就與Microsoft安全響應(yīng)中心,Windows Defender ATP研究團(tuán)隊和Adobe產(chǎn)品安全事件響應(yīng)團(tuán)隊聯(lián)系并一起工作,因為他們修復(fù)了這些錯誤。
【漏洞編號】CVE-2018-4990;CVE-2018-8120 【風(fēng)險等級】嚴(yán)重 【影響版本】 Acrobat DC (2018.011.20038 and earlier versions) Acrobat Reader DC (2018.011.20038 and earlier versions ) Acrobat 2017 (011.30079 and earlier versions) Acrobat Reader DC 2017 (2017.011.30079 and earlier versions) Acrobat DC (Classic 2015) (2015.006.30417 and earlier versions) Acrobat Reader DC (Classic 2015) (2015.006.30417 and earlier versions) Windows 7 for 32-bit Systems Service Pack 1 Windows 7 for x64-based Systems Service Pack 1 Windows Server 2008 for 32-bit Systems Service Pack 2 Windows Server 2008 for Itanium-based Systems Service Pack 2 Windows Server 2008 for x64-based Systems Service Pack 2 Windows Server 2008 R2 for Itanium-based Systems Service Pack 1 Windows Server 2008 R2 for x64-based Systems Service Pack 1
【安全補丁】 Adobe以及微軟也提供了相應(yīng)補丁及安全公告,分別如下: 【技術(shù)細(xì)節(jié)】 1、PDF PDF是電子文檔文件格式,與其他常見文檔格式一樣,攻擊者可以利用該類型文件將惡意軟件傳播至受害者計算機(jī)。為執(zhí)行惡意代碼,攻擊者必須找到并利用PDF閱讀器軟件中的漏洞。PDF閱讀器軟件較多,Adobe Reader最常用。
Adobe Reader軟件中有一個沙箱安全功能,也稱保護(hù)模式。Adobe在官方博客上發(fā)布了相關(guān)技術(shù)細(xì)節(jié),分為四部分(Part 1、Part 2、Part 3、Part 4)。沙箱使漏洞利用更加困難:即使攻擊者可以執(zhí)行代碼,還是必須繞過沙箱的保護(hù)機(jī)制才能突破運行Adobe Reader的計算機(jī)。通常情況下,攻擊者需要借助操作系統(tǒng)本身的漏洞來繞過沙箱保護(hù)機(jī)制。
當(dāng)然攻擊者可以同時找到Adobe Reader軟件以及目標(biāo)操作系統(tǒng)中的漏洞并編寫利用程序,不過這種情況非常罕見。
2、CVE-2018-4990:Adobe Reader的RCE漏洞 惡意PDF樣本中嵌入了javascript代碼,用來控制整個漏洞利用過程。一旦PDF文件被打開,代碼就會被執(zhí)行。
在漏洞利用開始階段,javascript代碼開始操縱Button1對象,該對象包含JPEG2000圖像,該圖像在Adobe Reader中觸發(fā)雙重漏洞。
操控Button1對象的javascript代碼
javascript代碼中用到了堆噴射(heap-spray)技術(shù)以破壞內(nèi)部數(shù)據(jù)結(jié)構(gòu)。在這些操作都完成后,攻擊者就實現(xiàn)了他們的主要目標(biāo):從javascript代碼中實現(xiàn)內(nèi)存的讀取及寫入。
用來讀取及寫入內(nèi)存javascript代碼
使用這兩個過程,攻擊者找到Escript.api插件的內(nèi)存地址,該插件是Adobe javascript引擎。使用該模塊的匯編指令(ROP gadgets),惡意javascript成功構(gòu)造了一條ROP鏈,這將導(dǎo)致執(zhí)行本地shellcode。
構(gòu)建ROP鏈的惡意javascript
最后,shellcode會初始化PDF中的PE文件,并執(zhí)行權(quán)遞交給該文件。
3、CVE-2018-8120:Windows權(quán)限提升漏洞 利用Adobe Reader漏洞后成功,攻擊者必須破壞沙箱保護(hù)機(jī)制,這是第二個利用代碼的目的所在。
未知漏洞的源頭在于win32k Windows內(nèi)核組件中的NtUserSetImeInfoEx函數(shù)。更具體一些,就是NtUserSetImeInfoEx的SetImeInfoEx子例程沒有驗證數(shù)據(jù)指針,允許某個NULL指針被解除引用(dereference)。
反匯編后的SetImeInfoEx例程代碼
如圖上圖所示,SetImeInfoEx函數(shù)的第一個參數(shù)為指向經(jīng)過初始化的WINDOWSTATION對象的指針。如果攻擊者創(chuàng)建了一個新的window station對象,并將其分配給用戶模式下的當(dāng)前進(jìn)程,所述spklList就會等于0。因此,通過映射NULL頁面并將指針設(shè)置為偏移量0x2C后,攻擊者就可以利用這個漏洞寫入內(nèi)核空間中的任何地址。必須注意的是,從Windows 8開始,用戶進(jìn)程不能再映射NULL頁面。
既然攻擊者具備任意寫入權(quán)限,他們就可以使用各種方法實施攻擊,不過在我們分析的這個例子中,攻擊者選擇使用Ivanlef0u以及Mateusz “j00ru” Jurczyk和Gynvael Coldwin介紹的一種技術(shù)。攻擊者重寫了全局描述符表(GDT,Global Descriptor Table)來創(chuàng)建Ring 0的一個call gate)(調(diào)用門)。為了完成這個任務(wù),攻擊者使用SGDT匯編指令獲取了原始的GDT信息,構(gòu)造自己的表然后使用前面提到的漏洞重寫了原始的表。
隨后,漏洞利用程序使用CALL FAR指令執(zhí)行了跨權(quán)限級別的調(diào)用。
反匯編后的CALL FAR指令
一旦代碼在內(nèi)核模式執(zhí)行,漏洞利用系統(tǒng)令牌替換當(dāng)前進(jìn)程的標(biāo)記。
4、結(jié)論 最初,ESET研究人員在將PDF樣本上載到惡意樣本的公共存儲庫時發(fā)現(xiàn)了該樣本。樣本不包含最終攻擊有效載荷,這可能表明它在其早期開發(fā)階段。盡管樣本沒有包含真正的惡意最終攻擊有效載荷,這可能表明它在早期開發(fā)階段,但作者展示了在漏洞發(fā)現(xiàn)和利用寫作方面的高水平技能。 【IoC】 ESET檢測標(biāo)識: JS/Exploit.Pdfka.QNVtrojan Win32/Exploit.CVE-2018-8120.A trojan SHA-1哈希: C82CFEAD292EECA601D3CF82C8C5340CB579D1C6 0D3F335CCCA4575593054446F5F219EBA6CD93FE 【參考鏈接】 https://www.welivesecurity.com/2018/05/15/tale-two-zero-days/ 漏洞分析內(nèi)容僅供參考,具體內(nèi)容表達(dá)以及含義以原文為準(zhǔn)
|