数据隐藏的学习笔记
最近刚看完了Michael Raggo的《数据隐藏技术解密》这本书,书中有些内容值得做一些笔记
1.Word中的数据隐藏

右键单击,选择”字体”,勾选“隐藏”复选框即可隐藏文字


我们可以在Word的文件->选项->勾选“隐藏文字”复选框,或者“打印隐藏文字”完成隐藏内容的显示

另外一个识别隐藏文字的方法是使用检查文档选项,在文件->信息->检查文档中,可以检查隐藏元数据,例如作者,批注和可识别的其他信息

在Word的属性区域还有很多可以隐藏信息的选项

2.在PDF文件中隐藏信息
wbStego4open:http://www.bailer.at/wbstego/pr_4ixopen.htm
可以使用wbStego4open工具在PDF文件中隐藏版权信息,文件等,同时还可以设置密码,操作简单,按软件提示做就可以


工具原理:
- 将插入数据的每一个ASCII码转换为二进制格式
- 根据20代表0,09代表1,进行替换
- 最后将这些20 09序列嵌入PDF文件


原理如图:
3.在可执行文件中隐藏信息
Hydan:http://justsolve.archiveteam.org/wiki/Hydan
由于Hydan太老了(2004年),目前的环境没有办法正常运行(不过你也可以自己配置一下以前的环境试试),于是我没有使用书上说的Hydan,选择了steg86
steg86: https://github.com/woodruffw/steg86
安装好steg86后,运行
可以使用profile查看一下这个二进制文件隐写适用性
1 | ┌──(root㉿kali)-[/home/kali] |
嵌入信息,运行命令得到了bash.steg可执行文件
1 | steg86 embed bash bash.steg <<< "The hidden message" |
提取消息
1 | ┌──(root㉿kali)-[/home/kali] |
4.在HTML文件中隐藏信息
Snow: https://darkside.com.au/snow/

对比原始的HTML文件和嵌入数据的文件,视觉上没有任何差别


实际上我们用010编辑器打开可以看到文件发生了一些细微的变化(发现这个隐写方式和wbStego4open非常相似)


5.免费的隐写分析软件
1.StegSpy
StegSpy是一款著名的检测隐藏信息的签名分析软件,为什么它可以分析,是因为很多隐写程序都有一个共同特性,就是它们还会在文件中嵌入它们自己的唯一标识,比如Hiderman,会在载体文件的尾部追加“CDN”这三个ASCII码。于是可以创建一个签名库,搜集市面上大多数隐写软件的唯一标识,即可进行隐写分析。

Tip: 如果发现运行StegSpy报错“组件COMDLG32.OCX或其依赖项之一未正确注册:文件丢失或无效”:
去网上找一个大型网站下载 COMDLG32.OCX
32位系统:将COMDLG32.OCX复制到C:\windows\system32\ 目录下,运行
1 regsvr32 c:\Windows\system32\comdlg32.ocx64位系统:将COMDLG32.OCX复制到C:\Windows\SysWOW64\ 目录下,运行
1 regsvr32 c:\Windows\SysWOW64\comdlg32.ocx
2.Stegdetect
Stegdetect: https://www.provos.org/p/outguess-and-stegdetect-downloads
原理:JPEG和MPEG文件格式使用的是离散余弦变换(DTC)函数来压缩图像,对于这种压缩方法,通过识别每个8x8像素块中相邻像素中的重复像素来减少图像大小,因此DCT是一个有损压缩技术,但是一般不会影响图像或者视频的视觉效果。Stegdetect是评估JPEG文件的DCT频率系数,把检测到的可疑JPEG文件频率与正常文件的频率对比,对比结果偏差很大则说明被检查文件有异常。(由于该原因,不能检测png文件)
使用:

