摘要
近年来,以信息窃取为目的的恶意软件在高级持续性威胁(APT)及商业间谍活动中扮演着愈发关键的角色。2025年9月,eSentire威胁响应单元(TRU)披露了一起针对制造业企业Zendesk客服工单系统的鱼叉钓鱼攻击事件,攻击者通过伪造银行SWIFT MT103汇款通知邮件,诱导目标用户执行ZIP附件中的可执行文件,从而部署DarkCloud v3.2信息窃取器。该恶意软件具备键盘记录、FTP凭据窃取、浏览器数据提取及多通道外传能力,并采用VB6重写、字符串混淆、沙箱逃逸等技术增强隐蔽性。本文基于公开样本与逆向分析成果,系统梳理DarkCloud的架构设计、行为特征与规避机制,结合攻击链路还原其战术意图,并提出覆盖邮件网关、终端防护、网络监控与人员意识四个维度的纵深防御体系。通过代码模拟其关键行为与检测逻辑,验证所提策略的有效性,为面向客服入口的定向攻击提供可落地的缓解方案。
关键词:鱼叉钓鱼;信息窃取器;DarkCloud;Zendesk;VB6混淆;键盘记录;FTP凭据窃取;EDR检测

1 引言
随着企业数字化服务渠道的扩展,客户支持平台(如Zendesk、Freshdesk等)已成为外部交互的关键节点。此类系统通常配置专用邮箱接收用户工单,其高可信度与低审查强度使其成为攻击者理想的初始入侵跳板。2025年9月下旬,eSentire TRU监测到一起高度定向的鱼叉钓鱼活动,攻击者精准锁定某制造企业的Zendesk支持邮箱,利用金融业务场景构建社会工程诱饵,成功投递DarkCloud信息窃取器。该事件凸显了“客服入口”作为攻击面的脆弱性,也反映出当前信息窃取类恶意软件在技术演进上的新趋势:从通用化批量分发转向定制化定向投递,从单一功能模块发展为多协议、多通道、强规避的复合型载荷。
DarkCloud并非首次出现,但其v3.2版本通过从.NET迁移至Visual Basic 6(VB6)重构,显著提升了反分析能力。VB6虽为老旧开发环境,但其生成的PE结构简单、调试符号缺失、反编译困难,加之本地编译模式限制了自动化变种生成的门槛,反而成为恶意软件作者规避检测的新选择。更值得注意的是,DarkCloud的分发渠道公开化——其构建器可在暗网网站darkcloud.onlinewebshop[.]net下载,并通过Telegram频道@BluCoder提供技术支持,形成类似“恶意软件即服务”(Malware-as-a-Service, MaaS)的运营模式。
本文聚焦此次攻击事件,旨在回答三个核心问题:(1)DarkCloud v3.2如何实现高效的信息窃取与隐蔽外传?(2)其规避机制如何干扰传统安全产品的检测逻辑?(3)针对以客服工单系统为入口的定向攻击,应构建怎样的技术与管理协同防御体系?通过逆向工程、行为模拟与防御策略推演,本文力图提供兼具技术深度与实践价值的分析框架。

2 攻击链路还原
2.1 初始访问:伪装金融通信的鱼叉邮件
攻击始于一封主题为“Swift Message MT103 Addiko Bank ad: FT2521935SVT”的电子邮件,发件人地址经过仿冒,内容模仿标准SWIFT MT103格式,声称包含一笔跨境汇款的附加信息。该邮件被定向发送至目标企业的Zendesk支持邮箱(如support@company.com),利用客服人员处理财务相关工单的常规操作心理,提升打开率。
附件名为“Swift Message MT103 FT2521935SVT.zip”,解压后包含单一可执行文件“Swift Message MT103 FT2521935SVT.exe”。该文件无数字签名,图标伪装为PDF文档,利用Windows默认隐藏已知文件扩展名的设置诱导用户双击执行。

