文章总结: 本文深入解析GootLoader利用ZIP结构EOCD截断攻击的原理,通过拼接数百个畸形ZIP包,利用Windows高容错性与安全工具解析差异实现防御规避,导致沙箱失效且Hash唯一性使IOC失灵。文章建议通过组策略阻断wscript.exe和cscript.exe运行,或将JS文件默认打开方式改为记事本以切断感染链。 综合评分: 85 文章分类: 恶意软件,免杀,漏洞分析,威胁情报,安全意识
JS 马的新变种:手把手教你看懂 ZIP 结构的 EOCD 截断攻击
原创
Kit Chung Kit Chung
安全圈动向
2026年1月22日 09:48 广东
摘要:你以为 WinRAR 报错就是“文件损坏”?这可能是黑客给你设下的最隐蔽的局。今天我们硬核拆解 GootLoader 如何利用 ZIP 底层结构的差异,把安全检测设备骗得团团转。
大家好,做 IT 运维或者安全这一行久了,大家可能都有个“职业病”:拿到一个可疑的压缩包,第一反应是扔进沙箱,或者用 WinRAR、7-Zip 打开看看里面有什么猫腻。
如果解压软件直接弹窗报错“文件已损坏”,或者沙箱跑不出结果,很多人可能就松了一口气,觉得“这文件废了,没威胁”。
但如果我告诉你,这个连 WinRAR 都打不开的“坏文件”,在用户的 Windows 电脑上却能畅行无阻地运行,你作何感受?
最近, JS 加载器 GootLoader 就搞了这么一出“骚操作”。他们利用 ZIP 格式的容错性差异,玩了一把 防御规避。
今天,我们就硬核拆解一下,这帮黑客到底在 ZIP 文件的底层结构上动了什么手脚。
01诡异的“千层饼”压缩包
GootLoader 这个家族其实是老面孔了,早在 2020 年就开始活跃,最擅长通过 SEO 中毒 诱导用户下载所谓的“法律合同模板”或“发票文件”。
但 Expel 安全团队最近发现,它的载荷变了。
传统的恶意压缩包通常就是一个简单的 ZIP。但这次,GootLoader 在一个文件里 硬生生拼接(Concatenate)了 500 到 1000 个 ZIP 归档!
这不仅仅是简单的 cat file1.zip file2.zip > bigfile.zip 这么简单,它还配合了一个细节:畸形化处理。
02技术深挖:ZIP 底层的 EOCD 截断
为什么 WinRAR 跪了,Windows 却没事?这里要讲一点 ZIP 文件的底层原理。
ZIP 文件格式的核心在于 End of Central Directory (EOCD) 记录。它位于文件的末尾,作用相当于一本书的“总索引”,告诉解压工具:“嘿,目录在这里,文件结构是这样的。”
GootLoader 的开发者做了三件非常“鸡贼”的技术调整:
-
EOCD 截断:
他们故意截断了 EOCD 记录末尾的两个关键字节。
-
字段随机化:
修改了非关键字段(如磁盘编号、磁盘总数),填入随机值。
-
多重拼接:
如前所述,数百个归档连在一起。
这就是攻击生效的关键点:利用工具实现的差异性。
⭕ 严谨派(WinRAR / 7-Zip / 自动化沙箱): 当它们解析到错误的 EOCD 结构、不存在的磁盘编号时,会判定文件损坏,严格遵守标准,直接抛出异常或拒绝解压。这就导致自动化分析流程直接中断。
⭕ 宽容派(Windows 原生资源管理器): 微软为了用户体验,内置的解压工具容错率极高。即使 EOCD 少了两个字节,或者磁盘编号乱填,Windows 依然会尝试“尽力而为”地扫描并成功打开压缩包。
结果就是:安全人员觉得文件是坏的,而受害者双击却能直接看到里面的恶意 .js 文件。
03Hashbusting:让威胁情报失效
你以为拼接 1000 个文件只是为了搞坏解压软件?Too Young too simple 了。
这还涉及到一种被称为 “Hashbusting”(哈希爆破) 的技术。GootLoader 在构建这些 ZIP 包时,拼接的文件数量是随机的(500-1000之间),填充的字段值也是随机的。
这意味着:每一个受害者下载到的 ZIP 文件,其哈希值(MD5/SHA256)都是独一无二的。
对于企业防御者来说,这意味着你无法简单地把某个恶意文件的 Hash 拉入黑名单。因为即便源头一样,每个人拿到的文件指纹都不同,这让基于 Hash 的威胁情报(IOC)几乎完全失效。
04完整的感染链:从 JS 到 Powershell
一旦受害者在 Windows 资源管理器中双击了这个“畸形”压缩包,就像扳机被扣动了:
-
触发:
用户双击包内的
.js文件。 -
执行:
Windows 调用
wscript.exe执行脚本。注意,这里甚至不需要显式解压,脚本可以直接从临时文件夹运行。 -
持久化:
JS 脚本会在“启动”文件夹中创建一个快捷方式(LNK 文件)。
-
下一阶段:
通过
cscript.exe调用 PowerShell,最终拉取勒索软件或其他木马。
05攻防建议:我们该怎么办?
既然解压软件和 Hash 库都不太靠谱,作为 IT 管理员,我们能做什么?
这里有两条实操性最强的建议,建议直接通过组策略(GPO)下发:
🛡️ 策略一:斩断执行链
除非业务绝对必须,否则直接利用 AppLocker 或其它端点防护软件,阻止 wscript.exe 和 cscript.exe 的运行。这能杀掉绝大多数基于 JS/VBS 的恶意加载器。
📝 策略二:改变默认关联
将 .js 和 .jse 文件的默认打开方式关联到 Notepad(记事本),而不是 Windows Script Host。这样即使员工手滑双击了脚本,弹出的也是一行行代码,而不是勒索病毒的加密界面。
最后多说一句
黑客的技术在进化,他们开始研究我们所使用的工具本身的缺陷和特性。GootLoader 这次利用 Windows 原生工具“太好用”的特点进行攻击,确实给我们敲响了警钟。
你在工作中遇到过这种“只有特定环境才能复现”的恶意样本吗? 欢迎在评论区和我聊聊!👇
参考来源:Expel, The Hacker News *本文旨在技术分享,请勿用于非法用途*
免责声明:
本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。
任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。
本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我。
本文转载自:安全圈动向 Kit Chung Kit Chung《JS 马的新变种:手把手教你看懂 ZIP 结构的 EOCD 截断攻击》
版权声明
本站仅做备份收录,仅供研究与教学参考之用。
读者将信息用于其他用途的,全部法律及连带责任由读者自行承担,本站不承担任何责任。











评论