什么方式可以通过影子系统传播恶意代码_将恶意代码隐藏在图像中:揭秘恶意软件使用的隐写术...

概述

本周,许多Facebook用户都会发现,一些用户发布图片上出现了原本应该隐藏的图像标签。由此可以证明,图像可以携带大量表面上不可见的数据。实际上,Facebook和Instagram所使用的图片元数据与恶意攻击者制作的特制图像相比显得非常简单,攻击者可以采用复杂的方法,制作出用于传递恶意代码或泄露用户数据的图像。在过去几年中,使用隐写技术和隐写式技巧的野外恶意软件活动有显著增加。攻击者利用这种技术,在图片和其他“载体”文件中嵌入隐藏的信息。在本篇文章中,我们将了解隐写术是什么,以及恶意攻击者是如何使用它的。

be318a8cbd8eca2257a8225dd1f98cc8.png

什么是隐写术?

隐写术(Steganography)是一种可以隐藏代码的技术,例如在图像文件中加入隐藏的标签信息。该技术也通常被称为“Stego”,是指在其他非秘密文本中(在“载体”消息内)隐藏消息或信息的做法。这也就意味着,恶意行为者可以使用此技术,在网站上仅仅托管图像,或仅通过电子邮件发送图像。

尽管隐藏数据的载体文件不一定必须是图像,但数字图像具有与其他文件一样的字节流,就使得它们成为隐藏秘密文本和其他数据的一个有效媒介。当用户在设备上打开图片时,很少有人会关注除了视觉呈现之外的内容,也就是隐藏在.jpg、.png、.bmp或其他图像文件格式内的内容。

隐写术是一种混淆的方法,它与密码学完全不同。密码学是编制编码或加密消息的实践。一段加密的消息,能够很明显地被看出它隐藏了一些内容,这些消息通常看起来没有任何逻辑,需要采用专业的方法来进行解码或解密。

5e89c5cee3d1e4c7805bf96ff428b1bd.png

另一方面,尽管隐写信息看起来像普通信息,但却巧妙地隐藏了一些意想不到的信息。我们可以采用熟悉的技术,使用简单的示例来说明隐写术背后的基本思想:

41f6b75c281686b6706956bb9b054fbf.png

秘密消息“HelLo, worlD”没有被编码,阅读者只需要知道以某种特定的方式来查看消息,即可读取其中的信息,我们无需向“载体”中添加任何额外数据来实现传播。尽管图像隐写术的实现过程具有较强的技术性,但它在一个更低的维度上来看,其原理是相同的。

在上面这个简单的例子中,是由人类的大脑解码在纯文本中隐藏的消息,但计算机程序读取的字节并不是自然语言,这样一来,对计算机来说就非常容易隐藏明显的信息。对于人类来说,也几乎不可能在没有任何工具帮助的情况下实现对其的解析。

事实上,考虑到图像文件的性质,它不仅可以用来隐藏文本字符串,还可以隐藏.jpg和其他图像格式的整个文件。实际上,根据所使用的技术,也可以实现在原始图像的文件大小不明显增长的情况下隐藏信息。

隐写术如何隐藏信息?

要了解图像隐写术的工作原理,首先我们先来看看在图像文件中隐藏文本的一些基本方法。

最简单的一个方法,就是将一个字符串附加到文件的末尾。这样做,既不会影响图像的正常显示,也不会改变图像的视觉外观。在这里,我们只需要将“hello world”附加到文件的末尾。通过Hexdump,我们看到了被添加的额外字节。

c3169e179c7ff84deb841fe66a220823.png

纯文本字符串可以很容易地被程序转储或读取。在这种情况下,我们只需使用xxd实用程序来逆向十六进制,并以纯文本的形式打印出来。

echo 68 65 6c 6c 6f 20 77 6f 72 6c 64 0a | xxd -r -p

973993245833fd15e5101353ebe54627.png

我们可以使用相同的思路,借助RAR压缩格式将完整的文件附加到图像之中。图像查看器只会读取并显示与图像相关的代码,会忽略压缩包中包含的其他任何文件。但是,恶意行为者或程序可以轻松提取附加的文件。

在此示例中,文件new.jpg在图像查看器应用程序中打开时会显示图片,但在使用WinRAR压缩实用程序进行查看时,我们可以看到解压缩后的.jpg文件中包含一个秘密的28字节文本文件msg.txt。

65e3dfb3779f1f3c5d867a6b06b03862.png

