网络钓鱼攻击利用隐形 Unicode 技巧隐藏 JavaScript

一种新的 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 翻译整理,封面来源于网络;  

© 版权声明
THE END
你的支持是我们在网空安全路上的驱动力!
点赞13 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码快捷回复

    暂无评论内容