針對(duì)軍工和教育行業(yè)的CNC組織“擺渡”木馬分析
時(shí)間 : 2022年12月29日
1.概述
近期,安天應(yīng)急響應(yīng)中心(安天CERT)在梳理攻擊活動(dòng)時(shí)發(fā)現(xiàn)CNC組織使用的兩個(gè)下載器,其中一個(gè)下載器具有擺渡攻擊的能力,利用移動(dòng)存儲(chǔ)設(shè)備作為“渡船”,間接從隔離網(wǎng)中竊取攻擊者感興趣的文件;另一個(gè)下載器使用欺騙性的具有不可信數(shù)字證書(shū)的C2節(jié)點(diǎn)進(jìn)行通信。
CNC組織目前已知最早于2019年被發(fā)現(xiàn),當(dāng)時(shí)由于其使用的遠(yuǎn)控木馬的PDB路徑信息中包含了cnc_client,因此該組織被命名為CNC。該組織主要針對(duì)軍工和教育行業(yè)進(jìn)行攻擊。
2.樣本分析
2.1 PrivateImage.png.exe(下載器1)
2.1.1 樣本概述
PrivateImage.png.exe會(huì)根據(jù)該文件是否在%localappdata%路徑下選擇兩種方式執(zhí)行。
1.如果在%localappdata%路徑下,不斷檢測(cè)是否有新設(shè)備接入;若有,則將文件本身復(fù)制到新設(shè)備中,以便通過(guò)可移動(dòng)設(shè)備傳播。
2.如果不在%localappdata%路徑下,首先判斷%localappdata%\ImageEditor.exe是否存在:
1)如果存在,跳過(guò)后續(xù)操作退出。
2)如果不存在,判斷互聯(lián)網(wǎng)連接狀態(tài):
a)如果可連網(wǎng),下載后續(xù)下載器。
b)如果不可連網(wǎng),從Recent文件夾下的快捷方式中獲取.docx或.pptx后綴的文件,復(fù)制文件到當(dāng)前目錄下新建的以用戶(hù)名命名的隱藏文件夾中,并以符號(hào)替換后的文件路徑命名。
2.1.2 詳細(xì)分析
表2?1 PrivateImage.png.exe
病毒名稱(chēng) |
|
原始文件名 |
PrivateImage.png .exe(空格很長(zhǎng),偽裝成圖片) |
MD5 |
da3d305d1b47c8934d5e1f3296a8efe0 |
處理器架構(gòu) |
AMD
AMD64 |
文件大小 |
|
文件格式 |
Win32
EXE |
時(shí)間戳 |
|
數(shù)字簽名 |
無(wú) |
加殼類(lèi)型 |
無(wú) |
編譯語(yǔ)言 |
|
VT首次上傳時(shí)間 |
2022-03-26
10:51:26 UTC |
VT檢測(cè)結(jié)果 |
12/70 |
樣本運(yùn)行后,首先會(huì)獲取當(dāng)前用戶(hù)名,用在后續(xù)路徑拼接的操作中。
圖2?1 獲取當(dāng)前用戶(hù)名
獲取當(dāng)前文件的路徑,并判斷是否在%localappdata%目錄下。
圖2?2 判斷路徑中是否包含appdata\local
如果在%localappdata%目錄下,則會(huì)獲取系統(tǒng)中的所有驅(qū)動(dòng)器字符串。
圖2?3 獲取系統(tǒng)中的所有驅(qū)動(dòng)器字符串
通過(guò)判斷前一次的驅(qū)動(dòng)器字符串與本次獲取到的驅(qū)動(dòng)器字符串是否相同,來(lái)確定是否有新設(shè)備接入。
圖2?4 判斷是否有新設(shè)備接入
如果存在新設(shè)備,獲取新設(shè)備的名稱(chēng),若新設(shè)備中不存在當(dāng)前文件,則將當(dāng)前文件復(fù)制到新設(shè)備。然后將指示單詞“-firstcry”拼接到主機(jī)名后,用于同攻擊者控制的設(shè)備通信。若新設(shè)備中已存在當(dāng)前文件,則將指示單詞“-alleat”拼接到主機(jī)名后。
圖2?5 將樣本自身復(fù)制到新設(shè)備中
樣本與攻擊者控制的設(shè)備通信。
圖2?6 將新設(shè)備的情況發(fā)送回控制端
如果不在%localappdata%目錄下,加載樣本資源中的圖片并將其釋放到同目錄下打開(kāi)。
圖2?7 加載并打開(kāi)資源中的圖片
資源節(jié)中包含的圖片。
圖2?8 樣本資源中包含的圖片
首先進(jìn)行字符串拼接。
圖2?9 字符串拼接
然后判斷%localappdata%\ImageEditor.exe是否存在,如果存在跳過(guò)后續(xù)操作,結(jié)束進(jìn)程。
圖2?10 通過(guò)獲取文件屬性判斷文件是否存在
測(cè)試與www[.]baidu.com的通信,判斷當(dāng)前環(huán)境下互聯(lián)網(wǎng)連接狀況。
圖2?11 測(cè)試是否聯(lián)網(wǎng)
如果互聯(lián)網(wǎng)不可用,拼接字符串,在樣本所在目錄創(chuàng)建以當(dāng)前用戶(hù)名命名的隱藏文件夾。
圖2?12 創(chuàng)建隱藏文件夾
從Recent文件夾下的快捷方式中獲取.docx或.pptx后綴的文件,查找最近打開(kāi)的.docx和.pptx后綴的文件。
圖2?13 文件查找
若找到,則將其復(fù)制到創(chuàng)建的隱藏文件夾中,文件采用將文件完整路徑中的“\”、“:”修改為“_”的方式命名。
圖2?14 文件復(fù)制
測(cè)試機(jī)中收集的文件及其命名方式如下。
圖2?15 測(cè)試機(jī)中收集的文件
如果互聯(lián)網(wǎng)可用,判斷C:\ProgramData\USOshared文件夾是否存在,若不存在創(chuàng)建該文件夾。
圖2?16 創(chuàng)建文件夾
隨后將會(huì)從185.25.51.41/control/utility/YodaoCloudMgr處下載惡意的后續(xù)的下載器,并將其復(fù)制到USOshared文件夾中,隨后將會(huì)刪除%temp%中下載的文件。
圖2?17 拼接字符串用于下載后續(xù)的下載器
如果成功下載到文件,將其保存到%temp%下的YodaoCloudMgr中。
圖2?18 下載并保存到本地
將YodaoCloudMgr從%temp%復(fù)制到C:\ProgramData\USOshared\YodaoCloudMgr.exe后刪除%temp%下的YodaoCloudMgr文件。
圖2?19 復(fù)制與刪除操作
創(chuàng)建任務(wù)計(jì)劃,將C:\ProgramData\USOshared\YodaoCloudMgr.exe添加到任務(wù)計(jì)劃程序庫(kù)中,每隔2分鐘執(zhí)行一次。并根據(jù)下載和創(chuàng)建任務(wù)計(jì)劃的結(jié)果構(gòu)建回傳信息:23Fi45XX代表下載成功,23Fi45NNXX代表下載失敗;45tDdd43543代表任務(wù)計(jì)劃創(chuàng)建成功,45tDnn43543代表任務(wù)計(jì)劃創(chuàng)建失敗。
圖2?20 創(chuàng)建任務(wù)計(jì)劃,定時(shí)執(zhí)行YodaoCloudMgr.exe文件
測(cè)試機(jī)中創(chuàng)建的任務(wù)計(jì)劃如下。
圖2?21 創(chuàng)建的任務(wù)計(jì)劃
獲取當(dāng)前環(huán)境下的進(jìn)程列表。
圖2?22 獲取進(jìn)程列表
將獲取到的進(jìn)程列表同先前構(gòu)造的回傳信息進(jìn)行拼接,并采用base64編碼方法處理拼接后的內(nèi)容。
圖2?23 拼接回傳信息
使用URLDownloadToFileW與控制端通信,回傳收集的信息。如果任務(wù)計(jì)劃創(chuàng)建失敗,則通過(guò)CreateProcessA執(zhí)行C:\ProgramData\USOshared\YodaoCloudMgr.exe。根據(jù)靜態(tài)分析推測(cè),如果YodaoCloudMgr.exe啟動(dòng)失敗,刪除文件后會(huì)從github存儲(chǔ)庫(kù)中獲取內(nèi)容執(zhí)行。
圖2?24 獲取內(nèi)容執(zhí)行
2.2 YodaoCloudMgr.exe(下載器2)
2.2.1 樣本概述
YodaoCloudMgr.exe由PrivateImage.png.exe下載并執(zhí)行,主要用于下載后續(xù)載荷。分析時(shí)發(fā)現(xiàn)文件內(nèi)部存在文件搜尋、啟動(dòng)進(jìn)程等相關(guān)代碼,同時(shí)發(fā)現(xiàn)樣本在通信時(shí)使用的不可信證書(shū)。
圖2?25 通信使用不可信的證書(shū)
2.2.2 詳細(xì)分析
表2?2 YodaoCloudMgr.exe文件
病毒名稱(chēng) |
|
原始文件名 |
|
MD5 |
c024eb3035dd010de98839a2eb90b46b |
處理器架構(gòu) |
AMD
AMD64 |
文件大小 |
3.22
MB (3378688 bytes) |
文件格式 |
Win32
EXE |
時(shí)間戳 |
2022:01:14
23:47:14 UTC |
數(shù)字簽名 |
無(wú) |
加殼類(lèi)型 |
無(wú) |
編譯語(yǔ)言 |
|
VT首次上傳時(shí)間 |
2022-03-28
16:26:44 UTC |
VT檢測(cè)結(jié)果 |
18/71 |
樣本中存在待解密的字符串。
圖2?26 帶解密的字符串
字符串通過(guò)對(duì)稱(chēng)加密XXTEA算法進(jìn)行解密操作。
圖2?27 加密算法
通過(guò)stat函數(shù)獲取文件信息,判斷RNGdTMP899是否存在。
圖2?28 判斷%temp%路徑下是否存在RNGdTMP899文件
如果不存在該文件,則生成15字節(jié)的隨機(jī)字符串,隨機(jī)字符串用于URL拼接。字節(jié)的取值在“ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/”中。
圖2?29 生成15字節(jié)隨機(jī)字符串
若當(dāng)前環(huán)境下不存在RNGdTMP899文件,創(chuàng)建RNGdTMP899文件。
圖2?30 創(chuàng)建RNGdTMP899文件
而后將隨機(jī)字符串寫(xiě)入該文件。
圖2?31 寫(xiě)入隨機(jī)字符串
判斷RNGdTMP899文件屬性,若文件不為隱藏屬性則將其設(shè)置為隱藏屬性。
圖2?32 修改RNGdTMP899文件屬性為隱藏
獲取RNGdTMP899中的隨機(jī)字符串,此次生成的隨機(jī)字符串為RLCTEJddUbAJMJR,并拼接成https[:]//45.86.162.114/query=RLCTEJddUbAJMJR/%20%getting,forum。
圖2?33 URL拼接
根據(jù)網(wǎng)絡(luò)行為觀測(cè),樣本首先會(huì)請(qǐng)求拼接的https[:]//45.86.162.114/query=RLCTEJddUbAJMJR/%20%getting,forum,然后請(qǐng)求https[:]//45.86.162.114/images-css/RLCTEJddUbAJMJR/imagelogo.css獲取數(shù)據(jù)。
圖2?34 拼接URL
之后每隔1分鐘,循環(huán)請(qǐng)求https[:]//raw.githubusercontent.com/yuiopk1456/beutifymyapp/main/LICENSE。通過(guò)URL可以看出攻擊者有可能在指定IP失效后通過(guò)github平臺(tái)傳輸數(shù)據(jù),猜測(cè)傳輸?shù)臄?shù)據(jù)可能為XXTEA算法加密后的攻擊者指定的IP或域名。
圖2?35 循環(huán)執(zhí)行該段代碼,間隔時(shí)間為1分鐘
查找接收到數(shù)據(jù)的標(biāo)記位置。
圖2?36 查找接收到數(shù)據(jù)的標(biāo)記位置
對(duì)其后數(shù)據(jù)應(yīng)存在解密操作。
圖2?37 解密獲取到的數(shù)據(jù)
通過(guò)在github上搜索beutifymyapp,關(guān)聯(lián)到疑似該組織的github存儲(chǔ)庫(kù),存儲(chǔ)庫(kù)的創(chuàng)建者名字也與本次攻擊活動(dòng)中g(shù)ithub存儲(chǔ)庫(kù)的創(chuàng)建者名字yuiopk1456相似。僅在2021年11月存在對(duì)該存儲(chǔ)庫(kù)的操作,在這之后也未創(chuàng)建其他存儲(chǔ)庫(kù)。
圖2?38 github上關(guān)聯(lián)到的相似存儲(chǔ)庫(kù)
在關(guān)聯(lián)到的相似存儲(chǔ)庫(kù)中,發(fā)現(xiàn)可疑的字符串,可能為加密后的域名或IP。
圖2?39 github中的可疑字符串
連接github存儲(chǔ)庫(kù)中存放的IP或域名。
圖2?40 socket連接
由于域名、IP以及github地址均失效,故無(wú)法繼續(xù)跟進(jìn)。通過(guò)靜態(tài)分析樣本推測(cè),攻擊者與控制端通信后可能存在獲取指定目錄文件列表、啟動(dòng)進(jìn)程等操作。
獲取指定目錄文件列表。
圖2?41 文件查找相關(guān)操作
創(chuàng)建管道。
圖2?42 創(chuàng)建管道
啟動(dòng)進(jìn)程。
圖2?43 啟動(dòng)進(jìn)程
3.歸因分析
在先前觀測(cè)中發(fā)現(xiàn),部分CNC組織人員會(huì)在開(kāi)發(fā)環(huán)境中集成vcpkg,此次發(fā)現(xiàn)的樣本中同樣存在該特點(diǎn),且路徑也同以往使用的路徑一致。
圖3?1 此次攻擊活動(dòng)中存在的路徑信息
圖3?2 以往攻擊活動(dòng)中存在的路徑信息
樣本中的部分代碼也十分相似。
圖3?3 此次攻擊活動(dòng)中的部分代碼
圖3?4 以往攻擊活動(dòng)中的部分代碼
加密函數(shù)大致相同。
圖3?5 以往攻擊活動(dòng)中加密函數(shù)的部分代碼
圖3?6 此次攻擊活動(dòng)中加密函數(shù)的部分代碼
綜上所述,初步將此次攻擊活動(dòng)歸因到CNC組織。
4.威脅框架映射
本次攻擊活動(dòng)共涉及ATT&CK框架中的8個(gè)階段的15個(gè)技術(shù)點(diǎn),具體行為描述如下表:
表4?1 近期CNC組織攻擊活動(dòng)的技術(shù)行為描述表
ATT&CK階段 |
具體行為 |
注釋 |
執(zhí)行 |
誘導(dǎo)用戶(hù)執(zhí)行 |
PrivateImage.png.exe偽裝成圖片誘導(dǎo)用戶(hù)執(zhí)行 |
執(zhí)行 |
利用計(jì)劃任務(wù)/工作 |
YodaoCloudMgr.exe路徑被加載到計(jì)劃任務(wù)中執(zhí)行 |
持久化 |
利用計(jì)劃任務(wù)/工作 |
YodaoCloudMgr.exe路徑被加載到計(jì)劃任務(wù)中執(zhí)行 |
防御規(guī)避 |
混淆文件或信息 |
回傳的進(jìn)程信息進(jìn)行base64編碼 |
防御規(guī)避 |
去混淆/解碼文件或信息 |
樣本中的關(guān)鍵字符串通過(guò)對(duì)稱(chēng)加密算法XXTEA解密 |
防御規(guī)避 |
隱藏行為 |
創(chuàng)建隱藏的文件夾用于收集信息,以及將RNGdTMP899文件設(shè)置隱藏屬性 |
發(fā)現(xiàn) |
發(fā)現(xiàn)文件和目錄 |
發(fā)現(xiàn)RECENT目錄中的文件,并可能存在指定目錄搜尋的操作 |
發(fā)現(xiàn) |
發(fā)現(xiàn)系統(tǒng)信息 |
發(fā)現(xiàn)計(jì)算機(jī)中的驅(qū)動(dòng)器列表 |
發(fā)現(xiàn) |
系統(tǒng)時(shí)間發(fā)現(xiàn) |
可以獲取到計(jì)算機(jī)上的本地時(shí)間 |
橫向移動(dòng)· |
通過(guò)可移動(dòng)介質(zhì)復(fù)制 |
檢測(cè)磁盤(pán)列表是否有變動(dòng),以便復(fù)制到可移動(dòng)介質(zhì)中 |
收集 |
自動(dòng)收集 |
自動(dòng)收集進(jìn)程列表、當(dāng)前用戶(hù)名、本地時(shí)間等信息 |
收集 |
收集本地系統(tǒng)數(shù)據(jù) |
收集進(jìn)程列表、用戶(hù)名、本地時(shí)間等信息 |
命令與控制 |
使用應(yīng)用層協(xié)議 |
使用應(yīng)用層協(xié)議通信 |
命令與控制 |
編碼數(shù)據(jù) |
回傳的進(jìn)程信息進(jìn)行base64編碼 |
數(shù)據(jù)滲出 |
自動(dòng)滲出 |
收集到的進(jìn)程列表信息等自動(dòng)回傳到控制端 |
CNC組織相關(guān)攻擊活動(dòng)的行為技術(shù)點(diǎn)的ATT&CK框架圖譜如下圖所示:
圖4?1 CNC組織攻擊活動(dòng)對(duì)應(yīng)ATT&CK框架映射圖
5.總結(jié)
近些年,APT組織向隔離網(wǎng)絡(luò)攻擊的意圖越發(fā)明顯,滲透隔離網(wǎng)絡(luò)的攻擊樣本不斷增多,以Darkhotel[1]、幼象[2][3]為典型代表的攻擊組織均自研相關(guān)攻擊武器并不斷更新。此次攻擊活動(dòng)中的CNC組織樣本同該組織以往的樣本相比也進(jìn)行了升級(jí),在開(kāi)發(fā)階段同樣集成了vcpkg開(kāi)發(fā)環(huán)境,也存在從github存儲(chǔ)庫(kù)中獲取內(nèi)容的行為。在橫向移動(dòng)階段,在判斷是否有新存儲(chǔ)設(shè)備接入的手法上,與此前通過(guò)GetDriveTypeA獲取接入設(shè)備的類(lèi)型的判斷方法不同,本次攻擊活動(dòng)的樣本通過(guò)不斷獲取驅(qū)動(dòng)器列表的方法,一旦發(fā)現(xiàn)有新存儲(chǔ)設(shè)備接入,則將文件復(fù)制到新接入的存儲(chǔ)設(shè)備中,以便達(dá)成在隔離網(wǎng)中傳播的目的。
6.IOC
185.25.51.41 |
45.86.162.114 |
da3d305d1b47c8934d5e1f3296a8efe0 |
c024eb3035dd010de98839a2eb90b46b |
https://raw.githubusercontent.com/yuiopk1456/beutifymyapp/main/LICENSE |
https://raw.githubusercontent.com/gazelter231trivoikpo1/questions/main/beautify.js |