原文:https://securelist.com/compfun-http-status-based-trojan/96874/
譯者:知道創宇404實驗室翻譯組

2019年秋,我們發布了一篇文章,其主要講述了一個名為Reducor的COMpfun后繼文件是如何即時感染文件以破壞TLS流量的,目前該惡意軟件的開發者們還在開發新的功能。2019年11月下旬,我們的搜索引擎發現了一個新的木馬,其之前發現的代碼高度相似,經過我們進一步的研究表明,它使用的是與COMPFun相同的代碼庫。

里面有什么

該惡意活動幕后操縱者聚焦于外交實體上,這次目標是在歐洲。他們將最初的釋放器以偽造簽證申請的形式進行傳播。合法的應用程序及32位或64位的惡意軟件被保存在加密釋放器中,但惡意代碼是如何傳遞到目標中的這點我們尚不清楚。

感染鏈

我們觀察到了一個有趣的C2通信協議,該協議使用了罕見的HTTP/HTTPS狀態代碼(即IETF RFC 7231,6585,4918),而Client Error類中的幾個HTTP狀態代碼(422-429)會使木馬知道操作員想要做什么,在控制服務器發送“Payment Required”(402)狀態之后,會執行先前所接收到的命令。

操作者將RSA公鑰和唯一的HTTP ETag保留在加密的配置數據中。出于Web內容緩存原因而創建的此標記也可以用于過濾對C2的請求,如:來自網絡掃描程序而非目標的請求。除了上述用于與C2通信的RSA公鑰外,該惡意軟件還使用自行生成的AES-128密鑰。

操作者是誰

COMPfun惡意軟件最初是由G-DATA于2014年記錄的,盡管該公司無法確定哪個APT正在使用該惡意軟件。但根據受害者學理論,我們能夠將其與Turla APT進行關聯,其可信度為中低級。

木馬能做什么

其功能包括獲取目標的地理位置,收集與主機和網絡有關的數據、鍵盤記錄和屏幕截圖的能力。換句話說,它是普通的成熟木馬,也能夠將其傳播到可移動設備。

就像之前來自同操作者的惡意軟件一樣,所有必要的功能地址都可以進行動態解析,這樣會使分析變得復雜化。為了通過HTTP/HTTPS將目標數據泄露到C2,然后惡意軟件使用RSA進行加密,通過LZNT1壓縮單字節的XOR進行加密實現本地數據隱藏。

木馬用于各種任務的加密和壓縮

初始釋放器

第一階段的釋放器從局域網共享目錄進行下載,與簽證申請程序相關的文件名和目標外交實體完全相對應。和具有相似代碼基的所有模塊一樣,釋放器動態解析成所有必要的Windows API函數地址,并將它們放入對應結構。然后從其資源(.rsrc)中解密部分下一階段的惡意軟件,其算法是使用密鑰的“0x55”的單字節 XOR ,并使用LZNT1對其進行壓縮。

除了惡意軟件試圖模仿的原始應用程序之外,以下文件也被拖放到磁盤上:

釋放器要求用戶以管理員身份來運行文件,然后刪除與主機架構相對應的版本,并將文件系統時間戳設置為2013.12.20 22:31。

有趣的是,釋放器的權限并不局限于PE誘餌,這個階段還可以使用.doc和.pdf文件。在這樣的情況下,釋放器將使用open shell命令打開文件,而不是運行合法的欺騙可執行應用程序。

主模塊–基于HTTP狀態的木馬

下面的分析基于上表中的32位樣本,合法的ExplorerFrame.dll.mui是Windows資源管理器使用的ExplorerFrame.dll文件的語言資源。

多線程特洛伊木馬程序的功能

初始化

與之前的惡意軟件代碼一樣,大量簡短的獨立函數會返回到所有的可讀字符串中。為了不讓研究人員一眼就能看到字符串,使用這樣操作會使分析變得相對復雜,在模塊的準備階段,動態形式將所有必需的Windows API函數地址解析為自定義結構,這樣的操作會使惡意軟件只能調動間接函數。

該模塊獲取處理器體系結構(32位或64位)和Windows操作系統版本。它會對與虛擬機相關的設備(VEN VMWARE、VBOX硬盤、virtual DVD ROM等)進行多項反分析檢查,來避免執行受到控制,此外其還指出了主機上運行的安全產品(Symantec、Kaspersky、Dr.Web、Avast)。

在每次與C2通信之前,惡意軟件都會檢查調試器(如WinDbg、OllyDbg、Visual Studio)、主機(進程瀏覽器或監視器等)及網絡監視(Wireshark、TCPView等)程序是否正在運行。此外還檢查internet是否連接,若檢查失敗,則不進行通訊。

