压在透明的玻璃上c-国产精品国产一级A片精品免费-国产精品视频网-成人黄网站18秘 免费看|www.tcsft.com

一起針對中國某攝像頭企業(yè)的超復(fù)雜惡意軟件攻擊分析

一、概 述

近期,啟明星辰ADLab捕獲到一起以某攝像頭公司為目標(biāo)的攻擊活動,該攻擊活動所使用的攻擊載荷異常復(fù)雜,遠(yuǎn)超尋常攻擊。為了查明該攻擊來源及其載荷的技術(shù)實(shí)現(xiàn),我們對其進(jìn)行了深入的技術(shù)分析和溯源追蹤分析。通過分析,我們發(fā)現(xiàn)該攻擊在多個(gè)維度上都采用了高強(qiáng)度的對抗手段以防止被逆向工程,同時(shí)采用了多模塊多階段的內(nèi)嵌式套娃模式,其中包含多達(dá)10個(gè)環(huán)環(huán)相扣層層相嵌的Loader和DLL模塊,這些模塊依賴大量對抗手段在內(nèi)存中不落地的解密執(zhí)行。無論是靜態(tài)分析對抗還是動態(tài)分析對抗都使逆向工程變得極其困難,比如其將所有類型、字段、屬性、方法等進(jìn)行了名稱混淆,資源數(shù)據(jù)和相關(guān)配置信息、字符串也均通過動態(tài)加解密實(shí)現(xiàn),并基于“spaghetti code”的控制流混淆使得控制流程無比復(fù)雜;而為了對抗動態(tài)分析,惡意軟件的執(zhí)行流中始終貫穿著毫無規(guī)律的垃圾指令和無序跳轉(zhuǎn),同時(shí)采用動態(tài)代理技術(shù)來封裝和隱藏類、方法和成員,并基于“Protobuf”庫對結(jié)構(gòu)化數(shù)據(jù)進(jìn)行二進(jìn)制序列化,使得數(shù)據(jù)交換更加隱蔽。

這次攻擊活動的目標(biāo)企業(yè)是一家提供攝像頭和智慧物聯(lián)解決方案的中國企業(yè)。攻擊者偽裝成該企業(yè)的客戶(國內(nèi)某印染公司),以訂購產(chǎn)品為由向該公司服務(wù)支持部門投遞竊密木馬以試圖竊取該公司重要數(shù)據(jù)和敏感信息。黑客通過利用HTML smuggling方式在目標(biāo)主機(jī)中投放惡意軟件以躲避郵件網(wǎng)關(guān)檢測,惡意軟件通過復(fù)雜執(zhí)行邏輯后啟用竊密木馬。

通過長達(dá)一個(gè)多月的逆向工程,我們才得以提取出核心木馬,并確定其家族歸屬PureLogs竊密木馬,同時(shí)通過溯源關(guān)聯(lián)分析確認(rèn)該木馬采用的loader為PureCrypter,這兩款惡意代碼是最近兩年才出現(xiàn)的新型攻擊框架,它們均由同一個(gè)公司開發(fā)且共用大部分的對抗技術(shù)。PureLogs是一款新型竊密木馬,該木馬曾在去年12月針對意大利的攻擊中首次被發(fā)現(xiàn),其可以竊取各類瀏覽器、加密錢包和應(yīng)用程序中的敏感數(shù)據(jù)。

通過溯源分析我們發(fā)現(xiàn)這款復(fù)雜的惡意軟件保護(hù)程序也曾經(jīng)被包括PureLogs、Formbook、AgentTesla、SnakeKeylogger、Redline、AsyncRAT、WarzoneRAT、Remcos在內(nèi)的多款惡意軟件所使用,但由于其保護(hù)的程序極為復(fù)雜,因此極少有團(tuán)隊(duì)對PureCrypter保護(hù)過的惡意軟件進(jìn)行分析。此外,對于竊密木馬PureLogs,我們發(fā)現(xiàn)的此次攻擊也是該竊密木馬首次被用于針對中國企業(yè)的網(wǎng)絡(luò)攻擊活動。

此外,在我們對Loder PureCrypter的傳播鏈進(jìn)行溯源追蹤過程中還發(fā)現(xiàn)了“黑雀”攻擊的現(xiàn)象。“黑雀”攻擊是黑客產(chǎn)業(yè)鏈中非常有趣的一種高級黑吃黑現(xiàn)象,這種攻擊將供應(yīng)鏈攻擊思路應(yīng)用于黑客產(chǎn)業(yè)鏈中,用以控制或者獲取下游黑客的攻擊資源或攻擊成果。在PureCrypter的“黑雀”攻擊中,一些上游黑客在源碼項(xiàng)目內(nèi)植入惡意程序并通過Github、地下論壇等渠道提供給黑客使用,以此坐收漁利。有關(guān)“黑雀”攻擊更多的案例和分析文章可以參考啟明星辰ADLab發(fā)布的報(bào)告《黑雀攻擊-揭秘Death僵尸網(wǎng)絡(luò)背后的終極控制者》、《黑雀攻擊:揭秘BillGates僵尸網(wǎng)絡(luò)中的黑雀現(xiàn)象》、《黑雀攻擊:揭秘TF僵尸物聯(lián)網(wǎng)黑客背后的黑客》、《黑雀攻擊:深入分析并溯源Dofloo僵尸物聯(lián)網(wǎng)背后的”黑雀”》。

二、溯源與關(guān)聯(lián)分析

2.1 攻擊活動分析

