首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >基于隐写术来防止敏感数据被盗用实验

基于隐写术来防止敏感数据被盗用实验

作者头像
XPcode7
发布2025-10-23 14:25:10
发布2025-10-23 14:25:10
1260
举报

基于隐写术来防止敏感数据被盗用的实验

一、隐写术的定义

隐写术是一种将秘密信息隐藏在(甚至是在)原本平凡的、非秘密的文件或其他媒体上的手段,以避免被发现。它来自希腊语的“steganos”,意思是“覆盖”或“隐藏”,以及“graph”,意思是“书写”,所以也被称为“隐藏的写作”。

二、常见的隐写术类型及技术
  • 文本隐写术
    • 利用空白处:在文本的空白间隔,如字与字、行与行之间的空白区域,通过特定的编码规则来隐藏信息。例如,每隔固定数量的空白代表一个特定字符。
    • 利用字符特征:使用大写字母、小写字母的特定组合,或者标点符号、制表符等特殊字符来隐藏信息。比如,用特定的标点符号组合表示一个二进制数,进而对应一个特定字符。
  • 音频隐写术
    • 回声隐藏:在音频文件中添加微小的回声,回声的延迟时间、强度等参数可以用来编码秘密信息。人类听觉系统对于这种微小的回声变化不太敏感,但通过特定的算法可以提取出隐藏的信息。
    • 奇偶校验编码:根据音频数据的奇偶性来隐藏信息。例如,将秘密信息转换为二进制比特流,然后根据音频数据的奇偶性来决定是否修改某个音频样本的值,使修改后的音频数据的奇偶性与秘密信息比特相对应。
    • LSB 编码:与图像隐写术中的 LSB 编码类似,利用音频数据的最低有效位来嵌入秘密信息。音频数据通常由一系列采样值组成,每个采样值可以用一定位数的二进制数表示,修改最低有效位对音频的听觉效果影响较小。
  • 视频隐写术
    • 利用图像:视频是由一系列连续的图像帧组成,可以在每一帧的图像中使用图像隐写术的方法来隐藏信息,如修改像素值等。
    • 利用帧率:通过控制视频的帧率,例如在特定的帧率下显示特定的图像帧序列来传递秘密信息,正常播放时可能察觉不到这些隐藏的信息,但通过特定的软件分析可以提取出来。
    • 利用视频编码格式:视频文件有不同的编码格式,如 H.264、MP4、MPEG 和 AVI 等,可以利用这些编码格式的特点,在视频文件的头部信息、数据块结构等地方嵌入秘密信息。
  • 图像隐写术
    • 像素强度:通过微调图像像素的亮度或颜色值来隐藏信息。例如,将秘密信息转换为二进制比特流,然后逐个比特地修改图像像素的最低有效位,使像素值的变化非常微小,人眼难以察觉,但可以通过特定的算法提取出隐藏信息。
    • 基于调色板的技术:对于基于调色板的图像格式(如 GIF 文件),黑客可以修改调色板中的颜色值或者颜色的排列顺序来隐藏信息,使得网络安全威胁猎人或道德黑客难以发现攻击。
  • 网络隐写术
    • 利用网络协议:使用 TCP、UDP 和 IP 等网络协议作为载体,通过修改协议头部的某些字段、数据包的时间间隔、数据包的顺序等方式来隐藏信息。例如,在 TCP 协议中,可以通过微调数据包的确认号、窗口大小等字段来嵌入秘密信息。
    • 利用网络流量特征:分析网络流量的模式、流量的大小、数据包的发送时间等特征,将秘密信息编码在这些特征中。不过这种方式相对复杂,且容易受到网络环境变化的影响。
