中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

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

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

CVE-2017-8570的野外樣本及漏洞分析是怎樣的

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

本篇文章給大家分享的是有關CVE-2017-8570的野外樣本及漏洞分析是怎樣的,小編覺得挺實用的,因此分享給大家學習,希望大家閱讀完這篇文章后可以有所收獲,話不多說,跟著小編一起來看看吧。

概述

360威脅情報中心曾在2017年8月發布了《烏龍的CVE-2017-8570樣本及背后的狗血》(詳見參考資料[1]),當時由于在VirusTotal上發現了多例標注為CVE-2017-8570的Office幻燈片文檔惡意樣本,所以有安全廠商宣稱第一時間捕獲了最新的Office CVE-2017-8570野外利用漏洞樣本,但經過360威脅情報中心的分析判斷,這批Exploit樣本實際上是CVE-2017-0199的另外一種利用方式(通過Office幻燈片加載執行Scriptletfile腳本),在微軟2017年4月份的補丁中已經針對CVE-2017-0199這種利用方式實行了修補。

360威脅情報中心才監控到互聯網上首次出現了真實的CVE-2017-8570野外攻擊樣本,基于360威脅情報中心的數據,以下熱力圖顯示了從2018年1月11日以來CVE-2017-8570樣本量的提交情況,可以看到漏洞Exploit一旦公開使用,馬上就會進入被攻擊者頻繁使用的狀態:

CVE-2017-8570的野外樣本及漏洞分析是怎樣的    

另外,因為CVE-2017-0199有天生缺陷(這部分我們會在隨后的章節中描述),實際上目前已公開的CVE-2017-0199利用樣本在Office Word上的利用威脅并不大,而CVE-2017-8570并沒有該缺陷,所以8570在Office Word上利用的實際效果要比0199好很多,但POC構造相對較難,這也是一開始沒有發現野外利用的原因之一。 

樣本分析

該漏洞還處于未被利用或尚無已知利用的狀態:

CVE-2017-8570的野外樣本及漏洞分析是怎樣的

直到2018年1月11日左右,360威脅情報中心才首次發現野外第一個利用CVE-2017-8570的RTF樣本,隨后利用CVE-2017-8570漏洞的攻擊樣本逐漸增多,我們選擇最近出現的一個真實攻擊樣本進行分析。

野外利用的RTF樣本分析

由于真實的CVE-2017-8570漏洞攻擊樣本在本月前幾乎未出現過,所以相關殺軟對該漏洞的檢出率還不夠理想,以我們接下來分析的攻擊樣本在VirusTotal上的查殺情況來看,57家殺軟中只有11家能夠查殺:    

CVE-2017-8570的野外樣本及漏洞分析是怎樣的    

惡意RTF樣本分析:    

樣本利用了RTF文檔在VISTA以后的系統中會自動釋放Package對象到%tmp%目錄的特性,在文檔將惡意Scriptletfile(.sct)腳本文件以Package對象的方式插入,在受害者打開RTF文檔后,Package對象中的Scriptletfile(.sct)腳本文件會自動釋放到%tmp%目錄下

樣本插入了兩個關鍵的Objdata,其中一個是Package對象,包含的其實是一個Scriptletfile(.sct)腳本文件:

CVE-2017-8570的野外樣本及漏洞分析是怎樣的

另一個則是包含了CVE-2017-8570漏洞的OLE2Link對象:    

CVE-2017-8570的野外樣本及漏洞分析是怎樣的    

打開RTF文檔后,自動釋放Package對象到%tmp%目錄,插入的Package對象實際上是一個惡意Scriptletfile(.sct)腳本文件    

CVE-2017-8570的野外樣本及漏洞分析是怎樣的    

另一個OLE2Link對象用來觸發漏洞,漏洞觸發成功后會直接加載%tmp%目錄下的MUZTWOWEZTHOBKW.sct腳本執行

