Purple Fox 服務器基礎設施的安全性概覽
在之前的一篇文章中,研究人員通過概述其工作原理來分析了 Purple Fox 僵尸網絡。此外,研究人員還檢查了它的初始訪問技術和一些相關的后門。
在這項研究中,研究人員更深入地了解了研究人員通過 Trend Micro Managed XDR 觀察到的感染鏈的后期階段,特別是它如何通過插入惡意 SQL CLR 程序集來感染 SQL 數據庫,以實現持久和隱蔽的執行。應該注意的是,這次攻擊中使用的大多數文件并不存儲在磁盤上,而是在從命令和控制 (C&C) 服務器中提取或加密后從內存中執行,然后由另一個進程加載這些文件。
研究人員還討論了僵尸網絡的底層 C&C 基礎設施,以及 Purple Fox 運營商在最近的活動中選擇以 SQL 服務器為目標的動機。
進程注入
研究人員先來分析一下Purple Fox的進程注入例程。該惡意軟件首先通過生成一個掛起的 svchost.exe(由隨附的 rootkit 更改為 fontdrvhost.exe)進程來加載其各種組件。然后它在進程地址空間中加載 DLL 組件,然后將執行重定向到加載的 DLL。

進程樹概覽
C&C服務器
該惡意軟件通過三種不同的方式與其 C&C 服務器進行通信,每種方法都在執行的特定階段用于不同的目的。
DNS
DNS 用于在每個進程執行開始時獲取 C&C IP 地址列表。如果所有服務器在此階段或在研究人員接下來看到的稍后階段都未能響應,它也用于更新此列表。需要注意的一件事是,DNS 請求收到的 IP 地址并不是 C&C 服務器使用的真實 IP 地址。盡管 DNS 請求接收到的那些是經過編碼的,但可以通過從 IP 地址中減去一個固定數字來對其進行解碼。下表顯示了這方面的示例。

表 1. 通過 DNS 請求接收的 IP 地址示例和實際解碼的 IP 地址
以下是用于 DNS 請求的域:
Kew[.]8df[.]us 指向 m[.]tet[.]kozow[.]com;
ret[.]6bc[.]Us 指向 a[.]keb[.]kozow[.]com;
返回的 IP 地址列表每隔幾分鐘左右就會更改一次,以便在僵尸網絡C&C基礎設施中循環使用。
UDP
第二種通信方法是用戶數據報協議(User Datagram Protocol, UDP),用于各種類型的消息,包括構建用于進一步通信的緩存IP地址列表。此外,它還用于為運行工具提取配置,并檢索下一節討論的HTTP流量的IP:PORT列表。
從 DNS 中選擇一個 IP 地址后,將其解碼為真實 IP 地址和端口號,然后請求拉取緩存 IP 地址列表。如果緩存列表出現故障,惡意軟件將返回DNS獲取一個新IP地址來構建另一個緩存IP地址列表。
HTTP
為了開始在系統上執行其例程,惡意軟件通過發出格式為 http://IP:PORT/xxxx[.]moe 的 GET 請求來提取加密的 DLL,其中 IP:PORT 由 UDP 消息且 xxxx[. ]moe 是Worker DLL 之一。這些 DLL 被保存在一個文件中,并由解密、解壓縮和執行它們的工作進程加載。
Worker DLL
SQL Server 掃描程序 [32A7E157.moe]
第一個Worker DLL 是 SQL Server 掃描程序,它使用前面描述的 HTTP 通信從 /3FE8E22C.moe 中提取其核心模塊。這個核心模塊被注入到一個新進程中,并使用 UDP 通信拉取掃描器配置,該通信具有用于掃描的起始公共地址。
它通過端口 1433 掃描 SQL Server 的本地和公共 IP 地址。如果它找到一個開放端口,它就開始使用1000萬個單詞列表對SQL Server身份驗證進行暴力破解。
當惡意軟件通過身份驗證時,它會執行一個 SQL 腳本,該腳本在 SQL Server 數據庫上安裝一個后門程序集 (evilclr.dll),該程序集用于使用 SQL 語句執行命令。使用此程序集,在 SQL Server 上執行 PowerShell 命令以啟動 Purple Fox 的感染鏈,如研究人員之前的博客文章所述。

SQL 暴力請求

對 SQL 暴力請求的響應失敗

對SQL蠻力請求的成功響應

執行 SQL 語句

感染前的數據庫