三、隐写术的应用场景
  • 合法应用场景
    • 情报机构:用于在不引起敌方注意的情况下传递秘密情报,将重要信息隐藏在看似普通的文件或媒体中,通过公开的网络渠道或其他方式进行传输,降低被敌方发现和拦截的风险。
    • 军事领域:军队可以利用隐写术来隐藏军事行动计划、兵力部署等敏感信息,保障军事行动的保密性和安全性。例如,将作战指令隐藏在一张普通的军事地图图像中。
    • 商业领域:企业可以使用隐写术来保护商业机密和知识产权,如将重要的商业合同、产品设计图纸等敏感信息隐藏在日常的办公文档或图像中,防止竞争对手窃取。
    • 数字版权保护:通过将数字水印(一种特殊的隐写术形式)嵌入到图像、音频、视频等数字媒体文件中,来标识作品的版权信息,追踪盗版行为,保护创作者的权益。
  • 非法应用场景
    • 网络犯罪:犯罪黑客利用隐写术在其他无害的文件中隐藏恶意软件,例如将勒索软件的脚本嵌入到 word 和 excel 文档中,当用户打开这些文档时,就会激活隐藏的恶意脚本,导致用户的设备被攻击、数据被加密勒索。
    • 间谍活动:间谍可以利用隐写术将窃取的机密信息隐藏在普通的文件或媒体中,然后通过网络传输或其他方式将信息传递给幕后组织,而不被发现。
    • 恐怖组织通信:恐怖组织成员可能使用隐写术来进行秘密通信,策划恐怖活动,隐藏行动计划和成员名单等信息,以躲避安全机构的监测和打击。
四、隐写术与密码学的对比
  • 隐写术:将敏感信息隐藏在一个原本无害的文件中,使得潜在的黑客首先不知道有什么秘密和诱人的东西。其重点在于隐藏信息的存在,而不是对信息进行加密保护。例如,将一段秘密文字隐藏在一张普通的风景图片中,从表面上看这只是一张正常的图片,没有人会意识到其中还隐藏着其他信息。
  • 密码学:使用加密算法对信息进行加密,将明文转换为密文,使得没有正确密钥的人无法理解信息的内容。当有人使用密码学时,加密的数据本身就会引起入侵者的注意,因为他们知道这里有需要解密的秘密信息。例如,使用对称加密算法或非对称加密算法对一段文本进行加密,加密后的文本看起来是一堆无意义的字符组合。
五、使用隐写术来防止敏感数据被盗用案例实现

入实验机Windows 10,打开位于桌面上的文件夹“隐写术Images”进入“图种”路径中,找到名称为test.jpg的图片文件。使用7z工具打开该文件,右键打开方式选择“7-Zip File Manager”,将获得以下的内容,里面包含了一个可供下载的种子文件

在这里插入图片描述
在这里插入图片描述

发现隐藏的文件通过zip软件直接可以读取出来,值得注意的是,虽然这种方法简单快速,但如果同时将多个文件进行隐写可能会失败。

通过实验来看一下该文件的制作方法和原理:首先我们需要制作一个1.zip的压缩文件,然后将需要隐藏的文件添加到压缩包中,路径位于桌面下的隐写术Images\图种\source文件夹中

在这里插入图片描述
在这里插入图片描述

这里我们需要一张jpg的图片,使用命令copy /b [文件1]+[文件2] 目标文件,就可以得到一张新的图种test01.jpg

代码语言:javascript
复制
copy /b [文件1]+[文件2] 目标文件
在这里插入图片描述
在这里插入图片描述

经计算源文件的大小770,256字节加上175,285字节刚好等于945,541字节,证实了它利用了copy命令,将两个文件以二进制方式连接起来,生成test01.jpg的新文件。 通过桌面上的工具WinHex对test01.jpg文件进行查看,直接将test01.jpg文件拖入WinHex的操作面板中进行查看

在这里插入图片描述
在这里插入图片描述

通过WinHex可以看到正常的JPG文件中FF D9十六进制码代表的是结束符,而图片查看器会忽略JPG结束符之后的内容,所以我们通过copy命令附加的zip文件不会影响图片的正常显示,并且可以正常读取。 总结一下:这种类型的隐写也是比较容易被发现的,如果发现是JPG图片的话,观察文件结束符之后的内容,即可识别是否有附加的内容,当我们用WinHex打开文件,发现文件最后数据块不是FF D9 JPG文件的结束标志,而是zip文件的结束标志,就可以直接将其修改后缀,然后提取文件:

在这里插入图片描述
在这里插入图片描述

还有一种情况是比较特殊的,如果遇到有多个文件隐藏在图片中的话,则需要通过kali上的一个工具binwalk来进行查看。以sample.png为例,先用kali下的binwalk命令来打开png文件 在进行实验之前需要我们预先将”隐写术images\双图\sample.png”拷贝到kali下,可以使用WinSCP进行拷贝,要求kali开启ssh服务,使用命令service ssh start即可打开ssh服务,使用netstat命令查看是否监听22号端口