这些简单的技术,可能对于扩展用户数据很有帮助,但同时也具有缺点。首先,这些技术会增加文件的大小,其次,它们会更改文件的哈希值。此外,由于其不寻常的格式,可以很容易被安全软件检测到。

有一种更好的方式,是以二进制形式修改代码,并操纵每个像素的最低有效位(LSB)。彩色图像中的像素可以用3个字节表示,分别是R(红色)、G(绿色)、B(蓝色)。假设我们有三个字节,表示一种特定的颜色,例如橙色:

a87df311c005a1a5bd00926d945f032d.png

如果我们从左到右看,最后的四位,实际上对颜色的视觉外观没有太大的影响。

1 1 1 1 1 1 1 1

0 1 1 1 1 1 1 1

0 0 0 0 0 0 0 0

我们可以将最后四位修改成我们希望的任何值,最终会导致该像素看起来与原来的值几乎相同。接下来,我们来看看另一个完全不同的颜色,比如绿松石色:

9a5a49cf10928dd0217c0432b7d19f69.png

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

新生成的颜色与此前相比,没有明显的颜色变化。

55f25f29371c95a08dd5095b8e64127b.png

然而,如果我们构建一个程序,来分别读取和提取这四位,那么我们就可以有效地在橙色的代码中隐藏了绿松石的代码。两个像素的信息共同保存在一个像素之中,所以文件的大小也没有增加。由此证明,我们可以在不增加原始消息长度的情况下传输隐藏的消息,也无需操纵文件格式,因此对于依赖于文件扫描查找的简单检测方式来说是无效的。实际上,这些代码完全被混淆,直到攻击者重新组装。

简而言之,这意味着攻击者可以使用最后四位编码的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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/437135.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

无法嵌入互操作类型 请改用适用的接口_西门子COMOS软件开发定制学习7-嵌入谷歌浏览器内核...

首先需要声明的是,本篇并非COMOS实用案例,只是希望借此让大家了解,如何使用微软的WPF和C#语言开发COMOS插件。首先看下效果图功能说明:拖拽COMOS设备至定制的浏览器,自动根据设备的名称和其制造商参数值,搜…

【转】C#与C++的发展历程第一 - 由C#3.0起

C#5.0作为第五个C#的重要版本,将异步编程的易用度推向一个新的高峰。通过新增的async和await关键字,几乎可以使用同编写同步代码一样的方式来编写异步代码。 本文将重点介绍下新版C#的异步特性以及部分其他方面的改进。同时也将介绍WinRT程序一些异步编…

【转】5.2高性能IO模型浅析

