预估稿费:200RMB
投稿方式:发送邮件至linwei#360.cn,或登陆网页版在线投稿
传送门
【安全报告】McAfee Labs 威胁报告 2017.06 (上)
不识庐山真面目: 隐写术面对的隐蔽威胁— — Diwakar Dinkar
隐写术是一门有关秘密隐藏的艺术和科学。该术语来自希腊词语stegos, 意为"涵盖“,而grafia,则 意为"写"。因此即为"涵盖着写"。
隐写术的概念并不新,它已流传了数百年。约公元前440年,希腊统治者Histiaeus使用过早期版本的隐写术,他找来剃光头的奴隶、在其头皮上纹上消息,等待头发再长出,能隐藏住秘密的消息,然后派遣他去传递消息。接收方再给他剃光头,以获取消息。另一个希腊人–Demaratus将波斯人计划袭击斯巴达的消息写在涂有蜡片的木板上,然后再覆盖上一层新的蜡,以看似用空白木板来传达的信息。当然还有许多用隐形墨水书写,或隐藏在情书中的秘密消息的故事。(比如说,每个句子的第一个字符可以用来拼写一个秘密。)在第二次世界大战期间,因为在欧洲邮件都是被仔细检查的,因此隐写术也曾被囚犯和士兵所使用。
数字世界中的隐写术
隐写术也可以在数字世界中用来隐藏信息。为了数字化隐藏秘密的消息,我们需要一个包装器或容器作为宿主文件。包装器可以是图像、音频轨道,视频剪辑或文本文件。下面的图片展示如何通过最小的文件变化和对图像的细微变化,将文本消息隐藏在封面图像的文件之中。
隐写术、加密和水印
隐写术、加密和水印都能用于隐藏信息。通过使用加密算法,并将其作为密文进行发送来隐藏消息。隐写术用看似常规合法的消息来隐藏秘密消息。水印则略有不同:它使用签名来标识起源,并用相同的方式标记所有的副本。这三种方法是最常见的、隐藏信息的方式。
网络攻击中的隐写术
恶意软件通过不断演变来规避监视和检测。为了规避检测,一些恶意软件使用数字化的隐写术,来将其恶意的内容隐藏在看似无害的封面文件之内。但是这就提出了一个显而易见的问题:如果恶意软件必须对其隐藏的数据进行解密,难道反恶意软件不能产生用于检测的解密例程吗?
大多数反恶意软件的签名,都到配置文件中检测恶意内容。通过隐写术,配置文件被嵌入到掩盖文件之中。而且,由此产生的隐写文件可能会被解密到主要内存中,进而降低了检测的机会。最后,这些隐藏信息都很难会被检测出来, 例如配置文件、二进制更新或是隐式文件内的僵尸命令。因此不幸的是:在网络攻击中,隐写术的使用是容易实现,但难以检测到的。
首次在网络攻击中用到隐写术的案例,是著名的Duqu 恶意软件,它是在2011年被发现的。Duqu 的主要目的是从受害者的系统中收集信息。Duqu 加密并将数据嵌入到JPEG 文件中,然后将其作为一个图像文件发送到它的控制服务器上,从而提高可信度。2014 年,研究人员发现了宙斯银行木马的变种 (Zeus banking Trojan, ZeusVM),它使用图像隐写术来隐藏其发送给被感染系统的命令。那年的晚些时候,我们也了解到Lurk使用隐写术来扩散额外的恶意软件。在Lurk的案例中,一个白色的BMP图像文件中包含加密的URL,它一旦被解密,就去下载第二个载荷。最近,图像隐写术还被发现用于 Stegoloader(也被称为Gatak)和其他不同的恶意活动。
数字化隐写术的类型
数字化隐写术可分为文本、图像、音频和视频隐写术。文本隐写术是最早、也是最难以使用的。它使用写出的自然语言来隐藏秘密信息。文本隐写术的挑战性在于它缺少对文本文档的冗余。音频隐写术通过难以察觉的方式修改音频信号来传送隐藏信息;同时它会将秘密消息作为一种在人类听觉范围之外频率的噪声嵌入到音频文件之中。例如,spread spectrum隐写术一般通过无线电波来发送隐藏信息。同样地,在视频隐写术中,秘密信息被隐藏在视频流之中。
图像隐写术
图像是数字隐写术的最常见的使用方式。要理解基于图像的隐写术,我们需要了解数字图像的概念。图像通常是基于8位或24位颜色组合。每个像素通常由8位(1个字节)黑白图像或是24位(3个字节)彩色图像所组成。其用一个字节分别代表红、绿、蓝(通常称为RGB格式)。例如,RGB(218,150,149)意味着R=11011010, G=10010110, B=10010101。
我们可以将图像隐写术分为如下几个大的领域:
在空间域技术中,我们可以通过直接操纵封面图像的像素值,来隐藏的秘密数据。最重要的bit–based隐写术是一个最流行、且简单的空间域技术。
变换域技术也称为频域技术,因为它涉及到封面图像的频率或在变换中嵌入秘密数据。这种技术是一种在图像中隐藏数据的、更复杂的方法。
在失真技术中,信号失真将秘密数据进行嵌入。该技术需要解码器端的封面图像的信息,因为它检查原始封面图像和失真覆盖图像之间的差异以提取秘密消息。
掩盖和过滤是另一种常见的隐写技术。通过修改图像某些部分的亮度或流明,它在封面图像上隐藏或掩盖秘密数据。
攻击者是如何在图像中隐藏消息的呢?我们可以通过下面给出的空间域的示例来理解隐藏的过程:
图 1:右手边列表中的红色数值被转换所改变。MSB 和 LSB 分别代表"最高有效位"和"最低有效位"。
隐写术嵌入算法可用来修改图像,改变最低有效位,以将字母"A"嵌入彩色图像中的三个像素之中。更改最低有效位是不易被觉察的,一旦受害者的系统上收到了该图像文件,它们就可以被解密,并被恶意软件所利用。
我们来总结一下数字化隐写的过程:
隐藏的消息和封面文件,通过嵌入算法在封面文件内隐藏消息。由此产生的隐写文件,通过通信通道发送到目标系统。最后,通过应用在隐写文件上的提取算法,来提取隐藏的信息。
隐写术如何帮助利用工具包?
现在,隐写术被用在多个恶意攻击和利用工具包中。Sundown利用工具包最早出现在 2015 年。那时,它还不是很高级,似乎剽窃了Angler, Nuclear和RIG的大部分代码。在 2016 年 10 月,Sundown被演化,并开始被用到隐写术。
Sundown 利用工具包最近的变种
我们可以通过如下的感染链,来理解Sundown利用工具包最近的变种:
Sundown攻击发生在其受害者访问了被感染的网站,或是有恶意广告的网站之时。受害者自动被重定向到其利用工具包上。
下面的图像显示了发生在一月份的,受害者被重定向到Sundown登陆页面的网络流量。页面检索和下载了许多PNG图像。
图 2:在Sundown感染链中所用到的隐写术。
多数情况下,PNG文件都显示为一个白色的图片。
图 3:查看一个下载的恶意PNG文件。
即使是十六进制视图,也会显示为一个有正确的PNG头文件的PNG文件:
图 4:查看一个下载的恶意PNG文件的十六进制视图。
但是这个PNG文件的数据的确是被编码并隐藏了恶意代码。
Sundown工具的登陆页面包含着一个用于解锁PNG文件和提取恶意内容的解码例程。因此登陆页面被深度混淆过了。
图 5:用于解码 PNG 文件的模糊处理代码。
图 6: 混淆处理过的登陆页面代码。
该代码加载PNG文件,并有一个 URL去下载成功利用漏洞之后的载荷。解码的逻辑出现在脚本的末尾。
图 7:PNG 文件的解码逻辑。
在成功解码PNG之后, 我们可以看到了它的输出:
图 8:在解码PNG数据后,代码利用到漏洞CVE-2015-2419。
通过进一步对PNG图像的解码,和此漏洞攻击代码的分析显示,它包含了针对CVE-2015-2419,即在IE中JavaScript处理方面的漏洞攻击代码。此漏洞攻击代码也包含了成功利用此漏洞后执行的shellcode。
图 9:攻击CVE-2015-2419的shellcode。
此Sundown工具包还被发现能够分发来自IP地址93.190.143.82的,使用到隐写术的Cerber勒索软件。
有关本分析的SHA256散列为:
A5E991B647BC60A9323A214C71146F534D4195182C3C630B228 3BF1D3CEC8D6D
EFB5308AA78FFD53E799F7411CC92A564219C27B15D630B6BFA EC674DF8B5923
EEDBD8CDDBA5ED59D86207E37252406E2E1DB1762098A6293E A25762E555E75B
Cerber隐藏在.jpg 文件中
Cerber勒索软件族目前非常流行。最初的传播载体是在Microsoft 文档中嵌入的宏代码。
图 10:当受害人打开Cerber感染的文档时,它会投放一个恶意的.vbs文件,作用是使用一个可执行文件wscript.exe,并从恶意网站下载 mhtr.jpg。
图 11:该网络捕获显示了mhtr.jpg的请求。
图 12:下载的mhtr.jpg (SHA256 哈希值: 8f14257937bd6d45c2455592614331ebb 10078d8bfd9e6acf1b502ed609ef131) 表明它与Zen Coding有关。
图 13: mhtr.jpg的标头。
图 14: 单个XOR 字节的密钥被用来加密可执行文件,并使用隐写术嵌入到偏移量0x25c9。
偏移量0x25c9每个字节都使用XOR字节的密钥0x73进行加密。其解密过程为:
图 15: 解密后的文件。
加密的文件的有效载荷是一个Nullsoft安装程序文件 (SHA256 哈希值: 37397f8d8e4b3731749094d7b7cd2cf56cacb12dd69e0131f07dd78dff6f262b),它被放置在%APPDATA%文件夹中,并用于勒索活动。
Zbot、Vawtrak、Stegoloader和Stegoloader所用到的隐写术
在2015年的早期,Vawtrak开始使用隐写术来隐藏其图标中的设置。恶意软件使用tor2web服务,从TOR上托管服务器里下载favicon.ico文件。该favicon.ico图像显示在浏览器URL的左边。一般来说,每个网站都包含一个.ico图标,所以看到这类请求的安全产品通常不测试它们的有效性。接下来,恶意软件提取每个像素的最低有效位,并构造一个URL,用以下载其配置文件。
Zbot 恶意软件的一个变种还使用隐写术来隐藏其配置的数据。这种变体在受害者的系统上下载 JPEG。配置数据就隐藏在该图像中。之后,恶意软件从图像中提取配置数据,并进一步执行恶意操作。
Lurk使用隐写术来下载其他恶意软件到目标系统上。并非简单地下载和执行恶意的二进制文件,Lurk首先下载一个BMP图像。它使用最高有效位算法,在图像文件中嵌入加密的URLs。它从图像文件中提取嵌入的URLs,然后再下载额外的恶意软件。
Stegoloader 安装恶意软件到受害者的系统上,以窃取敏感信息。一旦成功执行,Stegoloader会从一个合法的网站下载一个PNG图像。它使用隐写术将其主要模块的代码嵌入到已下载PNG内。恶意软件通过应用隐写的提取算法,来检索隐藏的数据。
数据渗出和隐写术
数据渗出,也称为数据盗窃,是将敏感信息从一台计算机或服务器,以未经授权的方式进行转移。2016年,我们注意到了和Magento有关的攻击,它发生在一个在线的电子商务平台。此类袭击使用图像隐写术来隐藏支付卡的详细信息。
一般情况下,Magento 网站用核心内容管理系统文件–cc.php,来将处理信用卡信息。因此攻击者能够将恶意代码放在Magento网站的[magento_root] /app/ code/core/Mage/Payment/Model/Method/cc.php,这样明显位置。
图 16:一个合法的prepareSave ()方法。
通常,恶意软件将恶意代码插入到prepareSave ()方法里,当然它可能会出现在任何其他的方法里。在执行之后,恶意代码收集支付卡的详细信息,并隐藏在本地的图像文件中,比如说真正的产品图片里。一旦完成收集,攻击者只需下载图像文件(典型场景是电子商务网站),然后再提取隐藏的数据。
网络隐写术
网络隐写术是目前恶意软件使用到的最新型的数字隐写术。这种形式正在成上升趋势,因为攻击者可以通过网络发送无限数量的信息。一些恶意软件作者使用TCP/IP 协议标头里未使用到的字段来隐藏数据。
在某些情况下,恶意软件将其控制服务器的流量隐藏在简单的DNS和HTTP请求里。恶意软件从硬编码DNS服务器,即一台真实的控制服务器上向不存在的域发送请求。在内部DNS响应中通过使用简单Base64编码技术,这些命令会被嵌入并混淆。
我们分析了TeslaCrypt,它使用HTTP错误消息来隐藏其通信,并且通过Neutrino的利用工具包被下载。
图 17: 最初,TeslaCrypt 勒索的载荷通过带有"404"错误消息的、且经过Base64编码的消息与远程服务器通信。
该HTML页面的评论部分是被Base64编码的。我们发现“<!—c3VjY2Vzcw==—>,”对于响应的解码就是"成功"的。
然后,恶意软件用下面的编码数据来予以响应,如下图所示。
图 18-19: 恶意软件成功感染的响应。
图 20: 在答复中,恶意软件接收另一个带有下载链接的、Base64编码过的404错误消息。
已解码的字符串具有以下格式:
结论
隐写术将继续变得越来越流行。它是一种古老的技术,却又一次证明其有效性。因为隐写术可以经常绕过反恶意软件的检测,可见会有更多的威胁将使用到这种技术。
策略和流程
为了防止内部的威胁,加强使用的软件交付和分发机制。维护一个受信任的、企业应用程序的中央存储库,用户可以在那里下载到经过批准的软件。同时也禁止用户下载未知来源的软件。
在图像编辑软件的帮助下,寻找图像上细微的、颜色差异之类的隐写术标记。而且,要注意图像中大量重复的颜色,那可能就是隐写攻击的指示。
控制隐写软件的使用。应该禁止在任何公司的系统上存在隐写软件,除非有着具体所需的业务目的。只允许在受限的网段中部署此类软件。
只安装来自受信任供应商的、具有信任签名的应用程序。
配置反恶意软件以检测捆绑。反恶意软件应被配置为能够识别出可能包含有隐写图像的binder是否存在。
如果隐写攻击已成功,一个结合了适当网络分段的、虚拟化的架构可能有助于遏制其爆发,因为虚拟化系统会用到安全和可核查启动进程,以及连续的网络流量监测能够有助于隔离各种应用程序。
监控出站的流量。通过监测出站流量,来识别那些得逞的隐写攻击是否存在。
传送门