在本次攻擊活動中,攻擊者偽裝成國內(nèi)某印染公司向目標(biāo)企業(yè)投放攻擊郵件,相關(guān)攻擊示例如下所示。攻擊郵件主題為“Revised Order 20230025-03647”(修改后的訂單20230025-03647),正文包括增加訂購產(chǎn)品的描述以及公司聯(lián)系方式。附件是名為“20230025-03647.html”的網(wǎng)頁文件,受害者打開后會通過HTML smuggling的方式打開瀏覽器并脫機(jī)下載壓縮文件“20230025-03647”,其解壓后是名為“20230025-03647”的惡意可執(zhí)行程序。

圖1:釣魚郵件

通過對該樣本的C2服務(wù)器45.80.192.226進(jìn)行追溯,我們進(jìn)一步關(guān)聯(lián)到更多相關(guān)的攻擊活動。這批攻擊在手法上普遍采用HTML smuggling的方式傳輸惡意軟件。HTML smuggling是一種利用HTML5和JavaScript的隱匿攻擊手法,攻擊者制作帶有惡意JavaScript腳本的HTML網(wǎng)頁,并發(fā)送含有URL或附件的釣魚郵件,誘使用戶點(diǎn)擊并打開附件。當(dāng)收件人打開郵件中的HTML文件時(shí),瀏覽器解碼JavaScript、加載網(wǎng)頁并彈出下載提示,點(diǎn)擊保存后包含惡意程序的壓縮包會釋放到目標(biāo)系統(tǒng)中,從而躲避郵件網(wǎng)關(guān)和安全軟件等的檢測。通常來說,釣魚郵件的HTML附件大多以釣魚網(wǎng)頁為主,HTML文件本身是無害的,攻擊者會通過模仿各類公司網(wǎng)站、社交平臺、郵箱等的登陸界面來釣取用戶賬戶憑證。而近年來越來越多的出現(xiàn)了“HTML smuggling”攻擊,尤其是在微軟開始默認(rèn)阻止在線文檔中的宏執(zhí)行后變得更加流行,包括APT29、NOBELIUM等黑客組織近年來都在頻繁使用HTML smuggling策略以繞過檢測。以下是觸發(fā)攻擊的執(zhí)行流程示意圖。

圖2:攻擊執(zhí)行流程

圖3:HTML代碼示例

相關(guān)攻擊活動涉及的部分HTML文件及ZIP文件包如下表所示。

表1:誘餌文件

誘餌文件 Hash
PO4500043116.html 3cafd0cbc8a260da84b4a7f0690cf4d90b4db93c39ddba473f02d225c84cee42
SC450013227.html 8f8ae0659ac0c55a6ced6d38f8b6fa0efc3ae9ca528020e3b9ef8c7542973a94
NO20237188.html b577f7e2e682035e0bae170b9c5dc4d47a15bd98d947dc91653ae80cf8a2514e
SC23200816.z 04cb439abc5ef187d36a45d320d35c6b9ad3e2f8dfa06eb5821025733706952f
INV_00872023.z 7d99a47f7d0318e8076728d266374a4c5286abc06099e05144d2b6da8af897bb
SC23200814.z 7fa534c2586560eacfe1ba58e9e6e412dc3586ab059da922fc9a52c219144588
……

解壓ZIP包后釋放出攻擊樣本,部分解壓釋放的攻擊樣本如下圖所示。相關(guān)惡意樣本的圖標(biāo)被偽裝成Adobe Reader和Excel等常見軟件的圖標(biāo),普通用戶往往難以辨別真?zhèn)巍_@批惡意軟件在命名上普遍采用了PO(Purchase Order客戶采購訂單)、SC(Sales Confirmation銷售確認(rèn)書)、INV(Inventory庫存)等訂單相關(guān)的命名前綴,因此也說明黑客主要利用“商貿(mào)信”相關(guān)題材實(shí)施攻擊,目標(biāo)則主要是以商品銷售為主營業(yè)務(wù)的企業(yè)或公司。

圖4:惡意樣本圖標(biāo)

其中,這批攻擊樣本主要采用了兩類加載方式:一類樣本通過Loader(如PureCrypter)下載后續(xù)的惡意代碼并多層解密后執(zhí)行;另一類樣本則直接從資源中釋放后續(xù)惡意代碼并解密執(zhí)行。大部分樣本采用第一類下載執(zhí)行的方式,并會從weim.us域下載后續(xù)的惡意代碼,部分關(guān)聯(lián)的下載URL如下表所示。

表2:下載URL

下載URL
https://weim.us/Wraxnkwaa.pdf
https://weim.us/Ukdmsuvndi.vdf
https://weim.us/Ugwiuid.wav
https://weim.us/Eatfh.mp3
https://weim.us/Xstaoqwfh.dat
https://weim.us/Nphmq.dat
https://weim.us/Tagduvuddz.vdf
https://weim.us/Xqbyixrreq.vdf
https://weim.us/Lcogei.wav
https://weim.us/Xbkdjf.mp3
https://weim.us/Ktyyrgmbvhs.vdf
https://weim.us/Bedzbgtqrg.mp3
https://weim.us/Tngnzkzeiz.mp3
https://weim.us/Qjacaa.mp4
https://weim.us/Mujvrsqrdw.pdf
……

2.2 Loader中的“黑雀”攻擊分析

“黑雀”攻擊是一種具有針對性且高效的攻擊方式,主要以黑客或者黑色產(chǎn)業(yè)鏈中的參與者為目標(biāo)。其攻擊目標(biāo)通常具有豐富的黑客資源,可以幫助幕后受益者黑雀獲取更大的攻擊資源,享用別人的攻擊成果。我們在追蹤攻擊的過程中意外發(fā)現(xiàn)了PureCrypter傳播鏈中的“黑雀”攻擊現(xiàn)象,本節(jié)將對此次攻擊涉及的木馬和相關(guān)的“黑雀”攻擊進(jìn)行介紹。