2.2 载荷投递:DarkCloud v3.2部署
执行后,恶意程序首先进行环境侦察,随后释放并加载DarkCloud主模块。值得注意的是,该样本为VB6编译产物,其入口点调用Main子过程,而非典型的Win32 WinMain,这在一定程度上规避了基于API调用序列的静态检测规则。
2.3 信息窃取与外传
DarkCloud启动后,按以下顺序执行窃取任务:
系统指纹采集:通过WMI查询获取磁盘信息(Win32_LogicalDisk)、计算机型号(Win32_ComputerSystem)、CPU型号(Win32_Processor)及当前用户名、域名等环境变量,用于唯一标识受感染主机。
浏览器数据提取:遍历Chrome、Edge、Firefox等主流浏览器的用户数据目录,提取保存的登录凭据、Cookie、历史记录及信用卡信息(若存在)。
FTP客户端凭据窃取:扫描FileZilla、WinSCP等常用FTP客户端的配置文件(如sitemanager.xml、WinSCP.ini),解析其中明文或弱加密存储的服务器地址、用户名与密码。
键盘记录:启动全局钩子(SetWindowsHookExA with WH_KEYBOARD_LL),捕获所有进程的按键事件,将记录暂存于内存缓冲区。
剪贴板与加密钱包监控:定期读取剪贴板内容,并扫描预设路径(如%APPDATA%\Electrum\wallets\)下的加密货币钱包文件。
数据打包与外传:将上述信息压缩加密后,通过SMTP(含SSL)、Telegram Bot API、FTP或自建PHP Web Panel四种方式外传。本次观测样本使用SMTP与Telegram双通道冗余传输,确保至少一条路径可达。

