91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

NDAY漏洞CVE-2017-11882與0Day漏洞CVE-2018-0802漏洞組合傳播遠控木馬的示例分析

發布時間:2021-12-22 21:35:14 來源:億速云 閱讀:148 作者:柒染 欄目:安全技術

這篇文章給大家介紹NDAY漏洞CVE-2017-11882與0Day漏洞CVE-2018-0802漏洞組合傳播遠控木馬的示例分析,內容非常詳細,感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。

1 概述

2018年1月9日,微軟發布了2018年1月份的安全補丁更新,其中較引人關注的Office遠程代碼執行漏洞CVE-2018-0802。該漏洞為Office內存破壞漏洞,影響目前流行的所有Office版本。攻擊者可以利用漏洞以當前登錄的用戶的身份執行任意命令。

該漏洞影響的版本包括:

Microsoft Office 2007

Microsoft Office 2010

Microsoft Office 2013

Microsoft Office 2016

該漏洞早在微軟公布補丁之前,由騰訊電腦管家團隊首先發現,并上報給微軟后一直與微軟保持積極溝通,推動漏洞修復,使得漏洞得到妥善解決后再披露漏洞信息。

該漏洞出現在模塊EQNEDT32.EXE中,與CVE-2017-11882如出一轍,都屬于棧溢出漏洞,都是對Equation Native 數據結構處理不當導致。騰訊反病毒實驗室在上周微軟補丁尚未發布之前就已經捕獲在野利用樣本,本文將通過利用樣本詳細闡述漏洞利用攻擊過程。

2 技術分析

樣本hash: 643927925BC2E4AD42B0B11221E8053A

樣本為rtf文檔類型,在rtf里面嵌入了兩個OLE對象,其中一個OLE對象會觸發CVE-2017-11882漏洞利用,另外一個OLE對象會觸發是CVE-2018-0802漏洞利用。此外,rtf文檔中嵌入了一個package對象,通過package對象釋放setup.zip到臨時目錄下。只要Ole對象中的兩個漏洞利用有一個成功觸發后,shellcode代碼都會將setup.zip拷貝到C:\Users\[username]\AppData\Roaming\Microsoft\Word\STARTUP\z.wll,這樣word在下次啟動時就會自動加載z.wll,實現自啟動。

2.1 基礎知識

2.1.1 Package對象分析

Package對象的功能是釋放PE文件到臨時目錄下的setup.zip文件中。

對于RTF格式文檔,如果用戶單擊文檔內的對象,則WORD進程會將對象提取到用戶的臨時目錄中,并使用默認處理程序啟動它們。在文檔關閉后,WORD進程會將用戶的臨時目錄中提取的ole對象進行刪除。因此,在文檔打開的時間段內,這些文件可用于系統上的其他進程。

當一個對象從文件嵌入到文檔中時,它將使用Packager對象服務,它符合OLE1標準。 但微軟并沒有公開Packager結構格式。

結合我們對大量帶有package對象的rtf樣本的分析,給出我們對Packager格式的理解以及它如何與文檔中的嵌入對象相關聯。    

字段名稱 長度 描述
Header 4                            數據流的頭標志,總為0x0200                            
Label 可變長度                            嵌入對象的標簽,默認為文件名 (Null Terminated)                            
OrgPath 可變長度                            嵌入對象的原始路徑                            
UType 8                            含義不明,可能與格式相差                 – 對于嵌入對象,值為 00000300                  – 對于鏈接對象,值為00000100                            
DataPathLen 8                            DataPath字段的長度                            
DataPath 可變長度                            釋放的路徑和文件名,默認為 %localappdata%/Temp                            
DataLen 8                            嵌入數據的長度                            
Data 可變長度                            嵌入數據的內容                            
OrgPathWLen 8                            OrgFileW字段的長度                            
OrgPathW 可變長度                            嵌入對象的原始路徑(WChar)                            
LabelLen 8                            LabelW字段的長度                            
LabelW 可變長度                            嵌入對象的標簽,默認為文件名 (WChar)                            
DefPathWLen 8                            OrgPathW字段的長度                            
DefPathW 可變長度                            嵌入對象的默認路徑 (WChar)                            

