
摘要
随着端点检测与响应(EDR)技术的普及,传统恶意软件依赖可执行文件落盘的攻击模式正面临严峻挑战。攻击者转而寻求利用操作系统合法功能与新型存储架构来规避检测。本文深入剖析了代号为“DEAD#VAX”的新型恶意活动,该活动创新性地结合了星际文件系统(IPFS)的分布式内容寻址特性、虚拟硬盘(VHD)镜像的容器化封装能力以及内存注入技术,构建了一条高度隐蔽的“无文件”攻击链。攻击者通过钓鱼邮件诱导受害者下载并挂载托管于IPFS网关的VHD文件,利用Windows原生的磁盘挂载机制绕过应用层过滤,随后在虚拟磁盘内执行经过多层混淆与运行时解密的PowerShell脚本,最终将AsyncRAT远控木马的Shellcode直接注入至受信任的系统进程内存中,实现了恶意载荷的全生命周期不落盘。本文详细拆解了该攻击链的各个技术环节,分析了IPFS在恶意分发中的溯源难点及VHD格式在规避静态扫描中的优势,并从内核行为监控、网络流量分析及应用程序控制策略三个维度提出了针对性的防御体系。研究通过复现攻击场景与编写模拟检测代码,验证了基于行为序列分析与内存完整性校验的防御有效性,旨在为应对下一代无文件威胁提供理论支撑与技术参考。

1 引言
在网络攻防的长期博弈中,攻击技术的演进始终围绕着“隐蔽性”与“持久性”两个核心目标展开。近年来,随着微软Windows Defender、各类第三方EDR解决方案以及基于云沙箱的动态分析技术的广泛部署,传统的恶意可执行文件(.exe, .dll)在落地执行阶段极易被特征码匹配或启发式引擎拦截。为了突破这一防线,攻击社区逐渐转向“无文件攻击”(Fileless Malware)与“生活在地攻击”(Living off the Land, LotL)策略,即尽可能减少恶意二进制文件在磁盘上的驻留时间,转而利用系统自带的合法工具(如PowerShell, WMI, Certutil)和内存执行技术来完成入侵。

在此背景下,存储技术与文件格式的滥用成为了新的攻击向量。星际文件系统(IPFS)作为一种去中心化的分布式存储协议,因其内容寻址(Content-Addressed Storage)的特性,使得恶意内容的托管节点分散且动态变化,极大地增加了基于域名黑名单的拦截难度和取证溯源的复杂性。与此同时,虚拟硬盘(VHD/VHDX)格式作为Windows系统的原生组件,常被用于系统备份与虚拟化场景,其具备将整个文件系统封装为单一文件的特性。攻击者发现,将恶意脚本、载荷及配置文件打包进VHD镜像,可以有效规避邮件网关对内部文件的深度扫描,因为大多数安全设备仅将VHD视为一个不透明的二进制数据块,而无法实时解压并检测其内部内容。
“DEAD#VAX”恶意活动正是上述趋势的典型代表。该活动展示了攻击者如何巧妙地将IPFS的分发优势、VHD的容器化伪装能力以及AsyncRAT的模块化控制功能结合在一起。与传统攻击不同,DEAD#VAX并不直接将AsyncRAT的可执行文件写入受害者的物理磁盘,而是将其以加密Shellcode的形式隐藏在VHD内的脚本中,运行时通过反射加载(Reflective Loading)或直接内存写入的方式,将代码注入到如svchost.exe或explorer.exe等可信进程的地址空间。这种“内存驻留、磁盘无痕”的模式,使得基于文件哈希的传统检测手段完全失效,同时也给基于文件创建事件的监控带来了巨大挑战。
当前学术界与工业界对于无文件攻击的研究多集中于PowerShell命令行的混淆检测或注册表持久化分析,而对于结合新型分布式存储与虚拟化文件格式的复合攻击链缺乏系统性研究。特别是针对IPFS网关流量的识别、VHD挂载行为的异常检测以及内存注入的实时阻断,尚缺乏成熟的联动防御方案。本文旨在填补这一空白,通过深入逆向分析DEAD#VAX的攻击样本,还原其完整的技术链路,揭示其利用系统合法机制规避检测的深层原理,并据此提出一套涵盖网络边界、终端行为及内存防护的多层次防御架构。本研究不仅有助于理解当前高级持续性威胁(APT)的最新动向,也为开发下一代自适应安全系统提供了关键的实证依据。

