深入了解 Evilnum 及其工具集
對Evilnum的運作進行了分析,該惡意軟件背后的APT集團此前曾對金融科技公司發起攻擊。盡管該惡意軟件至少從2018年起就被發現,之前也有文件記錄,但很少有關于其背后的組織及其運作方式的報道。
在本文中,我們將兩點聯系起來,并詳細介紹Evilnum的活動。該組織的目標仍然是金融科技公司,但其工具集和基礎架構已經發展,現在包括定制的自制惡意軟件以及從Golden Chickens購買的工具,Golden Chickens是惡意軟件即服務(MaaS)提供商,其臭名昭著的客戶包括FIN6和Cobalt group。
目標
根據遙測技術,目標是金融技術公司-例如,提供在線交易平臺和工具的公司。盡管大多數目標都位于歐盟國家和英國,但我們也看到了澳大利亞和加拿大等國家的襲擊。通常,目標公司在多個位置設有辦事處,這可能解釋了攻擊的地域多樣性。
Evilnum集團的主要目標是監視其目標并從目標公司及其客戶那里獲取財務信息。該小組竊取的一些信息包括:
- 帶有客戶清單,投資和交易操作的電子表格和文檔
- 內部報告
- 交易軟件/平臺的軟件許可和憑證
- 來自瀏覽器的Cookies和會話信息
- 電子郵件憑證
- 客戶信用卡信息和地址/身份證明文件
根據我們在調查中看到的信息,該小組還獲得了與IT相關的信息的訪問權限,例如VPN配置。
攻擊概述
通過包含電子郵件指向在Google云端硬盤中的ZIP文件鏈接的魚叉式電子郵件來接近目標。該檔案文件包含幾個LNK(又名快捷方式)文件,這些文件在顯示誘餌文檔時會提取并執行惡意的JavaScript組件。這些快捷方式文件具有“雙擴展名”,以試圖誘騙用戶打開它們,認為它們是無害文檔或圖片(在Windows中,默認情況下隱藏已知文件類型的文件擴展名)。其中一個ZIP文件的內容如圖1所示。

一旦打開快捷方式文件(不管是哪個快捷方式,它們都做相同的事),它就會在自己文件的內容中查找帶有特定標記的行,并將其寫入.js文件。然后執行該惡意JavaScript文件,它編寫并打開一個誘餌文件,該誘餌文件的名稱與快捷方式相同,但擴展名正確。它還刪除快捷方式文件。用作誘餌的文件主要是信用卡,身份證件或帶有地址證明的票據的賬單,因為根據規定,許多金融機構要求客戶在加入時提供這些文件(這被稱為“了解客戶”)。其中一個誘餌如圖2所示(為了隱私而進行了模糊處理)。

這些誘餌文件似乎是真實的,我們認為這些文件是這個組織在多年的行動中收集到的。在該組織的當前運營中積極收集文件,因為它的目標客戶是技術支持代表和客戶經理,他們定期從客戶那里收到這類文件。除非目標來自不同的區域,否則該組將在不同的目標上重用文檔。
JavaScript組件是攻擊的第一階段,可以部署其他惡意軟件,例如C#spy組件,Golden Chickens組件或幾種基于Python的工具。過去,其他研究人員將Evilnum命名為C#組件,但JS組件也被稱為Evilnum。我們將組Evilnum命名為這是其旗艦惡意軟件的名稱,并且我們將各種惡意軟件片段稱為組件。這些概述如圖3所示。

每個組件都有自己的C&C服務器,并且每個組件獨立運行。惡意軟件的操作員手動發送命令來安裝其他組件,并在必要時使用危害后的腳本和工具。
惡意軟件使用的大多數服務器都是通過IP地址引用的;域名尚未使用。唯一的例外是Golden Chickens組件使用的C&C服務器。如稍后所述,從MaaS提供商處購買的惡意軟件。
IP地址引用的內容可以根據托管服務提供商分為兩組。它們中的大多數由烏克蘭提供商FreeHost托管。其余的與Dotsi一起在荷蘭托管。
JS組件:第一個妥協
該組件與C&C服務器通信,無需任何其他程序即可充當后門。但是,在我們看到的大多數攻擊中,攻擊者會根據需要部署其他組件,并且僅在第一階段使用JS惡意軟件。
該pwncode文章于2018年5月首次提及此JavaScript惡意軟件。從那時起,惡意軟件發生了變化,我們在圖4中說明了這些變化。

