梦幻的彼岸 发表于 2021-6-18 16:46:05

[翻译]ImageGate:一种通过图像分发恶意软件的新方法

本帖最后由 梦幻的彼岸 于 2021-6-18 17:02 编辑

备注


[*]原文地址:https://sec-in.com/outLinkPage/?target=https://research.checkpoint.com/2016/imagegate-check-point-uncovers-new-method-distributing-malware-images/
[*]原文标题:ImageGate: A New Method for Distributing Malware Through Images
[*]原文信息:November 24, 2016

static/image/hrline/1.gif
Check Point研究人员发现了一种新的攻击载体,名为ImageGate,它将恶意软件嵌入图像和图形文件中。此外,研究人员还发现了黑客通过Facebook和LinkedIn等社交媒体应用程序在这些图片中执行恶意代码的方法。
根据研究,攻击者建立了一种新的能力,将恶意代码嵌入图像文件并成功上传到社交媒体网站。攻击者利用社交媒体基础设施的错误配置,故意强迫受害者下载图像文件。这导致最终用户一旦点击下载的文件,就会感染用户的设备。


在过去的一周里,整个安全行业都在密切关注Locky勒索软件通过社交媒体的大规模传播,特别是其基于Facebook的活动。Check Point研究人员坚信,新的ImageGate技术揭示了这一活动是如何实现的,这个问题直到现在都没有答案。


Check Point研究人员发现了影响全球主要网站和社交网络的攻击载体,包括Facebook和LinkedIn。Check Point在9月初更新了Facebook和LinkedIn的攻击载体


观看演示: https://youtu.be/sGlrLFo43pY
就Locky勒索软件而言,一旦用户下载并打开他们收到的恶意文件--他们个人设备上的所有文件都被自动加密,他们只有在支付赎金之后才能获得访问权。业界估计,该活动仍在肆虐,每天都在积累新的受害者。


随着越来越多的人花时间在社交网站上,黑客们已经将他们的注意力转移到寻找进入这些平台的方法。网络犯罪分子了解这些网站通常是 "白名单",为此,他们不断寻找新的技术,利用社交媒体作为其恶意活动的主机。为了保护用户免受最先进的威胁,Check Point努力确定攻击者的下一步攻击方向。


如何保证安全:
Check Point建议采取以下预防措施:




[*]如果你点击了一张图片,你的浏览器开始下载一个文件,不要打开它。任何社交媒体网站应该在不下载任何文件的情况下显示图片。
[*]不要打开任何具有不寻常扩展名的图像文件(如SVG、JS或HTA)

static/image/hrline/1.gif
更新:12月20日


Facebook 的概念验证
Facebook是被证明容易受到ImageGate攻击的最著名的网站之一。对Facebook的攻击包括几个阶段,在这些阶段中,Facebook的安全措施被规避了。为了开始攻击,攻击者制作了一个有效||载荷,最终将被强行下载到受害者的计算机上,并执行真正的恶意软件或恶意代码。首先,攻击者根据图像结构,使用HEX编辑器(或任何其他编辑器)将恶意内容嵌入图像内。
结果如下:
带有payload的图像被上传和下载,以查看有效载荷是否因上传至Facebook服务器而损坏。然而,这个策略并不简单,因为Facebook将payload从图像中剥离

这一障碍可以通过使用图形照片上传API和定制的模糊测试来克服。模糊测试的主要逻辑如下:


[*]改变图像基线并在文件的某处注入payload。
[*]将该图像上传到Facebook。
[*]在Facebook剥离payload后获得图像,并重建它。
[*]检查payload是否存在于图像中。
[*]如果有效就停止。
[*]移动payloadX字节。
[*]手动调整payload的位置(根据系统的输出和行为)。

模糊测试主要部分的代码片段:

请注意,Graph API返回的图像比原始图像要小,因此,该图像将不包含带有有效载荷的完整图像数据。我们设法发现,如果我们从URL中删除s720x720,就有可能访问包含有效载荷的完整图像数据的原始图像。


通过这样做,攻击者可以在图像中上传他的有效载荷到Facebook服务器。

一旦这个障碍被清除,攻击者将需要更进一步,以确保他的成功。为此,攻击者以分辨率高于962X541的图像形式上传恶意文件。这是必要的,因为它不需要向文件的链接添加令牌。如果添加了token,攻击将失败。一旦上传了图像,攻击者就会复制文件的链接,如下所示:
https://scontent-lhr3-1.xx.fbcdn.net/t31.0-8/14086313_295633347470226_3946240742478472027_o.jpg
下一步是改变内容类型,从单纯的.jpg到octet-steam。攻击者可以简单地通过在URL的末尾添加一个点来改变内容类型,如下图所示:






攻击者添加了一个dl=1的参数,导致Facebook下载图片而不是展示图片。

为了了解添加dl=1时会发生什么,我们提供以下详细分析:

