利用隐形Unicode字符的钓鱼攻击:一种新的JS混淆技术
利用隐形Unicode字符的钓鱼攻击:一种新的JS混淆技术
近日,Juniper Threat Labs发现了一种新型的网络钓鱼攻击技术,攻击者利用隐形Unicode字符对JavaScript代码进行混淆,以逃避安全检测。这种攻击手法主要针对美国政治行动委员会(PAC)附属机构,具有高度个性化和难以检测的特点。
这种新型混淆技术利用了隐形Unicode字符,特别是半宽韩文字符(U+FFA0)和全宽韩文字符(U+3164)。每个JavaScript负载中的ASCII字符被转换为8位二进制表示,其中的二进制值(1和0)被替换为隐形的韩文字符。
混淆后的代码作为属性存储在JavaScript对象中,由于韩文填充字符显示为空白,脚本中的负载看起来是空的,如下图所示尾部的空白空间。
空白隐藏恶意代码来源:Juniper
一个简短的引导脚本使用JavaScript Proxy的'get()陷阱'来检索隐藏的负载。当访问隐藏属性时,Proxy将隐形韩文填充字符转换回二进制并重建原始JavaScript代码。
额外的隐蔽手段和安全挑战
Juniper分析师报告称,攻击者除了上述方法外,还使用了额外的隐蔽步骤,如使用base64编码脚本,并使用反调试检查来逃避分析。
一系列韩文填充字符的Base64编码来源:Juniper
Juniper解释说:“这些攻击高度个性化,包含非公开信息。如果正在分析,初始的JavaScript将尝试调用调试器断点,检测到延迟,然后通过重定向到良性网站来中止攻击。”
由于空白提高了被安全扫描器标记为恶意的难度,这种攻击难以检测。此外,负载仅是对象中的一个属性,因此可以注入到合法脚本中而不会引起怀疑,整个编码过程也易于实现,不需要高级知识。
Juniper提到,此活动中使用的两个域名此前与Tycoon 2FA钓鱼工具有关联。如果情况属实,未来我们可能会看到这种隐形混淆技术被更广泛的攻击者采用。
参考来源:
Phishing attack hides JavaScript using invisible Unicode trick
本文原文来自Juniper Threat Labs的研究报告。