在此次攻擊活動中,攻擊者至少使用了PureCrypter和PureLogs木馬組合實(shí)施攻擊。其中PureCrypter最早于 2021年3月出現(xiàn),其支持分發(fā)多種惡意軟件,包括PureLogs、Formbook、AgentTesla、SnakeKeylogger、Redline、AsyncRAT等在內(nèi)的多個(gè)惡意家族。

PureLogs則是該工具背后的開發(fā)組織PureCoder在2022 年 12 月新上線的一款新型信息竊取程序,旨在從網(wǎng)絡(luò)瀏覽器、加密錢包和電子郵件客戶端中竊取數(shù)據(jù)。PureLogs每年收費(fèi) 199美元,終身使用為299美元。由于PureLogs發(fā)布尚不足1年,相關(guān)的攻擊事件也較為少見。在PureCoder的官方介紹中,其提供的產(chǎn)品包括Pure Crypter(代碼加載、混淆加密等)、Pure Logs(信息竊取)、Pure Miner(挖礦程序)、Blue Loader(僵尸網(wǎng)絡(luò))、Pure hVNC(VNC程序)等多種工具,下圖為其產(chǎn)品截圖和售價(jià)。

圖5:PureCoder售賣的工具

PureCoder的銷售渠道包括產(chǎn)品官網(wǎng)(purecoder.io)、暗網(wǎng)論壇、HACKFORUMS、CRACKED.IO等黑客論壇,開發(fā)者還通過Telegram和Discord建立討論群組。例如其在Telegram的頻道PureCoder Group就已有數(shù)百個(gè)用戶。下圖是討論組(General)內(nèi)的惡意軟件訂購者在交流惡意代碼免殺、存活時(shí)間以及感染量等話題。

圖6:討論組內(nèi)惡意軟件訂購者的交流信息

我們在進(jìn)一步的追蹤過程中,意外的在Github上發(fā)現(xiàn)了一個(gè)被植入后門的源代碼項(xiàng)目,項(xiàng)目主頁為:https://github.com/CoderLadyTeam。

圖7:植入后門的源代碼項(xiàng)目

攻擊者創(chuàng)建了名為Pure-Crypter-ADVANCED-INJECTION-TECHNOLOGY-64BIT-32BIT-Anti-Delete-main的項(xiàng)目并引誘尋找PureCrypter源碼、破解、試用等版本的黑客下載編譯。其將木馬偽裝成visual studio的解決方案sln文件的圖標(biāo)從而誘騙用戶打開(實(shí)際是后綴為.scr的惡意程序)。下圖為惡意源碼的文件目錄,由于visual studio對系統(tǒng)配置要求較高,大部分開發(fā)者會安裝在本機(jī)而非虛擬機(jī)內(nèi)使用,因此這類偽裝成VS項(xiàng)目文件的惡意程序攻擊成功率極高。

圖8:項(xiàng)目結(jié)構(gòu)

當(dāng)黑客打開Pure Crypter Leak_nls.程序后,木馬會回連Discord的CDN(cdn.discordapp.com),并通過Discord的文件存儲網(wǎng)絡(luò)下載后續(xù)木馬。下載鏈接如下:

https://cdn[.]discordapp[.]com/attachments/1014017847183286272/1157998889182437416/WindowsUpSetting.scr?ex/WindowsUpSetting.exe

后續(xù)階段在此不做更多分析,我們針對Pure Crypter Leak_nls程序進(jìn)一步關(guān)聯(lián)后,發(fā)現(xiàn)攻擊者不僅利用了PureCrypter工具實(shí)施“黑雀”攻擊,還有更多此類被植入惡意程序的工程項(xiàng)目如下表。

表3:惡意源代碼工程

源代碼工程項(xiàng)目 Hash
Pure-Crypter-ADVANCED-INJECTION-TECHNOLOGY-64BIT-32BIT-Anti-Delete-main.zip 2C359289F0DF5A5816E08A1AE4F53F47
Escape-from-Tarkov-External-Esp-Aimbot-Hack-Cheat-main.zip 1457799905135f4b0d22c700ad706bba
Rainbow-Six-Siege-Rs6-External-Esp-Aimbot-Hack-Cheat-main.zip cdd5f926c03d48b2bc93cc07d771b1e0
Full-Permanent-Spoofer-shadow-ban-remover-main.zip 48465ded994461d228b6cc9204cf719f
……

同時(shí),類似的攻擊也出現(xiàn)在地下黑客論壇中,如https://sinister.ly/Thread-Leak-Pure-Crypter-Best-Fud-Crypter-On-The-Market-Cracked。

圖9:地下論壇中的惡意源碼項(xiàng)目

攻擊者采用了相似的手法在工程項(xiàng)目中植入Pure Crypter Leak_nls惡意程序,不同的是此次攻擊采用了一款.net編寫的木馬,因此我們推測兩次攻擊有可能源自不同的攻擊者。

圖10:項(xiàng)目結(jié)構(gòu)

通過Pure Crypter Leak_nls程序進(jìn)行關(guān)聯(lián)同樣可以發(fā)現(xiàn)大量被植入惡意程序的黑客工具項(xiàng)目源碼。

表4:惡意源代碼工程

