揭开暗云活动的新变体

cipher

版主

cipher Rep
0
0
0
Rep
0
cipher Vouches
Vouches
0
8 MONTHS
8 8 MONTHS OF SERVICE
cipher 获得
0
0
0
获得
0
cipher 凭证
0
0
0
凭证
0
主题
18
点赞
0
HakB
8
在社区成长 8 月
LEVEL 50 100 XP
 
受影响的平台: Microsoft Windows受影响方: Windows UsersImpact: 从受害者的计算机收集敏感信息严重性级别: 高

背景​

2025 年7 月上旬,Fortinet 的FortiGuard 实验室团队在野外观察到了一场新的DarkCloud 活动。它始于一封包含RAR 存档附件的网络钓鱼电子邮件。我随后调查了这次活动并进行了逐步分析。
DarkCloud 是一种已知的基于Windows 的隐秘信息窃取恶意软件,于2022 年首次发现。它旨在从受害者的计算机中窃取敏感信息,包括保存的登录凭据、财务数据、联系人等。
2025 年全球威胁形势报告
使用此报告可以了解最新的攻击者策略,评估您的暴露情况,并在下一次攻击攻击您的环境之前确定采取行动的优先顺序。
立即下载
在本次分析中,我将展示该活动如何在受害者的计算机上启动,如何在系统上建立持久性,如何下载、解码和部署无文件DarkCloud 有效负载,该变体可以从受害者那里获取的敏感信息类型,以及如何窃取被盗数据。

感染链​

图1 显示了这个新的DarkCloud 变种的感染链。
Figure 1: New DarkCloud variant infection chain.

图1: 新的DarkCloud变种感染链。

网络钓鱼电子邮件攻击初始化​

如图2 所示,网络钓鱼电子邮件以提供紧急报价为借口,引诱收件人打开附加的RAR 文件。值得注意的是,该电子邮件不包含消息正文。仅包含一个附件。
Figure 2: The phishing email with a RAR attachment.

图2: 带有RAR 附件的网络钓鱼电子邮件。
在WinRAR 中打开Quote #S_260627.RAR 文件后,接收者会发现其中有一个名为Quote #S_260627.js 的独立JavaScript 文件。一旦接收者双击JS 文件,就会自动启动Windows 默认进程WScript.exe 来执行它。

JavaScript PowerShell​

JS代码被混淆,如图3所示,执行时动态从混淆代码中解码出一段PowerShell代码。然后,它创建一个WScript.Shell 对象来运行解码后的PowerShell 代码。
Figure 3: Partial code of the JavaScript file.

图3: JavaScript 文件的部分代码。
cosmea 变量保存解码后的字符串powershell -w hide -noprofile -epbypass -c,而effortless 变量则包含解码后的PowerShell 代码。
PowerShell 代码采用Base64 编码并在运行时进行解码。图4 显示了解码后的PowerShell 代码,该代码分为多个部分。
Figure 4: Base64-decoded PowerShell code.

图4: Base64 解码的PowerShell 代码。
它会下载伪装的JPEG 图片,如图5 所示。
Figure 5: View of the disguised JPEG file.

图5: 伪装的JPEG 文件的视图。
根据我的分析,这张JPEG图片的背景中嵌入了一个加密的.NET DLL。
然后,PowerShell 代码通过解析JPEG 文件来定位.NET DLL,并使用[Reflection.Assembly]:Load() 方法加载它,然后通过使用$florinda 变量携带的参数数组调用Invoke() 方法来调用ClassLibrary1.Home.VAI() 方法。

剖析.NET模块​

.NET DLL 的程序集名称是Microsoft.Win32.TaskScheduler。NET DLL 伪装成与TaskScheduler 相关的模块,可能是为了迷惑受害者和研究人员。图6 显示了在.NET DLL 的入口点函数VAI() 处暂停的调试器视图。
Figure 6: Viewing the VAI() method in a debugger.

图6: 在调试器中查看VAI() 方法。
.NET DLL 模块执行诸如维护持久性、下载和解码无文件DarkCloud 有效负载以及使用进程空洞在Windows 进程中部署有效负载等任务。
持久化机制
该模块通过执行以下命令行将JavaScript 文件复制到另一个位置: cmd.exe /C copy *.js C:\Users\Public\Downloads\edriolookingma.js。目标文件夹路径和文件名由PowerShell 代码传递。
它继续在HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Run 下的系统注册表中添加自动运行条目,如图7 所示。
Figure 7: The auto-run item added to the system registry.

图7: 自动运行项添加到系统注册表中。
这可确保复制的edriolookingma.js 文件在系统启动时自动执行。
有效负载下载
您可能已经注意到,VAI() 方法的第一个参数是反向Base64 编码的字符串(请参阅图6)。NET 模块将Base64 字符串解码为URL:hxxp://paste[.]ee/d/0WhDakVP/0。通过请求URL,可以在响应中检索反向PE 文件,如图8 所示。
Figure 8: Reversed DarkCloud payload.

图8: 反转的DarkCloud 有效负载。
将其内容从十六进制字符串反转并转换为二进制后,内存中将出现一个EXE 文件,该文件作为该DarkCloud 变体的无文件有效负载。
使用Process Hollowing 部署DarkCloud Payload
它在受害者系统上的相关.NET Framework 目录中搜索MSBuild.exe 文件。文件名由PowerShell 代码传递(有关详细信息,请参阅图6)。在我的环境中,它是%Windir%\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe。
Figure 9: Partial list of Windows APIs used for process hollowing.

图9: 用于进程空洞的Windows API 的部分列表。
然后,它对新创建的MSBuild.exe 进程执行进程空洞。为了实现这一点,它必须调用一系列Window API,如图9 中定义的那些。
涉及的步骤如下:
它新创建了一个挂起的MSBuild.exe 进程。
它将DarkCloud 有效负载复制并部署到新进程中。
它修改EAX 寄存器值以指向DarkCloud 的入口点。
它恢复挂起的进程,允许DarkCloud 在新的MSBuild.exe 进程中运行。
调用的相关API有:
CreateProcess()、ReadProcessMemory()、VirtualAllocEx()、NtUnmapViewOfSect
 
顶部