對于樣本中的package對象,根據上面的數據結構在010editor中看到的字段內容如下:

NDAY漏洞CVE-2017-11882與0Day漏洞CVE-2018-0802漏洞組合傳播遠控木馬的示例分析

2.1.2 Equation Native 數據結構

“Equation Native”描述了公式編輯器中公式對象的二進制格式。它的數據構成為:

Equation Native Stream Data = EQNOLEFILEHDR+MTEFData

其中MTEFData = MTEF header+ MTEF Byte Stream。

其中EQNOLEFILEHDR的數據結構如下:

MTEF header的結構(對于2.0及以后版本)大小為5字節,其對應的數據結構如下表所示

偏移量  說明
 0 MTEF版本號3
 1 該數據的生成平臺0 for Macintosh, 1 for Windows
 2 該數據的生成產品0 for MathType, 1 for Equation Editor
 3 產品主版本號3
 4 產品副版本號0

在MTEF header數據頭之后的字節流即為公式數據,即上面所提到的MTEF Byte Stream結構。    

MTEF數據由一系列記錄組成。每條記錄都以包含記錄類型和一些標志位的標簽字節開始。 整體結構是:

FONT記錄及FONT內容結構如下:    

字段 說明
Tag0x081字節,固定為0x08
tfacetypeface number1字節,Typeface編號                            
style1或者21字節,1表示斜體,2表示粗體                            
nameFont name (null-terminated)字體名字,以Null結尾                            

更多關于結構的描述,可參考http://rtf2latex2e.sourceforge.net/MTEF3.html

2.2 漏洞利用

2.2.1 CVE-2017-11882漏洞利用

在未安裝CVE-2017-11882漏洞補丁的機器中,文檔會利用CVE-2017-11882漏洞執行shellcode。Shellcode功能為將package對象釋放的setup.zip拷貝到word啟動目錄中。

文檔中的第一個ole對象中包含Equation Native 數據內容如下

NDAY漏洞CVE-2017-11882與0Day漏洞CVE-2018-0802漏洞組合傳播遠控木馬的示例分析    
   

動態調試CVE-2017-11882漏洞示意圖如下, 這里strcpy的源地址的內容就對應著上一章中Equation Native數據中的Font name的內容:

NDAY漏洞CVE-2017-11882與0Day漏洞CVE-2018-0802漏洞組合傳播遠控木馬的示例分析    

漏洞利用成功后,執行shellcode,shellcode的主要功能是將上面釋放到臨時目錄下的setup.zip拷貝到word的插件目錄中。

Shellcode使用通過hash得到的函數地址,使用的hash是shellcode中常用的ROR 0X0D的方式。通過調用ExpandEnvironmentStringAStub分別獲得setup.zip和word的插件目錄。

NDAY漏洞CVE-2017-11882與0Day漏洞CVE-2018-0802漏洞組合傳播遠控木馬的示例分析    

NDAY漏洞CVE-2017-11882與0Day漏洞CVE-2018-0802漏洞組合傳播遠控木馬的示例分析    

隨后,通過CopyFile函數,將zip文件拷貝到啟動目錄中。

NDAY漏洞CVE-2017-11882與0Day漏洞CVE-2018-0802漏洞組合傳播遠控木馬的示例分析    

至此shellcode的功能完成,在IDA中看到的shellcode過程如下。

NDAY漏洞CVE-2017-11882與0Day漏洞CVE-2018-0802漏洞組合傳播遠控木馬的示例分析    

2.2.2 CVE-2018-0802漏洞利用

在安裝CVE-2017-11882漏洞補丁的機器中,文檔會利用CVE-2018-0802漏洞執行shellcode。Shellcode功能同樣為將package對象釋放的setup.zip拷貝到word的插件目錄。