源代碼工程項(xiàng)目 Hash
Discord-Simple-Token-Grabber-V1-main.zip 454cc03e8e47733f5b0f7901e8e27285
Fortnite-Hack-Esp-Exploits-With-Menu-main.zip d1f6ec9b99b04dea8c8f53c7f30cea01
Overwatch-External-Esp-Aimbot-Hack-Cheat-main.zip df6ef6f5c605fc9e485916d206b078c4
Exodus-Exploit-Stealer-Login-Bypass-Hack-Any-Account-main.zip 48d532d829ed5332610344d9fa9e6814
Pure Crypter 1.zip 3c47b4ba36d357a737fcb90b94437e5a
Dll-Injector-Eac-Be-Work-All-Games-Fast-LoadLibrary-main.zip 91476cdebd6552450833bf2dd1445908
Discord-Image-Token-Password-Grabber-Exploit-Cve-2022-main.zip 292ae9d6529ffbe4f844b5d5770f949a
Dll-Injector-EAC-BAC-VANGUARD-main.zip 8707381d8208a73f96b6bc3ccf51f4ef
Call-Of-Duty-Warzone-Hwid-Spoofer-Cleaner-Hwid-main.zip eaeb37b3abadf4a9156e9f93c764c125
HWID-SPOOFER-UNDETECTED-main.zip 7044c63a226b4d914fc0f3aabb834541
Hwid-Spoofer-Bios-Hwid-Volume-Permanted-Eac-Be-Anticheats-main.zip 0bbfa8ab23de7135ecae63fa53232a15
Hwid-Spoofer-Fornite-Cleaner-Spoofer-Permanted-main.zip 6f885443826510ef9efd9490eb85eb76
NEW-DLL-INJECTOR-V2-GAME-main.zip 909ebe6f0cba3e9bf21e8264113cfcb9
……

由此可見,PureCrypter的傳播鏈中同時(shí)存在著多種“黑雀”攻擊的現(xiàn)象,同時(shí)這些攻擊又不局限于PureCrypter工具,一些其它的黑客工具也被污染并發(fā)布在Github或各類地下論壇中傳播。因此,我們認(rèn)為相關(guān)攻擊是黑客產(chǎn)業(yè)鏈中一種相對廣泛的“黑雀”攻擊活動。借助這些高效的黑吃黑手段,上游攻擊者可以迅速掌握大量普通黑客的攻擊資源,但同時(shí)這也給相關(guān)的攻擊活動帶來了更多的復(fù)雜性和不確定性。對于中招用戶來說,需要高度警惕在已發(fā)現(xiàn)的攻擊中是否存在“黑雀”隱藏其中,并借助下游黑客的控制權(quán)限實(shí)施更加隱秘的攻擊。

三、攻擊樣本分析

本次攻擊活動涉及到多階段多種模塊攻擊形式,在分析完所有攻擊樣本和攻擊手法后,我們將此次攻擊活動歸類為四個(gè)階段:誘餌投遞、木馬下載、PureCrypter以及PureLogs。整個(gè)流程能夠體現(xiàn)出攻擊者的精密策劃和部署。在捕獲的諸多樣本中,我們選取了較典型的攻擊樣本作為此次的分析案例,接下來我們會從第二階段模塊開始進(jìn)行詳細(xì)的技術(shù)分析,攻擊活動的整個(gè)流程可參考下圖。

圖11:攻擊活動流程圖

從上面的流程圖能夠看到,第一階段的誘餌投遞,攻擊者先將帶有HTML附件的釣魚郵件投遞給受害者。第二階段的木馬下載采用的是HTML smuggling隱匿攻擊手法,當(dāng)受害者打開郵件中的HTML文件時(shí),瀏覽器會彈出下載(/保存)文件提示,點(diǎn)擊保存后木馬則會釋放到目標(biāo)系統(tǒng)中。一旦受害者點(diǎn)擊運(yùn)行木馬(.NET Downloader),流程則會進(jìn)入到第三階段PureCrypter。此時(shí),.NET Downloader模塊會在后臺靜默遠(yuǎn)程下載并以不落地形式在內(nèi)存執(zhí)行Injector模塊。Injector模塊中除了惡意代碼以外,還會通過AES、Reverse(倒置編碼)以及Gzip等方式逐步解密加載其它4個(gè)資源模塊。除此之外,其還會使用Protobuf.Deserialize來存儲和操作惡意軟件的相關(guān)配置信息,并根據(jù)配置信息來決定如何進(jìn)行下一階段的payload注入。在我們本次的攻擊事例中,第三階段的執(zhí)行策略是采用進(jìn)程鏤空技術(shù)將第四階段PureLogs注入到白名單“MSBuild.exe”程序中。第四階段中的Loader主要功能是用來解密加載Logger Stealer,同樣的,Logger Stealer也會使用AES、Reverse(倒置編碼)以及Gzip等方式再次逐步解密加載嵌入式的其它4個(gè)資源模塊。最后,Logger Stealer則向惡意服務(wù)器發(fā)送上線包,并等待接收遠(yuǎn)程指令,以便完成竊密行為。

鑒于惡意軟件具有多階段多模塊的超復(fù)雜特性,我們將各模塊功能做了簡單的概括描述(如表5),詳細(xì)的操作細(xì)節(jié)我們會在接下來的章節(jié)中進(jìn)行深入的分析。

表5:惡意模塊概述表

