针对 Microsoft 365 凭据的 JavaScript 网络钓鱼活动分析

admin 2025年4月18日11:12:49评论1 views字数 3486阅读11分37秒阅读模式

近期,我们发现了一起利用 JavaScript 实施的凭证窃取活动。攻击者精心设计虚假语音邮件通知,以此为诱饵,企图骗取用户的 Microsoft 365 凭证。监测数据显示,基于 JavaScript 的凭证窃取活动正呈迅猛增长态势,已然成为网络安全领域不容忽视的普遍威胁。

在攻击手段上,攻击者不断推陈出新,越来越多地运用混淆和加密技术,以此绕过各类检测机制。其中,一种名为 “HTML 走私” 的策略尤为值得关注。攻击者将恶意 JavaScript 代码巧妙嵌入 HTML 文件中,当目标用户打开该文件,恶意代码便会自动执行,进而成功绕过传统安全过滤器,隐蔽性极高。

此外,网络犯罪分子越来越普遍地采用 CryptoJS 之类的库。通过使用 CryptoJS 加密恶意负载,攻击者增加了一层复杂性,从而阻碍了自动化分析和检测工作。

网络钓鱼活动

在此次凭证窃取活动中,攻击者精心策划了一系列具有极强迷惑性的操作。他们向目标用户发送电子邮件,邮件内容伪称收件人有新的语音邮件。邮件中附带一个 PDF 附件,附件上印有二维码。当用户扫描该二维码后,便会被引导至一个精心伪装的虚假登录页面,页面外观与 Microsoft Office 365、SharePoint 等合法服务页面毫无二致。毫无防备的用户一旦在这些虚假页面输入自己的凭证信息,攻击者便能轻易获取用户账户的访问权限,进而肆意妄为。

值得注意的是,攻击者为增强骗局的可信度,在 PDF 文件以及钓鱼邮件附件上都添加了目标组织的徽标,并附上收件人的相关信息,试图以此证明邮件来源的合法性,误导用户放松警惕。此外,除了 PDF 文件作为诱饵,攻击者还在邮件中夹带了一个 HTM 文件附件。该 HTM 文件中嵌入了恶意 JavaScript 代码,其作用在于,一旦用户点击相关内容,代码就会自动运行,将用户重定向到用于窃取凭证的页面,整个流程环环相扣,极具隐蔽性与欺骗性 。

针对 Microsoft 365 凭据的 JavaScript 网络钓鱼活动分析
针对 Microsoft 365 凭据的 JavaScript 网络钓鱼活动分析

JavaScript分析

在该恶意脚本中,JavaScript 代码执行了一系列操作。首先,代码将收件人的电子邮件地址赋值给名为 “0xbc8c” 的变量。这一举动极有可能是出于追踪用户的目的,或是为了让后续展示的内容更具针对性,进而营造出一种合法、可信的假象。

代码中包含了以 base64 格式存储的数据,这些数据被拆解为数组中的三个不同项。随后,脚本将数组中的这三项数据重新拼接,并将拼接后的结果传递给 atob 函数,该函数的作用是对 base64 编码的数据进行解码操作。最终,解码后的命令会被传递给 eval 函数,从而实现恶意代码的执行。

针对 Microsoft 365 凭据的 JavaScript 网络钓鱼活动分析

虽然解码 base64 数据的方法有很多,但“console.log()”方法在调试潜在恶意代码时非常实用,因为分析人员无需将数据从原始有效载荷中移出即可访问变量的内容。在本例中,只需将“eval”更改为“console.log”,即可显示 base64 编码的数据。

在调试器中启动 HTM 文件后,发现包含在 base64 数据中的额外 JavaScript,该 JavaScript 在页面加载时执行。

针对 Microsoft 365 凭据的 JavaScript 网络钓鱼活动分析

初步检查后,注意到“atob”函数的使用有所增加,这表明其中包含更多 base64 编码数据以及与 URL 关联的连接字符串。以下代码利用了 JavaScript 的“document.write()”方法。在 JavaScript 中,“document.write()”用于将 HTML 表达式或 JavaScript 代码直接写入另一个 HTML 文档。调用时,它会将数据插入到文档中执行脚本的位置。如果在 HTML 文档加载完成后使用 document.write(),它将覆盖整个文档内容。

有多种方法可以从此代码中提取解码的 base64 内容,但是为了便于分析,将内容复制到新的 HTML 文件中,以便进行简单的调试分析。

为了使通过“document.write()”传递的代码有效,HTML 需要将代码括在“<script>”标签内。

针对 Microsoft 365 凭据的 JavaScript 网络钓鱼活动分析
再次,利用“console.log”,设置断点,并在调试器中加载HTML内容,可以分析正在执行的解码代码。Base64数据解码为基本HTML数据,并呈现一个关于语音邮件的页面。进一步分析解码后的HTML数据,未发现任何其他JavaScript或恶意内容。
针对 Microsoft 365 凭据的 JavaScript 网络钓鱼活动分析

