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

概述

本周,许多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,一经查实,立即删除!

相关文章

一种类的渐进式开发写法

// 主类,一般为窗口类 class MainClass { public:FuncClass1 *a;FuncClass2 *b; }// 实现某个功能的类 class FuncClass1 { public:FuncClass1(MainClass *) }// 实现某个功能的类 class FuncClass2 { public:FuncClass2(MainClass *) }每加一个大的功能&#xff0c…

【转】SQL中where, group by, having的用法和区别

group by,where,having 是数据库查询中最常用的几个关键字。在工作中,时常用到,那么,当一个查询中使用了where ,group by ,having及聚集函数时 ,执行顺序是怎么样的?为了回答这个问题,将这个三个关键字的用…

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

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

Win10上VMware的问题汇总

装xp很卡顿的问题 卸载360,重启电脑即可。 拖拽文件/文件夹到虚拟机直接卡住 使用15.1版本的VMware即可。 资源: 链接:https://pan.baidu.com/s/1dtr_cPwzprRTznpxj-OKTw 提取码:1wpj

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

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

python数据库实例_Python操作MySQL数据库9个实用实例

用python连接mysql的时候,需要用的安装版本,源码版本容易有错误提示。下边是打包了32与64版本。MySQL-python-1.2.3.win32-py2.7.exeMySQL-python-1.2.3.win-amd64-py2.7.exe实例 1、取得 MYSQL 的版本实例 2、创建一个表并且插入数据实例 3、 python 使…

Win10+VMware上安装macOS过程记录

2021年更新 主要参考文章:https://blog.csdn.net/qq_40143985/article/details/104011778 参考了其他一些文章,最后会出现…not successfully错误,安装失败。建议参考这篇文章。 FAQ 安装好macOS后,电脑运行有点卡的问题&#x…

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

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

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

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

VMware使用

重要功能 快照 快照就是保存当前虚拟机完整状态,相当于手动克隆一个虚拟机副本,也相当于是git中的一个提交点。在安装好一个新的虚拟机之后,一般都要创建一个快照,便于日后恢复。

【转】VS TFS源码分析软件PATFS使用方法一:配置团队项目

# 项目交付用正版,省下一台Iphone12 # # 31款JAVA开发必备控件和工具 # 相关链接: VS TFS源码分析软件PATFS使用方法二:设置新数据检查间隔VS TFS源码分析软件PATFS使用方法三:数据附件大小限制的自定义设置VS TFS源码分析软件P…

python selenium api_Selenium2+python自动化-查看selenium API

前面都是点点滴滴的介绍selenium的一些api使用方法,那么selenium的api到底有多少呢?本篇就叫大家如何去查看selenium api,不求人,无需伸手找人要,在自己电脑就有。pydoc是Python自带的模块,主要用于从pytho…

软件开发

1、先后台后前台,先功能后界面。 2、结构化,是指分层、分模块软件设计,简化复杂的软件系统。非结构化的,例如使用GOTO语句,会导致模块间高度耦合。

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文件传输端;服务器收到请求后在服务器端创建任务生成保存文件的路径同时通知文件传输端开始传文…