<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          CVE-2015-1641及利用樣本分析

          共 4296字,需瀏覽 9分鐘

           ·

          2020-11-25 20:18

          1.本文一共1920個字 58張圖 預(yù)計(jì)閱讀時(shí)間12分鐘2.本文作者erfze 屬于Gcow安全團(tuán)隊(duì)復(fù)眼小組 未經(jīng)過許可禁止轉(zhuǎn)載3.本篇文章從CVE-2015-1641漏洞的分析入手 詳細(xì)的闡述漏洞的成因再分析Patchwork APT組織使用的該漏洞的樣本4.本篇文章一棟 十分適合漏洞安全研究人員 以及威脅分析人員進(jìn)行學(xué)習(xí)交流5.若文章中存在說得不清楚或者錯誤的地方 歡迎師傅到公眾號后臺留言中指出 感激不盡

          0x01 漏洞描述

          ?漏洞成因:類型混淆漏洞。Word在處理displacedByCustomXml屬性時(shí)未對customXml標(biāo)簽對象進(jìn)行有效性驗(yàn)證,可以通過傳入其他標(biāo)簽對象,由類型混淆進(jìn)而達(dá)到任意內(nèi)存寫。故可以借由精心構(gòu)造的標(biāo)簽對象及對應(yīng)屬性值實(shí)現(xiàn)RCE。?影響版本:Microsoft Word 2007 SP3, Office 2010 SP2, Word 2010 SP2, Word 2013 SP1, Word 2013 RT SP1, Word for Mac 2011, Office Compatibility Pack SP3, Word Automation Services on SharePoint Server 2010 SP2 & 2013 SP1, Office Web Apps Server 2010 SP2 & 2013 SP1

          0x02 漏洞分析

          樣本信息及分析環(huán)境如下:

          MD5:A69F778D1F511268019B1080F5E3B98B

          OS版本:Windows 7 SP1(x86)

          Word版本:2007

          WWLIB.DLL版本:12.0.4518.1014

          0x02.1 類型混淆—>任意地址寫

          通過rtfobj查看該文檔的OLE對象:

          圖片1 rtfobj

          手動提取出來2號對象存為一RTF文檔,Windbg附加Word 2007并打開該文檔,崩潰點(diǎn)如下:

          圖片2 崩潰點(diǎn)

          之后將0號與2號對象提取出來存為一RTF文檔:

          圖片3 0號&2號

          設(shè)斷bp wwlib!DllGetClassObject+0x50e6 ".if(ecx=7c38bd50){}.else{gc}"

          圖片4 斷點(diǎn)

          待執(zhí)行call wwlib!DllGetClassObject+0x50fe前查看棧中參數(shù)如下:

          圖片5 棧中參數(shù)

          通過rtfobj.py -s 2將2號對象存為一Word文檔,查看其word目錄下document.xml

          圖片6 smartTag標(biāo)簽

          可以看到smartTag標(biāo)簽屬性值與棧中參數(shù)對應(yīng)關(guān)系。

          根據(jù)微軟文檔,displacedByCustomXml屬性指定替換標(biāo)簽應(yīng)為customXml:

          圖片7 MicroSoft Docs

          繼續(xù)跟進(jìn)分析,計(jì)算寫入地址:

          圖片8 計(jì)算寫入地址

          計(jì)算公式為[[Parameter 1]+0x8]*[Parameter 2]+[[Parameter 1]+0xC]+[Parameter 1],具體參數(shù)值見圖5。直接步過該函數(shù),可以看到其結(jié)果與公式結(jié)果無異:

          圖片9 Result

          跟進(jìn),查看其memcpy傳遞參數(shù):

          圖片10 調(diào)用memcpy

          圖片11 memcpy傳遞參數(shù)

          向0x7c38bd74地址處寫入0xffffe696,該值用于第二次計(jì)算Dst Address。

          重新設(shè)斷bp wwlib!DllGetClassObject+0x50e6 ".if(ecx=7c38bd68){}.else{gc}",斷下之后跟進(jìn)到其計(jì)算Dst Address函數(shù):

          圖片12 第二次計(jì)算Dst Address

          可以看到[[Parameter 1]+0xC]為之前寫入值。第二次寫入覆蓋MSVCR71.DLL虛函數(shù)表中函數(shù)調(diào)用地址:

          圖片13 MSVCR71.DLL vftable

          第三次寫入:

          圖片14 第三次寫入

          該值用于第四次計(jì)算Dst Address:

          圖片15 第四次計(jì)算Dst Address

          第四次寫入:

          圖片16 第四次寫入

          0x02.2 劫持執(zhí)行流

          繼續(xù)向下執(zhí)行,崩潰點(diǎn)如下:

          圖片17 MSVCR71崩潰點(diǎn)

          重新載入RTF文檔,于0x7c376fc4處設(shè)斷:

          圖片18 崩潰點(diǎn)前指令

          圖片19 劫持執(zhí)行流

          由上圖可知第二次內(nèi)存寫入——覆蓋MSVCR71.DLL虛函數(shù)表中函數(shù)調(diào)用地址,第四次內(nèi)存寫入——覆蓋傳遞參數(shù)。

          將1號對象加入后存為RTF文檔,重新載入分析,bp 0x7c376fc8設(shè)斷:

          圖片20 堆噴

          可以看到堆噴布局如上,該布局由1號對象\word\activeX目錄中activeX1.bin完成:

          圖片21 activeX1.bin

          根據(jù)其布局,不斷執(zhí)行ret,到0x7c3651EB處開始ROP鏈:

          圖片22 0x7c3651EB

          執(zhí)行VirtualProtect以繞過DEP保護(hù):

          圖片23 更改內(nèi)存屬性

          然后開始執(zhí)行activeX1.bin內(nèi)Shellcode部分:

          圖片24 Shellcode

          0x02.3 Shellcode of activeX1.bin

          遍歷當(dāng)前進(jìn)程中打開文件句柄,查找其Size符合如下條件的文件:

          圖片25 查找文件

          映射到內(nèi)存中:

          圖片26 CreateFileMapping & MapViewOfFile

          通過文件頭與FEFEFEFE FEFEFEFE FFFFFFFF判斷是否為樣本文件及Shellcode起始位置:

          圖片27 判斷

          復(fù)制Shellcode到VirtualAlloc開辟空間內(nèi),之后跳轉(zhuǎn)到第二部分Shellcode執(zhí)行。

          0x02.4 Shellcode of RTF

          解密后續(xù)Shellcode:

          圖片28 解密

          由ANY.RUN可見其后續(xù)行為(有興趣的讀者請自行下載樣本分析):

          圖片29 ANY.RUN

          正常情況下,Word在解析customXml標(biāo)簽時(shí)會開辟一新空間:

          圖片30 開辟空間

          圖片31 customXml標(biāo)簽處理流程

          而在解析smartTag時(shí):

          圖片32 smartTag標(biāo)簽處理流程

          故借此可以控制目標(biāo)寫入地址。

          0x03 Patchwork組織某利用樣本分析

          0x03.1 RTF文檔分析

          MD5:2C22EA1CED258346351EAD09B1DC6074

          查看OLE對象:

          圖片33 OLE對象

          0號對象用以加載OTKLOADR.DLL以引入MSVCR71.DLL繞過ASLR;

          1號對象用以完成堆噴及Shellcode布局;

          2號對象用以觸發(fā)CVE-2015-1641漏洞,觸發(fā)點(diǎn)位于styles.xml中:

          圖片34 styles.xml

          載入RTF文檔,bp 0x7c376fc8設(shè)斷,執(zhí)行ROP鏈后調(diào)用VirtualProtect更改內(nèi)存屬性,跳轉(zhuǎn)到Shellcode:

          圖片35 VirtualProtect

          通過jmp+call+pop給傳參,解密后續(xù)Shellcode:

          圖片36 傳遞參數(shù)

          解密邏輯如下:

          圖片37 解密

          開辟內(nèi)存空間,復(fù)制加密Shellcode并解密:

          圖片38 開辟內(nèi)存、復(fù)制、解密

          通過call指令為函數(shù)傳遞參數(shù):

          圖片39 傳參

          后續(xù)仍有數(shù)次解密Shellcode過程,不再一 一列出。于C:\Users\xxx\AppData\Roaming\Microsoft\Templates目錄下創(chuàng)建文件:

          圖片40 Normal.domx

          寫入文件內(nèi)容:

          圖片41 WriteFile

          之后于相同目錄下創(chuàng)建~$Normal.dat并寫入內(nèi)容:

          圖片42 ~$Normal.dat

          圖片43 WriteFile

          該文件具有隱藏屬性:

          圖片44 隱藏文件

          HKEY_CURRENT_USER下創(chuàng)建注冊表項(xiàng):

          圖片45 RegCreateKey

          設(shè)置注冊表鍵值:

          圖片46 RegSetValue

          刪除注冊表禁用項(xiàng):

          圖片47 RegDeleteKey

          后續(xù)將由wscript.exe執(zhí)行C:\Users\xxx\AppData\Roaming\Microsoft\Templates\Normal.domx,該文件實(shí)際為VBE格式:

          圖片48 Normal.domx

          可借由scrdec18工具解密:

          圖片49 Normal.vbs

          0x03.2 Normal.domx分析

          該文件本質(zhì)為VBE格式,可由wscript.exe正常加載。分析時(shí)需通過工具解密出VBS腳本。

          讀取~$Normal.dat第一部分內(nèi)容并解密,寫入%USERPROFILE%\AppData\Local\Microsoft\Windows\Temporary Internet Files\Content.Word\PLAs_NEW_ORBAT.doc

          圖片50 釋放PLAs_NEW_ORBAT.doc

          該文檔用于迷惑受害者:

          圖片51 PLAs_NEW_ORBAT.doc

          之后釋放三個PE文件并設(shè)置隱藏屬性:

          圖片52 釋放PE文件

          執(zhí)行MicroScMgmt.exe并刪除自身以及~$Normal.dat

          圖片53 執(zhí)行MicroScMgmt.exe

          0x03.3 MicroScMgmt.exe分析

          查看導(dǎo)入表:

          圖片54 MicroScMgmt.exe導(dǎo)入表

          該文件為帶有數(shù)字簽名的白文件:

          圖片55 數(shù)字簽名

          其用于加載惡意DLL——jli.dll。

          0x03.4 jli.dll分析

          MD5:051573B9173DE6886E0575F81778EA03

          查看其導(dǎo)出函數(shù):

          圖片56 導(dǎo)出函數(shù)

          該文件帶有無效簽名:

          圖片57 無效簽名

          其與Patchwork組織之前使用過的BADNEWS木馬存在相似性,此處暫不展開分析。完整攻擊鏈如下:

          圖片58 攻擊鏈

          0x04 參閱鏈接

          ?CVE-2015-1641 Word 利用樣本分析(https://paper.seebug.org/351/)?Microsoft Docs——displacedByCustomXml(https://docs.microsoft.com/en-us/previous-versions/office/developer/office-2010/cc847826(v=office.14)?redirectedfrom=MSDN)?手把手教你如何構(gòu)造office漏洞EXP(第四期)(https://www.anquanke.com/post/id/85031)


          瀏覽 62
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評論
          圖片
          表情
          推薦
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  成人青娱乐 | 伊人网视频在线观看 | 看90后操B | 国产成人黄色在线观看 | 亚洲AV综合AV东京热三区 |