0day漏洞組合拳:詳細分析一款惡意PDF樣本
一、前言
2018年3月末,ESET研究人員發現了一款非常有趣的惡意PDF樣本。經過仔細研究後,我們發現該樣本利用了之前未知的兩個漏洞:Adobe Reader中的一個遠端命令執行漏洞以及Microsoft Windows中的一個許可權提升漏洞。
這兩個漏洞組合起來威力巨大,攻擊者可以透過這種方式在存在漏洞的目標上以儘可能高的許可權來執行任意程式碼,並且整個過程很少需要使用者互動。APT組織通常會使用這種組合拳來發起攻擊,比如去年的Sednit攻擊活動就是非常好的一個例子。
在發現這款PDF樣本後,ESET第一時間聯絡了微軟安全響應中心(MSRC)、Windows Defender ATP研究團隊以及Adobe Product安全事件響應團隊,並與這些單位一起協作,直至漏洞被成功修復。
Adobe以及微軟也提供了相應補丁及安全公告,分別如下:
APSB18-09
CVE-2018-8120
受影響的相關產品版本資訊如下:
Acrobat DC (2018.011.20038及更早版本)
Acrobat Reader DC (2018.011.20038及更早版本)
Acrobat 2017 (011.30079及更早版本)
Acrobat Reader DC 2017 (2017.011.30079及更早版本)
Acrobat DC (Classic 2015) (2015.006.30417及更早版本)
Acrobat Reader DC (Classic 2015) (2015.006.30417及更早版本)
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
本文介紹了這款惡意樣本以及所利用漏洞的技術細節。
二、簡介
PDF(Portable Document Format)是一種電子文件檔案格式,與其他常見文件格式一樣,攻擊者可以利用該型別檔案將惡意軟體傳播至受害者主機。為了執行惡意程式碼,攻擊者需要尋找並利用PDF閱讀器軟體中的漏洞。現在有多款PDF閱讀器,其中最常用的就是Adobe Reader。
Adobe Reader軟體中有一個安全功能:沙箱(sandbox),也稱為保護模式(Protected Mode)。Adobe在官方部落格上分四部分(Part 1、Part 2、Part 3、Part 4)詳細介紹了沙箱的具體實現。沙箱使漏洞利用過程更加困難:即使攻擊者可以執行程式碼,還是必須繞過沙箱的保護機制才能突破執行Adobe Reader的計算機。通常情況下,攻擊者需要藉助作業系統本身的漏洞來繞過沙箱保護機制。
當然攻擊者可以同時找到Adobe Reader軟體以及目標中的漏洞並編寫利用程式,不過這種情況非常罕見。
三、CVE-2018-4990:Adobe Reader的RCE漏洞
惡意PDF樣本中嵌入了一段JavaScript程式碼,用來控制整個漏洞利用過程。一旦PDF檔案被開啟,JavaScript程式碼就會被執行。
在漏洞利用開頭階段,JavaScript程式碼開始操控Button1物件,該物件包含一個精心構造的JPEG2000影像,該影像會觸發Adobe Reader中的雙重釋放(double-free)漏洞。
圖1. 操控Button1物件的JavaScript程式碼
JavaScript程式碼中用到了堆噴射(heap-spray)技術以破壞內部資料結構。在這些操作都完成後,攻擊者就實現了他們的主要目標:從JavaScript程式碼中實現記憶體的讀取及寫入。
圖2. 用來讀取及寫入JavaScript程式碼
利用這兩種方法,攻擊者成功定位EScript.api外掛的記憶體地址,而該外掛正是Adobe JavaScript的引擎。利用該模組的彙編指令(ROP gadgets),惡意JavaScript成功構造了一條ROP鏈,可以執行本地shellcode。
圖3. 惡意JavaScript成功構造ROP鏈
最後一步,shellcode會初始化PDF中內嵌的一個PE檔案,將執行權遞交給該檔案。
四、CVE-2018-8120:Windows許可權提升漏洞
成功利用Adobe Reader漏洞後,攻擊者必須打破沙箱保護機制,而這正是我們即將討論的第二個利用程式碼的目的所在。
這個未知漏洞的源頭在於win32k Windows核心元件中的NtUserSetImeInfoEx函式。更具體一些,就是NtUserSetImeInfoEx的SetImeInfoEx子例程沒有驗證資料指標的有效性,允許某個NULL指標被解除引用(dereference)。
圖4. 反彙編後的SetImeInfoEx例程程式碼
如圖4所示,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指令執行了跨許可權級別的呼叫。
圖5. 反彙編後的CALL FAR指令
一旦程式碼在核心模式執行,漏洞利用程式就會使用system token(令牌)替換掉當前程式的token。
五、總結
當PDF樣本提交到公共惡意樣本庫時,ESET研究人員就發現了這款樣本。彼時樣本並不包含最終的攻擊載荷,這表明當時樣本很有可能處於早期研發階段。雖然當時樣本並不包含真正的惡意載荷,仍有可能處於早期研發階段,但這也告訴我們樣本的作者在漏洞發現及漏洞利用方面具備較高的水平。
六、IoC
ESET檢測標識:
JS/Exploit.Pdfka.QNV trojan
Win32/Exploit.CVE-2018-8120.A trojan
樣本SHA-1雜湊:
C82CFEAD292EECA601D3CF82C8C5340CB579D1C6
0D3F335CCCA4575593054446F5F219EBA6CD93FE
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31510736/viewspace-2154797/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Flappy Bird 惡意程式詳細分析APP
- 惡意程式碼分析之行為分析及樣本收集
- Ph0neutria:一款從野外採集惡意軟體樣本的工具
- 某EXCEL漏洞樣本shellcode分析Excel
- 谷歌詳細披露4個0day漏洞!已有黑客正在利用谷歌黑客
- Adobe Acrobat又曝新漏洞:點選惡意PDF文件會“一鍵被黑”BAT
- “會說話的鍵盤”:一個惡意推廣木馬的詳細分析
- WinRAR(5.21)-0day漏洞-始末分析
- 某殭屍網路被控端惡意樣本分析
- 如何設定自己的Dionaea蜜罐來收集惡意軟體樣本
- 一款結合破殼(Shellshock)漏洞利用的Linux遠端控制惡意軟體Linux/XOR.DDoS 深入解析Linux
- linux ddos惡意軟體分析Linux
- 惡意軟體Linux/Mumblehard分析Linux
- 有米iOS惡意SDK分析iOS
- Zero Access惡意軟體分析
- dp-一套組合拳搞懂
- jwt偽造身份組組組合拳艱難通關JWT
- 惡意程式-分析SYNful Knock 思科植入
- 如何搭建一套自己的蜜罐系統來收集惡意軟體樣本
- VMwareMac版本漏洞可任意執行惡意程式碼REMMac
- 美國網路司令部昨日再次分享七個新惡意軟體樣本
- Java高效開發-SSH+Wireshark+tcpdump組合拳JavaTCP
- 合併PDF檔案怎樣做?分享兩種PDF合併方法
- 動態惡意軟體分析工具介紹
- 【筆記】【THM】Malware Analysis(惡意軟體分析)筆記
- 遞迴元件組合拳,無懼頁面巢狀遞迴元件巢狀
- JWT 詳細分析JWT
- Https詳細分析HTTP
- Android漏洞允許黑客通過NFC傳播惡意軟體Android黑客
- 網站資料被惡意篡改洩露如何查詢漏洞網站
- 防止獨立IP被其它惡意域名惡意解析
- “偽萬年曆” Root Exploit惡意應用分析
- Oracle 惡意攻擊問題分析和解決(一)Oracle
- 【技術分析】惡意 SPL 代幣識別指南
- 細分市場樣本量不夠時,如何得出靠譜的滿意度分值?
- JWT 超詳細分析JWT
- PE頭詳細分析
- Android NFC 漏洞可被黑客拿來傳播植入惡意軟體Android黑客