1.3版與其他版本之間的差異值得注意,因為C&C的服務器端代碼已更改,并且命令也有所不同。在早期版本中,不可能將文件上傳到C&C,而只能將文件下載到受害者的計算機。另外,隨著新版本的出現,該惡意軟件通過一些Python腳本和外部工具例如ChromeCookiesView進行了擴展。
盡管存在差異,但所有版本的核心功能均保持不變,包括從為此目的而專門創建的GitHub,GitLab或Reddit頁面檢索C&C服務器的地址。圖5顯示了Reddit頁面的示例,該頁面由惡意軟件解析以檢索C&C地址。

該組件通過“運行”注冊表項實現持久性,并具有完整的后門功能:它可以下載和執行二進制文件,運行任意命令或將文件從受害計算機上傳到C&C服務器。我們不會詳細介紹該組件的技術方面,因為Prevailion最近發布了對最新版本的很好的分析。
C#組件:邪惡,不是那么邪惡
2019年3月,Palo Alto Networks描述了與JS組件功能非常相似的惡意軟件,但使用C#編碼。該版本(2.5)通過將數字除以666獲得了C&C的地址,因此被Palo Alto Networks研究人員命名為Evilnum。從那時起,出現了新版本的C#惡意軟件,其中最新的是4.0版本,我們在2020年4月首次看到該數字。不再使用數字666,可執行文件的PDB路徑顯示開發人員將其惡意軟件稱為“奇跡”。但是,我們將繼續命名惡意軟件Evilnum,以避免造成混亂。
最新版本捆綁在MSI文件(Windows Installer)中,并且獨立于JS組件運行。此外,它具有與JS組件不同的C&C。但是,在我們已經看到的所有情況下,在JavaScript惡意軟件獲得初始訪問權限后,都下載并執行了C#組件。該組件的結構如圖6所示。