包含漏洞的OLE2Link對象中使用了Composite Moniker來將“綁定”一個File Moniker,而File Moniker顧名思義會指定一個文件,漏洞樣本中的File Moniker指定的是本地%tmp%目錄中的sct腳本文件,而該sct腳本文件恰好是Package對象中釋放出來的:

CVE-2017-8570的野外樣本及漏洞分析是怎樣的    

FileMoniker檢測到加載的文件后綴是.sct后,通過COM接口加載執行Scriptletfile腳本文件 

Payload

分析發現樣本使用的Payload是FormBook遠控軟件,FormBook是一款以竊密為主的遠程控制軟件。FireEye曾報道過有APT組織使用FormBook作為Payload針對美韓航空航天公司、國防承包商與部分制造企業展開網絡釣魚攻擊。

樣本使用了VB編寫,運行后首先以掛起狀態創建一個新的自身進程,之后解密出真正的惡意代碼,再使用ZwWriteVirtualMemory將惡意代碼寫入到剛創建的傀儡進程中,最后啟動傀儡進程執行惡意代碼。傀儡進程首先遍歷進程列表查找Explorer.exe,并使用NtMapViewOfSection向Explorer.exe注入ShellCode:

CVE-2017-8570的野外樣本及漏洞分析是怎樣的

Explorer中注入的ShellCode會在%systemroot%\system32下隨機選取一個exe文件再次以傀儡進程的方式注入ShellCode,新的傀儡進程會刪除原始病毒樣本,并重新向Explorer.exe注入ShellCode,該ShellCode 為最終的執行的惡意代碼。之后惡意代碼會連接C&C服務器,以Get方式發送連接請求:    

CVE-2017-8570的野外樣本及漏洞分析是怎樣的    

通過判斷C&C指令以及特殊的“FBNG”字符串標志來執行對應的木馬功能:    

CVE-2017-8570的野外樣本及漏洞分析是怎樣的    

接收指令以及對應的木馬功能:    

功能編號 功能說明
1下載執行
2木馬版本更新
3自清除
4利用ShellExecute執行命令
5清除瀏覽器Cookie
6重啟
7關機
8收集瀏覽器密碼,屏幕截圖
9下載ZIP文件

木馬執行流程    

CVE-2017-8570的野外樣本及漏洞分析是怎樣的    

Exploit來源