模塊 類型 功能
第三階段
.NET Downloader EXE 聯(lián)網(wǎng)下載Injector模塊并執(zhí)行解密加載操作(未混淆)
Injector DLL 從自身資源數(shù)據(jù)中解密出Resources1模塊,再從Resources1模塊中解密出其它兩個(gè)模塊。調(diào)用“?.dll”模塊格式化字符串?dāng)?shù)據(jù),使用“protobuf-net.dll”模塊操作和儲存配置信息,最后解密第四階段的“Loader”并將其進(jìn)行注入操作。
Resources1 DLL 用以存儲資源(無代碼的資源模塊)
?.dll DLL 格式化從資源數(shù)據(jù)中解密出的字符串?dāng)?shù)據(jù)信息
protobut-net.dll DLL 存儲和操作惡意軟件的相關(guān)配置信息(白文件)
第四階段
Loader EXE 解密加載Logger Stealer(未混淆)
Logger Stealer DLL 從自身資源數(shù)據(jù)中解密出Resources2模塊,再從Resources2模塊中解密出后續(xù)需要使用的“costura.dll”、“dotnetzip.dll”、“protobuf-net.dll”等3個(gè)模塊,進(jìn)行相關(guān)數(shù)據(jù)的操作。最后連接C2,執(zhí)行竊密等惡意行為。
Resources2 DLL 用以存儲資源(無代碼的資源模塊)
dotnetzip.dll DLL 用來操作ZIP文件的開源庫(白文件)
costura.dll DLL Fody.Costura所使用的庫文件(白文件)
protobuf-net.dll DLL 存儲和操作惡意軟件的相關(guān)配置信息(白文件)

在分析過程中我們發(fā)現(xiàn),第三階段PureCrypter的Injector和PureLogs的Logger Strealer這兩個(gè)模塊采用了各種反分析的高強(qiáng)度混淆手法。

首先,惡意軟件所有的類型、字段、屬性、方法等名稱都使用了名稱混淆(Obfuscation)處理,致使分析人員在閱讀代碼時(shí),難以理解它們的具體功能。資源數(shù)據(jù)和相關(guān)配置信息、字符串方面均以加密并壓縮的方式嵌入到程序集中,僅當(dāng)使用時(shí)再進(jìn)行解壓縮和解密。運(yùn)行環(huán)境如沙箱檢測結(jié)果、互斥體的創(chuàng)建、持久化和注入方式、執(zhí)行自刪除等諸如此類的相關(guān)信息數(shù)據(jù)則采用了protobuf(數(shù)據(jù)結(jié)構(gòu)序列化/反序列化)進(jìn)行操作,protobuf的靈活性不僅能夠定制其專用的數(shù)據(jù)結(jié)構(gòu),還可在不用重新部署的情況下更新此數(shù)據(jù)結(jié)構(gòu),不僅如此,這種儲存方式相當(dāng)于在各數(shù)據(jù)成員的外部進(jìn)行了一層包裹,再配合上名稱混淆處理,促使分析人員無法直觀的查看其所包含的數(shù)據(jù)信息,很難快速了解惡意軟件的功能配置,以及各資源數(shù)據(jù)的實(shí)際內(nèi)容和用途。同時(shí)也能在一定程度上躲避安全軟件的靜態(tài)查殺。

其次,惡意軟件在控制流方面則采用了“spaghetti code”式混淆,修改了方法內(nèi)的執(zhí)行流程,添加了大量的有\(zhòng)\無條件分支、循環(huán),函數(shù)調(diào)用等無用分支等,使控制流程復(fù)雜、混亂而難以理解,在靜態(tài)分析時(shí)則難以判定惡意代碼的結(jié)構(gòu)和真實(shí)執(zhí)行流程,而當(dāng)動態(tài)調(diào)試時(shí),這些大量的無意義垃圾指令、跳轉(zhuǎn)指令又使得分析人員無法快速鎖定關(guān)鍵點(diǎn)進(jìn)行下斷。此外,在大量的方法調(diào)用上,惡意軟件還使用了動態(tài)代理手法,也就是使用代理類來動態(tài)地調(diào)用一些常規(guī)的方法,這也相當(dāng)于將常規(guī)的方法做了封裝和隱藏,如此一來,無論是靜態(tài)還是動態(tài)分析時(shí),分析人員都很難直觀的識別惡意代碼所調(diào)用的類及類方法。由此而極大的耗費(fèi)分析人員大量的時(shí)間和精力。

除此之外,惡意軟件還使用了Fody.Costura(Fody框架下的插件)將可執(zhí)行EXE所需的DLL壓縮并嵌入到程序集中,由此簡化惡意軟件的部署和縮小其文件體積。

此次攻擊樣本除最初的Downloader以外還包含了2個(gè)EXE文件和8個(gè)DLL文件,整體采用了套娃式的多模塊多階段模式,惡意軟件將具有層級關(guān)系的Loader模塊和DLL模塊在內(nèi)存中依照內(nèi)部使用需求逐個(gè)解密加載并執(zhí)行。這種多階段的執(zhí)行流程使惡意軟件更加的復(fù)雜化,且所有的DLL模塊均具有前后依賴關(guān)系,同時(shí)再配合上述各種混淆手段,以致安全人員很難獨(dú)立調(diào)試去混淆后的各模塊,以便有效快速的分析其主要功能。

3.1 木馬下載

木馬的最初下載是由惡意下載頁面完成。查看html源碼我們可以看到,其調(diào)用了eval和atob兩個(gè)函數(shù),eval可以將一個(gè)字符串當(dāng)做JavaScript代碼來執(zhí)行,而atob則可將一個(gè)Base64編碼的字符串解碼成原始的字符串。

圖12:html源碼