从上图中可以看到,Facebook服务器添加了一个Content-DispositionL附件头,但没有指定文件名。攻击者可以操纵Chrome CoreWebkit组件来更改文件名。在Chrome CoreWebkit组件中,当从服务器接收到数据时,函数PopulateURLResponse将被调用:

这个函数将管理包含文件名的所有响应组件。


在这个函数中,下面几行调用GetSuggestedFileName





如果headers->EnumerateHeader中的函数没有在" content-disposition "中找到文件名,&值将被清除,因此值将从URL中获取,如下面的函数所示:





该函数将调用GetFileNameFromURL函数,因为content_dispose .empty()将为True,如下图所示:





如果URL是有效的,而不是“about://” 或“data://”,函数GetFileNameFromURL将调用函数ExtractFileName。



其中调用DoExtractFileName




接下来,代码到达函数DoExtractFileName,它从最后一个斜线和下面的分号之间的路径中提取文件名。


利用这些信息,攻击者可以操纵URL,并在客户端改变文件名,如果他在URL中添加/filename.extension ;
通过这样做,攻击者可以将恶意图像呈现为一个吸引人的文件,如facebook_password.exe,例如:


https://scontent-lhr3-1.xx.fbcdn.net/t31.0-8/14102894_1137188709676282_2198558191558447569_o.jpg/facebook_password.exe;.?dl=1
在这个阶段,该文件不会运行,因为文件头不是PE头。然而,攻击者可以将头文件改为既可以是图像也可以是可执行文件的格式,如(.hta)格式。这样一来,执行它的应用程序就决定了它的能力。


一旦所有这些步骤完成,攻击者需要做的就是通过Facebook向某人发送图片。


而payload将在他的设备上执行。



Facebook 的概念验证 #2
这一次,攻击基于Facebook messenger。攻击者将执行以下步骤:


攻击者将图像附加到messenger:





然后攻击者修改请求内容类型,将数据更改为八位元数据流,如前所示。这一次我们需要使用图像内容类型:image/svg+xml



攻击者使用svg+xml content-type使Facebook以图像文件的形式显示附件,并将内容类型更改为八位流,否则浏览器会将文件保存为图像。



当受害者点击图片时,该文件将被下载。一旦受害者打开该文件,它将根据文件的扩展名被执行,在我们的演示中是HTA。



点击该文件将启动攻击,攻击者将能够完全控制受害者的机器!



在LinkedIn上复现
LinkedIn也容易受到ImageGate攻击向量的攻击,只是稍有不同。


要执行相同的攻击,向量攻击者需要将他的概要映像更改为包含payload的恶意映像。



从代理处获取URL,并取消操作,这样图片就不会显示在他的个人资料中,但会存在于LinkedIn CDN服务器上。



该链接将看起来像这样:
https://media.licdn.com/media/AAEAAQAAAAAAAAiEAAAAJDk5YzJjMzAzLTU2ZjEtNDk2OC1iNzQ5LWZjYzcXXXXXXXXXXX.jpg
这一次,攻击者将采取不同的方法,并使用Anchor Tag创建一个链接到这个URL:
<p>LinkedIn POC<br>

<a href=”https://media.licdn.com/media/AAEAAQAAAAAAAAiEAAAAJDk5YzJjMzAzLTU2ZjEtNDk2OC1iNzQ5LWZjYzcXXXXXXXXXXX.jpg” download=”linkedin_password.hta”>Download this image1</a>

</p>
使用新的HTML5下载参数和文件名,有可能在客户端改变文件名,但这只在同源策略下起作用。这意味着Anchor Tag需要与下载的文件在同一个域中才能发挥作用。


问题来了:Anchor Tag将如何选择文件名?


要了解这一点,我们需要回到Webkit的核心源代码中,看看是如何选择文件名的:

如果Anchor Tag中有downloadAttr,建议的名称将是下载参数中的名称,只有当请求是由isSameOrigin发出的,否则不可能在客户端改变它。
然而,正如之前所见,文件名可以通过/filename.extension来控制;攻击者可以将其添加到Anchor Tag中。
<a href=”https://media.licdn.com/media/AAEAAQAAAAAAAAiEAAAAJDk5YzJjMzAzLTU2ZjEtNDk2OC1iNzQ5LWZjYzcXXXXXXXXXXX.jpg/linkedin_password.hta;aaaa” download=”will_not_be_selected_as_file_name.jpg“> press here

</a>
而文件名确实发生了变化! 可以使用同样的技术来控制客户端的文件名,即使它不符合WebKit源代码中提到的同一来源政策。
如果受害者下载并打开该文件,payload将被执行。


飘零未忍 发表于 2021-8-30 11:22:11

感谢翻译 学习了



光晕 发表于 2022-3-12 23:22:57

谢谢分享,PYG有你更精彩。
页: [1]
查看完整版本: [翻译]ImageGate:一种通过图像分发恶意软件的新方法