伪装成 Google Tag Manager 的 Magecart 攻击
一些电商网站上已发现一种复杂的全新 Magecart Web 数据窃取活动。Magecart 攻击是一种专门针对在线零售商的网络犯罪。这些攻击会在网站的支付页面中注入恶意 JavaScript 代码,客户一旦输入敏感信息,这些信息便会被捕获并发送到攻击者的服务器。这些信息可能包括信用卡号码和个人详细资料。
最近的攻击主要是窃取访客在结账页面和表单中的敏感信息。攻击者能够利用一个漏洞向多个目标网站注入恶意的内嵌 JavaScript 代码。窃取器使用冒充合法的第三方供应商(例如 Google Tag Manager)等技术,并通过 Base64 编码隐藏恶意代码。
一些网站已受到这种攻击的侵扰,这种攻击与最近 对加拿大最大的酒类零售商发起的攻击相似。
攻击概况
冒充已知供应商代码
窃取器将恶意代码作为内嵌脚本(嵌入 HTML 内部的脚本,而不是从外部文件加载)注入,该脚本类似于 Google Tag Manager 的代码段(图 1)。这使得攻击者可以用已知的供应商做掩护,从而将恶意代码伪装成合法的脚本。我们以前遇到过多个 Magecart 活动,它们采用了这种规避技术,使检测更具挑战性。
此外,窃取器使用 Base64 编码来混淆任何可能暴露恶意代码的 URL 或关键词。这进一步帮助掩盖了窃取器的存在。
使用 WebSocket 和 eval 函数
在这个例子中,内嵌代码段只作为一个加载器,而不是实际的攻击代码。该加载器包括一个条件,只在结账页面上触发攻击,从而使窃取器能够偷偷运行,并只在与攻击有关的目标敏感页面上加载完整的恶意代码。
在加载器代码的 Base64 编码被解密后,显示出来的 JavaScript 代码十分简短,只执行两个步骤:创建一个与攻击者的命令与控制 (C2) 服务器的新 WebSocket 连接,并设置一个侦听器函数,该函数将运行从 C2 收到的、带有“eval”函数的代码(图 2)。
在 Magecart 攻击中使用 WebSocket 和“eval”函数被认为是一种高级技术,因为它允许恶意代码作为第一方脚本在页面的上下文中运行,使其更难被可能在目标网站上运行的研究工具、安全服务和扫描程序发现(图 3)。此方法有助于攻击者保持其活动的隐蔽性,比传统的 XHR 请求或 HTML 标签更不易被发现。
进行代码检查
通过启动套接字连接,将允许浏览器和 C2 服务器在任何时候交换数据。攻击者的 C2 服务器向页面发送的第一条消息(图 4)包含 JavaScript 代码,该代码立即由加载器代码中指定的侦听器函数执行。
该代码进行两项检查。
- 该代码会验证是否已通过加载器代码中定义的全局变量建立了 WebSocket 连接。
- 此外,该代码还会确定该页面是否是一个包含“提交”按钮的结账页面。
如果这些检查都已通过,攻击者的代码就会向 C2 服务器发送一条带有当前页面 URL 的消息。作为回应,C2 服务器返回适合特定目标页面的恶意代码。
C2 服务器在返回攻击代码之前会等待接收页面 URL,这一事实表明,该活动通过一个动态框架运作,能够同时运行并支持许多网站和页面。
混淆代码
图 5 描述了实际的攻击代码(在验证 URL 后从 C2 服务器获取)。该代码被重度混淆,使得难以确定它的基本逻辑和攻击进展。Magecart 窃取器经常采用混淆技术,使安全专家难以破译攻击代码并理解整个攻击流程。
清理代码
通过使用去混淆工具,可以使情况变得更加清晰,并揭示了攻击背后的意图。如图 6 所示,代码包含大量关键词,旨在识别目标页面上的敏感字段,并在攻击者的控制下建立一个伪造的支付表单。
攻击者的最终目的是窃取毫无戒心的访问者的个人信息,这些访问者会与受感染的页面互动,并填写注入了攻击者代码的假表单。
插入针对第三方供应商的假表单
一些目标商店将其支付过程外包给第三方供应商。当客户提供个人信息时,他们会被重定向到第三方供应商,以输入他们的信用卡信息并完成交易。窃取器不能访问第三方供应商以获得最终用户的信用卡信息。
相反,窃取器 会在客户重定向到 第三方供应商之前,在页面上创建一个假的信用卡表单(图 7)。当用户点击假的“结账”或“提交付款”按钮时,窃取器将所有收集的数据发送到 C2 服务器,并允许用户通过重定向到真正的第三方供应商付款页面来继续完成合法的支付流程。
如果目标网站没有重定向到第三方支付页面,窃取器将不会创建新表单。相反,它将在结账页面和付款表单上所有输入敏感个人信息的地方添加 JavaScript 侦听器。一旦用户提交信息,窃取器将提取数据并使用 WebSocket 消息将其发送到 C2 服务器。
在这两种情况下,窃取器都会对提取的数据进行加密,使得研究工具和安全服务难以发现窃取器发起的任何异常网络活动(图 8)。
攻击的相似性
在调查过程中,我们发现有多个网站是该攻击的受害者。我们不能确认所有这些网站都与同一攻击活动有关,但这些案例之间有一些相似之处,表明使用了相同的 Magecart 框架。在某些情况下,攻击的内嵌加载器被伪装成一个假的 Google Tag Manager,其经过编码的参数掩盖了窃取器的任何痕迹,在多个受害网站上发现了此类迹象。
攻击者使用的域因网站而异,在大多数情况下,实际的攻击代码由相关页面的加载器代码获取,这只是为了使攻击更加隐蔽、更难发现。
攻击者的技术和能力总结
冒充一个已知的供应商代码段,比如 Google Tag Manager
使用 Base64 编码来隐藏攻击者的任何迹象,比如 URL 和域
使用 WebSocket 进行浏览器和 C2 之间的所有通信 — 提取攻击代码并泄露数据
执行具有“eval”函数的攻击代码,以使脚本看起来像是原生的第一方脚本
使用混淆技术,以使研究工具难以理解代码
在重定向到合法的第三方支付服务页面之前,注入虚假的表单来收集数据
利用 Akamai Page Integrity Manager 获得保护
我们的团队测试了最近针对 Akamai Page Integrity Manager 的 Magecart 攻击,该攻击被立即识别和抵御 — 并提供了详细的信息用于故障排除(图 9)。
Page Integrity Manager 专门用于防止 Web 数据窃取、表单劫持和 Magecart 攻击。它可以监测网页的脚本执行行为,并收集与在网页上运行的不同脚本有关的信息,包括它们的操作以及它们与其他脚本的关系。
通过将这些数据与多层检测方法(包括启发法、风险评分、人工智能和其他因素)相结合,Page Integrity Manager 能够快速检测并抵御客户端威胁。
结论
Magecart 窃取器不断发展,变得越来越复杂。本文中描述的窃取器使用高级规避和混淆方法,凸显了检测这类攻击的难度。
这场正在进行的猫鼠游戏需要一套全面的安全解决方案来检测和防范攻击。如果不实施这样的解决方案,可能会给客户带来严重的伤害,他们的隐私可能会被泄露,并对企业的声誉造成重大损害,同时也会产生重大罚款。
如今,最新的支付卡行业数据安全标准 (PCI DSS v4.0) 中包含的新要求使得任何在线处理支付卡的企业必须在浏览器内保障安全性。
了解详情
Akamai Page Integrity Manager 可通过提供网站上 运行的所有脚本的清单,监测脚本行为以及抵御基于脚本的复杂攻击,帮您满足这些新要求。
IOC
以下威胁指标 (IOC) 旨在帮助社区检测博文中描述的恶意活动和窃取器:
yachtbars[.]fun
app-stat[.]com
Magento-cdn[.]net
nebiltech[.]shop
Rithdigit[.]cyou
Antohub[.]shop
Okqtfc1[.]org
jquery-node[.]com
了解更多 如何通过 Akamai Page Integrity Manager 监测脚本行为并防范客户端攻击。