在對atob函數(shù)中的字符串進(jìn)行解碼處理后,可看到一段JavaScript執(zhí)行代碼。其主要功能為解碼出PE文件,并將該文件命名為“NO20237188.exe”進(jìn)行保存。具體如下圖所示。

圖13:JavaScript惡意代碼

展示于受害者的惡意頁面效果如下圖所示。

圖14:惡意頁面效果圖

3.2 PureCrypter

“NO20237188.exe”是一個(gè).NET可執(zhí)行文件,經(jīng)過我們詳細(xì)的逆向分析后,最終通過解密出的字符串作為線索判定此次的惡意軟件為PureCrypter家族。PureCrypter是一款使用C#編寫的Loader,由Downloader和Injector兩個(gè)可執(zhí)行文件組成。其中,Downloader是一個(gè)簡單的.NET下載器,主要負(fù)責(zé)下載和在內(nèi)存中執(zhí)行第二階段的Injector。而Injector則為PureCrypter主要的有效載荷,其會解密各種資源模塊并解析與惡意程序設(shè)置相關(guān)的內(nèi)部配置文件,并在最后將用以分發(fā)惡意軟件的PureLogs部分注入到白名單進(jìn)程中(本例被注入進(jìn)程為MSBuild.exe)。下面我們將對PureCrypter各模塊的惡意行為進(jìn)行詳細(xì)的技術(shù)分析。

3.2.1 Downloader模塊

該階段的Downloader模塊相對比較簡單,其惡意代碼未進(jìn)行混淆處理,也未包含環(huán)境檢測和持久化等一系列操作。該模塊通過調(diào)用httpClient的GetAsync方法從控制服務(wù)器下載第二階段Injector模塊。雖然當(dāng)前服務(wù)器下載鏈接已失效,但我們從自有的威脅情報(bào)平臺數(shù)據(jù)庫中成功獲取到了下一階段的Injector(.vbf文件)。當(dāng)Injector被成功下載后,Downloader則使用簡單的或運(yùn)算對Injector模塊進(jìn)行解密。具體代碼如下圖所示。

圖15:下載和解密Injector模塊

隨后,再通過Assembly.Load方法直接加載Injector程序集(.DLL),并指定調(diào)用模塊的入口處進(jìn)入下一階段。

圖16:加載Injector模塊

3.2.2 Injector模塊

解密后被執(zhí)行的“Tagduvuddz.vdf”是由.NET編寫的32位DLL文件,其則是PureCrypter的核心功能Injector模塊。調(diào)用”Tagduvuddz.vdf”入口后,首先會進(jìn)入到此處。

“GetDelegateForFunctionPointer”是用來將非委托函數(shù)指針轉(zhuǎn)換為委托的方法,在分析中我們發(fā)現(xiàn)惡意代碼中使用了大量的動態(tài)代理方法調(diào)用。

圖17:Injector模塊入口處

讀取名為“yCePnpiAUBbRvu3iIg.ysLIBw2TAHTO5rmrIy”的資源數(shù)據(jù)進(jìn)行解密,解密出代理函數(shù)的token值。

圖18:解密代碼函數(shù)token值

那么,當(dāng)需要調(diào)用某方法時(shí),則傳入相應(yīng)代理類型的token,然后遍歷類型中的每個(gè)字段,通過字段獲取代理方法的MemberRefToken,隨后ReolveMethod。

圖19:代理函數(shù)調(diào)用代碼

代理的生成類大多數(shù)都在根命名空間下,統(tǒng)一格式如下圖所示。采用動態(tài)代理調(diào)用,致使我們在靜態(tài)分析時(shí)很難識別其真實(shí)的調(diào)用方法,唯有在動態(tài)調(diào)試時(shí)才能獲取到其真實(shí)的方法。因此使用此手法,能夠極大的增加了安全人員分析樣本的精力和時(shí)間成本。

圖20:代理的生成類

讀取“TVCDsGUk3IqH5cDEVT.6bSM4rAxX72vreslXr”的資源數(shù)據(jù)到內(nèi)存中,然后進(jìn)行SHA1運(yùn)算。

圖21:SHA1運(yùn)算

運(yùn)算后的數(shù)據(jù)內(nèi)容如下圖所示。

圖22:SHA1運(yùn)算后的內(nèi)容

隨后,再使用AES對“TVCDsGUk3IqH5cDEVT.6bSM4rAxX72vreslXr”進(jìn)行解密。

圖23:AES解密

最后,解密出后續(xù)流程中所需的相關(guān)字符串信息。

圖24:AES解密后的內(nèi)容

獲取名為”lUXNHw8KGOcuf5PAjq.oxQ3hTn8wDlB3oBEm8″的資源數(shù)據(jù),解壓縮出“31654f80-7170-4def-9adf-dc023d8aee27.dll”資源DLL。

圖25:解壓縮出資源DLL文件

查看“31654f80-7170-4def-9adf-dc023d8aee27.dll”發(fā)現(xiàn)其是一個(gè)沒有代碼僅包含資源的儲存文件,總共有6個(gè)資源數(shù)據(jù),具體如下圖所示。

圖26:DLL文件中的資源數(shù)據(jù)內(nèi)容

從“31654f80-7170-4def-9adf-dc023d8aee27.dll”中獲取名為“sZuFO”的資源數(shù)據(jù)。

圖27:獲取“sZuFO”資源數(shù)據(jù)

隨后,再使用AES解密出”?.dll”。該模塊的主要功能是將解密后的字符串?dāng)?shù)據(jù)(如圖28所示)轉(zhuǎn)換成名稱為”yrpaExDORrzH”的hashtable格式。

圖28:“?.dll”的主要功能代碼

