JS马的新变种:手把手教你看懂ZIP结构的EOCD截断攻击

admin 2026-01-23 11:21:52 网络安全文章 来源:ZONE.CI 全球网 0 阅读模式

文章总结: 本文深入解析GootLoader利用ZIP结构EOCD截断攻击的原理,通过拼接数百个畸形ZIP包,利用Windows高容错性与安全工具解析差异实现防御规避,导致沙箱失效且Hash唯一性使IOC失灵。文章建议通过组策略阻断wscript.exe和cscript.exe运行,或将JS文件默认打开方式改为记事本以切断感染链。 综合评分: 85 文章分类: 恶意软件,免杀,漏洞分析,威胁情报,安全意识


cover_image

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 资源管理器中双击了这个“畸形”压缩包,就像扳机被扣动了:

  1. 触发:

    用户双击包内的 .js 文件。

  2. 执行:

    Windows 调用 wscript.exe执行脚本。注意,这里甚至不需要显式解压,脚本可以直接从临时文件夹运行。

  3. 持久化:

    JS 脚本会在“启动”文件夹中创建一个快捷方式(LNK 文件)。

  4. 下一阶段:

    通过 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 截断攻击》

评论:0   参与:  0