执行摘要
- Akamai 安全情报组检测到 Magecart 网络窃取活动,该活动针对大量网站,包括食品和零售行业的大型组织。
- 该活动之所以脱颖而出,是因为它采用了三种先进的隐藏技术,其中一种技术是我们以前从未见过的,特别是操纵网站的默认 404 错误页面来隐藏恶意代码,这给检测和缓解带来了独特的挑战。
- 另外两种混淆技术展示了攻击者用来避免检测和延长攻击链的不断发展的策略。
- 随着网络窃取攻击变得越来越复杂,组织必须保持警惕并探索先进的方法来防御这些不断变化的威胁。
介绍
一种新的、复杂的、隐蔽的 Magecart 网络浏览活动针对 Magento 和 WooCommerce 网站。该活动的一些受害者与食品和零售行业的大型组织有联系。
根据我们发现的证据,该活动已经活跃了几周,在某些情况下甚至更长。这次活动以我们以前从未遇到过的高水平隐蔽技术让我们大吃一惊。
新活动
Magecart 攻击通常首先利用目标网站中的漏洞或感染这些网站正在使用的第三方服务。在此活动中,我们检测到的所有受害者网站都被直接利用,因为恶意代码片段被注入到其第一方资源中。
在某些情况下,恶意代码被插入到 HTML 页面中;在其他情况下,它隐藏在作为网站一部分加载的第一方脚本之一中。
与许多其他 Magecart 活动一样,该活动的攻击基础设施由三个主要部分组成:加载程序、恶意攻击代码和数据泄露(图 1)。
图 1:Magecart 攻击基础设施
将攻击分为三个部分的目的是通过一种更难以检测的方式来隐藏攻击。这样就可以仅在特定目标页面上激活完整的攻击流程;也就是说,由于攻击者使用的混淆措施,完整的攻击流程只能在攻击者想要执行的地方激活。这使得攻击更加谨慎,并且更难以被目标网站上可能存在的安全服务和外部扫描工具检测到。
尽管大多数 Magecart 活动在流程和阶段方面都有相似之处,但一项活动与另一项活动的区别在于攻击者采用的各种隐藏技术。这些技术用于掩盖攻击的基础设施;隐藏痕迹;复杂的检测和逆向工程;并最终延长攻击时间。
活动的 3 种变体
我们发现了该活动的三种不同变体,展示了攻击的演变以及攻击者随着时间的推移为防止检测和缓解该活动所做的改进:
- 前两个变体非常相似,只有加载器部分存在细微差别。
- 第三个版本是独特的,因为攻击者使用网站默认的 404 错误页面来隐藏他们的恶意代码;这是我们以前从未见过的创造性隐藏技术。
让我们仔细看看这个新颖活动的三个变体的技术细节。
变化一
当我们注意到威胁情报监控工具在一家大公司的网站上检测到一些可疑代码片段时,我们的研究开始了。在分析这些片段后,我们发现它们是恶意编码的 JavaScript 加载器,这些加载器仍然存在并活跃在网站上。这一发现促使我们进一步调查,揭示了整个活动及其变化和对众多网站的影响。
变种加载器:冰山一角
skimmer 成功地将带有onerror属性的格式错误的 HTML 图像标记注入到被利用的网站中(图 2)。此属性包含模糊的 Base64 编码的恶意加载程序代码片段。图像标签的故意空 src 属性旨在阻止网络请求并触发包含混淆的恶意 JavaScript 代码片段的内联onerror回调的执行。
使用图像标签来执行 JavaScript 代码是一种不太常见但更复杂的技术。它可以帮助窃取者绕过安全措施,例如通常分析网络流量的外部扫描仪,在这种特定情况下不会触发这些安全措施。混淆后的代码将在页面上下文中执行,并像页面本身启动的本机第一方脚本一样运行。
图 2:变体一加载器 — 格式不正确的 HTML 图像标签,其 onerror 属性包含恶意加载器代码
解码后的加载器代码——运行时
一旦混淆的 Base64 编码代码在运行时执行,它就会转换为纯 JavaScript 并负责启动 WebSocket 通道(图 3)。该通道充当浏览器和攻击者的 C2 服务器之间的双向通信链路。
在最近的几个活动中,我们观察到 Magecart 攻击中使用了 WebSocket。WebSocket 被认为是一种更安静、更灵活的通信方法,允许攻击者利用单个网络通道实现各种目的。这包括从 C2 服务器向浏览器发送攻击的不同部分(反之亦然),以及在某些情况下促进数据泄露活动。
代码的另一个值得注意的方面是机器人检测,它检查用户代理是否处于自动化控制之下。如果是这种情况,代码将终止其执行。这是一种聪明的反机器人技术,旨在逃避可能检测到攻击的外部安全扫描仪和沙箱。
图 3:变体一加载器的运行时解码的 JavaScript 代码
Websocket通信流程
一旦建立了 WebSocket 通道,第一条消息就会从攻击者的 C2 服务器发送到浏览器。该消息以 Base64 编码的字符串形式传输,其中包含一行 JavaScript 命令,指示浏览器发回页面的当前 URL。
此步骤的目的是让C2服务器判断当前页面是结账(敏感)页面还是其他非结账页面。这样,攻击者就可以相应地调整接下来的步骤。
这种简单的服务器端验证使攻击者能够仅在相关目标页面上激活攻击,从而避免非敏感页面上的潜在暴露。这是另一个例子,凸显了窃取者为逃避安全服务和外部扫描仪的检测而付出的努力。
当C2服务器识别出结账页面URL时,流程进入下一阶段。在此步骤中,另一条消息将发送到浏览器。它是一个长的Base64编码的字符串,包含了整个攻击代码。解码后,就会显示出冗长且混乱的 JavaScript 代码(图 4)。
该代码负责在目标敏感页面上执行各种恶意活动,目的是读取用户的敏感个人和信用卡数据并将其传输回窃取者的 C2 服务器。
随后,包含恶意代码收集的敏感被盗数据的混淆数据泄露消息将从浏览器发送到 C2 服务器。如前所述,与更传统的通信方法(如 XHR、fetch 或 HTML 资源请求)相比,使用相同的 WebSocket 通道来加载完整的恶意代码和窃取被盗数据可以使过程更加安静,并且涉及更少的网络请求。
图 4:结帐页面上的 WebSocket 流程
变化二
变化二加载器 :同一载体,新装饰
变体一和变体二之间的主要区别在于加载器组件。在变体二中,浏览器插入一个内联脚本,其中的代码片段与 Meta Pixel 代码片段(一种著名的 Facebook 访客活动跟踪服务)非常相似,其中还添加了几行代码(图 5)。
这些添加的行是实际的加载程序部分,而周围的元像素代码是一个误导性的封面,使其看起来好像是合法且无可疑的代码片段。
这种隐藏技术使恶意代码片段看起来像是 Google 标签管理器或 Facebook 等众所周知的服务,在最近的 Magecart 活动中广受欢迎。它允许撇取器逃避外部扫描仪和研究人员的静态分析。
图 5:变体二加载器 — 内联脚本伪装成 Meta PIxel 代码片段,其中包含恶意加载器
索取图片
当我们仔细检查伪造的 Meta Pixel 代码片段中的可疑行时,它似乎从网站自己的目录中获取了 PNG 图像。该网络请求似乎是对网站上托管的无辜图像的典型请求。然而,当我们检查该图像的实际内容时,我们发现它并不像看上去那么无害(图 6)。
图6:网络图片请求被攻击者篡改且含有恶意代码的图片
图像二进制文件中的恶意 JavaScript 代码片段
PNG 图像的二进制数据包含附加到图像二进制文件末尾的 Base64 编码字符串(图 7)。然后,加载程序代码片段会提取、解码并执行该字符串(图 8)。解码后的字符串表示一个 JavaScript 代码片段,该代码片段与变体一中加载器的onerror属性中找到的代码片段相同。
流程的后续步骤保持不变。此代码片段在运行时转换为纯 JavaScript 代码,该代码启动到攻击者 C2 服务器的 WebSocket 通道,其余序列如前所述。
图7:包含隐藏恶意代码的图像的二进制数据
图 8:最初以 Base64 编码并隐藏在图像中的恶意代码在解码后变得明显
变化三
现在,我们来谈谈最好的部分。尽管我们见过类似的攻击,但这次攻击是独一无二的,确实让我们感到惊讶。
变体三加载器:相同,相同,但完全不同
乍一看,这个加载器看起来与变体二中的加载器类似,但您会发现(正如我们所做的那样)这是一个完全不同的场景。在某些情况下,此加载程序会伪装成元像素代码片段,如变体二所示(图 9)。但在其他情况下,它被注入到页面上的随机内联脚本中(图 10)。
该加载程序的第一个值得注意的方面是对称为“icons”的相对路径的获取请求。
图 9:变体三加载器 - 隐藏在模仿 Meta Pixel 外观的代码片段中的恶意代码片段
图10:变体三加载器——隐藏在任意内联脚本中的恶意代码片段
404 错误?真的吗?
加载程序执行后,攻击会向/icons发送获取请求,这是一个实际不存在的相对路径。此请求导致“404 Not Found”错误(图 11)。对响应中返回的 HTML 进行分析后发现,它似乎是网站的默认 404 页面(图 12)。这很令人困惑,让我们怀疑该浏览器是否在我们发现的受害者网站上不再活跃。
图11:加载器向不存在的路径发起请求,返回404错误
图 12:默认错误页面 HTML
永远不要低估加载器
我们退后一步,重新分析加载器,我们找到了拼图中缺失的一块。加载程序包含字符串“COOKIE_ANNOT”的正则表达式匹配,该正则表达式应该在作为图标请求的一部分返回的 404 错误页面上执行。
因此,我们在返回的 404 HTML 中搜索该字符串,瞧!我们发现页面末尾隐藏着一条注释,其中包含“COOKIE_ANNOT”字符串(图 14)。在此字符串旁边,连接了一个长的 Base64 编码字符串。该编码字符串代表整个混淆后的 JavaScript 攻击代码。加载程序从评论中提取该字符串,对其进行解码并执行攻击,其目的是窃取用户输入的个人信息。
我们模拟了对不存在路径的额外请求,所有这些请求都返回相同的 404 错误页面,其中包含带有编码的恶意代码的注释。这些检查确认攻击者成功更改了整个网站的默认错误页面并隐藏了其中的恶意代码!
图 13:加载程序变体 3 - 字符串“COOKIE_ANNOT”的正则表达式匹配。
图 14:隐藏在错误页面 HTML 中的恶意编码评论
数据泄露
假表格
与变体一和变体二相比,攻击者在变体三中采用了不同的常见数据泄露技术 - 注入虚假表单(图 15)。当撇取器无法访问敏感输入时,通常会使用此技术。
当网站使用第三方支付服务并在第三方 iframe 或外部页面内实现支付表单时,可能会发生这种情况。为了绕过这种情况,攻击者创建了一个与原始付款表单非常相似的虚假表单并将其覆盖——这种技术越来越受欢迎。这正是变体三中被盗数据被泄露的方式。
图15:恶意代码注入的伪造表单
当用户将数据提交到攻击者的虚假表单中时,会出现错误,虚假表单会被隐藏,原始付款表单会显示,并提示用户重新输入付款详细信息(图 16)。
图 16:假表单被隐藏,并提示用户重新输入信息
带有被盗数据的图像请求
提交伪造的表单会向攻击者的 C2 服务器发起图像网络请求,在查询参数中以 Base64 编码的字符串形式携带所有被盗的个人和信用卡信息(图 17)。解码后,该字符串揭示了请求的真实意图,并且整个攻击流程变得清晰。
图 17:包含被盗数据作为 Base64 编码字符串查询参数的图像网络请求
从变体三中吸取的教训:404 案例
这种隐藏技术极具创新性,是我们在之前的 Magecart 战役中从未见过的。操纵目标网站的默认 404 错误页面的想法可以为 Magecart 参与者提供各种创意选项,以改进隐藏和规避。
在我们发现的某些情况下,在撰写本文时,恶意加载程序已从受影响的网站页面中删除。然而,默认 404 页面中的恶意评论仍然存在,可能允许浏览器轻松重新激活攻击。这凸显了检测这种方法的复杂性以及缓解这种方法的重要性。
对通向 404 页面的第一方路径的请求是另一种规避技术,可以绕过内容安全策略标头和可能主动分析页面上的网络请求的其他安全措施。这无疑是我们最近遇到的更复杂的 Magecart 策略之一。
结论
该活动强化了这样一个事实:网络浏览技术正在不断发展。它们变得越来越复杂,这使得通过静态分析和外部扫描进行检测和缓解变得越来越具有挑战性。该领域的威胁行为者不断寻找更好的方法来隐藏受害者网站内的攻击,并逃避可能暴露攻击的各种安全措施。
这项研究中强调的复杂程度应该提醒组织对网络窃取攻击媒介保持警惕和关注,并积极寻求新的先进方法来应对这些类型的攻击。
国际奥委会
Pmdresearch[.]com
secures-tool[.]com
adsometric[.]com
cngresearch[.]com
转载来源:https://www.akamai.com/blog/security-research/magecart-new-technique-404-pages-skimmer
图片来源网络侵权可联系删除