本周,许多Facebook用户都会发现,一些用户发布图片上出现了本来应该隐藏的图像标签。由此能够证实,图像能够携带大量表面上不可见的数据。实际上,Facebook和Instagram所使用的图片元数据与恶意攻击者制做的特制图像相比显得很是简单,攻击者能够采用复杂的方法,制做出用于传递恶意代码或泄露用户数据的图像。在过去几年中,使用隐写技术和隐写式技巧的野外恶意软件活动有显著增长。攻击者利用这种技术,在图片和其余“载体”文件中嵌入隐藏的信息。在本篇文章中,咱们将了解隐写术是什么,以及恶意攻击者是如何使用它的。html
隐写术(Steganography)是一种能够隐藏代码的技术,例如在图像文件中加入隐藏的标签信息。该技术也一般被称为“Stego”,是指在其余非秘密文本中(在“载体”消息内)隐藏消息或信息的作法。这也就意味着,恶意行为者可使用此技术,在网站上仅仅托管图像,或仅经过电子邮件发送图像。安全
尽管隐藏数据的载体文件不必定必须是图像,但数字图像具备与其余文件同样的字节流,就使得它们成为隐藏秘密文本和其余数据的一个有效媒介。当用户在设备上打开图片时,不多有人会关注除了视觉呈现以外的内容,也就是隐藏在.jpg、.png、.bmp或其余图像文件格式内的内容。服务器
隐写术是一种混淆的方法,它与密码学彻底不一样。密码学是编制编码或加密消息的实践。一段加密的消息,可以很明显地被看出它隐藏了一些内容,这些消息一般看起来没有任何逻辑,须要采用专业的方法来进行解码或解密。网络
另外一方面,尽管隐写信息看起来像普通讯息,但却巧妙地隐藏了一些意想不到的信息。咱们能够采用熟悉的技术,使用简单的示例来讲明隐写术背后的基本思想:ide
秘密消息“HelLo, worlD”没有被编码,阅读者只须要知道以某种特定的方式来查看消息,便可读取其中的信息,咱们无需向“载体”中添加任何额外数据来实现传播。尽管图像隐写术的实现过程具备较强的技术性,但它在一个更低的维度上来看,其原理是相同的。工具
在上面这个简单的例子中,是由人类的大脑解码在纯文本中隐藏的消息,但计算机程序读取的字节并非天然语言,这样一来,对计算机来讲就很是容易隐藏明显的信息。对于人类来讲,也几乎不可能在没有任何工具帮助的状况下实现对其的解析。网站
事实上,考虑到图像文件的性质,它不只能够用来隐藏文本字符串,还能够隐藏.jpg和其余图像格式的整个文件。实际上,根据所使用的技术,也能够实如今原始图像的文件大小不明显增加的状况下隐藏信息。编码
要了解图像隐写术的工做原理,首先咱们先来看看在图像文件中隐藏文本的一些基本方法。加密
最简单的一个方法,就是将一个字符串附加到文件的末尾。这样作,既不会影响图像的正常显示,也不会改变图像的视觉外观。在这里,咱们只须要将“hello world”附加到文件的末尾。经过Hexdump,咱们看到了被添加的额外字节。spa
纯文本字符串能够很容易地被程序转储或读取。在这种状况下,咱们只需使用xxd实用程序来逆向十六进制,并以纯文本的形式打印出来。
echo 68 65 6c 6c 6f 20 77 6f 72 6c 64 0a | xxd -r -p
咱们可使用相同的思路,借助RAR压缩格式将完整的文件附加到图像之中。图像查看器只会读取并显示与图像相关的代码,会忽略压缩包中包含的其余任何文件。可是,恶意行为者或程序能够轻松提取附加的文件。
在此示例中,文件new.jpg在图像查看器应用程序中打开时会显示图片,但在使用WinRAR压缩实用程序进行查看时,咱们能够看到解压缩后的.jpg文件中包含一个秘密的28字节文本文件msg.txt。
这些简单的技术,可能对于扩展用户数据颇有帮助,但同时也具备缺点。首先,这些技术会增长文件的大小,其次,它们会更改文件的哈希值。此外,因为其不寻常的格式,能够很容易被安全软件检测到。
有一种更好的方式,是以二进制形式修改代码,并操纵每一个像素的最低有效位(LSB)。彩色图像中的像素能够用3个字节表示,分别是R(红色)、G(绿色)、B(蓝色)。假设咱们有三个字节,表示一种特定的颜色,例如橙色:
若是咱们从左到右看,最后的四位,实际上对颜色的视觉外观没有太大的影响。
1 1 1 1 1 1 1 1
0 1 1 1 1 1 1 1
0 0 0 0 0 0 0 0
咱们能够将最后四位修改为咱们但愿的任何值,最终会致使该像素看起来与原来的值几乎相同。接下来,咱们来看看另外一个彻底不一样的颜色,好比绿松石色:
1 0 0 1 1 0 0 1
1 1 0 0 1 1 0 0
1 1 0 0 1 1 0 0
咱们使用绿松石代码的前四位,来替换橙色代码的后四位,从而生成复合的RGB:
1 1 1 1 1 0 0 1
0 1 1 1 1 1 0 0
0 0 0 0 1 1 0 0
新生成的颜色与此前相比,没有明显的颜色变化。
然而,若是咱们构建一个程序,来分别读取和提取这四位,那么咱们就能够有效地在橙色的代码中隐藏了绿松石的代码。两个像素的信息共同保存在一个像素之中,因此文件的大小也没有增长。由此证实,咱们能够在不增长原始消息长度的状况下传输隐藏的消息,也无需操纵文件格式,所以对于依赖于文件扫描查找的简单检测方式来讲是无效的。实际上,这些代码彻底被混淆,直到攻击者从新组装。
简而言之,这意味着攻击者可使用最后四位编码的RGB数据来写入其余数据,而不会显著下降图像的视觉呈现效果,也不会增长文件的大小。随后,隐藏的数据能够被另外一个程序读取,并用于重建恶意文件或泄露用户数据。
LSB操纵只是众多隐写技术中的一种。实际上,有许多其余方法能够操纵图像和其余类型的文件,以实现隐藏密码的目的。攻击者甚至还能够在网络协议中使用隐写术,即所谓的“网络隐写术”,以携带隐藏的消息。在这些状况下,其原则保持不变,经过在可见载体上搭载不可见的信息,从而将特定内容隐藏在人们的视线以外。
目前在野外发现已经使用隐写术的恶意软件
目前,已经在野外发现存在一些针对Windows和macOS平台的恶意软件使用了隐写术。咱们已经发现,攻击者使用隐写术来隐藏部分勒索软件的攻击代码,提供恶意JavaScript,甚至承载挖矿工具。下面展现了使用隐写术的主要恶意软件。
AdGhonlas:该恶意软件在图像、文本、HTML文件中隐藏了恶意JavaScript。
Cerber:在图像文件中嵌入恶意代码。
DNSChanger:使用PNG LSB隐藏恶意软件的AES加密密钥。
Stegano:在PNG格式的横幅广告中包含恶意代码。
Stegoloadr(又名Lurk):该恶意软件使用隐写术和密码术,隐藏加密的URL,从而提供后期阶段的Payload。
Sundown:使用合法PNG文件来隐藏漏洞利用代码或泄露用户数据。
SyncCrypt:勒索软件,将部分核心代码隐藏在图像文件中。
TeslaCrypt:在HTTP 404错误页面中,存在HTML注释标记,其中包含C2服务器命令。
Vawtrak(又名Neverquest):在图标的LSB中隐藏用于下载恶意Payload的URL。
VeryMal:该恶意软件针对macOS用户,将恶意JavaScript嵌入到合法文件中。
Zbot:将数据附加到包含隐藏数据的JPEG文件的末尾。
ZeroT:使用隐写技术,将恶意软件隐藏到Britney Spears的照片之中。
如何防范恶意图像
将恶意代码隐藏在图像或其余载体中,只是威胁行为者试图绕过反病毒安全产品时所利用的众多技术之一。不管使用哪一种技术,恶意软件做者总有着相同的目标:在终端上保证持久性、扫描遍历网络、收集并泄露用户数据。为了实现这些目标,恶意软件做者留下了能够经过行为AI解决方案检测到的足迹。
将文件、图片、消息甚至是视频隐藏在另外一个文件中,多是恶意软件做者用于模糊其Payload或者泄露用户数据的一种有效方式。考虑到社交媒体网站上图像的覆盖程度之高,以及大多数广告都是以图像形式展示,咱们预计将来恶意软件使用隐写术的趋势将会保持。考虑到最终用户难以鉴别出精心构造的的恶意图像文件,对于企业来讲,使用行为AI软件来检测恶意代码的执行就显得相当重要,不管该代码是来自图像仍是来自其余文件,甚至还包括无文件恶意软件。所以,咱们建议企业用户能够考虑选用自动化终端防御产品来防范此类风险。
本文翻译自: https://www.sentinelone.com/blog/hiding-code-inside-images-malware-steganography/如若转载,请注明原文地址: https://www.4hou.com/technology/19065.html 更多内容请关注“嘶吼专业版”——Pro4hou