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版本
使用的編譯器也比較老久,沒有對記憶體長度進行檢查,所以容易造成緩衝區溢位,且可以利用該漏洞為所欲為。