Stegdetect发现图像使用JPhide方法嵌入数据的,但是嵌入的可能性不同,后面的*越多可能性越大
通过使用以下命令还可以递归检测当前目录下的jpg图像文件
1 | .\stegdetect.exe -s 10.0 *.jpg |
-s 是设置敏感度,可以设置为10.0
Stegdetect 的主要选项:
q – 仅显示可能包含隐藏内容的图像
n – 启用检查 JPEG 文件头功能,以降低误报率。
s – 修改检测算法的敏感度,该值的默认值为 1。
d – 打印带行号的调试信息。
t – 设置要检测哪些隐写工具(默认检测 jopi),可设置的选项如下:
j – 检测图像中的信息是否是用 jsteg 嵌入的。
p – 检测图像中的信息是否是用 jphide 嵌入的。
o – 检测图像中的信息是否是用 outguess 嵌入的。
i – 检测图像中的信息是否是用 invisible secrets 嵌入的。
6.Windows中的数据隐藏
1.交换数据流隐藏数据
Windows NTFS文件系统的交换数据流(ADS)一直为众人所知,它可以追朔到Windows NT3.1,NTFS使用交换数据流来存储文件的相关元数据,包括安全信息,原作者,其他数据。
我们使用powershell创建一个txt文件


我们用原始文本文件(lontano.txt)创建我们的交换数据流


常用的浏览技术对交换数据流都是免疫的,执行完上面命令后,文件大小也没有什么变化
统一文件创建的交换数据流不止一个
1 | notepad lontano.txt:hide2.txt |
2.卷影技术
新版本的Windows系统都有卷影副本服务,可以备份磁盘卷,以便在安装新的软件、设备驱动器或者其他程序导致系统崩溃时可以还原系统。
我们可以右键此电脑->属性->系统保护->配置中设置卷影副本分配的最大空间

由于很多防病毒软件都不会扫描卷影副本,所以一般认为这里是隐藏数据和恶意软件的好地方
在windows7以上系统中,管理员用户可以在命令行用VSSadmin来管理卷影副本:

通过”List shadowstorage”可以查看卷影副本的存储关联(存储空间大小)

接下来,我们就可以在卷影副本中创建并隐藏文件了,还会演示脱离文件系统访问这个文件
我们在sandbox文件夹下面放了一个待隐藏的pdf文件

还是在系统保护中创建还原点


可以使用命令来查看卷影副本清单
1 | vssadmin list shadows |

接着我们可以删除那份待隐藏的PDF文件,然后创建符号链接来查看卷影副本的内容,本例中,新卷影副本的名称是“\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy2\”,执行带有/D选项的mklink命令,为符号链接创建目录,注意mklink命令使用cmd运行,如果用powershell会报错,卷影副本的名称后面一定有 \ ,这是创建符号链接必备的
1 | mklink /D hiddendir \\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy2\ |

进入hiddendir目录,可以看到我们之前已经删除的PDF文件


如果隐藏的是可执行文件,可以通过WMIC运行这个可执行文件,这里就不尝试了,有兴趣的小伙伴可以上网查询或看书
7.Linux中的数据隐藏
1.Linux文件名欺骗
总所周知,在文件名前面加上”.”符号可以隐藏该文件,当我们执行ls命令的时候看不到这个文件,但是当我们执行”ls -al”的时候,就原形毕露了
1 | ┌──(root㉿kali)-[/home/kali] |
我们运行“ls -al”的时候,可以发现结果还有一个单点和一个双点符号,单点表示当前目录,双点表示上级目录,比较有趣的是,在点后面加上空格还可以创建新的目录,比如“. ”
1 | ┌──(root㉿kali)-[/home/kali] |
这里和书上不一样,估计是这个漏洞已经被官方修复了,按照书上的结果,应该是这样的,但是”. “这样也看起来很有隐蔽性
1 | ┌──(root㉿kali)-[/home/kali] |
8.总结
关于本书的笔记还未完结,后续我会发布 “数据隐藏的学习笔记(二)“ ,后续内容会涉及更多Linux系统的数据隐藏,虚拟机中的数据隐藏和网络协议中的数据隐藏,最后还会总结一下电子取证的流程,策略。待所有更新完后,我会将它们整合在一起!😊
这里推荐这本书,内容不是很深奥,通俗易懂,是学习取证的好书!
