misc-隐写术

ZJ Lv100

隐写术即通过一定手段达到信息隐藏的目的,不让除预期的接收者之外的任何人知晓信息的传递事件或信息内容

前言

这里会提供一些来自buuctf的案例,有需要还原的可以看我的博客的关于这一节的题目

参考题目目录

工具介绍

提供的工具若未破解或链接已挂,请自行搜索破解版使用

010Editor 16进制编辑器(新链

TrlDNet 文件识别工具

Binwalk 数据分离工具

stegsolve LSB工具(色块工具)(windows)

zsteg LSB工具(linux)

BlindWatermark 盲水印工具

上面这个是新的,案例提供的是这个BlindWatermark

Audacity 音频隐写工具

MP3stego MP3音频隐写工具

videotopicture 视频帧的分离工具

wbStego4.3open PDF文档隐写工具

文件结构类型及识别

常见文件头和文件尾

文件扩展名 文件头 文件尾
JPEG (jpg) FF D8 FF FF D9
PNG (png) 89 50 4E 47 AE 42 60 82
GIF (gif) 47 49 46 38 00 3B
ZIP Archive (zip) 50 4B 03 04 50 4B
RAR Archive (rar) 52 61 72 21
Windows Bitmap (bmp) 42 4D
XML (xml) 3C 3F 78 6D 6C
HTML (html) 68 74 6D 6C 3E
MS Word/Excel (xls.or.doc) D0 CF 11 E0
Adobe Acrobat (pdf) 25 50 44 46 2D 31 2E
AVI (avi) 41 56 49 20

在linux中用file命令查看文件类型,windows中用TrlDNET 工具进行查看

image-20240918234041568

image-20240918234142219

图片隐写

附加字符串

原理

直接将信息写入图片结束符后面,图片识别程序不会识别后面的代码,所以信息能够被隐藏

010Editor 打开文件时,直接搜索文本flag,ctf,key等关键词

image-20240919002347396

图种

原理

将图片文件与其他格式文件结合在一起并保存为图片格式,可以通过修改扩展名来得到其中被隐藏的数据

image-20240919192235889

使用工具Binwalk (kali)使图种数据分离

1
binwalk -e atta.png --run-as=root

image-20240919002338362

当该方法可以查看有隐藏文件但无法输出的时候,建议用foremost(kali)

使用方法

1
2
3
4
5
6
7
8
9
10
11
-V-显示版权信息并退出
-t-指定文件类型。(-t jpeg,pdf…)
-d-启用间接块检测(对于UNIX文件系统)
-i-指定输入文件(默认为stdin)
-a-写入所有标头,不执行错误检测(损坏的文件)
-w-仅写入审核文件,不将任何检测到的文件写入磁盘
-o-设置输出目录(默认为输出)
-c-设置要使用的配置文件(默认为forest.conf)
-q-启用快速模式。在512字节边界上执行搜索。
-Q-启用静音模式。抑制输出消息。
-v-冗余模式。将所有消息记录到屏幕。

常用指令

1
foremost -i 待分离的文件 -o 存放目录

EXIF

原理

直接在图片属性中添加隐藏信息,这种往往容易被忽视

image-20240919002824284

图片宽高

对于图片,通过010Editor 打开可以直接修改宽高,但如果要恢复原始比例就需要用到CRC校验码了,涉及到CRC撞库,需要写脚本来实现,并且当源文件过大,则难以枚举

内容 含义
89 50 4E 47 0D 0A 1A 0A png的文件头(固定)
00 00 00 0D 十进制为13,代表头部数据块的长度为13
49 48 44 52 ASCII码为IHDR,表明数据块为IHDR
00 00 02 58 图片高度(4bit)(不固定)
00 00 02 58 图片宽度(4bit)(不固定)
08 06 00 00 00 依次为Bit depth、ColorType、 Compression method、 Filter method、Interlace method(共5bit)(不固定)
BE 66 98 DC CRC校验码(4bit)(固定)

image-20240919010102979

image-20240919005014571

image-20240919005242860

image-20240919005329960

CRC校验码是由从IDCH到THDR的十七位字节进行计算得到,所以说能够反向破解原始宽高

image-20240919010318218

在线CRC计算网站

image-20240919010356310

图片色差分析

使用工具stegsolve 将色块分开查看

image-20240928194437081

左右按键都尝试一下就可以得到隐藏的信息了

image-20240928194611681

最低有效位(LSB)

原理

改变图片的RGB最低位,使其组合成我们想要隐藏的信息,由于变化太小肉眼无法看出,所以能隐写

提取隐藏信息需要将RGB的最低位提取出来,重新组合成文件或字符串即可

以下是windows系统的stegsolve LSB工具示例,可以看到多次尝试就可以拿到flag

image-20240919174523222

盲水印

这种隐写方式还原需要两张看起来几乎一样的图片,通过比较图片的MD5值或者图片大小可以发现实际是不同的两张图片

使用工具BlindWatermark

上面的工具不是本案例提供的,请下载BlindWatermark

我真的服《CTF实战 从入门到提升》这本书了,已经第几次因为提供的案例和工具对不上和浪费了很多时间,真的是作者就不能把工具给完吗,每次试错都搞得我头大(╬ ̄皿 ̄)

参考系数

参数 说明
yuantu.png 原来的没有水印的图片
shuiyintu.png 有水印的图片
result_1.png 合成的有水印的图片
result_2.png 提取的水印图片
1
2
3
4
5
6
7
8
9
# 合成盲水印
python2 bwm.py encode yuantu.png shuiyintu.png result_1.png
# 提取盲水印
python2 bwm.py decode yuantu.png result_1.png result_2.png

# 合成盲水印
python3 bwmforpy3.py encode yuantu.png shuiyintu.png result_1.png
# 提取盲水印
python3 bwmforpy3.py decode yuantu.png result_1.png result_2.png

image-20240919185229567

image-20240919185257272

真的服这个作者了(╯‵□′)╯︵ ┴─┴

音频隐写

摩尔斯密码与音频隐写

在MISC题中打开音频文件若是能听到“滴答”的声音,可以猜测是摩尔斯电码有关

一般不会有这种题,因为没有技术含量还浪费时间

使用工具Audacity 看音频长短,再对照摩斯密码进行还原

image-20240919195226161

提取出来内容为“..-. .-.. .- –. .. … .- .. .-. .-. ..- -.. -.. . .-.”

这里就不还原为英文字母了

MP3音频

原理

采用特殊的量化方法,将数据隐藏在MP3文件的奇偶校验块中

使用工具MP3stego 进行加密解密(貌似只能加密,我没试出来解密的)

没有密码只能爆破,密码过于复杂则无法破解

1
2
3
4
5
6
7
8
9
# —E 读取隐藏信息文件的内容,-P 设置密码
# 加密
decode.exe -E data.txt yuan.wav new.mp3
# data.txt是加密文件,yuan.wav是原始音频,new.mp3为输出文件
# 然后会需要输入加密的密码

# 解密
encode.exe -E -P 123456 new.mp3
# 123456是解密的密码,new.mp3是需要解密的文件

波形图

原理

使用工具发现波形规律,将波形转化为01字符串,从而进行编码得到加密内容

image-20240920005827975

image-20240920010735736

image-20240920012133437

根据正1负0编写二进制代码,再转化为ascii码即可

这里提供一个脚本

1
2
3
4
5
s='your code'
res=''
for i in range(0,len(s),7):
res+=chr(int(s[i:i+7],2))
print(res)

频谱图

音频是一段杂音或者比较刺耳,波形图也没有规律,则可能是频谱图隐写

image-20240920012648185

波形图不连续也没有规律,用频谱图看看

image-20240920012732399

image-20240920012745555

直接就得到flag了,可以作为一个日常判断来做题,拿到音频题就直接看一下频谱图,只需要用手点点就能发现意想不到的东西,岂不美哉≖‿≖✧

视频隐写

视频帧的分离

一般用于综合题目

视频题目里面往往会有些隐藏的东西,但由于可能只存在1-2帧的画面,所以单纯截屏或者肉眼是不行的

借助工具videotopicture 进行帧分离

image-20240920015652851

可以看到里面有包含二维码的图片

atta044

文档隐写

Word文档隐写

改变字体颜色进行隐藏

原理

将字体颜色修改为和底色(白色)一样的颜色

image-20240920174326354

字体颜色设置为白色

image-20240920174347322

勾选隐藏文字功能进行隐藏

原理

勾选隐藏文字功能

image-20240920174442092

这样隐藏后不会被统计字数,但也不好找到隐藏的位置

tips:可以全选然后取消隐藏

解压docx文档隐藏文件再压缩进行隐藏

docx文档修改后缀为.zip或者其他格式的压缩包,解压后就可以看到里面是有文件的

image-20240920180256951

PDF文档隐写

对PDF文档的隐写需要用到工具wbStego4.3open

原理

会将插入的数据中的每一个ASCII码转换为二进制形式,并将其中的0替换成十六进制的20,1替换弄成十六进制中的09,最终将这些转换后的十六进制数据嵌入PDF中

用16进制打开PDF文件发现里面有很多09或者20的字符,可以猜测是PDF隐写

使用工具进行隐写和解密,需要知道对应的密码,如果题目中没有得到有关密码的提示,则无法进行解密

使用时可能会报错

image-20240921010247506

当出现上面的情况时,表示数据执行保护被拦截,需要加载打开(原本是为了避免病毒的)

找到“我的电脑”,右击找到“属性”,打开“高级系统设置”,找到“高级”里面的“性能”,打开“设置”,找到“数据执行保护”,根据图中提示,添加“wbStego4.3open.exe”,最后需要重启电脑

做完题之后可以改回去,需要一直使用请在虚拟机操作

image-20240921010708361

image-20240921010741505

image-20240921010846336

image-20240921010909324

wbStego4.3open 工具不会用的可以参考[PDF文档隐写]pdf隐写

总结

隐写术是一个比较混杂的misc安全类,做题时基本是用作其他题型的附加难度,如果题目不提示用隐写术,一定要对图片,音频,视频和文档敏感,不然拿到手都入不了方向

参考题目目录
  • Title: misc-隐写术
  • Author: ZJ
  • Created at : 2024-09-18 00:00:00
  • Updated at : 2025-01-17 01:47:00
  • Link: https://blog.overlordzj.cn/2024/09/18/ctf/data/misc/隐写术/
  • License: This work is licensed under CC BY-NC-SA 4.0.
Comments