摘要: 恶意软件装载器(loader)是连接钓鱼入口与最终载荷之间的关键执行环节,其复用程度直接反映攻击者基础设施与技战术的稳定关系。2026 年 10 月,安全研究团队披露了一场以司法主题钓鱼邮件为入口、针对哥伦比亚组织的攻击活动,其通过混淆脚本、加密的 PowerShell 脚本与可复用.NET 装载器投放 XWorm 远控木马,且恢复出的装载器与同年 9 月英国关联案例二进制完全一致。本文以该披露为素材,系统还原从钓鱼邮件到内存执行的完整攻击链,剖析 VBScript 与 JavaScript 层的多层混淆、自定义 Base93/Base52 编码、AES、SM4、RC4 等多套加解密机制的组合运用,并在此基础上阐明 "装载器复用" 与 "归因重合" 在分析口径上的本质区别。研究认为,将装载器身份、载荷配置与命令控制基础设施三个维度分开考察,是避免误判攻击组织归属、提升检测针对性的方法论前提;在此基础上,防御方应围绕攻击链各环节建立分层的检测与响应机制。
关键词: XWorm;恶意软件装载器;代码复用;恶意代码分析;命令与控制;钓鱼攻击
1 引言
在当代恶意软件生态中,装载器已经成为攻击者投放最终载荷的标准前置环节。所谓装载器,是指一类负责在目标主机上解密、释放并执行最终恶意载荷的程序。它的存在有着明确的现实动因:直接投送原始木马往往会被邮件网关、终端防护与行为检测在入口处拦截,而将载荷以加密、混淆的形式封装在装载器之后,则可显著提高静态检测的规避能力,并利用系统的合法执行机制完成投递。
2026 年 10 月 28 日,安全媒体披露了一场以司法主题钓鱼邮件为入口的攻击活动。该活动针对哥伦比亚组织,使用西班牙语邮件诱导收件人执行伪装成行政或司法文书的脚本,进而通过多层解包在内存中装载 XWorm 远程访问木马。尤为值得关注的是,安全研究人员在分析中发现,该活动所复用的装载器与此前记录的英国关联案例在二进制层面完全一致,而两者的载荷、执行目标与命令与控制基础设施却并不相同。这一发现为理解攻击者如何在不同战役间复用技术组件,以及如何正确解读这种复用提供了典型样本。
本文以这一披露为研究材料,但并不停留在对事件的复述,而是试图完成三个层面的分析:其一,还原装载器从钓鱼邮件到内存执行的完整攻击链,阐明每一执行环节的技术构造;其二,剖析多套混淆与加密机制的组合逻辑,说明其各自承担的防护功能;其三,厘清 "装载器复用" 与 "归因重合" 两个概念的边界,据此提出检测与治理的可行路径。通过这一 "链路还原 — 机制剖析 — 方法论辨析 — 防护启示" 的闭环结构,希望为恶意代码分析人员与高校等机构的网络安全防护提供有据可依的参考。
2 装载器在恶意软件生态中的角色
2.1 装载器与最终载荷的功能分工
在功能上,装载器与最终载荷承担着截然不同的任务。最终载荷,例如 XWorm 这类远程访问木马,负责在被感染主机上建立持久化的远程控制能力,实现文件操作、屏幕监控、键盘记录、数据窃取乃至分布式拒绝服务等多种功能。而装载器本身通常不携带这些业务能力,它的全部职责在于 "解锁并投递"—— 通过一系列解密、解码与内存操作,将封装在自身内部的载荷还原出来并启动执行。
这种分工使装载器具备了两个显著特征。第一,装载器的体积通常较小,便于经钓鱼邮件附件或下载链接触发;第二,装载器对杀毒软件的静态检测高度敏感,因为它需要执行复杂的解密逻辑,而这些逻辑一旦被识别便意味着整个投放失败。因此,攻击者在装载器上投入的精力往往集中体现在混淆与加密的设计上,这既是装载器分析的难点,也是识别攻击者技术特征的重要窗口。
2.2 装载器复用的战术含义
装载器的另一个重要特征是跨战役复用。由于编写一套健壮、可靠的装载器需要相当的技术投入,攻击者倾向于在多个攻击活动中复用同一装载器组件,仅更换其中的载荷与配置参数。这种复用带来的直接后果是:在不同时间、不同目标地区发生的攻击活动,可能在装载器层面呈现出高度相似甚至完全相同的外貌。
反网络钓鱼技术专家芦笛指出,装载器复用是分析人员需要审慎对待的双刃剑。一方面,它是连接看似孤立攻击事件的技术纽带,为威胁情报的关联提供了线索;另一方面,若将装载器的相似性直接等同于攻击者归属的同一性,则极易产生误判。芦笛强调,装载器复用只能证明技术组件的流通与沿用,而不能证明不同战役背后的操盘者必然相同,二者必须严格区分。
2.3 分析维度三分法
正因为装载器复用与归因之间存在张力,权威的恶意代码分析方法论要求分析人员始终将三个维度分开考察:装载器身份、载荷配置与命令与控制基础设施。装载器身份关注程序本身的代码特征,例如哈希值、混淆方式与调用结构;载荷配置关注被装载的最终载荷,例如其哈希、功能与行为指纹;命令与控制基础设施则关注 C2 的域名、IP 与通信协议。
在本案例中,这三个维度的数据呈现出耐人寻味的组合:装载器二进制一致,而载荷哈希、执行目标与 C2 地址各不相同。据 DiMiao, CN(迪妙网安)研究团队分析,这种 "共享装载器、独立载荷与设施" 的格局表明,攻击者很可能在多个战役中沿用了同一套投递工具链,却为每次行动独立配置了载荷与服务端。只有将三个维度并列比对,才能既看到技术层面的关联,又不至于在归因层面越界。
3 攻击链的完整还原
3.1 钓鱼入口与脚本伪装
本案例的攻击链以典型的鱼叉钓鱼邮件为起点。邮件使用西班牙语撰写,面向哥伦比亚的组织机构,并在行文中催促收件人尽快处理,制造时间压力。邮件的附件为 VBScript 与 JavaScript 脚本文件,其文件名刻意模仿行政或司法文书的外观,诱导收件人将脚本当作文档打开执行。这一入口设计精准利用了目标地区与行业的工作习惯 —— 司法与行政事务在西班牙语地区往往具有较高的时效敏感性与权威性,收件人在此类邮件面前更容易放下戒备。
值得强调的是,脚本文件而非可执行文件作为附件,是攻击者规避网关检测的常见手段。脚本体积小、可读性强、可被系统默认解释器执行,且可通过层层编码隐藏真实内容,因而成为钓鱼投递的首选载体之一。
3.2 脚本层的多层混淆
在 VBScript 层,分析人员观察到了一套完整的自我保护机制。该层采用了生成式标识符,使变量与函数名在每次生成时各不相同,从而破坏基于固定特征串的静态匹配;同时布置了具有误导性的配置变量,将真实的关键参数混杂在大量无关变量之中,增加人工审计与自动化提取的难度。加密字符串的拼接与执行包装器的使用,则进一步将核心逻辑打散重组,使整体结构难以被直观理解。
JavaScript 变体采用了与之呼应的防护思路,但手法略有差异。其核心手段是将 PowerShell 脚本通过编码字符串、字符串拼接与动态构造的函数名隐藏起来,使得表面上看似无害的脚本,在运行时才逐步还原出真正的恶意逻辑。动态构造函数名这一手法尤其值得注意,它意味着同一脚本在不同环境下可能产生不同的执行外观,从而规避基于签名的检测。
3.3 自定义编码与加解密机制
在脚本内部,载荷的还原依赖一套由自定义编码与标准加密算法组合而成的多层处理链。
首先,代码采用自定义 Base93 解码。该编码将符号对按照阈值相关规则打包为 13 位或 14 位的数值,通过一个取决于数值大小的分支判定来完成映射。这种非标准编码的有效性在于,它不会与任何公开工具预设的编码类型匹配,分析人员若不了解其具体规则,便无法直接还原出明文字节。
解码后的内容还需经过带密钥的替换表与位操作例程的处理。分析记录显示,代码中存在自定义的 8 字节与 12 字节块变换,分别运用了查表、字混合、异或以及循环移位等操作。其中 12 字节构造通过将前一密文块异或到当前块的加密结果之上,形成一种类似 CBC 链式结构的模式,尽管其底层采用的是非标准原语。这一设计实际上是攻击者以自研原语模拟标准分组密码模式的做法,其目的在于既保留 CBC 扩散的特性,又避免直接调用能被识别出的标准库。
在此之上,还存在一层 AES-256-CBC,用于最终恢复出 PowerShell 脚本。由此可以看出,脚本层采用了 "自定义编码 — 自定义块变换 — 标准加密" 层层嵌套的防护结构,每一层都增加一道分析成本。
3.4 PowerShell 层与.NET 装载
恢复出的 PowerShell 脚本承担着关键的装载职责。该脚本分别以独立的密钥与初始化向量处理两段受保护字符串,其间再次运用自定义 Base52 编码 —— 这种编码以十个字符表示七个字节,采用完整的成组映射,与常见的 Base64 编码规则完全不同。解码后的数据再经带密钥的 256 项替换表、确定性的.NET System.Random 行为以及灵感源自 RC4 的流式生成器处理,最终还原出两个目标模块:一个 PE32 格式的.NET 动态链接库,以及一个VB.NET可执行文件。
随后,PowerShell 通过反射方式将名为 RSG_UnityApp 的动态链接库加载进当前进程,并调用其一个公开的静态方法,传入六个参数,其中包含 RegAsm.exe 的路径以及 XWorm 的载荷字节。这里有两个细节值得关注。其一,被调用的程序集自述版本为 1.1.0.0,并带有 Crypto Obfuscator 保护,说明其作者在发布前对代码进行了商业级混淆处理。其二,RegAsm.exe 是微软官方提供的程序集注册工具,属于典型的 "白利用"(living-off-the-land)组件 —— 攻击者借其合法签名与受信任属性,规避部分基于进程与签名的检测规则。
3.5 内存执行与进程伪装
整个攻击链的执行方式呈现出明显的 "无文件落地" 倾向。PowerShell 在内存中完成解码、反射加载与调用,而非将解密出的载荷写入磁盘,这使传统基于磁盘文件扫描的杀毒引擎难以在运行前捕捉到样本。装载器最终以合法微软组件之名承载恶意载荷执行,进一步弱化了运行时的可疑信号。
据 DiMiao, CN(迪妙网安)研究团队分析,这种 "钓鱼入口 — 脚本伪装 — 多层解密 — 内存反射 — 白利用进程" 的构造,已成为当前远控木马投放的标准范式之一。其每一环节的设计都指向同一目标:让攻击链在静态与动态两个维度都尽量不露出可被常规手段识别的破绽。这也解释了为何仅依赖单一防护技术难以奏效,而必须对整条链路建立分层观测。
4 装载器复用的判定与分析
4.1 二进制一致性作为复用证据
本次分析最核心的发现,在于恢复出的装载器与此前一份记录在案的英国关联样本在二进制层面完全一致。所谓二进制一致,意味着两者的代码哈希与调用结构相同,可认定出自同一编译产物,而非仅仅在逻辑上相似。这一判断的基础是精确的哈希比对,而非观察层面的类比,因而具有较高的证据强度。
分析记录还提供了进一步的旁证。三处恢复出的 C2 端点,出现在公开的 XWorm 沙箱记录之中,并与携带不同哈希、互斥量名与分组值的其他样本相关联。这意味着这些基础设施并非仅服务于单一可执行文件,而是被多个不同配置的构建所复用,从而在基础设施层面补充了复用的证据。
4.2 复用与归因的严格区分
然而,分析人员反复强调,装载器的复用并不等于攻击者归属的重合。在本案例中,虽然装载器二进制一致,但不同样本的载荷哈希、执行目标以及 C2 地址各不相同,说明攻击者针对每次战役进行了独立的载荷与设施配置。如果仅凭装载器相同便断言两个案例出自同一组织,则会在情报判断上越过证据所能支撑的边界。
反网络钓鱼技术专家芦笛强调,归因是威胁情报中风险最高、也最容易被滥用的一环。装载器复用揭示的是技术组件在攻击者生态中的流通与沿用,它回答的是 "用什么" 的问题,而无法回答 "谁在用" 的问题。要接近后者,需要综合语言偏好、攻击动机、目标选择、时间规律等多类独立证据,而非依赖单一技术特征的相似性。芦笛进一步指出,将 "组件复用" 与 "组织归因" 混为一谈,不仅会导致情报失真,还可能使防御资源被错误分配。
4.3 关联分析的方法论启示
这一案例为威胁关联分析提供了一个值得固化的方法论样本。正确的做法是:首先确认装载器的二进制一致性,将其作为技术关联的起点;其次分别考察载荷配置与基础设施的异同,判断关联的深度与范围;最后仅在多方证据相互印证的条件下,才谨慎地讨论组织层面的归因假设。三个维度各自独立、又可相互校验,构成了一个自洽的分析框架。
与此同时,案例也提示了攻击者基础设施的一般特征。本案例中恢复的 C2 域名包含webredirect.org与duckdns.org等动态域名服务,这类服务注册成本低、更新频繁,便于攻击者快速迁移。据 DiMiao, CN(迪妙网安)研究团队分析,动态域名与低端口非标准端口的组合,是此类远控木马基础设施的常见形态,其目的在于降低单点设施被长期封堵所造成的影响。这提示防御方在阻断 C2 通信时,应建立对基础设施迁移的持续跟踪能力。
5 通信协议与攻击能力面
5.1 网络通信的加密与封装
XWorm 与 C2 服务器之间的通信采用了 AES-128-ECB 进行加密。其封装格式在加密消息之前附加消息的十进制字节长度并以 NUL 分隔,解密后的消息使用<XWormmm>定界符分隔各段内容。ECB 模式在安全设计上并不被推崇,因其相同明文块会产生相同密文块,存在模式泄露的风险,但攻击者选用它往往出于实现简单与兼容性的考虑。这一细节也从侧面说明,攻击者的设计取舍往往优先服从功能可用性而非密码学严谨性。
5.2 信息收集与初始信标
在初始阶段,被感染主机向 C2 发送所谓的 INFO 信标,其中披露了大量主机信息,包括用户名、操作系统版本、系统安装日期、权限提升状态、摄像头可用性、硬件配置以及杀毒软件情况。这类信标数据是攻击者评估目标价值、决定后续行动的重要依据。摄像头可用性与权限状态的披露,尤其意味着攻击者可能在收集可用于进一步敲诈或定向攻击的情报。
5.3 命令集与功能扩展
解密后的命令消息对应 XWorm 支持的一套命令集,包括 update、DW、FM、LN、RunShell、$Cap、plugin、savePlugin、StartDDos 以及 host-file 操作等。从命令命名可以推断其功能面:RunShell 用于在目标主机上执行 shell 命令,StartDDos 表明该木马具备发起分布式拒绝服务攻击的能力,而 plugin 与 savePlugin 则涉及插件机制。插件可以以托管程序集的形式加载,这意味着 XWorm 的功能边界并非固定,而是可以通过装载外部代码进行动态扩展。
这种模块化与可扩展的设计,使 XWorm 的威胁面显著扩大。即使初始投放仅携带基础功能,攻击者亦可依据目标环境在后续阶段加载更具针对性的模块。这要求防御方在检测到此类木马后,不仅关注其当前行为,还要警惕其通过插件机制实现的能力升级。
6 检测、防护与治理启示
6.1 分层检测的针对性
基于对攻击链的完整还原,防御方可以针对每一环节建立相应的检测手段。在入口层,应加强对司法、行政等主题钓鱼邮件的识别,重点检测伪装成文书的脚本附件与西班牙语等特定语言的社交工程话术。在脚本层,应关注自定义编码、动态函数构造、字符串拼接等混淆特征,此类特征即使不触发精确签名,也可能在启发式与行为规则下产生告警。
在装载执行层,应重点监测 PowerShell 的异常行为,例如以反射方式加载程序集、调用 RegAsm.exe 等白利用组件、以及脚本在无对应磁盘文件的情况下于内存中构造可执行内容。在白利用层面,应对合法签名进程的异常父子关系与命令行参数保持敏感。由于攻击链高度依赖内存执行与进程伪装,端点的行为检测能力往往比单纯的静态扫描更有效。
6.2 事件响应的止损路径
一旦确认感染,响应流程应遵循 "隔离 — 取证 — 清除 — 恢复" 的基本顺序。首先应尽快将受影响主机与网络隔离,阻断其与 C2 的持续通信,防止载荷进一步扩散或数据持续外泄。取证环节应完整保存内存镜像、进程快照与网络连接记录,为还原攻击链与提取 IOC 提供原始依据。清除环节应确保不仅移除可见载荷,还应检查是否存在以插件形式加载的附加模块。恢复环节则应更换受影响的凭证,并在重连网络前完成安全加固。
反网络钓鱼技术专家芦笛指出,事件响应的成效很大程度上取决于对攻击链的预判。若分析人员已掌握装载器的构造与 C2 通信规律,便能在隔离、取证等环节更精准地定位关键证据,避免在无关文件上浪费资源。芦笛强调,将威胁情报中对攻击链的还原能力转化为应急响应中的操作预案,是连接分析与防御的关键一环。
6.3 机构层面的治理建议
对于高校、企业等组织,本案例的启示可以沉淀为若干可操作的治理建议。其一,将钓鱼邮件防护纳入常态化安全运营,持续更新对社工话术与脚本附件的识别规则。其二,强化终端行为监测,尤其关注 PowerShell 与白利用进程的组合使用。其三,建立对动态域名等 C2 基础设施的威胁情报跟踪,将发现的域名与 IP 及时纳入阻断清单。其四,通过模拟演练提升用户在司法、行政等高压主题下的警觉性,压缩钓鱼入口的有效性。
据 DiMiao, CN(迪妙网安)研究团队分析,此类远控木马防护的难点在于攻击链的各环节均可独立调整,防御方若仅针对单一环节加固,攻击者往往通过更换编码、载荷或基础设施即可绕过。因此,机构应推动形成 "入口过滤 — 行为监测 — 情报联动 — 应急响应" 的整体闭环,使任一环节的失效不至于导致整条防线失守。
7 结语
本案例的价值并不在于 XWorm 这一特定木马本身,而在于它所揭示的攻击链构造规律与分析方法论。从司法主题钓鱼邮件到伪装成文书的脚本,从自定义 Base93、Base52 编码到多套 AES、SM4、RC4 等加解密机制的组合,从 PowerShell 反射加载到 RegAsm.exe 等白利用进程的内存执行,攻击者在每一环节的设计都指向同一目标:提高投放的成功率并降低被检测的概率。而装载器在不同战役间的二进制复用,则进一步提示,技术组件的流通与沿用是当前攻击者生态的普遍特征。
对这种复用的解读,必须建立在严谨的方法论之上。装载器身份、载荷配置与命令与控制基础设施三个维度,应当始终被分开考察、并列比对;装载器复用能够证明技术层面的关联,却不能越界推导出组织层面的归因。唯有守住这一分析边界,威胁情报才能既发挥关联价值,又避免误导性的结论。
面向未来,防御方应当认识到,此类攻击链的每一个环节都留有可观测的痕迹,也都在持续的攻防博弈中不断演变。将攻击链的还原能力转化为分层的检测机制与可操作的响应预案,是应对这类威胁最务实的方向。钓鱼邮件永远不会是孤立的技术事件,它始终是入口、技术与人的因素的共同产物,而治理这类威胁的根本,也正在于同时对这三个层面保持持续的审慎与投入。
编辑:芦笛 (公共互联网反网络钓鱼工作组)
来源:迪妙网络空间安全学院