misc-隐写术

隐写术即通过一定手段达到信息隐藏的目的,不让除预期的接收者之外的任何人知晓信息的传递事件或信息内容
前言
这里会提供一些来自buuctf的案例,有需要还原的可以看我的博客的关于这一节的题目
参考题目目录工具介绍
提供的工具若未破解或链接已挂,请自行搜索破解版使用
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 工具进行查看
图片隐写
附加字符串
原理
直接将信息写入图片结束符后面,图片识别程序不会识别后面的代码,所以信息能够被隐藏
用010Editor 打开文件时,直接搜索文本flag,ctf,key
等关键词
图种
原理
将图片文件与其他格式文件结合在一起并保存为图片格式,可以通过修改扩展名来得到其中被隐藏的数据
使用工具Binwalk (kali)使图种数据分离
1 | binwalk -e atta.png --run-as=root |
当该方法可以查看有隐藏文件但无法输出的时候,建议用foremost(kali)
使用方法
1 | -V-显示版权信息并退出 |
常用指令
1 | foremost -i 待分离的文件 -o 存放目录 |
EXIF
原理
直接在图片属性中添加隐藏信息,这种往往容易被忽视
图片宽高
对于图片,通过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)(固定) |
CRC校验码是由从IDCH到THDR的十七位字节进行计算得到,所以说能够反向破解原始宽高
图片色差分析
使用工具stegsolve 将色块分开查看
左右按键都尝试一下就可以得到隐藏的信息了
最低有效位(LSB)
原理
改变图片的RGB最低位,使其组合成我们想要隐藏的信息,由于变化太小肉眼无法看出,所以能隐写
提取隐藏信息需要将RGB的最低位提取出来,重新组合成文件或字符串即可
以下是windows系统的stegsolve LSB工具示例,可以看到多次尝试就可以拿到flag
盲水印
这种隐写方式还原需要两张看起来几乎一样的图片,通过比较图片的MD5值或者图片大小可以发现实际是不同的两张图片
使用工具BlindWatermark
上面的工具不是本案例提供的,请下载BlindWatermark
我真的服《CTF实战 从入门到提升》这本书了,已经第几次因为提供的案例和工具对不上和浪费了很多时间,真的是作者就不能把工具给完吗,每次试错都搞得我头大(╬ ̄皿 ̄)
参考系数
参数 | 说明 |
---|---|
yuantu.png | 原来的没有水印的图片 |
shuiyintu.png | 有水印的图片 |
result_1.png | 合成的有水印的图片 |
result_2.png | 提取的水印图片 |
1 | # 合成盲水印 |
真的服这个作者了(╯‵□′)╯︵ ┴─┴
音频隐写
摩尔斯密码与音频隐写
在MISC题中打开音频文件若是能听到“滴答”的声音,可以猜测是摩尔斯电码有关
一般不会有这种题,因为没有技术含量还浪费时间
使用工具Audacity 看音频长短,再对照摩斯密码进行还原
提取出来内容为“..-. .-.. .- –. .. … .- .. .-. .-. ..- -.. -.. . .-.”
这里就不还原为英文字母了
MP3音频
原理
采用特殊的量化方法,将数据隐藏在MP3文件的奇偶校验块中
使用工具MP3stego 进行加密解密(貌似只能加密,我没试出来解密的)
没有密码只能爆破,密码过于复杂则无法破解
1 | # —E 读取隐藏信息文件的内容,-P 设置密码 |
波形图
原理
使用工具发现波形规律,将波形转化为01字符串,从而进行编码得到加密内容
根据正1负0编写二进制代码,再转化为ascii码即可
这里提供一个脚本
1 | s='your code' |
频谱图
音频是一段杂音或者比较刺耳,波形图也没有规律,则可能是频谱图隐写
波形图不连续也没有规律,用频谱图看看
直接就得到flag了,可以作为一个日常判断来做题,拿到音频题就直接看一下频谱图,只需要用手点点就能发现意想不到的东西,岂不美哉≖‿≖✧
视频隐写
视频帧的分离
一般用于综合题目
视频题目里面往往会有些隐藏的东西,但由于可能只存在1-2帧的画面,所以单纯截屏或者肉眼是不行的
借助工具videotopicture 进行帧分离
可以看到里面有包含二维码的图片
文档隐写
Word文档隐写
改变字体颜色进行隐藏
原理
将字体颜色修改为和底色(白色)一样的颜色
字体颜色设置为白色
勾选隐藏文字功能进行隐藏
原理
勾选隐藏文字功能
这样隐藏后不会被统计字数,但也不好找到隐藏的位置
tips:可以全选然后取消隐藏
解压docx文档隐藏文件再压缩进行隐藏
docx文档修改后缀为.zip或者其他格式的压缩包,解压后就可以看到里面是有文件的
PDF文档隐写
对PDF文档的隐写需要用到工具wbStego4.3open
原理
会将插入的数据中的每一个ASCII码转换为二进制形式,并将其中的0替换成十六进制的20,1替换弄成十六进制中的09,最终将这些转换后的十六进制数据嵌入PDF中
用16进制打开PDF文件发现里面有很多09或者20的字符,可以猜测是PDF隐写
使用工具进行隐写和解密,需要知道对应的密码,如果题目中没有得到有关密码的提示,则无法进行解密
使用时可能会报错
当出现上面的情况时,表示数据执行保护被拦截,需要加载打开(原本是为了避免病毒的)
找到“我的电脑”,右击找到“属性”,打开“高级系统设置”,找到“高级”里面的“性能”,打开“设置”,找到“数据执行保护”,根据图中提示,添加“wbStego4.3open.exe”,最后需要重启电脑
做完题之后可以改回去,需要一直使用请在虚拟机操作
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.