感染后的數據庫
XMR Coinminer [F30DC9EB.moe]
第二個Worker DLL 是一個 XMR Coinminer,它通過UDP檢索配置來啟動它的例程。然后它開始執行一個嵌入的 XMRig 二進制文件,并拉取配置,使計算機人在 108[.]177[.]235[.]90:443 加入挖礦池。

在前臺運行的自定義 XMRig
通過 SQL Server 執行操作系統
Purple Fox 將 SQL 服務器作為其目標,而不是用于加密貨幣挖掘活動的普通計算機。這主要是因為服務器通常具有更強大的硬件配置——CPU 和內存。更具體地說,對于 SQL 服務器,CPU、內存和磁盤因素的組合應該隨著與數據庫相關的操作而擴展,以避免性能瓶頸。
與普通臺式機相比,這些計算機通常具有更大的計算能力,可產生顯著更高的基于哈希的計算量(哈希率),從而使服務器更具挖礦優勢。
由于 SQL 數據庫支持直接執行操作系統命令的不同向量,Purple Fox 利用了最隱蔽的方法,將二進制文件插入 SQL 服務器數據庫,該方法可以通過 TSQL 命令執行。SQL 組件提供了以下接口,供攻擊者在針對 SQL 服務器時使用:

SQL 組件的可用接口
Purple Fox 選擇在其感染鏈中使用 CLR 程序集(一組可以導入 SQL Server 的 DLL)來使用 .NET 方法,而不是更流行的 xp_cmdshell,后者已經受到安全分析師的嚴密監控。一旦導入了 DLL,它們就可以鏈接到可以通過 TSQL 腳本執行的存儲進程。此向量的受影響版本從 SQL Server 2008 開始。
該方法默認需要系統管理員角色,以SQL Server服務帳號執行。通過利用這個接口,攻擊者能夠編譯 .NET 程序集 DLL,然后將其導入 SQL 服務器。它還可以將程序集存儲在 SQL Server 表中,創建映射到 CLR 方法的進程,最后運行該進程。
據報道,CLR Assemblies 方法之前已被 Purple Fox 以外的組織使用,例如 MrbMiner 和 Lemon Duck。
基礎設施
此處描述的通信方案中使用的 C&C 服務器是受感染的服務器,它們是僵尸網絡的一部分,用于托管 Purple Fox 的各種有效載荷。研究人員通過以下事實推導出這個結論:
C&C 服務器本身就是 SQL 服務器;
HTTP服務器報頭是mORMot,它是用Delphi編寫的,各種組件使用的是同一種語言;
有大量的服務器(一周內超過 1000 臺);
兩個初始 DNS 請求都是對 kozow[.]com 下子域的 CNAME,這是 dynu[.]com 提供的免費動態域服務。可以使用 API 更新此服務以使其指向不同的 IP 地址,攻擊者使用這種技術定期更改 IP 地址。
其他顯著特征
研究人員發現非服務器系統感染了 Purple Fox,這表明除了 SQL Server 暴力攻擊之外,還有其他可能的初始訪問方法來傳播惡意軟件。
此活動類似于在 Lemon Duck 攻擊中看到的活動,甚至共享一些技術,例如使用 PowerSploit 進行反射 PE 加載并為 SQL Server 程序集實現相同的后門 evilclr.dll。兩種攻擊也有相同的目標,即挖掘門羅幣。
安全建議
在觀察到與 SQL 服務器上的 Purple Fox 僵尸網絡相關的任何可疑活動后,研究人員建議執行以下步驟以徹底清除感染中的所有惡意程序:
1.檢查所有 SQL Server 的存儲進程和程序集,以查找 DBA 無法識別的任何可疑程序集。如果檢測到,請刪除這些組件中的任何一個。
2.執行以下 TSQL 腳本以刪除插入到數據庫中的惡意 CLR 程序集的以下殘余惡意軟件:
USE [master]
GO
DROP ASSEMBLY [fscbd]
GO
3.禁用數據庫服務器上的所有未知帳戶并更改所有密碼;
4.不要將對外暴露的 TCP 1433 端口發布到不受信任的區域。此外,通過具有良好保護的訪問策略的 DMZ 區域中的外圍防火墻保護 SQL 服務器主機;
5.實施適當的網絡微分段和網絡分區,同時通過網絡安全控制應用零信任策略;
6.限制進出 SQL 服務器的流量,這些服務器具有非常特殊的功能;因此,它們應該只被允許與其他受信任的主機通信,還應控制入站和出站互聯網可訪問性。
參考及來源:
https://www.trendmicro.com/en_us/research/21/l/a-look-into-purple-fox-server-infrastructure.html