一种新的 JavaScript 混淆方法利用不可见的 Unicode 字符来表示二进制值,在针对美国政治行动委员会(PAC)附属机构的网络钓鱼攻击中被积极滥用。
发现此次攻击的网络威胁实验室报告称,该攻击发生在 2025 年 1 月初,并带有复杂的迹象,例如使用了:
·针对受害者提供个性化的非公开信息;
·调试器断点和定时检查以逃避检测;
·递归包装邮戳跟踪链接到模糊的最终网络钓鱼目的地。
JavaScript 开发人员在 2024 年 10 月首次披露了这种混淆技术,它在实际攻击中的迅速采用凸显了新研究被武器化的速度。
使 JS 有效负载 " 不可见 "
新的混淆技术利用不可见的 Unicode 字符,特别是韩文半宽(U+FFA0)和韩文全宽(U+3164)。
JavaScript 负载中的每个 ASCII 字符被转换为 8 位二进制表示,其中的二进制值(1 和 0)被不可见的韩文字符替换。
混淆后的代码作为属性存储在 JavaScript 对象中,由于韩文填充字符呈现为空白,因此脚本中的有效负载看起来为空,如下图末尾的空白所示。
隐藏恶意代码的空白
一个简短的引导脚本使用 JavaScript 代理的 "get()陷阱 " 检索隐藏的有效负载。当访问 hidden 属性时,Proxy 将不可见的韩文填充字符转换回二进制并重建原始 JavaScript 代码。
Juniper 分析师报告称,攻击者除了上述步骤之外,还使用了额外的隐藏步骤,比如用 base64 编码脚本,并使用反调试检查来逃避分析。
韩文填充字符序列的 Base64 编码
Juniper 解释说:" 攻击是高度个性化的,包括非公开信息,最初的 JavaScript 会在被分析时试图调用调试器断点,检测到延迟,然后通过重定向到一个正常的网站来中止攻击。"
这种攻击很难检测,因为空白减少了安全扫描仪将其标记为恶意的可能性。
由于有效负载只是对象中的一个属性,因此可以将其注入合法脚本而不会引起怀疑;另外,整个编码过程很容易实现,不需要高级知识。
Juniper 表示,此次活动中使用的两个域名先前与 Tycoon 2FA 网络钓鱼工具包有关。如果是这样,我们很可能会看到这种不可见的混淆方法在未来被更广泛的攻击者采用。
登录后才可以发布评论哦
打开小程序可以发布评论哦