MontysThree工業(yè)間諜軟件分析
2020年夏季發(fā)現(xiàn)了針對性較強的工業(yè)間諜軟件的活動,工具集中包含未知的C++模塊。惡意軟件作者將工具集命名為“ MT3”,研究人員將工具集命名為“ MontysThree”。
該惡意軟件包括一組用于持久控制的C ++模塊,使用隱寫術從位圖中獲取數(shù)據(jù),解密配置任務(屏幕截圖,獲取目標指紋,獲取文件等)等。該惡意軟件使用自定義隱寫術,基于XOR的自定義加密,3DES和RSA算法進行解密和通信。
傳播方式
初始加載程序模塊在RAR自解壓文件中,只有PE文件(偽裝.pdf或.doc文件), 其中一個(MD5 da49fea229dd2dedab2b909f24fb24ab)名為“Списоктелефоновсотрудников2019.doc”(“員工電話清單”,俄語),另外還有“ Tech task.pdf”和“ invitro-106650152-1.pdf”。 后者是俄羅斯醫(yī)學實驗室的名稱。 SFX腳本如下:
- Path=%TEMP%\
- SavePath
- Setup=rundll32.exe "invitro-106650152-1.pdf",Open
- Silent=1
- Overwrite=1
- UUpdate=U
- Delete=invitro-106650152-1.pdf
執(zhí)行后,SFX腳本會調用%TEMP%目錄中已解壓縮的可執(zhí)行文件,并將其刪除。
技術分析
執(zhí)行流程如下:

下表列出了四個模塊及其功能, 這些模塊共享通用的通信規(guī)范。 當處理諸如配置文件和執(zhí)行日志之類的共享數(shù)據(jù)時,該惡意軟件會初始化線程本地存儲(TLS)中的結構。
入口點DllEntryPoint()的工作方式類似于構造函數(shù),模塊必須導出一個名為Open()的函數(shù),該函數(shù)不帶任何參數(shù)(但可以解析命令行)并返回一個四字節(jié)的錯誤代碼。

1. 加載程序模塊
將加密數(shù)據(jù)的位圖文件名作為參數(shù)提供給加載程序,加載程序會從像素數(shù)組解密下一個程序。 在第一次迭代中,它提取隱寫參數(shù)數(shù)據(jù)。

IID,IParam和ISize參數(shù)保存在像素陣列的前384個字節(jié)中,因此僅需要每個像素陣列字節(jié)的最后一位。 該模塊使用這些字段收集48個字節(jié)的配置結構,確定下一個解密階段。

提取隱寫參數(shù)后,使用兩步算法對下一個程序進行解密。 首先,IParam算法從像素陣列的字節(jié)中選擇bits。 如果IID等于2,則對收集到的字節(jié)使用四字節(jié)輪回密鑰,前四個字節(jié)解密的初始密鑰硬編碼為0x23041920。 下一個字節(jié)的XOR公式為:
key ^= 8 * (key ^ (key << 20))
解密結果并未注入到某個進程內存中,而是生成名為msgslang32.dll的文件放到磁盤上。 加載程序使用Windows API函數(shù)LoadLibraryW()和GetProcAddress()來運行下一個階段的Open()函數(shù)。
2. Kernel模塊
內核模塊包含三個用于配置解密和C2通信的加密密鑰。公用和專用RSA密鑰分別以PUBLICKEYBLOB和PRIVATEKEYBLOB的形式存儲在.data節(jié)中,用于加密C2通信、解密3DES密鑰。
第三個3DES密鑰也以加密形式存儲在.data節(jié)中。此密鑰用于解密包含XML配置的.cab文件,該模塊使用Window的標準程序“ expand.exe”解壓縮.cab。
XML配置包含惡意軟件的各種“任務”,例如對目標進行指紋識別,捕獲屏幕截圖,從%USERPROFILE%、 %APPDATA%、%APPDATA%\Microsoft\Office\Последние файлы中最新目錄中獲取擴展名為.doc,.docx,.xls,.xlsx,.rtf,.pdf,.odt,.psw,.pwd的文檔列表。 Последниефайлы翻譯成俄語為“最近文件”。
Config包含任務計劃(屏幕截圖),訪問令牌,感興趣的目錄和擴展:

發(fā)現(xiàn)俄語字符串,例如“Снимокрабочегостола”(桌面快照),“Системнаяинформация”(系統(tǒng)信息),“Времявыхода”(退出時間)。

解密后的配置結構如下:

處理指令的主要類是CTask。 CTask的IoControl()方法負責處理相應的任務,并可運行以下方法:
3. 通信模塊
HttpTransport存在于內核模塊.text部分中的四個加密數(shù)據(jù)塊。當內核需要通信時,它會解密該模塊,并運行Open()函數(shù),傳遞命令行參數(shù)。
根據(jù)從內核模塊傳輸?shù)膮?shù),該模塊可以使用RDP,WebDAV,Citrix和HTTP協(xié)議上傳或下載內容。 HttpTransport也實現(xiàn)了使用用戶令牌從Google和Dropbox公共服務下載數(shù)據(jù)。在HTTP GET / POST請求下,該惡意軟件將使用Windows API HTTP功能從URL接收隱寫位圖圖片。
上述通信協(xié)議本身并未在模塊內部實現(xiàn)。惡意軟件利用計算機上已安裝的Windows程序(例如RDP,Citrix客戶端和Internet Explorer)進行操作??赏ㄟ^剪貼板將URL粘貼到瀏覽器中;等待并再次通過剪貼板接收結果。
Dropbox和Google數(shù)據(jù)的上傳和下載依賴于另一個原理:使用自定義類CSimpleHttp進行身份驗證并發(fā)送HTTP請求。
總結
通常惡意軟件主要針對政府實體,外交官和電信運營商,像MontysThree這樣的工業(yè)間諜少見很多。
就傳播方式,持續(xù)性控制方法而言,其復雜性無法與頂尖APT相提并論。惡意軟件開發(fā)方面(同時登錄RAM和文件,將加密密鑰保留在同一文件中,在遠程RDP主機上運行不可見的瀏覽器)還不成熟。
MontysThree中的代碼量以及投入的精力是巨大的:在RSA加密下存儲3DES密鑰,規(guī)避IDS的自定義隱寫術以及使用合法的云存儲隱藏C2流量。
IOCs
Loader:
- 1B0EE014DD2D29476DF31BA078A3FF48
- 0976*42A06D2D8A34E9B6D38D45AE42
- A2AA414B30934893864A961B71F91D98
Kernel:
- A221671ED8C3956E0B9AF2A5E04BDEE3
- 3A885062DAA36AE3227F16718A5B2BDB
- 3AFA43E1BC578460BE002EB58FA7C2DE
HttpTransport:
- 017539B3D744F7B6C62C94CE4BCA444F
- 501E91BA1CE1532D9790FCD1229CBBDA
- D6FB78D16DFE73E6DD416483A32E1D72
Domains and IPs:
- autosport-club.tekcities[.]com
- dl10-web-stock[.]ru
- dl16-web-eticket[.]ru
- dl166-web-eticket[.]ru
- dl55-web-yachtbooking[.]xyz
原文鏈接:securelist