通過靜態IDA分析CVE-2018-0802漏洞所在的位置如下:

NDAY漏洞CVE-2017-11882與0Day漏洞CVE-2018-0802漏洞組合傳播遠控木馬的示例分析    

內部函數421E39處的代碼實現,在這里在沒有檢測字符長度的情況下,直接通過strcpy覆蓋了局部變量,這里strcpy的源地址的內容就對應著上一章中Equation Native數據中的Font name的內容。

NDAY漏洞CVE-2017-11882與0Day漏洞CVE-2018-0802漏洞組合傳播遠控木馬的示例分析    

在安裝CVE-2017-11882補丁的機器上,動態調試樣本時會觸發CVE-2018-0802漏洞利用過程,如下所示:

NDAY漏洞CVE-2017-11882與0Day漏洞CVE-2018-0802漏洞組合傳播遠控木馬的示例分析    

在執行拷貝時,發生了棧溢出,導致棧空間內容破壞。在執行拷貝之前的棧內容如下:

NDAY漏洞CVE-2017-11882與0Day漏洞CVE-2018-0802漏洞組合傳播遠控木馬的示例分析    

拷貝內容的最后兩個字節(25 00)將覆蓋函數的返回地址,如下所示。

NDAY漏洞CVE-2017-11882與0Day漏洞CVE-2018-0802漏洞組合傳播遠控木馬的示例分析    

隨后,函數繼續運行,后面的sub_4115A7函數為CVE-2017-11882修補的函數,在補丁條件下會返回非0,從而導致最終該函數會再次遞歸調用sub_421774。在第二次調用sub_421774的過程中,函數就會正常返回。

NDAY漏洞CVE-2017-11882與0Day漏洞CVE-2018-0802漏洞組合傳播遠控木馬的示例分析    

函數正常返回,就會跳轉到上面修改過的返回地址運行。

NDAY漏洞CVE-2017-11882與0Day漏洞CVE-2018-0802漏洞組合傳播遠控木馬的示例分析    

而011d0025的代碼指令也為RET

NDAY漏洞CVE-2017-11882與0Day漏洞CVE-2018-0802漏洞組合傳播遠控木馬的示例分析    

最后跳轉到棧中的shellcode執行,shellcode與文件中的內容比較如下:

NDAY漏洞CVE-2017-11882與0Day漏洞CVE-2018-0802漏洞組合傳播遠控木馬的示例分析    

最終shellcode實現的功能為通過CopyFile函數,將zip文件拷貝到word的插件目錄。

NDAY漏洞CVE-2017-11882與0Day漏洞CVE-2018-0802漏洞組合傳播遠控木馬的示例分析    

2.3 木馬功能分析

木馬的執行流程如下:

NDAY漏洞CVE-2017-11882與0Day漏洞CVE-2018-0802漏洞組合傳播遠控木馬的示例分析    

注意區分這里的兩個文件名相似的文件:servernet.exe和servicenet.exe。servernet.exe由tmp.exe文件釋放的,起到中轉加載執行的作用;而servicenet.exe是保存NetWork目錄中的tmp.exe文件,它與tmp.exe的數據內容是完全一致的。

在木馬加載執行過程中,會根據用戶的環境采用不同的方式繞過安全軟件,在某些安全軟件存在的情況下會使用中轉加載的方式繞過安全檢測,在另外一些安全軟件存在的情況下會使用白利用方式加載執行。

木馬涉及的多個不同的文件功能列表如下。

文件名                            角色                            功能                            
z.wll加載器                            釋放木馬文件并加載執行,word運行時自動加載                            
Tmp.exe/servicenet.exe木馬                            實現木馬功能                            
Srvlic.dll/msTracer.dll調用中轉執行                            加載servernet.exe執行                            
MemRunExe32.exe/MemRunExe64.exe Bypass UAC功能                            
servernet.exe中轉加載木馬                            加載servicenet.exe(實現了木馬主功能)執行                            
SandboxieBITS.exe白利用程序                            添加計劃任務,啟動時加載servernet.exe執行                            
HookMessageBox.dll防止用戶感知                            Hook MessageBox函數,防止彈窗                            