接著返回原主模塊,從“31654f80-7170-4def-9adf-dc023d8aee27.dll”模塊中查找”costura.protobuf-net.dll.compressed”資源數(shù)據(jù),并進(jìn)行解壓縮處理。

圖29:查找并解壓縮“costura.protobuf-net”

內(nèi)存加載“protobuf-net.dll”,使用反序列化格式保存惡意軟件的配置信息,具體如下圖所示。

圖30:設(shè)置和保存惡意軟件配置信息

根據(jù)配置信息,能夠得出此次的注入進(jìn)程為“MSBuild.exe”。那么在注入之前,Injector模塊則開始嘗試動態(tài)解析所需的API函數(shù)。前期解密并儲存的名為”yrpaExDORrzH”字符串(如圖28)的hashtable中則包含了將要使用的API函數(shù)名以及其所對應(yīng)的DLL文件名。其中API函數(shù)名是以Base64編碼方式儲存,當(dāng)中編碼的字符串會隨機(jī)插入“@”字符,在解碼時(shí),會先刪除“@”字符,然后再使用Base64解碼字符串。部分內(nèi)容如下圖所示。

圖31:Base64編碼的API字符串

我們對所有API函數(shù)名稱進(jìn)行解碼操作和整理后,得到的具體內(nèi)容如下表所示。

表6:API函數(shù)名稱列表

序號 未解碼字串 解碼字串
1 “Q3JlY@XRlU@HJvY2Vzc0E=” CreateProcessA
2 “Um@VhZFByb2N@lc3NNZW1vcnk=” ReadProcessMemory
3 “WndVbm1h@cFZpZXd@PZlNlY3Rpb24=” ZwUnmapViewOfSection
4 “Q2xv@c2VI@YW5kbGU=” CloseHandle
5 “V293NjRT@ZXRUaHJlYWRDb250ZXh0″ Wow64SetThreadContext
6 “UmV@zdW1l@VGhyZWFk” ResumeThread
7 “U2V0@VGhyZ@WFkQ29udGV4dA==” SetThreadContext
8 “R2@V0VGhyZWFkQ@29udGV4dA==” GetThreadContext
9 “V3JpdGVQcm9j@ZXNzT@WVtb3J5″ WriteProcessMemory
10 “VmlydHVh@bEFsbG9@jRXg=” VirtualAllocEx

解析和導(dǎo)入的具體操作如下圖所示。

圖32:解析和導(dǎo)入API函數(shù)

從“31654f80-7170-4def-9adf-dc023d8aee27.dll”模塊中查找”Nvtwjmadmap.Properties.Resources.resources”的資源數(shù)據(jù),并提取名為“Npxrc”的資源。

圖33:提取名為“Npxrc”的資源數(shù)據(jù)

之后,再對 “Npxrc”資源進(jìn)行數(shù)據(jù)Reverse和GZip解壓處理,進(jìn)而得到將要注入到“MSBuild.exe”的可執(zhí)行文件,也就是下一階段的Loader。

圖34:解出下一階段的Loader

本次注入方式采用的是進(jìn)程鏤空技術(shù),惡意程序首先通過CreateProcessA函數(shù)創(chuàng)建一個(gè)掛起的“MSBuild.exe”進(jìn)程,再使用ZwUnmapViewOfSection函數(shù)卸載進(jìn)程內(nèi)存映射,最后將下一階段的Loader寫入到進(jìn)程內(nèi)存并執(zhí)行。

除此之外,我們通過解密出的一些字串能夠看到該惡意軟件額外的各種反虛擬機(jī)反沙箱等環(huán)境檢測,以及反調(diào)試等一系列的對抗功能,具體內(nèi)容如下表所示。

表7:惡意軟件的對抗技術(shù)

相關(guān)字串 功能
“SbieDll.dll” 檢查“”SbieDll.dll””模塊是否存在
“VMware|VIRTUAL|A M I|Xen”,

“SerialNumber”,

“version”,

“select * from Win32_BIOS”

查詢 WMI 對象 Win32_BIOS 中計(jì)算機(jī)的 SerialNumber 和 Version,并檢查其是否與正則表達(dá)式“ VMware|VIRTUAL|AMI|Xen ”匹配
“Microsoft|VMWare|Virtual”,

“manufacturer”

查詢 WMI 對象 Win32_ComputerSystem 中計(jì)算機(jī)的制造商和型號,并檢查它是否與正則表達(dá)式“ Microsoft|VMWare|Virtual ”匹配
調(diào)用 CheckRemoteDebuggerPresent
檢查顯示器的具體分辨率

3.3 PureLogs

3.3.1 Loader模塊

注入的Loader模塊是一個(gè)由.NET編寫的64位PE文件,使用反編譯器查看發(fā)現(xiàn)惡意代碼未進(jìn)行混淆處理。其主要功能為釋放出最終的Stealer惡意軟件,并加載執(zhí)行。首先,Loader對指定數(shù)據(jù)進(jìn)行先GZip解壓再Reverse操作。具體如下圖所示。

圖35:釋放并加載執(zhí)行Stealer惡意軟件

在內(nèi)存中解出的可執(zhí)行PE文件如下圖所示。

圖36:解密出的PE文件

之后,再加載執(zhí)行最終的Logger Strealer模塊,并指定調(diào)用類和類方法。

圖37:加載執(zhí)行Logger Strealer模塊

3.3.2 Logger Strealer模塊

Logger Strealer模塊與Injector模塊的混淆程度相似,同樣是使用了各種混淆手法。其首先會使用Base64解碼出后續(xù)所需要的特定字符串,其中包括C2、上線包標(biāo)識字串以及互斥體對象名等信息。