動態鏈接庫還能夠檢查在運行的進程,在需要付款的情況下,該鏈接庫可檢查系統、產品安全以及瀏覽器的進程,緊接著惡意軟件將形成相應的代碼來對相關文件進行刪除。

在初始化過程中,最后一步是文件解密并進行解壓。使用0xAA密鑰的XOR字節進行解密,使用LZNT1算法進行解壓。通過此配置,惡意軟件會解析RSA公鑰、ETag和IP地址來和相關的服務器進行通信。

解密后的配置數據包含用于加密滲出數據的RSA公鑰

基于HTTP狀態的通信模塊

首先,模塊生成需以下內容:

  • 用于HTTP GET/POST參數和HTTP狀態碼427(請求新命令)的AES-128加密密鑰;

  • 基于主機網絡適配器、CPU和第一個固定邏輯驅動器序列號的4字節唯一硬件ID(HWID)。

然后,該模塊從Windows(cmd.exe,smss.exe),與安全相關的應用程序(Symantec的nis.exe,Dr.Web的spideragent.exe)和瀏覽器開始按照優先級從高到低的順序選擇注入代碼。 (相關瀏覽器:IE,Opera,Firefox,Yandex瀏覽器,Chrome)。

主線程檢查C2是否在其配置中支持TLS。如果是,通信將通過HTTPS和端口443進行;否則,將使用HTTP協議和端口80。

分析樣本中的解密內容配置

發送的第一個GET請求中包含一個ETag“If Match”頭部,該頭部是用解密配置中的數據生成。ETag通常使用web服務器來進行緩存,方便在ETag值匹配時不會反復發布信息,以此提高效率并節省帶寬。ETag的實現意味著,如果C2沒有所需的ETag值,它可以忽略所有未從其預期目標發送的請求。

C2 HTTP狀態代碼描述

HTTP 427可以接收以下任何附加命令:

可移動設備傳播模塊

如果初始化成功,惡意軟件將再啟動一個線程來發送Windows消息,查找與WM_DEVICECHANGE事件相關的可移動設備。當USB設備插入或拔出主機時,模塊將運行自己的處理程序。

其他間諜模塊:鍵盤記錄器、屏幕截圖工具等

使用多個掛鉤監視用戶的活動,他們都獨立于任何指揮控制系統來收集目標數據。使用存儲在配置數據中的RSA公鑰對擊鍵進行加密,每兩秒鐘或在記錄超過512個字節時發送一次。這512個字符還包括鼠標左鍵單擊(寫為“MSLBTN”字符串)和Windows標題欄文本。對于剪貼板內容,模塊計算一個MD5哈希,如果它發生更改,則使用相同的RSA公鑰加密剪貼板內容,然后將其發送。

在單獨的線程中,木馬使用GDIPlus庫獲取位圖截圖,使用LZNT1算法對其進行壓縮,使用配置數據中的密鑰對其進行加密,然后將其發送到控制服務器。不論在任何情況下,截圖都將被截取并發送給目標,其與任何C2命令都無關。

最后但并非最不重要的

惡意軟件作者做出了多種選擇(盡管不是主要的技術選擇),我們仍認為這些選擇值得關注。

基于COM劫持的持久性方法將其相應的代碼和結構作為參數注入到合法進程的內存中。該惡意軟件使用合法的Web服務對受害者進行地理定位(geoplugin.net/json.gp、ip-api.com/json和telize.com/geoip)。 HTTP狀態線程中異常的線程同步超時計算很特殊。從數學上講,該級數的部分和正好是:

在全額情況下,該級數只是指數的表示。開發人員可能使用該指數使通信線程中的超時變得更加不可預測,并且增長速度很快,而編譯器是這樣計算的。

COMPFun操作者實現了什么

2019年,我們兩次看到COMpfun開發者的創新方法。首先,他們通過PRNG系統功能補丁繞過了TLS加密的通信,然后我們觀察到C2通信的獨特實現使用了不常見的HTTP狀態碼。

由于最初的感染媒介對他們有利,惡意軟件運營商仍將注意力集中在外交實體和選擇與簽證相關的應用程序上,這些應用程序存儲在本地網絡共享的目錄中。針對目標采取了量身定制的執行方法,這無疑將會使COMPFun背后的開發人員成為一個強大的進攻性團隊。

IOCs

File MD5 Hashes
Trojan 32-bit: A6AFA05CBD04E9AF256D278E5B5AD050
Trojan 64-bit: 1BB03CBAD293CA9EE3DDCE6F054FC325

IPs
95.183.49.10ZoomEye搜索結果)
95.183.49.29 (ZoomEye搜索結果)
200.63.45.35 (ZoomEye搜索結果)


Paper 本文由 Seebug Paper 發布,如需轉載請注明來源。本文地址:http://www.bjnorthway.com/1212/