【安全资讯】攻击者使用Skimmer针对房地产网站发起供应链攻击
引言
近日,研究人员发现了一个利用云视频平台分发skimmer(又名formjacking)的供应链攻击活动,攻击者通过注入恶意JavaScript代码入侵网站,并接管网站HTML表单页面的功能,以收集用户的敏感信息。目前,已有100多个房地产网站都受到了相同的skimmer攻击。
简况
Skimmer攻击也称为表单劫持(formjacking),攻击者将恶意 JavaScript 代码插入目标网站,最常见的是购物和电子商务门户网站上的结账或支付页面,以获取用户输入的信用卡等有价值的信息。
在此次供应链攻击活动中,攻击者将Skimmer JavaScript代码注入到视频中,因此当其他人导入视频时,他们的网站也会嵌入恶意Skimmer代码。研究人员检测到,超过100个房地产网站都受到了同样的skimmer攻击。
以一个网站为例,网站提供了一个表单,访问者可以使用它来请求有关待售房屋的更多信息,该表单还要求用户提供个人信息,如下图:
Skimmer的代码是高度混淆的,第一部分的代码用于解密字符串数组 - u;解密函数是l。解密后,可以得到纯文本数组。代码的第二部分定义了三个函数:
- 函数c用于用正则表达式模式替换字符串。
- 函数d用于验证字符串是否与信用卡模式匹配。
- 函数f用于使用Luhn 算法验证信用卡号。
代码的第三部分是反调试代码,会检查window.Firebug、window.Firebug.chrome和window.Firebug.chrome.isInitialized变量是否存在。它还会发送一条devtoolschange消息来检查 Chrome 控制台是否已打开。
skimmer窃取信用卡信息并发送的流程如下:
- 首先使用onreadystatechange来检查页面加载是否完成,然后调用TrySend函数。
- TrySend函数调用SaveAllFields函数从HTML 文档中读取客户输入的信息,如姓名和电子邮件地址,然后调用SaveParam检查数据是否有效。如果有效,则将此信息保存到Data变量中。
- TrySend函数调用SendData函数发送数据。然后,SendData函数将调用LoadImage函数来创建一个<img> HTML 标记并用 C2 URL 填充图像源。
当云平台用户创建播放器时,可以上传一个JavaScript文件来添加他们自己的自定义JavaScript。在攻击活动中,用户上传了一个脚本,该脚本可以被注入恶意代码。因此,研究人员推断攻击者通过使用skimmer代码更改了静态脚本。在下一次播放器更新时,视频平台重新提取受感染的文件,并将其与播放器一起提供。
skimmer 代码试图收集受害者的敏感信息,例如姓名、电子邮件、电话号码,并将它们发送到收集服务器https://cdn-imgcloud[.]com/img。
总结
供应链网络是网络犯罪的常见目标,因为控制供应链中的薄弱环节可以让攻击者接触到更多的受害者。skimmer难以捉摸并且不断发展,当与云分发平台结合使用时,可能造成很大的影响。研究人员建议用户定期进行 Web 内容完整性检查,以检测和防止网站内容被注入恶意代码。