下面,我們將對每個文件依次展開進行分析說明。

2.3.1 z.wll

漏洞利用成功后Shellcode會將setup.zip拷貝到%APPDATA%\Microsoft\Word\STARTUP目錄中保存成z.wll。%APPDATA%\Microsoft\Word\STARTUP目錄為WORD程序的插件目錄,在WORD程序啟動時,WORD會自動加載該目錄下擴展名wll的文件。這樣在下一次word啟動時,z.wll就會被加載執行。

z.wll功能為:釋放%ALLUSERSPROFILE%\\NetWork\\tmp.exe,加載tmp.exe執行

tmp.exe是以硬編碼的方式保存在0x10003030處,大小為0xB601字節。

NDAY漏洞CVE-2017-11882與0Day漏洞CVE-2018-0802漏洞組合傳播遠控木馬的示例分析    

2.3.2 Tmp.exe/servicenet.exe

在407C90處將標志“5A 5A 5A 5A”后的大小為0x1962字節的內容異或0x6B解碼,解碼出來的代碼為線程函數的代碼

NDAY漏洞CVE-2017-11882與0Day漏洞CVE-2018-0802漏洞組合傳播遠控木馬的示例分析    

未解碼前的線程函數,未解碼前線程函數并不是可以執行的代碼,從下圖可以看到ida無法將這些數據處理成代碼格式:

NDAY漏洞CVE-2017-11882與0Day漏洞CVE-2018-0802漏洞組合傳播遠控木馬的示例分析    

解碼后的線程函數,IDA 在解碼后就可以正常的識別出代碼。

NDAY漏洞CVE-2017-11882與0Day漏洞CVE-2018-0802漏洞組合傳播遠控木馬的示例分析    

線程函數的功能

釋放C:\Documents andSettings\All Users\NetWork\ servernet文件

NDAY漏洞CVE-2017-11882與0Day漏洞CVE-2018-0802漏洞組合傳播遠控木馬的示例分析    

判斷當前進程是不是servicenet.exe,如果當前進程不是servicenet.exe,則將自身拷貝到servicenet.exe,并使用cmd加載servicenet.exe執行,同時刪除當前的自身文件。

NDAY漏洞CVE-2017-11882與0Day漏洞CVE-2018-0802漏洞組合傳播遠控木馬的示例分析    

如果當前進程是servicenet.exe,則首先會開啟三個線程,用來模擬鼠標點擊,用來繞過BKAV、Symantec等防火墻產品。

NDAY漏洞CVE-2017-11882與0Day漏洞CVE-2018-0802漏洞組合傳播遠控木馬的示例分析    

模擬鼠標點擊繞過防火墻部分代碼:

NDAY漏洞CVE-2017-11882與0Day漏洞CVE-2018-0802漏洞組合傳播遠控木馬的示例分析    

隨后會遍歷系統進程,判斷是否存在安全軟件進程,判斷的安全軟件如下:

NDAY漏洞CVE-2017-11882與0Day漏洞CVE-2018-0802漏洞組合傳播遠控木馬的示例分析    

先后與83.166.242.122:443和109.237.110.10:81通信,執行不同的功能

NDAY漏洞CVE-2017-11882與0Day漏洞CVE-2018-0802漏洞組合傳播遠控木馬的示例分析    

其中木馬功能與對應的操作指令如下:

指令ID 功能                            
0x01 文件操作                            
0x28 管道命令                            
0x2E 清除日志                            
0x2A 本地提權                            
0x31 設置注冊表內容                            
0x2D 更新木馬服務端                            
0x2B 清除木馬服務端                            
0x39 關閉連接                            
0x3A 修改木馬上線分組名                            
0x47 向t1.dat文件追加內容                            