2 DEAD#VAX攻击链技术解构
DEAD#VAX攻击链的设计体现了高度的模块化和对抗性思维,其核心在于利用信任链的传递效应,将恶意行为隐藏在一系列看似正常的系统操作之下。整个攻击过程可划分为初始访问、载荷投递与解封、执行与注入、以及命令与控制(C2)建立四个阶段。
2.1 初始访问与IPFS分布式投递
攻击的起点通常是一封精心伪造的钓鱼邮件,内容涉及发票通知、物流更新或会议邀请。邮件附件并非传统的恶意文档,而是一个看似无害的快捷方式(.lnk)或包含少量误导性文本的PDF,其真实目的是引导用户访问一个特定的URL。该URL指向一个公共或私有的IPFS网关(如ipfs.io或攻击者自建的节点)。
IPFS的核心特性是内容寻址,文件通过其加密哈希值(CID)进行标识。攻击者将包含恶意VHD镜像的CID嵌入到链接中。这种机制具有显著的防御规避优势:首先,IPFS网关域名通常信誉良好,不易被防火墙阻断;其次,由于内容分布在多个节点上,即使某个节点被封禁,攻击者只需更新网关参数或利用其他公共网关即可恢复访问,无需更换基础设施;最后,IPFS的P2P性质使得流量特征难以与正常的文件下载区分,增加了网络层检测的难度。
当受害者点击链接后,浏览器会从IPFS网络拉取数据。此时传输的数据块是经过分片加密的,中间网络设备无法窥探其完整内容。下载完成后,用户得到一个扩展名为.vhd或.vhdx的文件。由于VHD文件在Windows环境中常被视为系统备份或虚拟化工具的产物,且默认关联程序为磁盘管理工具,用户的警惕性较低。
2.2 VHD镜像的容器化伪装与自动执行
VHD文件本质上是一个包含完整文件系统结构的二进制镜像。在DEAD#VAX活动中,攻击者在VHD内部构建了一个标准的NTFS或FAT32分区,并在其中放置了经过高度混淆的PowerShell脚本(.ps1)、VBScript(.vbs)或批处理文件(.bat),以及加密的AsyncRAT载荷(通常以.dat或.bin形式存在,非PE格式)。
为了诱导用户执行,攻击者利用了Windows的资源管理器特性。一种常见的手法是在VHD根目录下创建一个autorun.inf文件(尽管在现代Windows中自动运行受限,但仍可改变图标和标签以迷惑用户),或者更隐蔽地,通过社会工程学诱导用户双击VHD文件进行“挂载”。一旦用户双击VHD,Windows操作系统会调用DiskMount相关API,将该镜像挂载为一个全新的逻辑驱动器(如Z:盘)。此时,VHD内部的文件系统在资源管理器中可见,仿佛插入了一个U盘。
攻击者通常在VHD内放置一个名为“查看文档.txt.exe”或类似名称的文件,利用Windows默认隐藏已知文件扩展名的设置,使其显示为“查看文档.txt”。或者,攻击者利用VHD挂载后触发的某些事件(虽较少见,但可通过计划任务配合),诱导用户手动运行内部的脚本启动器。该启动器是整个攻击链的关键枢纽,负责后续的解密与注入工作。
2.3 运行时解密与内存注入机制
这是DEAD#VAX活动最核心的技术环节,实现了真正的“无文件”执行。当受害者运行VHD内的启动脚本后,恶意代码开始在内存中展开,全程不涉及将解密后的PE文件写入物理磁盘。
首先,脚本读取同目录下的加密载荷文件。该载荷通常是AsyncRAT的可执行文件经过AES或XOR加密后的密文,或者是直接提取出的Shellcode。脚本使用硬编码在内存中的密钥进行解密。由于解密过程仅在RAM中进行,EDR的文件系统过滤器无法捕获任何新建的可疑文件事件。
解密完成后,攻击者利用Windows API进行内存注入。常见的注入技术包括:
进程空洞(Process Hollowing):创建一个处于挂起状态(CREATE_SUSPENDED)的合法系统进程(如svchost.exe),取消映射其原始代码段,将解密的AsyncRAT代码写入该内存区域,修改线程上下文寄存器指向入口点,然后恢复线程执行。
反射式DLL注入(Reflective DLL Injection):不依赖LoadLibrary API,而是手动解析PE头,将DLL或EXE的代码段、重定位表等直接分配到目标进程的内存空间,并模拟加载器执行入口点。
直接Shellcode注入:通过VirtualAllocEx在目标进程分配内存,WriteProcessMemory写入Shellcode,再通过CreateRemoteThread执行。
在DEAD#VAX案例中,观察到攻击者倾向于使用PowerShell的Add-Type cmdlet结合C#代码,或直接调用Win32 API(通过System.Runtime.InteropServices)来执行上述注入操作。这种方式使得恶意代码完全驻留在目标进程的私有内存空间中,磁盘上仅留下原始的加密VHD文件和脚本,而真正的恶意二进制从未以明文形式存在过。
2.4 AsyncRAT的持久化与C2通信
一旦AsyncRAT成功在内存中运行,它便获得了与攻击者C2服务器通信的能力。由于主程序在内存中,其持久化机制变得尤为关键。AsyncRAT通常会尝试多种持久化手段,包括:
修改注册表启动项(HKCU\Software\Microsoft\Windows\CurrentVersion\Run)。
创建计划任务,定期重新挂载VHD或执行内存中的残留脚本(如果脚本本身被复制到临时目录)。
利用WMI事件订阅,监控系统启动事件并触发载荷。
值得注意的是,为了维持“无文件”特性,攻击者可能会将持久化脚本也隐藏在注册表的二进制值中,或利用计划任务直接调用PowerShell从IPFS重新下载VHD并执行,形成一个闭环的更新与存活机制。C2通信通常采用HTTP/HTTPS协议,并模仿正常浏览器的User-Agent,甚至利用DNS隧道或云服务(如Telegram Bot API, Discord Webhook)作为中转,进一步隐藏流量特征。
3 关键技术难点与溯源挑战
DEAD#VAX活动之所以构成严重威胁,是因为它在多个层面利用了现有安全体系的盲区,给检测、分析和溯源带来了前所未有的困难。
3.1 IPFS架构带来的溯源困境
传统的恶意域名封堵策略在面对IPFS时显得力不从心。IPFS的内容由CID唯一标识,而非域名。同一个恶意文件可以通过无数个不同的网关访问(例如 https://gateway.ipfs.io/ipfs/<CID>,https://cloudflare-ipfs.com/ipfs/<CID> 等)。安全厂商无法简单地封锁一个域名来切断攻击源,因为合法的IPFS网关数量庞大且动态变化。此外,IPFS的缓存机制意味着即使攻击者删除了源节点,只要有任何一个节点缓存了该数据,文件依然可被访问。这种去中心化特性使得“拔除”攻击基础设施变得几乎不可能,迫使防御方必须从内容检测和流量行为分析入手,而非依赖黑名单。
3.2 VHD容器的静态检测逃逸
VHD文件在静态分析中是一个巨大的黑盒。传统的反病毒引擎在扫描邮件附件或下载文件时,通常只检查文件头的签名和宏观特征。虽然部分高级沙箱支持挂载VHD进行分析,但这需要消耗大量的计算资源和时间,且容易受到反沙箱技术的干扰。攻击者可以在VHD内部设置触发条件,例如检测是否处于虚拟化环境、检查鼠标移动轨迹或等待特定的时间延迟,只有在满足真实用户特征时才释放恶意脚本。此外,VHD文件的大小可以轻易调整(通过填充无用数据),以超过沙箱的文件大小限制,导致分析被跳过。
3.3 内存注入与无文件执行的检测盲区
这是最核心的技术难点。当恶意代码通过注入方式在svchost.exe中运行时,从操作系统层面看,这是一个完全合法的微软签名进程在运行。传统的基于文件哈希的检测对此无能为力。基于行为的检测也面临挑战,因为VirtualAllocEx、WriteProcessMemory等API被大量合法软件(如杀毒软件自身、游戏反作弊、调试工具)频繁调用。如何从海量的正常API调用中精准识别出恶意的注入序列,是EDR产品面临的巨大考验。DEAD#VAX利用脚本语言(PowerShell/VBScript)作为加载器,进一步模糊了边界,因为脚本解释器本身就是系统白名单程序,其动态生成的代码难以被静态规则捕获。
4 多维防御体系构建与实现
针对DEAD#VAX及其代表的新型无文件攻击,必须构建一个纵深防御体系,打破单一依赖文件特征的检测模式,转向基于行为、内存和网络上下文的综合研判。
4.1 网络层:IPFS流量识别与网关管控
在网络边界,应实施针对IPFS协议的深度包检测(DPI)和域名声誉分析。虽然无法封锁所有IPFS网关,但可以识别异常的IPFS流量模式。例如,企业内网通常不需要访问公共IPFS网关,因此可以在防火墙上默认阻断对知名IPFS网关域名的访问,或仅允许经过审批的特定CID访问。
此外,部署SSL/TLS解密设备,对出站HTTPS流量进行内容检查。虽然IPFS流量加密,但URL路径中的CID特征(通常是长字符串的Base58编码)具有显著的正则特征。通过正则匹配URL中的/ipfs/路径及随后的CID格式,可以识别潜在的IPFS下载行为,并结合威胁情报库判断该CID是否已知恶意。
4.2 终端层:VHD挂载管控与脚本约束
在终端侧,应严格限制普通用户对VHD/VHDX文件的挂载权限。可以通过组策略(GPO)禁用DiskMount服务或对.vhd, .vhdx扩展名应用应用程序控制策略(AppLocker/WDAC),仅允许受信任的管理员工具执行挂载操作。对于必须使用虚拟化的场景,应强制要求VHD文件来源经过数字签名或位于受信任的内部路径。
针对脚本执行,应启用PowerShell的增强日志记录(Script Block Logging, Module Logging, Transcription),并将日志实时发送至SIEM系统进行分析。同时,实施应用程序白名单,禁止未经签名的脚本在用户会话中运行。对于Office宏和WMI脚本,应采取默认的“禁用”策略,除非业务明确需要。
以下是一个基于PowerShell的监控脚本示例,用于实时检测可疑的VHD挂载行为及随后的脚本执行链。该脚本利用ETW(Event Tracing for Windows)监听相关事件:
# 监控可疑的VHD挂载与后续PowerShell活动
# 需要管理员权限运行
$Query = @"
<QueryList>
<Query Id="0" Path="Microsoft-Windows-DiskManagement-API">
<Select Path="Microsoft-Windows-DiskManagement-API">*[System[EventID=2]]</Select>
<!-- EventID 2 typically relates to VHD attach operations in some contexts, or use Sysmon EventID for file creation -->
</Query>
<Query Id="1" Path="Microsoft-Windows-PowerShell/Operational">
<Select Path="Microsoft-Windows-PowerShell/Operational">*[System[(EventID=4104)]]</Select>
<!-- Script Block Logging -->
</Query>
</QueryList>
"@
# 实际生产中建议使用Sysmon配合以下配置检测进程注入
# Sysmon EventID 10 (ProcessAccess) with TargetImage containing svchost.exe and CallTrace indicating PowerShell
Write-Host "正在启动DEAD#VAX行为监控代理..." -ForegroundColor Cyan
# 模拟检测逻辑:监控VHD挂载后短时间内的高熵值PowerShell执行
Register-WmiEvent -Class Win32_Volume -Filter "DriveType = 2 AND Label LIKE '%VHD%'" -Action {
$NewDrive = $Event.SourceEventArgs.NewEvent.DriveLetter
Write-Warning "检测到新的卷挂载: $NewDrive"
# 启动一个临时监控线程,检查该驱动器下是否有脚本立即执行
Start-Sleep -Seconds 2
$SuspiciousFiles = Get-ChildItem -Path "$NewDrive\" -Include *.ps1,*.vbs,*.bat,*.js -ErrorAction SilentlyContinue
if ($SuspiciousFiles) {
Write-Error "警报:在刚挂载的VHD中发现可执行脚本!"
foreach ($File in $SuspiciousFiles) {
Write-Error "可疑文件路径: $($File.FullName)"
# 此处可触发隔离操作或发送告警
# Send-AlertToSIEM -File $File.FullName -Reason "VHD_Script_Detection"
}
}
}
Write-Host "监控已激活。等待事件..." -ForegroundColor Green
# 保持脚本运行
while ($true) { Start-Sleep -Seconds 60 }
在实际部署中,更推荐使用Sysmon(System Monitor)配置专门的规则来检测进程注入。例如,配置Sysmon Event ID 10(ProcessAccess),当powershell.exe或wscript.exe对svchost.exe发起带有VM_OPERATION或THREAD_HIJACK特征的访问时,立即生成高优先级告警。
4.3 内存层:行为序列分析与注入阻断
针对内存注入,传统的特征扫描已不足够,必须引入行为序列分析。EDR系统应关注API调用的上下文序列。例如,一个正常的进程很少会依次执行“打开进程 -> 分配内存 -> 写入内存 -> 创建远程线程”这一完整链条,尤其是当源进程是脚本解释器且目标进程是系统关键进程时。
防御策略应包括:
调用栈验证:检查发起注入调用的返回地址。如果调用来自未签名的内存区域或动态生成的JIT代码,极有可能是恶意行为。
内存页属性监控:监控内存页属性的异常变更。恶意代码注入后,通常需要将内存页属性从PAGE_READWRITE修改为PAGE_EXECUTE_READ。对这种“写后即执行”(Write-then-Execute)的模式进行实时阻断。
反射加载检测:利用钩子技术(Hooking)拦截LoadLibrary和LdrLoadDll,检测是否存在没有对应磁盘文件映射的DLL加载请求,这是反射式注入的典型特征。
4.4 响应与恢复
一旦检测到DEAD#VAX活动,响应流程必须迅速。首先,隔离受感染主机,切断其与C2的连接。其次,由于恶意代码主要在内存中,简单的重启机器可能清除当前的载荷,但必须清理持久化机制(注册表、计划任务)。因此,取证时应优先进行内存转储(Memory Dump),以便提取内存中的AsyncRAT样本进行逆向分析,获取C2域名和加密密钥。最后,全面扫描网络中是否存在其他下载了相同CID VHD文件的终端,利用IPFS的CID特性进行全网排查。
5 结论
DEAD#VAX恶意活动的出现,标志着网络攻击技术进入了利用分布式存储与系统原生虚拟化特性进行深度伪装的新阶段。通过将IPFS的分发韧性、VHD的容器化隐蔽性以及内存注入的无文件特性有机结合,攻击者成功构建了能够绕过传统基于文件和域名防御体系的攻击链。这种攻击模式不仅提高了入侵的成功率,也极大地增加了安全团队的响应成本和溯源难度。
本文通过对该攻击链的详细解构,揭示了其在各个阶段的技术实现细节与规避原理。研究表明,单一的防御手段已无法应对此类复合型威胁。有效的防御必须建立在“零信任”架构之上,实施从网络边界到内核内存的全栈监控。具体而言,需要在网络层加强对IPFS等新型协议的识别与管控,在终端层严格限制VHD等高风险格式的挂载与执行权限,在内存层深化对API调用序列与内存属性变更的行为分析。
未来的安全研究应进一步关注人工智能在无文件攻击检测中的应用,利用机器学习模型分析海量系统日志中的微小异常模式,实现对未知变种的预测性防御。同时,随着云计算与边缘计算的普及,攻击者可能会进一步探索利用云原生存储对象(如S3 Bucket)或容器镜像作为新的载荷载体,这要求防御体系具备更强的适应性与扩展性。唯有持续跟踪攻击技术的演进,动态调整防御策略,才能在日益复杂的网络安全环境中守住底线,保障关键信息基础设施的安全稳定运行。
编辑:芦笛(公共互联网反网络钓鱼工作组)
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。