JavaScript 数据的第二阶段利用了“setTimeout”方法,该方法设置一个计时器,在指定时间过后自动执行代码。在本例中,计时器设置为 4 秒。4 秒后,该函数会自动将一个包含 URL 的连接字符串设置为变量“goldfinch”,然后将其传递给“document.write()”,以将 JavaScript 重定向注入到指定的 URL。

再次,利用调试器中的“console.log”是提取传递给下一个函数的实际数据的简单方法。

针对 Microsoft 365 凭据的 JavaScript 网络钓鱼活动分析
该 HTML 内容旨在引诱目标加载 HTML 内容以访问语音邮件,并在计时器函数执行后动态注入其他 Web 内容 (res444.php)。分析恶意 Web 内容时,“?”的出现通常表示 URL 内容中传递了参数。在本例中,“2-68747470733a2f2f6a39712e726c717a7469652e72752f68706b6b364a36342f-rwUuql”被传递给 PHP 文件“res444.php”。该参数的中间部分非常显眼,因为它完全由十六进制字符组成,并以“68747470733a2f2f”开头,这是一种常见的十六进制编码 URL 模式。对参数数据进行十六进制解码后,发现存在第二个 URL。
针对 Microsoft 365 凭据的 JavaScript 网络钓鱼活动分析
在分析期间,仍然能够访问“res444.php”的副本以进行进一步分析。首次分析“res444.php”时,发现其内容并非 PHP 代码,而是 JavaScript。JavaScript 代码中对 Crypto-JS 的引用通常表明代码中包含加密数据自 2024 年以来,在基于 JavaScript 的网络钓鱼活动中,Crypto-JS 的利用率稳步上升,这表明这种规避技术是网络钓鱼工具包的一部分。在这些活动中利用加密技术似乎可以严格规避自动分析引擎的检测,因为解密密钥必须存在于代码本身中才能正确执行。
针对 Microsoft 365 凭据的 JavaScript 网络钓鱼活动分析

在钓鱼活动的这一阶段,存在更多 base64 编码数据,这些数据被解码并解析为 JSON,并存储在变量“a”、“b”、“c”、“d”中。变量“b”、“c”和“d”用于使用 CryptoJS 解密存储在“a”中的数据。解密后的内容将传递给“document.write”函数,以加载其他 Web 内容。

为了解密“a”中存储的内容,通过将 JavaScript 加载到调试器中并捕获设置为变量“a”、“b”、“c”和“d”的值来开始此阶段的分析。

针对 Microsoft 365 凭据的 JavaScript 网络钓鱼活动分析

在调试器中进一步深入脚本,解密的数据存储在“rzirAFjIlLLTCGaS”中,然后是一个简单的替换函数,将字符串“blwRbXUYPJwusSMx”替换为“rwUuql”的值,该值是存储在网络钓鱼链第一阶段的电子邮件地址。

在调试会话中评估“rzirAFjIlLLTCGaS”允许访问存储在“rzirAFjIlLLTCGaS”中的解密内容,从而揭示出额外的 JavaScript,引用存储在上一阶段的十六进制数据中的相同 URL。

针对 Microsoft 365 凭据的 JavaScript 网络钓鱼活动分析

对解密的 JavaScript 代码进行分析后发现,该脚本会动态生成一个包含随机大写字母和目标电子邮件地址的 URL,然后通过创建并点击隐藏的 <a> 元素来强制重定向。它首先检查电子邮件字符串是否包含 #,如果包含,则在 URL 后附加一个随机字母,然后再附加电子邮件。该脚本会清除页面内容以掩盖其活动,并执行重定向,可能是为了进行跟踪、网络钓鱼或漏洞利用。此行为会悄无声息地操纵用户导航,并将可识别数据嵌入请求中,这是凭证窃取活动中常见的技术。

在沙盒中访问生成的 URL 揭示了凭证窃取的最终阶段。首先,用户被重定向到 Cloudflare 验证码,然后进入一个模拟媒体播放器的页面,以访问虚假的语音邮件。点击播放按钮后,用户将被重定向到一个虚假的 Microsoft 365 身份验证页面。输入凭证后,恶意页面会将请求转发给 Microsoft 进行验证。

针对 Microsoft 365 凭据的 JavaScript 网络钓鱼活动分析
针对 Microsoft 365 凭据的 JavaScript 网络钓鱼活动分析

利用 CryptoJS 加密有效载荷的 JavaScript 网络钓鱼活动日益盛行,这使得自动化检测和分析更具挑战性。

IoC

biglobe.ne.jpj9q.rlqztie.rufsf.velirax.ruuzgw.welsiolopyro.ruresourcerepgroup.comes.rlqztie.ruzomir.rlqztie.ru154.216.17.193

原文始发于微信公众号(Khan安全团队):针对 Microsoft 365 凭据的 JavaScript 网络钓鱼活动分析

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2025年4月18日11:12:49
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   针对 Microsoft 365 凭据的 JavaScript 网络钓鱼活动分析https://cn-sec.com/archives/3973764.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息