圖38:解碼特定字符串

解碼出的字符串內(nèi)容如下圖所示。也是由此處,我們根據(jù)其中的特殊字串關(guān)聯(lián)出該Strealer是屬于Pure Logger家族。

圖39:解碼出的字符串內(nèi)容

之后,創(chuàng)建名為“c1897c4d3e7060ba”的互斥體對象。

圖40:創(chuàng)建互斥體

創(chuàng)建socket并進(jìn)行connect連接,向遠(yuǎn)程服務(wù)器發(fā)送上線包,上線包的數(shù)據(jù)使用了GZip和DES進(jìn)行加密。

圖41:聯(lián)網(wǎng)并發(fā)送上線包

抓取的上線包的流量數(shù)據(jù)如下圖所示。

圖42:加密后的上線包內(nèi)容

隨后,則進(jìn)入接收功能。具體代碼如下圖所示。

圖43:等待接收遠(yuǎn)程控制指令

獲取名為“4eUtR2Udd4nrZFCjx4.GhIn5DabADP77htptt”的資源數(shù)據(jù),進(jìn)行解密和解壓處理,解出“ef3a8629-365f-4e5a-bdae-60022f71fcc6.dll”文件。

圖44:解密出資源DLL文件

“ef3a8629-365f-4e5a-bdae-60022f71fcc6.dll”也是一個(gè)無代碼的資源文件,其包含4個(gè)Fody/Costura嵌入式的壓縮資源。具體如下圖所示。

圖45:DLL文件中的資源數(shù)據(jù)內(nèi)容

我們從惡意代碼中能夠看到,其在滿足某項(xiàng)條件后,會通過powershell命令進(jìn)行自刪除,指令為:“Start-Sleep -Seconds 10; Remove-Item -Path’‘’+ FILEPATH + ‘” -Force”。

圖46:自刪除指令內(nèi)容

最后,當(dāng)Logger Strealer模塊與惡意服務(wù)器成功連接后,則會接收遠(yuǎn)程控制指令,以便執(zhí)行相應(yīng)的惡意行為。參考PureLogs官網(wǎng)介紹,我們能夠看到該Logger Stealer具有瀏覽器憑證、密碼、Cookies、信用卡等,以及多類加密錢包和各種常用應(yīng)用所涉及的賬密碼隱私數(shù)據(jù)的竊取功能。

圖47:Logger Stealer竊密工具

四、總 結(jié)

本文披露了近期針對我國某攝像頭公司的一起網(wǎng)絡(luò)攻擊活動,并對相關(guān)的攻擊武器PureCrypter和PureLogs及其采用的技術(shù)和對抗手法進(jìn)行了全面和深入的分析,包括基于所有類型、字段、屬性、方法等的名稱混淆、基于“spaghetti code”的控制流混淆、自定義的動態(tài)代理調(diào)用(隱藏類及方法)、基于“Protobuf”的數(shù)據(jù)結(jié)構(gòu)封裝等多種對抗技術(shù)的交叉運(yùn)用,此外還分析了攻擊中采用的多模塊多階段的套娃模式,包括10個(gè)具有層級關(guān)系的Loader及DLL模塊等。同時(shí)我們還對追蹤過程中發(fā)現(xiàn)的“黑雀”攻擊現(xiàn)象進(jìn)行了披露和分析,這些高效的黑吃黑手段給黑客產(chǎn)業(yè)鏈帶來了更多的復(fù)雜性,也讓網(wǎng)絡(luò)秩序變得越發(fā)不安全。

此外,盡管目前未發(fā)現(xiàn)本次攻擊活動有更進(jìn)一步的攻擊意圖,但直接針對物聯(lián)網(wǎng)企業(yè)的攻擊仍需引起更多的重視。近年來企業(yè)遭到網(wǎng)絡(luò)入侵并進(jìn)一步被供應(yīng)鏈攻擊的事件屢見不鮮,很多看似影響不大的網(wǎng)絡(luò)攻擊在早期未能得到企業(yè)足夠的重視,結(jié)果卻演變成了重大安全事件,例如Solarwinds供應(yīng)鏈攻擊事件,起初的攻擊入口源于普通員工的密碼失竊,多家企業(yè)均發(fā)現(xiàn)了相關(guān)設(shè)備上的異常活動卻并未深入調(diào)查分析,直到數(shù)月后才被披露,影響深遠(yuǎn)并造成了巨大危害。而本次攻擊中,由于在PureCrypter的傳播鏈中發(fā)現(xiàn)了“黑雀”攻擊的現(xiàn)象,這使得相關(guān)的攻擊活動變得更加復(fù)雜。除了防范黑客在經(jīng)濟(jì)層面的攻擊意圖外,還需進(jìn)一步關(guān)注其是否存在轉(zhuǎn)賣控制權(quán)限、竊取軟件源代碼、篡改源代碼構(gòu)造漏洞、甚至是植入后門實(shí)施供應(yīng)鏈攻擊等隱藏更深的攻擊目的,需要引起相關(guān)企業(yè)足夠的警惕。網(wǎng)絡(luò)安全無小事,不要忽視任何一次可能帶來潛在危害的安全隱患,治病于未病,隱患于未然。

來源:ADLab

上一篇:Okta被黑后市值蒸發(fā)逾20億美元,身份供應(yīng)商成為攻擊焦點(diǎn)

下一篇:以色列與哈馬斯沖突中的網(wǎng)絡(luò)攻擊態(tài)勢