服务器端编程经常需要构造高性能的IO模型,常见的IO模型有四种: (1)同步阻塞IO(Blocking IO):即传统的IO模型。 (2)同步非阻塞IO(Non-blocking IO&#xff0…

vba 修改文本文档 指定行_VBA程序报错,用调试三法宝,bug不存在的

如果把VBA比作一门刀法,那么经过前面内容的操练,大家已经掌握了很多实用的招式。如果我们在刀法招式的基础之上,再掌握更多的“磨刀”心法,那么我们的刀用起来才会又好又快。所以今天主要和大家分享——VBA“磨刀”心法之程序调试…

mqtt协议详解_IoT物联网设备上云技术方案详解

随着传感器和通信技术的不断发展,物联网行业方兴未艾,业务链路涉及数据采集,通信连接,数据存储,数据可视化,洞察,行动决策。但,在实施过程中,碎片化的设备端通信连接难题…

【转】基于WebSocketSharp 的IM 简单实现

websocket-sharp 是一个websocket的C#实现,支持.net 3.5及以上来开发服务端或者客户端。本文主要介绍用websocket-sharp来做服务端、JavaScript做客户端来实现一个简单的IM。 WebSocketBehavior WebSocketBehavior是核心对象,他包含了OnOpen,OnMessage…

【转】极限编程一览

极限编程(XP)起源始于1990年代。当时肯特布莱克(Kent Black)在戴姆勒克莱斯勒(DaimlerChrysler)处理项目时,试图寻找一种更好的软件开发方法。他的创立新方法后来被称为极限编程方法论&#xff…

mysql 关联更新_跳出初学MySQL知识的原理整理(一)

一、基础架构MySQL 可以分为 Server 层和存储引擎层两部分。Server 层包括连接器、查询缓存、分析器、优化器、执行器等,所有跨存储引擎的功能都在这一层实现,比如存储过程、触发器、视图等。而存储引擎层负责数据的存储和提取。支持 InnoDB、MyISAM等多…

【转】TcpListener和tcpclient使用

前段时间公司项目中遇着需要做文件的远程传输,场景是用户通过网页选择一些文件,然后提交请求到服务器,同时把请求标识传递给本机的TCP文件传输端;服务器收到请求后在服务器端创建任务生成保存文件的路径同时通知文件传输端开始传文…

sleep期间读取所有_ceph部分数据所有副本先后故障的抢救

半天河网易游戏高级运维工程师,主要负责云存储的运维;一个既希望跟业务聊又喜欢能够默默在后面忙活的普通运维人。背景故障现场故障恢复故障恢复分析第一种方式:物理磁盘对拷第二种方式:服务启动时跳过故障扇区来避免异常退出解决…

【转】有限状态机用法教程

如博文无法正常显示,请访问原文地址: https://blog.csdn.net/ChinarCSDN/article/details/82263126 有限状态机用法教程 文章目录 有限状态机用法教程 [toc]1Finite-state machine —— 有限状态机2Foreword —— 前言()3Example —— 示例4Moltimode —…

通用usb集线器驱动_多口充电、高速传输——ORICO晶锐系列7口集线器测评

随着笔电越来越薄,机身接口数量越来越少,U盘、存储卡、移动硬盘、鼠标、蓝牙适配器等明显感觉无处可插,因此USB集线器就成为笔电的最佳拍档。近期,ORICO(奥睿科)推出了一款晶锐系列7口集线器产品,它集成了7个USB3.0接口…

【转】状态机思路在程序设计中的应用

状态机思路在单片机程序设计中的应用 状态机的概念 状态机是软件编程中的一个重要概念。比这个概念更重要的是对它的灵活应用。在一个思路清晰而且高效的程序中,必然有状态机的身影浮现。 比如说一个按键命令解析程序,就可以被看做状态机:本…

【转】超详细的UML状态图符号,初学者也能轻松看懂状态图

UML状态图,用于显示状态机,即描述一个对象所处的可能状态以及状态之间的转移。用状态图建模可以帮助开发人员分析复杂对象的各种状态的转换,以及对象何时执行怎样的动作。那状态图又是怎样表示这些信息的呢?要想看明白其中的奥妙&…

舒尔特注意力训练表格_舒尔特注意力训练,舒尔特方格练习入口

孩子的注意力是否集中,直接影响孩子的上课效率和作业正确率,最终影响学习成绩。道理大家都懂,关键是如何保证注意力的集中。接下来,我给大家推荐一个简单方便在家就能完成的训练方法,把它比作小游戏也不为过。那就是舒…

nginx文件系统大小_Nginx 了解一下?

这篇文章主要简单的介绍下 Nginx 的相关知识,主要包括以下几部分内容:Nginx 适用于哪些场景?为什么会出现 Nginx?Nginx 优点Nginx 的编译与配置Nginx 适用于哪些场景?如图所示,一个请求会先经过 Nginx 到达…

存储过程排版工具_安利一款比Evernote更为实用的云笔记工具,不容错过

作为一个爱分享的自媒体人,出于工作和兴趣前前后后接触到的云笔记工具很多,例如:有道云笔记、为知笔记、语雀、印象笔记、oneNote...在笔记工具的使用上还是略有点点心得,今天给大家分享一款实用的云笔记工具——Baklib&#xff0…

【转】有限状态机(FSM)学习总结C#

FSM(Finite State Machine有限状态机)可以理解成是对行为逻辑的抽象,就好象人在生活中会做出各种行为,例如吃饭、睡觉等,这些所有我们都看作是“行为”的分支,由大脑决定每种行为具体是什么实施。在整个FSM…

【转】[完全免费] 在线UML Sequence Diagram 时序图工具 - 教程第3部分

时序图教程 甲序列图描述了一组对象之间的相互作用参与协作(或情况),布置成按时间顺序; 它通过它们的“生命线”和它们发送给对方的消息来显示参与交互的对象。 什么是UML中的序列图? UML序列图是详细说明如何执行操作的交互图。…

【转】[完全免费] 在线UML Class Diagram 类图工具 - 教程第1部分

在线Visual Paradigm - UML编辑器 使用在线UML编辑器轻松绘制UML图,其中包含功能强大的UML编辑工具,即时UML语法检查和整洁的用户界面。Visual Paradigm在线UML 图,如类,用例,序列,活动,部署&a…