NDAY漏洞CVE-2017-11882與0Day漏洞CVE-2018-0802漏洞組合傳播遠控木馬的示例分析    

2.3.3 Srvlic.dll/msTracer.dll文件

功能:加載network目錄下的servernet.exe執行

NDAY漏洞CVE-2017-11882與0Day漏洞CVE-2018-0802漏洞組合傳播遠控木馬的示例分析    

2.3.4 servernet.exe文件分析

功能:以EXPLORER.EXE的權限加載執行servicenet.exe。樣本的pdb名為:e:\倚天劍\小馬(英文版)\馬端代碼\GetExplorerToken\Release\GetExplorerToken.pdb。從pdb名稱也可以看到,文件功能為使用Explorer的Token加載木馬主體文件(servicenet.exe)執行。

NDAY漏洞CVE-2017-11882與0Day漏洞CVE-2018-0802漏洞組合傳播遠控木馬的示例分析    

2.3.5 白利用樣本分析

涉及到的白利用程序包含三個文件:SandboxieBITS.exe、SbieDll.dll

其中使用的白簽名為“SANDBOXIE L.T.D”,具體簽名內容如下:

NDAY漏洞CVE-2017-11882與0Day漏洞CVE-2018-0802漏洞組合傳播遠控木馬的示例分析    

使用PE工具,查看SandboxieBITS.exe的導入表,在導入函數中引用了SbieDll.dll文件中的SbieDll_Hook函數。

NDAY漏洞CVE-2017-11882與0Day漏洞CVE-2018-0802漏洞組合傳播遠控木馬的示例分析    

由于SandboxieBITS.exe在調用SbieDll.dll時,沒有對SbieDll.dll進行驗證,導致將惡意的SbieDll.dll放置在SandboxieBITS.exe相同目錄下并運行SandboxieBITS.exe時,惡意SbieDll.dll會被自動加載,從而執行惡意代碼。

SbieDll.dll主要實現兩個功能:

1. 將servernet.exe加入計劃任務,實現開機自啟動的功能

2. 如果加入計劃任務失敗,則加載HookMessageBox.dll

Sbiedll.dll中的字符串經過了異或編碼,使用的異或key為0x05,解碼字符內容的代碼片段如下:

NDAY漏洞CVE-2017-11882與0Day漏洞CVE-2018-0802漏洞組合傳播遠控木馬的示例分析    

判斷是不是有360安全產品,如果沒有安裝360則直接加載HookMessageBox.dll

NDAY漏洞CVE-2017-11882與0Day漏洞CVE-2018-0802漏洞組合傳播遠控木馬的示例分析    

加載HookMessageBox.dll的代碼片段

NDAY漏洞CVE-2017-11882與0Day漏洞CVE-2018-0802漏洞組合傳播遠控木馬的示例分析    

HookMessageBox.dll功能就是將MessageBoxA與MessageBoxW函數直接Hook成空函數。

NDAY漏洞CVE-2017-11882與0Day漏洞CVE-2018-0802漏洞組合傳播遠控木馬的示例分析    

如果安裝有360安全產品,則將servernet.exe加入計劃任務

NDAY漏洞CVE-2017-11882與0Day漏洞CVE-2018-0802漏洞組合傳播遠控木馬的示例分析    

加入的計劃任務如下所示

NDAY漏洞CVE-2017-11882與0Day漏洞CVE-2018-0802漏洞組合傳播遠控木馬的示例分析    

2.3.6 MemRunExe32.exe/MemRunExe64.exe

這兩個文件分別對應著32位版本與64位版本,主要功能為:繞過系統的UAC賬戶控制。該文件主要來源于開源代碼實現。從代碼上看,完全從開源代碼編譯而來,連程序的窗口類名與窗口名稱都沒有改變,甚至程序的圖標都完全一樣。