代码语言:javascript
复制
service ssh start
netstat -anpt |grep ssh
在这里插入图片描述
在这里插入图片描述

然后回到Windows下,打开桌面上的WinSCP,输入kali的ip地址,端口号22,用户名root,密码toor,配置完成后点击登录即可

在这里插入图片描述
在这里插入图片描述

出现如下警告,选择是将该主机密钥添加到缓存中

在这里插入图片描述
在这里插入图片描述

在会话中选中要上传的文件sample.png,然后点击上传按钮,即可将文件上传至kali的/root目录下

在这里插入图片描述
在这里插入图片描述

接下来,在kali的命令终端中使用命令binwalk sample.png对图片进行自动分析

代码语言:javascript
复制
binwalk sample.png
在这里插入图片描述
在这里插入图片描述

软件的显示了三个信息DECIMAL(十进制)HEXADECIMAL(十六进制)DESCRIPTION(描述),从上面的内容显然可以看出这个PNG文件还隐藏着另一个PNG文件,从1851832块偏移开始就是另一张PNG图片。 使用命令dd if=final.png of=final-1.png sikp=1922524 bs=1

代码语言:javascript
复制
dd if=final.png of=final-1.png sikp=1922524 bs=1

命令输出解释 这里if为制定输入文件,of为指定输出文件,skip为指定从输入文件开头跳过1851832个块后开始复制,bs设置每次读写块的大小为1字节。

在这里插入图片描述
在这里插入图片描述

然后使用命令eog分别打开两张图片

代码语言:javascript
复制
eog sample.png
eog sample-1.png
在这里插入图片描述
在这里插入图片描述

至此图片分离成功。分离文件的方法目前总结出来的有三种:dd分离法(在Linux/Unix下使用dd命令分离文件)、stegsolve工具自动分离法WinHex编辑器分析法针对一些简单的图片隐写可以通过某一种方法即可实现文件的分离,但也不乏部分题目会设置一些障碍,以增加分离难度。如本案例中的图片文件final.png,需要我们综合的使用三种方法来将源文件进行分离,接下来我们复现它的分离过程。

首先,使用工具binwalk来确定final.png图片的数据偏移量

在这里插入图片描述
在这里插入图片描述

根据binwalk分析的结果,发现该文件中有两个PNG图片,并且我们可以确定它的偏移值是0x1D55DC,接下来切换到Windows使用WinHex工具来分离这两张图片。 使用WinHex打开final.png后,点击左侧的offset偏移量的任意位置,即可将十进制表示的偏移量转换为十六进制显示,然后在标题栏中点击右箭头(转到偏移量),定位到001D55D0的位置,点击确定

在这里插入图片描述
在这里插入图片描述

来到001D55D0的位置后,红框框住的部分为上一个文件的尾部,鼠标右键点击从右往左数第四个块的位置即PNG文件头的位置89 50 4E 47 0D 0A 1A 0A,然后选择“选块起始位置”或使用快捷键Alt+1

在这里插入图片描述
在这里插入图片描述

再然后拖到尾部的位置右键选择最后一个块的位置选择“块尾部”或使用快捷键Alt+2

在这里插入图片描述
在这里插入图片描述

最后剪切选中的部分到新的文件中保存为final-end.png,将剩下的部分保存为final-start.png

在这里插入图片描述
在这里插入图片描述

打开位于桌面的实验工具——隐写术工具——DiffImg——diffimg.exe,加载final-start.png为原图,加载final-end.png为比较图

在这里插入图片描述
在这里插入图片描述

在DiffImg中进行分析

在这里插入图片描述
在这里插入图片描述

经过观察发现,左下角的图像中有异常的像素条,当发现两张PNG图片外观、大小、像素都基本相同时,可以考虑对两个图片进行结合分析,即将两个文件的像素RGB值进行XOR、ADD、SUB等操作,看能否得到有用的信息。StegSolve可以方便的进行这些操作。

打开位于桌面的实验工具——隐写术工具——Stegsolve,接下来我们使用Stegsolve来对图片进行分析。打开StegSolve,选择“file”->”open”打开一张图片文件,然后选择“analyse”->”image combine”选择另一张图片,默认的XOR操作就可以看到隐藏的信息。(注意打开顺序final-end.png在前,final-start.png在后)

Stegsolve这个工具大家可以去网上进行下载,是开源免费的!基于Java编写的

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

