2018年3月末,ESET研究人員發現了一個有趣的惡意PDF樣本。仔細觀察發現,該示例利用了兩個先前未知的漏洞:Adobe Reader中的遠程代碼執行漏洞和Microsoft Windows中的特權升級漏洞。 組合的漏洞的使用非常強大,因為它允許攻擊者執行任意代碼,對易受攻擊的目標具有最高可能的特權,并且只有最少量的用戶交互。APT組織經常使用這種組合來執行他們的攻擊,例如去年的Sednit活動。 一旦發現了PDF樣本,ESET就與Microsoft安全響應中心,Windows Defender ATP研究團隊和Adobe產品安全事件響應團隊聯系并一起工作,因為他們修復了這些錯誤。
![1526544104754102.png {07}76{)V(9]BE6}VK668T2.png](/content/uploadfile/blogimg/20180517/1526544104754102.png)
【漏洞編號】CVE-2018-4990;CVE-2018-8120 【風險等級】嚴重 【影響版本】 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以及微軟也提供了相應補丁及安全公告,分別如下: 【技術細節】 1、PDF PDF是電子文檔文件格式,與其他常見文檔格式一樣,攻擊者可以利用該類型文件將惡意軟件傳播至受害者計算機。為執行惡意代碼,攻擊者必須找到并利用PDF閱讀器軟件中的漏洞。PDF閱讀器軟件較多,Adobe Reader最常用。
Adobe Reader軟件中有一個沙箱安全功能,也稱保護模式。Adobe在官方博客上發布了相關技術細節,分為四部分(Part 1、Part 2、Part 3、Part 4)。沙箱使漏洞利用更加困難:即使攻擊者可以執行代碼,還是必須繞過沙箱的保護機制才能突破運行Adobe Reader的計算機。通常情況下,攻擊者需要借助操作系統本身的漏洞來繞過沙箱保護機制。
當然攻擊者可以同時找到Adobe Reader軟件以及目標操作系統中的漏洞并編寫利用程序,不過這種情況非常罕見。
2、CVE-2018-4990:Adobe Reader的RCE漏洞 惡意PDF樣本中嵌入了javascript代碼,用來控制整個漏洞利用過程。一旦PDF文件被打開,代碼就會被執行。
在漏洞利用開始階段,javascript代碼開始操縱Button1對象,該對象包含JPEG2000圖像,該圖像在Adobe Reader中觸發雙重漏洞。

操控Button1對象的javascript代碼
javascript代碼中用到了堆噴射(heap-spray)技術以破壞內部數據結構。在這些操作都完成后,攻擊者就實現了他們的主要目標:從javascript代碼中實現內存的讀取及寫入。
![1526544175964722.png DO4QZ9]9U`UPU[Y]50A6B23.png](/content/uploadfile/blogimg/20180517/1526544175964722.png)
用來讀取及寫入內存javascript代碼
使用這兩個過程,攻擊者找到Escript.api插件的內存地址,該插件是Adobe javascript引擎。使用該模塊的匯編指令(ROP gadgets),惡意javascript成功構造了一條ROP鏈,這將導致執行本地shellcode。
![1526544184687069.png G$)ACUBE}L{J@QG}]M%MU]V.png](/content/uploadfile/blogimg/20180517/1526544184687069.png)
構建ROP鏈的惡意javascript
最后,shellcode會初始化PDF中的PE文件,并執行權遞交給該文件。
3、CVE-2018-8120:Windows權限提升漏洞 利用Adobe Reader漏洞后成功,攻擊者必須破壞沙箱保護機制,這是第二個利用代碼的目的所在。
未知漏洞的源頭在于win32k Windows內核組件中的NtUserSetImeInfoEx函數。更具體一些,就是NtUserSetImeInfoEx的SetImeInfoEx子例程沒有驗證數據指針,允許某個NULL指針被解除引用(dereference)。

反匯編后的SetImeInfoEx例程代碼
如圖上圖所示,SetImeInfoEx函數的第一個參數為指向經過初始化的WINDOWSTATION對象的指針。如果攻擊者創建了一個新的window station對象,并將其分配給用戶模式下的當前進程,所述spklList就會等于0。因此,通過映射NULL頁面并將指針設置為偏移量0x2C后,攻擊者就可以利用這個漏洞寫入內核空間中的任何地址。必須注意的是,從Windows 8開始,用戶進程不能再映射NULL頁面。
既然攻擊者具備任意寫入權限,他們就可以使用各種方法實施攻擊,不過在我們分析的這個例子中,攻擊者選擇使用Ivanlef0u以及Mateusz “j00ru” Jurczyk和Gynvael Coldwin介紹的一種技術。攻擊者重寫了全局描述符表(GDT,Global Descriptor Table)來創建Ring 0的一個call gate)(調用門)。為了完成這個任務,攻擊者使用SGDT匯編指令獲取了原始的GDT信息,構造自己的表然后使用前面提到的漏洞重寫了原始的表。
隨后,漏洞利用程序使用CALL FAR指令執行了跨權限級別的調用。

反匯編后的CALL FAR指令
一旦代碼在內核模式執行,漏洞利用系統令牌替換當前進程的標記。
4、結論 最初,ESET研究人員在將PDF樣本上載到惡意樣本的公共存儲庫時發現了該樣本。樣本不包含最終攻擊有效載荷,這可能表明它在其早期開發階段。盡管樣本沒有包含真正的惡意最終攻擊有效載荷,這可能表明它在早期開發階段,但作者展示了在漏洞發現和利用寫作方面的高水平技能。 【IoC】 ESET檢測標識: 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/ 漏洞分析內容僅供參考,具體內容表達以及含義以原文為準
|