飘云阁安全论坛

 找回密码
 快速注册

QQ登录

只需一步,快速开始

查看: 563|回复: 1

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

[复制链接]
  • TA的每日心情
    开心
    2019-3-15 11:00
  • 签到天数: 262 天

    [LV.8]以坛为家I

    发表于 2021-6-18 16:46:05 | 显示全部楼层 |阅读模式
    本帖最后由 梦幻的彼岸 于 2021-6-18 17:02 编辑

    备注


    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)


    更新:12月20日


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

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

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

    模糊测试主要部分的代码片段:
    Screen-Shot-2016-12-22-at-9.51.56-AM-e1482874129323.png
    请注意,Graph API返回的图像比原始图像要小,因此,该图像将不包含带有有效载荷的完整图像数据。我们设法发现,如果我们从URL中删除s720x720,就有可能访问包含有效载荷的完整图像数据的原始图像。


    通过这样做,攻击者可以在图像中上传他的有效载荷到Facebook服务器。
    5-e1482874169305-1024x192.png
    一旦这个障碍被清除,攻击者将需要更进一步,以确保他的成功。为此,攻击者以分辨率高于962X541的图像形式上传恶意文件。这是必要的,因为它不需要向文件的链接添加令牌。如果添加了token,攻击将失败。一旦上传了图像,攻击者就会复制文件的链接,如下所示:
    1. https://scontent-lhr3-1.xx.fbcdn.net/t31.0-8/14086313_295633347470226_3946240742478472027_o.jpg
    复制代码

    下一步是改变内容类型,从单纯的.jpg到octet-steam。攻击者可以简单地通过在URL的末尾添加一个点来改变内容类型,如下图所示:



    6-e1482874188473-1024x210.png

    7-e1482874212603-1024x396.png
    攻击者添加了一个dl=1的参数,导致Facebook下载图片而不是展示图片。
    8-e1482874271665-1024x528.png
    为了了解添加dl=1时会发生什么,我们提供以下详细分析:
    5-1-e1482874294921-1024x270.png
    从上图中可以看到,Facebook服务器添加了一个Content-DispositionL附件头,但没有指定文件名。攻击者可以操纵Chrome CoreWebkit组件来更改文件名。在Chrome CoreWebkit组件中,当从服务器接收到数据时,函数PopulateURLResponse将被调用:
    9-e1482874321458-1024x240.jpg
    这个函数将管理包含文件名的所有响应组件。


    在这个函数中,下面几行调用GetSuggestedFileName
    10-e1482874347804.jpg




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




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




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


    其中调用DoExtractFileName

    14-e1482874418581.jpg

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

    16-e1482874458832.jpg
    利用这些信息,攻击者可以操纵URL,并在客户端改变文件名,如果他在URL中添加
    1. /filename.extension ;
    复制代码

    通过这样做,攻击者可以将恶意图像呈现为一个吸引人的文件,如facebook_password.exe,例如:

    17-e1482874491631.jpg
    1. https://scontent-lhr3-1.xx.fbcdn.net/t31.0-8/14102894_1137188709676282_2198558191558447569_o.jpg/facebook_password.exe;.?dl=1
    复制代码

    在这个阶段,该文件不会运行,因为文件头不是PE头。然而,攻击者可以将头文件改为既可以是图像也可以是可执行文件的格式,如(.hta)格式。这样一来,执行它的应用程序就决定了它的能力。

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

    19-e1482874535208.png
    而payload将在他的设备上执行。
    20-e1482874554694-1024x645.png


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


    攻击者将图像附加到messenger:
    22-e1482874582193.png




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


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


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


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

    26-e1482874720422-1024x543.png

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


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


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


    该链接将看起来像这样:
    [HTML] 纯文本查看 复制代码
    https://media.licdn.com/media/AAEAAQAAAAAAAAiEAAAAJDk5YzJjMzAzLTU2ZjEtNDk2OC1iNzQ5LWZjYzcXXXXXXXXXXX.jpg

    这一次,攻击者将采取不同的方法,并使用Anchor Tag创建一个链接到这个URL:
    [HTML] 纯文本查看 复制代码
    <p>LinkedIn POC<br>
    
    <a href=”[img]https://media.licdn.com/media/AAEAAQAAAAAAAAiEAAAAJDk5YzJjMzAzLTU2ZjEtNDk2OC1iNzQ5LWZjYzcXXXXXXXXXXX.jpg[/img]” download=”linkedin_password.hta”>Download this image1</a>
    
    </p>

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


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


    要了解这一点,我们需要回到Webkit的核心源代码中,看看是如何选择文件名的:
    29-e1482874793627.png
    如果Anchor Tag中有downloadAttr,建议的名称将是下载参数中的名称,只有当请求是由isSameOrigin发出的,否则不可能在客户端改变它。
    然而,正如之前所见,文件名可以通过/filename.extension来控制;攻击者可以将其添加到Anchor Tag中。
    [HTML] 纯文本查看 复制代码
    <a href=”[img]https://media.licdn.com/media/AAEAAQAAAAAAAAiEAAAAJDk5YzJjMzAzLTU2ZjEtNDk2OC1iNzQ5LWZjYzcXXXXXXXXXXX.jpg[/img]/linkedin_password.hta;aaaa” download=”will_not_be_selected_as_file_name.jpg“> press here
    
    </a>

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

  • TA的每日心情
    开心
    2021-8-30 10:46
  • 签到天数: 71 天

    [LV.6]常住居民II

    发表于 2021-8-30 11:22:11 | 显示全部楼层
    感谢翻译 学习了



    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 登录 | 快速注册

    本版积分规则

    快速回复 返回顶部 返回列表