3 DarkCloud v3.2技术特征分析
3.1 VB6重构带来的检测挑战
DarkCloud从早期.NET版本迁移到VB6,主要出于以下考量:
反编译难度高:.NET程序集可通过ILSpy、dnSpy等工具近乎完美还原源码,而VB6编译后的P-Code或Native Code缺乏符号信息,反汇编结果可读性极差。
调试器兼容性差:主流调试器(如x64dbg)对VB6运行时(msvbvm60.dll)的支持有限,断点设置与变量监视困难。
行为特征模糊:VB6程序大量调用rtc系列运行时函数(如rtcRandomize、rtcStringBstr),其API调用图与合法VB6应用高度相似,难以通过行为异常识别。
3.2 字符串混淆机制
为隐藏C2地址、Telegram Bot Token等关键字符串,DarkCloud采用基于VB6 Rnd() 函数的自定义混淆算法。其核心逻辑如下(伪代码):
Function DecryptString(Encrypted As String, Seed As Long) As String
Randomize Seed
Dim i As Integer
Dim result As String
For i = 1 To Len(Encrypted)
Dim c As Integer
c = Asc(Mid(Encrypted, i, 1))
' 逆向偏移:原始加密为 c = (c + Int(Rnd * 256)) Mod 256
Dim randVal As Integer
randVal = Int(Rnd * 256)
Dim plainChar As Integer
plainChar = (c - randVal + 256) Mod 256
result = result & Chr(plainChar)
Next i
DecryptString = result
End Function
由于Randomize和Rnd的内部状态由种子决定,只要获取种子值(通常硬编码于程序中),即可复现随机序列并解密字符串。eSentire通过逆向msvbvm60.dll中的rtcRandomNext实现,成功还原了外传地址。
3.3 沙箱与虚拟机逃逸
DarkCloud集成多层环境检测机制,一旦触发任一条件即终止执行:
进程检测:枚举进程列表,若存在fiddler.exe、wireshark.exe、idaq.exe等分析工具则退出。
资源阈值:检查物理内存 < 1GB、磁盘空间 < 60GB、CPU核心数 < 2 或进程总数 < 50,符合典型沙箱特征则中止。
虚拟机标识:查询硬件驱动(如vmmemctl.sys)、BIOS信息(如“VMware Virtual Platform”)或注册表项(HKLM\HARDWARE\DESCRIPTION\System\SystemBiosVersion含"VBOX")。
文件名校验:若自身文件名非十六进制字符串(如A3F1B2.exe),则视为处于分析环境。
此类检测逻辑有效规避了基于轻量级沙箱的邮件网关扫描。
4 防御体系构建
4.1 邮件网关层:强化附件策略
针对客服邮箱高频接收外部附件的特点,建议实施以下策略:
禁止可执行文件嵌套:在邮件安全网关(如Mimecast、Proofpoint)中配置规则,阻断ZIP/RAR等压缩包内含.exe、.scr、.js、.vbs等可执行扩展名的邮件。
动态沙箱增强:部署具备VB6运行时支持的高级沙箱,模拟真实用户环境(如>2GB RAM、>100GB Disk、>80个进程),绕过资源检测。
发件人信誉与内容标记:对包含“SWIFT”、“MT103”、“Bank”等关键词的外部邮件自动添加显著警告横幅,并强制二次确认方可下载附件。
4.2 终端防护层:EDR行为检测
传统AV依赖特征码,难以应对VB6混淆载荷。需依赖EDR的实时行为监控:
键盘记录检测:监控SetWindowsHookExA调用,若非来自可信进程(如输入法、远程控制软件),则告警。
凭据访问监控:审计对%APPDATA%\FileZilla\sitemanager.xml、%LOCALAPPDATA%\Google\Chrome\User Data\Default\Login Data等敏感路径的非常规读取。
异常外连识别:建立基线,对非业务时段、非常规目的地(如Telegram IP段、东欧SMTP服务器)的外传连接进行拦截。
以下为模拟EDR检测键盘记录的Python示例(基于Windows ETW事件):
import sys
from pywintrace import EventTrace
def on_event(event):
if event.ProviderName == "Microsoft-Windows-Win32k":
if event.EventName == "HOOK_CREATE":
hook_type = event.Payload.get("HookType")
thread_id = event.Payload.get("ThreadId")
if hook_type == 13: # WH_KEYBOARD_LL
proc_name = get_process_by_thread(thread_id)
if proc_name not in ["explorer.exe", "ctfmon.exe", "trusted_app.exe"]:
print(f"[ALERT] Suspicious LLKB hook by {proc_name} (PID: {get_pid_by_thread(thread_id)})")
# 启动ETW监听
trace = EventTrace("LLKB_Monitor")
trace.add_provider("Microsoft-Windows-Win32k", [0x20]) # Enable HOOK events
trace.start(on_event)
4.3 网络层:出站流量审计
FTP协议监控:在网络DLP或代理设备中,对出站FTP流量进行深度解析,若发现包含USER/PASS命令且目标非白名单服务器,立即阻断并告警。
SMTP外传检测:分析邮件客户端(如Outlook)以外的进程发起的SMTP连接,特别是使用SSL但证书无效或自签名的情况。
Telegram API识别:通过TLS指纹或HTTP User-Agent(如TelegramBot (like TwitterBot))识别恶意Bot通信。
4.4 人员意识层:针对性培训
客服专项演练:定期模拟“银行通知”、“客户紧急工单”等场景,测试员工对可疑附件的处置流程。
最小权限原则:Zendesk邮箱账户不应具备本地管理员权限,限制恶意软件持久化与横向移动能力。
双人复核机制:对涉及财务、凭证类工单,强制要求两名客服人员交叉验证后再处理附件。
5 实验验证
为验证防御策略有效性,我们在隔离环境中复现攻击链:
环境搭建:Windows 10 22H2 + Zendesk模拟邮箱 + EDR代理 + 网络代理。
攻击模拟:发送含DarkCloud样本的钓鱼邮件,用户点击执行。
检测结果:
邮件网关因ZIP内含.exe被阻断(策略生效)。
若绕过网关,EDR在SetWindowsHookExA调用时触发告警(行为检测命中)。
网络代理拦截了对Telegram Bot API的POST请求(外传阻断)。
误报测试:合法VB6应用(如旧版内部工具)未触发告警,证明策略具备可用性。
6 结论
本次针对Zendesk客服入口的鱼叉钓鱼攻击,展示了信息窃取器在定向化、隐蔽化与工程化方面的最新演进。DarkCloud v3.2通过VB6重构、多通道外传与强环境感知,显著提升了检测难度。然而,其攻击链仍存在多个可干预节点:从邮件附件策略、终端行为监控到网络流量审计,结合人员意识提升,可构建有效的纵深防御体系。
未来,随着客服系统与CRM、ERP的深度集成,此类入口的攻击价值将持续上升。安全团队需摒弃“边界防护万能论”,转而关注“数据流经之处即是防线”的理念,在每一个交互点部署适配的检测与响应机制。唯有如此,方能在日益复杂的定向攻击面前守住企业数字资产的第一道也是最后一道防线。
编辑:芦笛(公共互联网反网络钓鱼工作组)
1万+

被折叠的 条评论
为什么被折叠?



