1. 程式人生 > >cve-2018-0802漏洞分析報告

cve-2018-0802漏洞分析報告

軟體名稱:公式編輯器
軟體版本:2016以下
漏洞模組:EQNEDT32.EXE
模組版本:6.1.95.45
編譯日期:2000-11-9 作業系統:Windows XP/2003/7/8.1/10
漏洞編號:cve-2017-0802
危害等級:高危
漏洞型別:緩衝區溢位
威脅型別:遠端

軟體簡介

Microsoft Office 是微軟公司針對 Windows 作業系統所推出的辦公室套裝軟體
公式編輯器是office的其中一個元件,為一個獨立的EXE,程式釋出的是2000年,使用VC4.X編譯器所生成,經過office2007 SP3 並打上CVE-2017-11882補丁了
在這裡插入圖片描述

漏洞成因

公式編輯器存在緩衝區溢位漏洞。
該漏洞的成因是EQNEDT32.EXE程序在讀入包含MathType的ole資料時,在拷貝公式字型名稱(Font Name資料)時沒有對名稱長度進行校驗,從而造成棧緩衝區溢位,是一個非常經典的棧溢位漏洞。

利用過程

開啟含有惡意程式碼的Word文件,會彈出一個計算器。
在這裡插入圖片描述
使用OD附加EQNEDT32.EXE程序。在建立程序相關的函式下斷點。
在這裡插入圖片描述
Bat檔案內的命令:
在這裡插入圖片描述
發現是使用WinExec建立的程序,不過這次啟動的是Bat檔案,Bat檔案內可以執行更多更長的命令。
通過棧回溯,找到上一層地址
在這裡插入圖片描述
來到這段程式碼,做個記錄
在這裡插入圖片描述
找到這段程式碼的最頭部,下一個斷點,再次開啟帶有惡意程式碼的Word文件,一直往後面單步,經過多層的呼叫後,最終發現了拷貝溢位點
在這裡插入圖片描述
這裡實現的拷貝覆蓋返回地址,然後只拷貝了兩個位元組,因為這次補丁開啟了隨機基址,然後只拷貝後2個位元組,這個2個位元組是根據原本返回地址的基址的偏移計算出來的,指向的也是本模組的某一條指令。
在這裡插入圖片描述


這條指令是ret,就可以實現返回後,執行下一條跳向棧空間的地址。
在這裡插入圖片描述
棧內填充的都是shellcode程式碼,這樣就可以直接執行shellcode內的程式碼了。
在這裡插入圖片描述
通過取棧內返回地址,計算偏移得到winexec指令地址,直接跳過去
在這裡插入圖片描述
最終彈出了計算器。

由於執行的bat檔案,bat是事先寫入到系統臨時目錄內的。
使用Malware Defender進行了監控,發現是Word程序寫入的bat檔案
在這裡插入圖片描述
使用OD下WriteFile斷點,發現了寫入的操作
在這裡插入圖片描述
棧回溯,發現是packager.dll模組呼叫的一組寫出檔案操作
在這裡插入圖片描述
使用rtfobj掃描。發現是word使用嵌入物件,自動釋放出來的檔案。
在這裡插入圖片描述

PoC

在rtf的嵌入式物件中存放木馬病毒檔案,釋放出來之後使用公式編輯器的緩衝區溢位漏洞,執行shellcode,即可將木馬病毒檔案執行起來。

結語

漏洞影響的範圍比較大,公式編輯器一直從2000版本以來保留使用到2016版本
使用的編譯器也比較老久,沒有對記憶體長度進行檢查,所以容易造成緩衝區溢位,且可以利用該漏洞為所欲為。