2018年1月9日,有安全研究人員在GitHub上(https://github.com/rxwx/CVE-2017-8570)上傳了CVE-2018-8570的漏洞利用構造工具,360威脅情報中心通過分析確認該工具的確為針對CVE-2018-8570的Exploit構造工具,并且捕獲到的攻擊樣本幾乎都是使用該工具生成。

考慮到漏洞相關的技術細節和驗證程序已經公開,所以此漏洞接下來極有可能被利用來執行大規模的攻擊。

漏洞分析

漏洞概述

微軟在2017年7月的安全更新中修復了這個針對Office的遠程命令執行漏洞(CVE-2017-8570),該漏洞實際上是利用了Office OLE中的Composite Moniker對象在組合File Moniker對象的過程中,未做安全性檢測,將File Moniker對象指定的遠程/本地的ScriptletFile(.sct)腳本文件在Office中直接執行。

微軟修復CVE-2017-0199實際上是在Office中禁用了htafile對象和script對象,而沒有禁用ScriptletFile對象,由于通過Composite Moniker的方式可以執行ScriptletFile(.sct)腳本,相當于繞過了CVE-2017-0199的補丁修復,所以在針對CVE-2017-8570的補丁修復中,微軟禁用了ScriptletFile對象:

2017年4月,修復CVE-2017-0199,禁用htafile對象和script對象    

禁用的CLSIDProgIDCVE
{3050F4D8-98B5-11CF-BB82-00AA00BDCE0B}htafileCVE-2017-0199
{06290BD3-48AA-11D2-8432-006008C3FBFC}scriptCVE-2017-0199

2017年7月,修復CVE-2017-8570,禁用ScriptletFile對象    

禁用的CLSIDProgIDCVE
{06290BD2-48AA-11D2-8432-006008C3FBFC}
ScriptletFile CVE-2017-8570

Composite Moniker

Composite Moniker對象的作用是可以將某個Moniker對象定義為一個新的Moniker對象(NewMoniker),或者將多個Moniker對象進行組合,比如可以使用Composite Moniker對象將兩個File Moniker對象組合成一個。假設Composite Moniker對象包含了兩個File Moniker對象:

File Moniker 1:"c:\work\art"File Moniker 2:"..\backup\myfile.doc"

通過Composite Moniker對象進行組合后,相當于得到了一個帶有完整文件路徑的File Moniker對象:"c:\work\backup\myfile.doc"。

在觸發漏洞的樣本中有三個Moniker對象,分別是:

Composite Moniker:{00000309-0000-0000-C000-000000000046}File Moniker:{00000303-0000-0000-C000-000000000046}New Moniker:{ECABAFC6-7F19-11D2-978E-0000F8757E2A}

樣本中的Composite Moniker將File Moniker定義為了一個New Moniker新對象:

CVE-2017-8570的野外樣本及漏洞分析是怎樣的

執行ScriptletFile腳本

CompositeMoniker在將File Moniker定義為一個New Moniker新對象的過程中,會調用IMoniker::BindToObject方法將File Moniker進行Bind操作,IMoniker::BindToObject函數原型如下:

HRESULT BindToObject( [in]  IBindCtx *pbc, [in]  IMoniker *pmkToLeft, [in]  REFIID   riidResult, [out] void     **ppvResult );

pmkToLeft則指向File Moniker,File Moniker在樣本中指定的文件為:%tmp%\MUZTWOWEZTHOBKW.sct,而由于FileMoniker需要初始化指定的文件,對象在檢測到文件后綴后.sct后,會自動在注冊表中查找處理.sct文件的接口:

確定.sct后綴

CVE-2017-8570的野外樣本及漏洞分析是怎樣的    

關聯scriptletfile的CLISD    

CVE-2017-8570的野外樣本及漏洞分析是怎樣的    

定位處理接口    

CVE-2017-8570的野外樣本及漏洞分析是怎樣的    

查找到處理.sct文件的處理接口后,調用對應的接口啟動.sct腳本執行環境,并執行腳本,棧回溯顯示整個流程執行過程:    

0:000> kChildEBP RetAddr 0037abe8 62e048ffjscript!CScriptRuntime::Run  <-- 執行.sct腳本0037ace4 62e04783 jscript!ScrFncObj::CallWithFrameOnStack+0x15f0037ad3c 62e04cc3jscript!ScrFncObj::Call+0x7b0037ade0 62e13797jscript!CSession::Execute+0x23d0037ae2c 62e10899jscript!COleScript::ExecutePendingScripts+0x16b0037ae48 6c61831fjscript!COleScript::SetScriptState+0x510037ae58 6c618464scrobj!ScriptEngine::Activate+0x1a0037ae70 6c6199d3scrobj!ComScriptlet::Inner::StartEngines+0x6e0037aec0 6c61986escrobj!ComScriptlet::Inner::Init+0x1560037aed0 6c61980bscrobj!ComScriptlet::New+0x3f0037aef0 6c6197d0 scrobj!ComScriptletConstructor::CreateScriptletFromNode+0x260037af10 6c623b7escrobj!ComScriptletConstructor::Create+0x4c0037af3c 6c612946scrobj!ComScriptletFactory::CreateInstanceWithContext+0x1150037af58 53c464bescrobj!ComBuiltInFactory::CreateInstance+0x190037afac 7601b573comsvcs!CNewMoniker::BindToObject+0x14f  <--New Moniker0037afe0 76083d8eole32!CCompositeMoniker::BindToObject+0x105  <-- Composite Moniker定義File Moniker0037b04c 31a82c6aole32!CDefLink::BindToSource+0x1bfWARNING: Stack unwind information notavailable. Following frames may be wrong.0037b090 3152f55ewwlib!wdGetApplicationObject+0x6cd2f0037b120 31473477wwlib!DllGetClassObject+0x158a4c0038031c 314667efwwlib!DllGetClassObject+0x9c965003831e03146501f wwlib!DllGetClassObject+0x8fcdd

漏洞成因

由于整個處理過程都沒有進行安全檢測(是否可以執行可能包含惡意代碼的腳本),但其中的每一個步驟單獨看來都沒有安全問題:Composite Moniker將File Moniker定義為New Moniker、File Moniker按照正常的流程識別加載.sct文件等等,但是將所有環節組合起來卻導致了安全隱患,這是導致該漏洞的問題所在。    

彌補CVE-2017-0199的天生缺陷

CVE-2017-0199漏洞利用的方式有兩種,一種是在Office Word文檔中利用,一種是在Office幻燈片中利用。已經公開的Office Word文檔中利用方法主要是通過漏洞執行.hta腳本,360威脅情報中心分析發現,其實大部分操作系統由于各種原因已經在注冊表中對ActiveX控件執行.hta腳本的COM接口設置了killbit,也就是即使沒有打上CVE-2017-0199漏洞補丁,在Office Word文檔中也無法執行.hta腳本:    

CVE-2017-8570的野外樣本及漏洞分析是怎樣的    

這使得CVE-2017-0199漏洞在Office Word文檔中的利用威脅并不大,然而CVE-2017-8570漏洞利用執行的.sct腳本對應的COM接口卻并未被禁止,所以CVE-2017-8570在Office Word文檔中的威脅要比CVE-2017-0199大很多。    

防護建議

補丁修復

軟件廠商微軟已經發布了漏洞相應的補丁,360威脅情報中心建議用戶及時更新Office補丁修復漏洞:

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

禁用“Package” ActiveX Control

360威脅情報中心監控到利用RTF文檔自動釋放惡意Package對象到%tmp%目錄的特性進行Office漏洞攻擊的樣本越來越多,包括最近的CVE-2017-11882等漏洞利用也使用了該技巧,所以360威脅情報中心建議用戶如果不需要使用插入Package對象這類功能,可以在注冊表中通過設置killbit的方式禁用,以封堵這類攻擊入口:    

執行命令行命令 說明
reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\Common\COM Compatibility\{F20DA720-C02F-11CE-927B-0800095AE340}" /v "Compatibility Flags" /t REG_DWORD /d 0x40032位系統版本或64位系統中的64位版本
reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Office\Common\COM Compatibility\{F20DA720-C02F-11CE-927B-0800095AE340}" /v "Compatibility Flags" /t REG_DWORD /d 0x40064位系統中的32位版本

從360威脅情報中心捕獲到的樣本來看,CVE-2017-8570漏洞利用樣本公開使用后,馬上就進入被頻繁使用的狀態,并且由于沒有CVE-2017-0199在Office Word中利用的“缺陷”,相信后續會有更多攻擊者使用CVE-2017-8570替代CVE-2017-0199進行漏洞攻擊。360威脅情報中心再次提醒用戶,盡量不要打開來源不明的文檔,也可以使用360安全衛士之類的防病毒軟件對文檔進行掃描后再打開以盡可能降低風險。   

以上就是CVE-2017-8570的野外樣本及漏洞分析是怎樣的,小編相信有部分知識點可能是我們日常工作會見到或用到的。希望你能通過這篇文章學到更多知識。更多詳情敬請關注億速云行業資訊頻道。

向AI問一下細節

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

AI

加查县| 安西县| 固阳县| 肥城市| 邮箱| 青阳县| 石阡县| 临朐县| 明光市| 高雄县| 宝山区| 周口市| 鲁山县| 奎屯市| 平定县| 衡阳市| 林芝县| 壶关县| 定兴县| 阿尔山市| 永康市| 长垣县| 霍州市| 溆浦县| 灌南县| 六枝特区| 张家口市| 湄潭县| 岐山县| 宣武区| 德清县| 巴青县| 琼结县| 普定县| 得荣县| 广元市| 仁怀市| 瑞丽市| 新兴县| 鲁山县| 景宁|