6月中旬,Malwarebytes Labs的研究人員發現了一個偽裝成簡歷的惡意Word文檔,該文檔使用模板注入來刪除.Net Loader。研究人員認為這是與APT攻擊有關的多階段攻擊的第一部分。在最后階段,威脅行動者使用了Cobalt Strike’s Malleable C2功能來下載最終的有效載荷并執行C2通信。
此攻擊特別“聰明”是因其規避技術。例如,研究人員觀察到在惡意Word宏執行有效payload時有故意延遲。這種攻擊的目標不是立即損害受害者,而是要等他們重新啟動計算機后再進行攻擊。另外,通過將shellcode隱藏在無害的JavaScript中并且不接觸磁盤的加載它,該APT可以進一步逃過安全產品的檢測。?
一、誘使延遲代碼執行
誘餌文件可能是通過魚叉式網絡釣魚電子郵件分發的,該電子郵件是據稱是“ Anadia Waleed”的人的簡歷。起初,原作者認為它的目標是印度,但目標受害者可能會更廣泛。
圖1:簡歷
惡意文檔使用模板注入,從以下URL下載遠程模板:
https://yenile[.]asia/YOOMANHOWYOUDARE/indexb.dotm
圖2:模版注入
用于托管遠程模板的域名于2020年2月29日由來自香港的某人注冊,該文檔的創建時間是在此域名注冊后15天。
下載的模板“ indexa.dotm”具有一個包含五個函數的嵌入式宏:
Document_Open
VBA_and_Replace
Base64Decode
ChangeFontSize
FileFolderExist.
下面是嵌入宏的函數調用圖:
圖3:宏函數圖
主要函數是DOCUMENT_OPEN,它在打開文件時執行。此函數將三個文件放入受害者的計算機:
Ecmd.exe?UserForm1和UserForm2包含兩個Base64編碼的有效payload。根據受害者計算機上安裝的.Net框架的版本,UserForm1(對于.Net v3.5)或UserForm2(其他版本)的內容將被解碼并存儲在“ C:\ ProgramData”中。
cf.ini?“cf.ini”文件的內容是從UserForm3提取的,并且使用AES加密,稍后由ecmd.exe解密。
ecmd.exe.lnk?這是“ ecmd.exe”的快捷文件,在Base64解碼UserForm4的內容后創建。該文件作為觸發器和持久性機制放置在“啟動”目錄中。只有在計算機重新啟動后,才會執行Ecmd.exe。?
圖4:DOCUMENT_OPEN
圖5:自定義base64解碼函數
ChangeFontSize和VBA_AND_REPLACE函數不是惡意的,可能是從公共資源[1,2]復制來誤導靜態掃描程序。
公共資源1,2:
http://www.your-save-time-and-improve-quality-technologies-online-resource.com/vba-and-replace.html
https://www.vitoshacademy.com/vba-ms-word-tricks-with-vba/
二、中間裝載機
Ecmd.exe是偽裝成ESET命令行實用程序的.Net可執行文件。下圖顯示了二進制證書、調試器和版本信息。該可執行文件已使用無效的證書簽名以模擬ESET,其版本信息顯示這是一個“ESET命令行界面”工具(圖6-圖8)。
圖6:證書信息
圖7:版本信息
圖8:調試信息
ecmd.exe是一個小型加載程序,用于解密和執行前面提到的AES加密的cf.ini文件。它通過向“http://ip-api.com/xml”發出HTTP post請求來檢查受害者機器所在國家。然后,它解析XML響應數據并提取國家代碼。
圖9:Getcon函數:向“ip-api.com”發出http post請求
圖10:ip-api.com?輸出
如果國家代碼是“RU”或“US”,則退出;否則,它開始使用硬編碼密鑰和IV對解密“cf.ini”的內容。
圖10:ecmd.exe主函數
解密的內容被復制到分配的內存區域,并使用VirtualAlloc和CreateThread API作為新線程執行。
圖11:runn函數
三、ShellCode (cf.ini)
可擴展C2是攻擊者為了避免被發現而混淆指揮和控制通信(受害者和服務器之間的信標)的一種方式,可以為每個目標創建自定義配置文件。
shell代碼使用帶有jQuery可延展性C2配置文件的Cobalt Strike可延展性C2特性從“time.updateeset[.]com”下載第二個有效payload。
圖12:可延展的C2請求
Shellcode首先使用PEB查找ntdll.exe的地址,然后調用LoadLibrayExA加載Winint.dll。然后它使用InternetOpenA,InternetConnectA,HttpOpenRequestA,InternetSetOptionA和HttpSendRequestA API來下載第二個有效payload。
API調用在兩個循環內解析,然后使用跳轉到解析的API調用的地址來執行。
圖13:構建API調用
惡意payload由InternetReadFile下載并復制到分配的內存區域。
圖14:InternetReadFile
考慮到通信是通過HTTPS進行的,Wireshark并不能發現惡意payload,Fiddler也不能提供有效payload。
圖15:Fiddler輸出
使用BurpSuite代理,能夠成功驗證并捕獲從time.updateeset[.]com/jquery-3.3.1.slim.min.js下載的正確有效payload。如圖16所示,有效payload包含在HTTP響應中返回的jQuery腳本中:
圖16:發生在jQuery末尾的有效負載
將有效payload復制到內存中的緩沖區后,shellcode跳到緩沖區的開始處并繼續執行。這包括向“time.updateeset[.]com/jQuery-3.3.1.min.js”發送連續的信標請求,并等待來自C2的潛在命令。
圖17:C2通信
使用Hollow Hunter,我們能夠從ecmd的存儲空間中提取最終的有效payload,即Cobalt Strike。
四、溯源
這起攻擊的確切溯源分析正在進行中,在這里提供一些關于誰可能是這起攻擊的幕后黑手的見解。分析顯示,襲擊者排除了俄羅斯和美國。前者可能是一個虛假的信號,而后者可能是為了避免美國惡意軟件分析師的注意。
如前所述,托管遠程模板的域名是在香港注冊的,而C2域名“time.updateeset[.]com”是在2020年2月29日以一家名為Ehtesham Rayan的伊朗公司的名稱注冊的。該公司過去提供反病毒軟件,現在似乎已經關閉。然而,這些都不是強有力或可靠的溯源指標。
圖18:updateeset.com whois注冊信息
IOCs
Anadia Waleed?resume.doc
259632b416b4b869fc6dc2d93d2b822dedf6526c0fa57723ad5c326a92d30621
Remote Template: indexa.dotm
7f1325c5a9266e649743ba714d02c819a8bfc7fd58d58e28a2b123ea260c0ce2
Remote Template Url:
https://yenile[.]asia/YOOMANHOWYOUDARE/
C2:
time.updateeset[.]com
Ecmd.exe:
aeb4c3ff5b5a62f5b7fcb1f958885f76795ee792c12244cee7e36d9050cfb298
dcaaffea947152eab6572ae61d7a3783e6137901662e6b5b5cad82bffb5d8995
5f49a47abc8e8d19bd5ed3625f28561ef584b1a226df09d45455fbf38c73a79c
cf.ini:0eba651e5d54bd5bb502327daef6979de7e3eb63ba518756f659f373aa5f4f8b
Cf.ini shell-code after decryption:5143c5d8715cfc1e70e9db00184592c6cfbb4b9312ee02739d098cf6bc83eff9
Cobalt Strike downloaded shellcode:8cfd023f1aa40774a9b6ef3dbdfb75dea10eb7f601c308f8837920417f1ed702
Cobalt Strike payload7963ead16b6277e5b4fbd5d0b683593877d50a6ea7e64d2fc5def605eba1162a
原文:https://blog.malwarebytes.com/threat-analysis/2020/06/multi-stage-apt-attack-drops-cobalt-strike-using-malleable-c2-feature/
編譯:CNTIC情報組
本文為CNTIC編譯,不代表本公眾號觀點,轉載請保留出處與鏈接。
聯系信息進入公眾號后點擊“論壇信息”可見。