從代碼中可以看到程序窗口的ClassName與TitleName分別為“reirraC”和“igakA”。

NDAY漏洞CVE-2017-11882與0Day漏洞CVE-2018-0802漏洞組合傳播遠控木馬的示例分析    

3 樣本擴展

分析完上面的樣本后,我們從騰訊的安全大數據中按照樣本特征,關聯出一批同源樣本,在這些樣本中,有下面幾類的同源但不同功能的樣本。

1.  CopyFileToSystem32文件,主要實現將%ALLUSERSPROFILE%\NetWork目錄下的msTracer.dll或者srvlic.dll(根據系統的位數決定)拷貝到%system%目錄。

2.   測試樣本。包含三類測試樣本,一是功能測試樣本,主要用來測試加載servernet.exe功能是否正常,樣本字符串中有“IsRunning”等互斥體名。第二類是測試簽名,在一些樣本中,看到黑客給樣本打上了“亞洲誠信代碼簽名測試證書SHA2”的測試簽名。第三類為測試CC地址的樣本,在一些樣本中,我們發現連接的CC地址為:192.168.2.74:8008,192.168.2.155:8099,192.168.2.155:81等測試地址。

測試的簽名如下

NDAY漏洞CVE-2017-11882與0Day漏洞CVE-2018-0802漏洞組合傳播遠控木馬的示例分析    

從樣本層面看,該木馬有下面的顯著特點:

l  利用NDAY漏洞CVE-2017-11882與0Day漏洞CVE-2018-0802組合利用,在CVE-2017-11882漏洞利用失敗的情況下,依然可以使用CVE-2018-0802漏洞再次觸發惡意代碼執行。“組合拳”的打法更大的增加利用成功率。

l  利用word啟動目錄實現首次的加載執行。漏洞利用成功后,并不會直接加載惡意程序執行,而是在用戶再次使用word時加載執行。這利用WORD進程自身機制,達到啟動的目的對于繞過安全軟件的加載檢測有著極好的效果。

對于這類木馬的防范,騰訊反病毒實驗室建議用戶:

1.      及時更新系統補丁,針對此次攻擊的兩個補丁下載地址為:

https://portal.msrc.microsoft.com/en-US/security-guidance/advisory/CVE-2017-11882

https://portal.msrc.microsoft.com/en-US/security-guidance/advisory/CVE-2018-0802

2.      安裝騰訊電腦管家等安全軟件,并保持安全軟件更新,目前騰訊電腦管家已經可以查殺此類木馬。

3.      企業客戶可以使用采用騰訊企業安全的解決方案。騰訊企業安全針對APT防御方面提供了多種解決方案,騰訊御界、騰訊御點等產品均可以檢測和防御本次APT攻擊。

4.      如果用戶總是使用word打開rtf文件,可以通過禁用Package ActiveX控件來阻止,rtf文件在臨時目錄釋放文件的問題,從而切斷木馬釋放環節的攻擊鏈路。這種方式僅可以阻斷文中分析的以rtf為載體,package對象釋放文件的攻擊類型。具體操作為設置下面的注冊表項。

5.     通過禁用公式編輯器COM控件的方式進行緩解。

關于NDAY漏洞CVE-2017-11882與0Day漏洞CVE-2018-0802漏洞組合傳播遠控木馬的示例分析就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

交城县| 太原市| 武威市| 荆州市| 十堰市| 崇信县| 河津市| 华池县| 金阳县| 无极县| 衡阳县| 荣昌县| 紫阳县| 兴隆县| 万全县| 长子县| 普兰店市| 崇明县| 宕昌县| 含山县| 博罗县| 郯城县| 阿鲁科尔沁旗| 阳原县| 米林县| 南华县| 驻马店市| 大悟县| 阿尔山市| 镇安县| 义马市| 顺平县| 鹤峰县| 曲松县| 宿松县| 马公市| 青田县| 西乡县| 沙田区| 丰镇市| 宜黄县|