点击窗口下方的箭头,可以看到不同combine方式下的结果。将两张图片进行combine后,进行异或对比(XOR),如果检测的结果为全黑则代表两张图每个字节都一样(因为异或运算,00则为黑色),但是我们检测到左下角细微的差异,点击Save将XOR异或相减的结果保存为solved.bmp。

在这里插入图片描述
在这里插入图片描述

将图片solved.bmp放大后发现图片右下角倒数第二行有红色像素条。通过异或对比发现一条红色像素条

在这里插入图片描述
在这里插入图片描述

MP文件存储数据时,图像的扫描方式是按从左到右、从下到上的顺序。可以确定隐藏信息就隐藏在final-end.png的左下角的RGB像素通道的红色通道中,接下来就需要确定红色像素条的偏移处。 使用工具WinHex对上图异或的sloved.bmp图片进行查看,找出非黑色的偏移处,即非00处

在这里插入图片描述
在这里插入图片描述

很容易在0x1110出发现异常的隐藏信息,该异常信息的偏移地址从0x1118开始至0x133D结束。 由于PNG格式的图片是经过压缩后的,对分析隐藏信息的偏移进行分析带来了一定的阻碍,此时我们便可以利用BMP格式的优势——存储信息无压缩,方便寻找偏移,具体操作:使用画图软件打开final-end.png,然后将其另存为final-end.bmp

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

接下使用工具WinHex打开final-end.bmp

在这里插入图片描述
在这里插入图片描述

通过左边的16进制地址定位栏,偏移地址0x1118至0x133D进行标记

在这里插入图片描述
在这里插入图片描述

将以上选中的部分,另存为diff_dump.bin

在这里插入图片描述
在这里插入图片描述

再仔细观察发现RGB在每个R通道里都是00/01,信息隐藏在R通道中,其他通道都是图片的正常像数信息,接下来我们需要想办法对其进行过滤过滤。(每3个Hex的第一个hex的值都是00/01)使用编辑器editplus打开diff_dump.bin选择编辑栏中的Hex按钮,以16进制查看,如下:

在这里插入图片描述
在这里插入图片描述

复制16进制部分的内容至新的文档中,然后将其另存为Sources.txt

在这里插入图片描述
在这里插入图片描述

但是由于信息是隐藏在Red通道中,那么其他的通道都是图片正常的像素信息,过滤掉即可,只保留其中的” 00/01”

在这里插入图片描述
在这里插入图片描述

使用命令python BinaryExtractTool.py对Sources.txt进行00 01字符串的提取

代码语言:javascript
复制
python BinaryExtractTool.py > 1.txt
在这里插入图片描述
在这里插入图片描述

提取之后发现仍有换行符号和空格,此时我们可以借助Editplus的替换功能将其过滤掉,分别使用过滤公式替换换行符和空格,注意使用替换功能时勾上使用正则表达式

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

得到下面一组数据>

在这里插入图片描述
在这里插入图片描述

再仔细观察,想到用常见的0101处理的几种方法:二维码——发现不是某数的平方、binary编码——发现不可见字符都无法解决,再回看RGB通道中的R通道信息,发现全是00或者01,按照出题人的思路,可能是将一串binary写入R通道中的时候,0变成了00, 1变成了01思考一下是否可以通过逆向的方式来还原被隐藏的字符——最简单的方法就是将00替换成0、01替换成1。 使用editplus的替换功能,替换00为0,01为1即可,最终得到这样一组数据

在这里插入图片描述
在这里插入图片描述

在得到这组数后,长度是184,发现是8的倍数,需要将它转换成ascii码即可。

然后打开桌面的实验工具——隐写术工具——JPK_406.jar进制转换的小工具,对以上的数据进行转换,选择File——Load File as Ascii,以Ascii编码打开1.txt

在这里插入图片描述
在这里插入图片描述

然后点击Binary——Binary Format

在这里插入图片描述
在这里插入图片描述

最后选择Binary——Binary To Ascii

在这里插入图片描述
在这里插入图片描述

最终将得到隐藏的字符串信息,如下所示

在这里插入图片描述
在这里插入图片描述

得出flag值

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2024-09-16,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 基于隐写术来防止敏感数据被盗用的实验
    • 一、隐写术的定义
    • 二、常见的隐写术类型及技术
    • 三、隐写术的应用场景
    • 四、隐写术与密码学的对比
    • 五、使用隐写术来防止敏感数据被盗用案例实现
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档