在钓鱼电子邮件中使用嵌入式 HTML 文档是攻击者使用的一种标准技术。它不需要在电子邮件正文中添加链接,而反垃圾邮件引擎和电子邮件反病毒软件可以很容易地检测到这些链接。在伪装钓鱼内容方面,HTML比电子邮件的隐蔽性要强得多。

攻击者使用的HTML附件主要有两种:带有虚假网站链接的HTML文件,或者是一个完整的钓鱼页面。在第一种情况下,攻击者不仅可以隐藏文件中的链接,还可以在用户打开此文件时自动将用户重定向到欺诈网站。第二种类型的 HTML 附件可以完全跳过创建网站并节省托管成本:网络钓鱼表单和收集数据的脚本直接嵌入在附件中。此外,像电子邮件这样的HTML文件可以根据目标受害者和攻击载体进行修改,从而实现更加个性化的网络钓鱼内容。

带有HTML附件的电子邮件示例


网络钓鱼HTML附件结构

HTML附件中的钓鱼元素通常使用JavaScript实现,它处理将用户重定向到钓鱼网站或收集凭据并将其发送给诈骗者。

钓鱼HTML页面及其源代码

通常,HTML页面将数据发送到脚本中指定的恶意URL。有些附件完全或大部分包含一个JS脚本。

在电子邮件源代码中,HTML附件看起来像纯文本,通常是base64编码的。

电子邮件中的HTML附件源代码

如果文件包含明文的恶意脚本或链接,安全软件可以快速解析并阻止它。为了避免这种情况,攻击者们使出了各种手段。

JavaScript 混淆

JavaScript混淆是用于隐藏HTML附件的最常用技术之一。为了防止文件中的URL被快速发现和阻止,网络钓鱼者要么混淆钓鱼链接本身,要么混淆整个脚本,有时甚至混淆整个HTML文件。在某些情况下,攻击者会手动混淆代码,但他们通常使用现成的工具,其中很多都是免费的,比如JavaScript混淆器。

例如,在文本编辑器中打开据称来自汇丰银行(HSBC Bank)的钓鱼电子邮件中的HTML附件(见图1),我们看到一些相当令人困惑的JS代码,这似乎既不暗示打开链接,也不暗示任何其他有意义的操作。

HTML附件中的混淆示例

然而,它实际上是一个将用户重定向到钓鱼网站的混淆脚本。为了隐藏钓鱼链接,攻击者使用了一个现成的工具,使我们能够轻松可以轻松地反混淆脚本。

来自 HSBC 银行的电子邮件附件中的反混淆脚本

如果脚本、链接或 HTML 页面被手动混淆,则恢复原始代码要困难得多。要检测此类文件中的网络钓鱼内容,可能需要进行动态分析,其中涉及运行和调试代码。

编码

有时攻击者会使用更有趣的方法,例如,在一封网络钓鱼电子邮件中,我们发现了一个不寻常的 HTML 附件。如上例所示,它包含 JavaScript。由于该代码非常简洁,人们可能会认为它在做的事情与伪造的汇丰电子邮件中的代码相同,即将用户重定向到一个钓鱼网站。但是在运行它时,我们发现了一个用这个小脚本编码的完整的网络钓鱼页面。

使用unescape()方法的HTML文件,该文件的源代码只包含五行,其中一行是空的。

HTML附件中的钓鱼页面

攻击者使用了一个有趣的技巧,涉及到已弃用的JS方法unescape()。此方法将“%xx”字符序列替换为传递给它的字符串中的等价ASCII字符序列。运行脚本并查看结果页面的源代码,我们将看到纯HTML。

生成的HTML文件

JavaScript 现在使用 decodeURI() 和 decodeURIComponent() 方法代替 unescape(),但大多数现代浏览器仍然支持 unescape()。我们不能肯定为什么攻击者选择了一种已弃用的方法,但这可能是因为现代方法更有可能被反垃圾邮件引擎解释和检测到。

统计数据

在2022年前4个月,卡巴斯基安全解决方案检测到近200万封包含恶意HTML附件的电子邮件。其中近一半(851328人)在3月份被发现并被阻止。一月是最平静的月份,卡巴斯基的反垃圾邮件解决方案检测到299,859封带有钓鱼HTML附件的电子邮件。

2022 年 1 月至 4 月检测到的带有恶意 HTML 附件的电子邮件数量

总结

网络钓鱼攻击者使用各种技巧来绕过电子邮件拦截,并引诱尽可能多的用户访问他们的欺诈网站。一种常见的技术是带有部分或完全混淆代码的 HTML 附件。HTML 文件允许攻击者使用脚本、混淆恶意内容以使其更难检测,并将网络钓鱼页面作为附件而不是链接发送。

参考及来源:https://securelist.com/html-attachments-in-phishing-e-mails/106481/