執行MSI文件時,會將三個惡意組件以及一些.NET Framework庫文件寫入%LOCALAPPDATA%\ Microsoft \ Mediia中的磁盤。文件復印機是第一個被執行的文件,它的唯一目的是將文件移動到%LOCALAPPDATA%中的另一個位置。然后執行加載程序,并加載和解密文件System.Memmory.dll的內容,該文件是C#組件的實際惡意有效負載(DLL代理)。AES加密用于DLL和混淆有效負載中的字符串。相同的密鑰和初始化向量用于加密所有不同版本中的字符串。
C&C服務器的IP地址采用硬編碼和純文本格式。發送針對/ Validate / valsrv的GET請求,如果響應體包含文本,您將找不到它,則服務器將被接受。否則,將分析GitLab頁面以獲取第二臺服務器的IP地址。
4.0版中具有以下功能:
- 如果在一段時間內移動了鼠標,請截取屏幕截圖,然后將其發送到base64編碼的C&C。圖像存儲在一個名為SC4.P7D的文件中
- 運行命令
- 通過cmd.exe運行其他二進制文件
- 發送信息,例如計算機名稱,用戶名和已安裝的防病毒軟件
- 通過創建注冊表項在受感染的系統中保留
指令
可以發送給惡意軟件的命令是:
- killme:停止惡意軟件并消除持久性
- mouse:移動鼠標。通過此操作將截取屏幕截圖
- Cookies:將Chrome Cookie發送到C&C
- 密碼:發送Chrome保存的密碼。我們認為他們關注Chrome并不是基于市場份額(畢竟,這些都是針對性的攻擊),而是因為處理Cookie和檢索存儲的密碼都很容易
- 使用cmd.exe直接運行的其他命令
2.5版是C#組件的第一個文檔版本。然后我們看到v2.7.1(2019年11月),v3(2019年12月)和v4.0(2020年4月)。最新版本的惡意軟件與先前版本之間最重要的區別是:
- 主要有效載荷是32位DLL。以前,它是一個64位EXE文件。
- 最新版本的HTTPS通信
- 不再有“反向”命令。在以前的版本中使用它來打開反向外殼。現在,其他腳本也可以做到這一點。
JS和C#組件相互連接:后者捕獲屏幕截圖,而前者不捕獲屏幕截圖,但是它具有用于查找屏幕快照文件并將其發送到其C&C服務器的代碼。C#組件還會刪除%LOCALAPPDATA%\ Temp文件夾中所有帶有.lnk擴展名的文件,從而清除JS組件最初破壞時的剩余內容。因此,即使C#組件的功能有限(無法下載或上傳文件),它也可以在其他C&C服務器上提供冗余,它也提供了一個不同的C&C服務器的冗余和額外的持久性,以防JS組件被檢測到或從受害者的計算機中刪除。
Golden Chickens組件:TerraLoader系列
在少數情況下,Evilnum組還部署了一些從“惡意軟件即服務”提供商那里購買的工具。該術語用于描述惡意軟件作者,他們不僅提供其惡意二進制文件,還提供任何必要的基礎結構(例如C&C服務器),甚至為其犯罪客戶提供技術支持。
在這種情況下,MaaS提供商被稱為Golden Chickens,并擁有其他客戶除此組之外,例如FIN6和Cobalt Group。Visa在2019年2月對Visa歸因于FIN6的電子商務商人的攻擊中,先前看到了我們在以下各節中描述的所有組件的較舊版本。我們認為,盡管它們的工具集有重疊,FIN6, Cobalt Group和Evilnum Group并不相同。他們只是碰巧共享同一個MaaS提供商。
Golden Chickens工具作為ActiveX組件(OCX文件)提供,并且都包含TerraLoader代碼,該代碼充當Golden Chickens客戶可用的各種有效負載的通用加載器。Evilnum使用這些工具的方式如下:
- 攻擊者手動向JS或C#組件發送命令,讓它們從其中一個服務器刪除并執行批處理文件。
- 該批處理文件將寫入一個惡意INF文件,并將其作為參數提供給Microsoft實用程序cmstp.exe,該實用程序將執行INF文件中指定的遠程腳本。該技術已在MITER ATT&CK知識庫中記錄為CMSTP;這里有一個使用該技術的示例。另一位出于經濟動機的團隊Cobalt過去曾使用過這種技術。
- 遠程腳本包含混淆的JS代碼,該代碼會丟棄OCX文件并通過regsvr32.exe執行該文件。
TerraLoader代碼在刪除有效負載之前會執行幾次完整性檢查。這些檢查將實施反調試技術,并嘗試識別異常情況以防止在沙盒環境中執行。這些技術中的一些技術范圍從檢測錯誤的參數,文件名和擴展名到檢測硬件斷點或識別加載到主題進程中的特定模塊。如果這些檢查全部通過,則將解密并執行實際的有效負載。
我們已經看到Evilnum在其攻擊中部署了以下Golden Chickens有效載荷:
- More_eggs
- Meterpreter有效載荷,我們將其稱為TerraPreter
- TerraStealer
- TerraTV
Positive Technologies的研究人員最近分析了Cobalt組使用的一些工具,包括More_eggs版本6.6,該版本是Evilnum組使用的版本之一。他們對TerraLoader進行了很好的分析,因此我們建議檢查他們的報告(第4部分)。
More_eggs
More_eggs是與C&C服務器通信并接受命令的JavaScript后門。過去,其他針對金融公司的組織也使用了它。Evilnum將它與自制的后門一起使用,以便在受害網絡上提供冗余和額外的持久性。
我們已經看到Evilnum將32位ActiveX組件與TerraLoader代碼一起使用,這些代碼運行More_eggs版本6.5、6.6和6.6b(最新版本)。他們通過刪除msxsl.exe(一個命令行轉換實用程序,它是合法的Microsoft可執行文件)并執行JavaScript代碼來實現此目的,這與IRIS在本文中所描述的非常相似。
刪除的JavaScript代碼是由ActiveX組件動態生成的,在分析過程中需要注意以下幾點:
- 執行exe的初始JS代碼具有硬編碼的絕對路徑,因此從另一個位置或與另一個用戶執行它將會失敗。
- 最終的More_eggs有效負載使用密鑰加密,該密鑰的末尾附加了主機名和處理器系列信息。一個關鍵例子是:cvyLMmtGSKmPMfzJjGyg552DESKTOP-FQAT01XIntel64系列6型號94 Steping 3,正版Intel
more_time此命令類似于已記錄的命令via_c,該命令使用cmd.exe / v / c parameter執行其參數。不同之處在于,它還會將輸出發送回C&C(via_c僅發送命令是否成功發送)。
TerraPreter
Evilnum組還使用64位可執行文件來解密并在內存中運行Meterpreter實例。使用Meterpreter使它們具有靈活性,并能夠以隱秘且可擴展的方式運行各種有效負載。
這些組件的結構和實施的完整性檢查被標識為TerraLoader代碼。因此,我們將這些組件稱為TerraPreter。主要惡意程序的反編譯代碼如圖7所示。

