一种新的 JavaScript 混淆方法利用隐形 Unicode 字符来表示二进制值,这种方法正在针对美国政治行动委员会(PAC)附属机构的网络钓鱼攻击中被积极利用。
Juniper Threat Labs 发现了这次攻击,报告称该攻击发生在 2025 年 1 月初,显示出高度复杂性,包括使用以下手段:
- 使用个性化非公开信息来针对受害者,
- 使用调试器断点和时间检查来规避检测,
- 使用递归包装的 Postmark 跟踪链接来掩盖最终的网络钓鱼目的地。
JavaScript 开发者 Martin Kleppe 于 2024 年 10 月首次披露了这种混淆技术,其在实际攻击中的快速采用突显了新研究如何迅速被武器化。
使 JS 负载“隐形”
这种新的混淆技术利用了隐形 Unicode 字符,特别是 Hangul 半角(U+FFA0)和 Hangul 全角(U+3164)字符。
JavaScript 负载中的每个 ASCII 字符都被转换为 8 位二进制表示,其中的二进制值(1 和 0)被替换为隐形的 Hangul 字符。
混淆后的代码存储为 JavaScript 对象的一个属性,由于 Hangul 填充字符显示为空白,脚本中的负载看起来是空的,如下图所示。
空白处隐藏恶意代码
一个简短的引导脚本使用 JavaScript Proxy 的 get() trap 来检索隐藏的负载。当访问隐藏属性时,Proxy 将隐形的 Hangul 填充字符转换回二进制,并重建原始的 JavaScript 代码。
Juniper 的分析师报告称,攻击者除了上述手段外,还采取了额外的隐藏步骤,例如使用 base64 编码脚本和使用反调试检查来规避分析。
“这些攻击高度个性化,包括非公开信息,初始 JavaScript 会尝试在被分析时调用调试器断点,检测到延迟后,然后通过重定向到良性网站来中止攻击,”Juniper 解释道。
这些攻击难以检测,因为空白减少了安全扫描器将其标记为恶意的可能性。
由于负载只是对象中的一个属性,它可以被注入到合法脚本中而不引起怀疑;此外,整个编码过程易于实现,不需要高级知识。
Juniper 表示,此次活动中使用的两个域名此前与 Tycoon 2FA 网络钓鱼工具包有关。
如果是这样,我们可能会在未来看到这种隐形混淆方法被更广泛的攻击者采用。
消息来源:Bleeping Computer;
本文由 HackerNews.cc 翻译整理,封面来源于网络;
暂无评论内容