標有Dummy的例程調用了一系列不執行任何操作的API。RC4函數初始化通過獲取基本字符串并向其附加一個在每次迭代中遞增的數字來強制使用該密鑰。然后,它使用RC4用候選密鑰解密16字節緩沖區。如果解密的緩沖區與硬編碼的字符串匹配,則該候選密鑰將是選定的RC4密鑰,供以后使用。我們認為這可能是一個浪費時間的對抗模擬器的對策。
解密帶有有效負載的嵌入式緩沖區后,惡意軟件最終將為GrayStringW API函數設置回調,指向已解密的緩沖區。經過多層解碼之后,Meterpreter的metsrv.dll被加載到內存中。從這一點開始,我們看到的是尚未更改的常規Meterpreter行為。但是,我們將繼續描述如何進行通信。
TerraPreter使用HTTPS與C&C服務器通信,并檢索一系列命令。我們看到的C&C是是cdn.lvsys[.]com 和 faxing-mon[.]best。一個重定向到d2nz6secq3489l.cloudfront[.]net。C&C每次收到請求時,都會發送不同的二進制數據,并與一個隨機的4字節密鑰進行異或。惡意軟件會從32字節標頭的前4個字節中讀取用于解密的密鑰,該標頭以加密數據為前綴。圖8顯示了一個示例。

C&C發送的第一個命令是core_patch_url,它更改URL的最后一部分以用于后續請求。然后,C&C發送core_negotiate_tlv_encryption及其公鑰。從現在開始,將對消息進行XOR加密。
TerraStealer和TerraTV
TerraStealer也被稱為SONE或Stealer One。它會掃描許多瀏覽器,電子郵件,FTP和文件傳輸應用程序,以竊取Cookie和憑據。我們分析的二進制文件之一已激活日志記錄。圖9顯示了這種日志的一部分。

該小組使用的另一個組件是TerraTV的變體。它運行合法的TeamViewer應用程序,但隱藏其用戶界面元素,以便惡意軟件的操作員可以在未檢測到的情況下連接到受感染的計算機。
執行后,TerraTV將幾個已簽名的TeamViewer組件放到C:\ Users \ Public \ Public Documents \ 57494E2D3850535045046373333503532 \中。刪除的文件如圖10所示。

ACTIVEDS.dll未簽名,并且是惡意代碼所在的位置。在系統文件夾中有一個具有相同名稱的Windows DLL,但是由于惡意DLL與TeamViewer可執行文件位于同一目錄中,因此會首先找到該DLL,然后將其加載而不是Windows DLL。這就是所謂的DLL搜索順序劫持。這個ACTIVEDS.dll在TeamViewer可執行文件中掛鉤了幾個API調用,以隱藏應用程序的任務欄圖標并捕獲登錄憑據。圖11顯示了設置鉤子的代碼部分。

Windows API調用DefWindowProcW(由TeamViewer可執行文件多次調用以處理定向到其主窗口的消息)與例程掛鉤,該例程將TeamViewer的ID和密碼寫入文件%APPDATA%\ log_CZ72kGqTdU.txt中。有了這些憑據,并且TeamViewer在沒有可見的托盤圖標或窗口的情況下運行,惡意軟件的操作員可以隨時通過其GUI遠程控制計算機。
Post-compromise工具集
先前提到的惡意組件經常通過Evilnum組的武器庫中的幾個附加工具進行擴展。在我們看到的大多數compromise中,攻擊者使用了公開可用的工具,但還開發了一些自定義腳本。通常,他們將工具保存在服務器上受密碼保護的存檔中,并根據需要在受害者的PC上將其解壓縮。
基于Python的工具
- 通過SSL腳本進行反向Shell:這是一個非常簡短的腳本,它將服務器和端口作為命令行參數。
- 使用SSL代理PythonProxy,junction, plink和stunnel。它還可以連接到FTP服務器或使用pysoxy。我們已經看到該腳本與“ proxy”設置一起使用,并且185.62.189[.]210作為服務器。
- LaZagne檢索存儲的密碼
- IronPython以及用于截屏,鍵盤記錄和錄制DirectSound音頻的庫
其他公開可用的工具
- PowerShell腳本:例如,旁路-UAC
- 幾個NirSoft實用程序;例如,Mail PassView (用于從電子郵件客戶端檢索密碼)和ProduKey(用于獲取Microsoft Office和Windows許可證)。
結論
Evilnum小組已經運作了至少兩年,并且在撰寫本文時一直很活躍。它具有用于與多個不同服務器進行操作的基礎結構:一個用于與JS組件進行通信,另一個用于C#組件,用于存儲其工具和泄露的數據,代理服務器等。該小組的目標是為客戶提供交易和投資平臺的金融科技公司。目標非常明確,數量不多。這一點,再加上該組織在攻擊鏈中使用合法工具,很大程度上使其活動受到關注。借助遙測數據,我們能夠將各個點連接起來并發現該組的工作方式,從而發現與其他已知APT組的一些重疊之處。我們認為這一組和其他組共享同一個MaaS提供者,而且Evilnum組還不能與任何其他APT組以前的攻擊相關聯。