CTF学习之MISC之图片隐写
隐写术概述
- 图片隐写技术
- 图片EXIF信息隐写
- 图片LSB低位隐写
隐写术(Stega)
隐写术(Steganography,简写Stega)
一门关于信息隐藏的技巧与科学
信息隐藏:不让除预期的接收者之外的任何人知晓信息的传递事件或者信息的内容
与密码学(Cryptography)不同
隐写题目类型
- 图片隐写
- 图片EXIF信息隐写
- 图片高度缩减隐写
- 图片LSB低位隐写
- 文档隐写
- 文本隐写
- 压缩包隐写
- 其他文档格式(word、pdf、html文件)
- 音频、视频隐写
- 其他形式隐写
解题工具
- 图片隐写的解题工具
- Strings,文本隐写分析工具
- Binwalk,dd,foremost,图片分离工具
- Winhex,ultraeditor,文件16 进制编辑器
- Stegsolve.jar,图层分析工具-…
- 平台
- kali系统自带strings,binwalk, dd, foremost等命令
- windows平台下有Winhex,Stegsolve.jar等工具
图片EXIF信息隐写
- Exif(Exchangeable image file format)
- 可交换图像文件格式。
- 专门为数码相机的照片设定的,记录照片的属性信息和拍摄数据(曝光时间,拍摄时间,gps定位数据,相机品牌型号)。
- 支持的图片格式:JPEG、TIFF、XMP等等。
- 查看工具
- 类Unix系统:exiftool
- Windows系统:图片-右键-属性–详情
图片EXIF信息隐写
图片LSB隐写
- LSB(Least Significant Bit),最低有效位。
- 图片像素一般是由RGB三原色(即红绿蓝)组成的,每一种颜色占用8位,0x00~0xFF,即有256种值,一像素点共包含了256^3种的颜色;
- 人的肉眼能区分的只有其中一小部分;
- 修改RGB颜色分量中最低的二进制位,人眼无法区分。
- 例如:将字符“a”隐藏进图片LSB,即把“a”的二进制ascii码“01100001”,写到LSB通道的最低位。
-
解题思路
- 图片分析
- 图层分离,查看LSB
-
工具-可视化图层分析工具:
- Stegsolve.jar
- python脚本,PIL.Image库
-
解题工具:Stegsolve
- 需要java环境;
- 界面简单,协助分析图片图层、LSB信息。
-
主要功能:analyse
- File Format: 文件格式,查看图片的具体信息
- Data Extract: 数据抽取,抽取图片中隐藏数据
- Frame Browser: 帧浏览器,对GIF动图进行分离
- Image Combiner: 图片融合
图片隐写技术(进阶)
- 图片高度缩减隐写
- 图片结尾隐写
png图片格式
- png图片基本数据单元
- png图片以数据块(chunk)为数据单元存储在计算机中。
- 每个数据块包含以下4个部分:
- IHDR数据块
在线CRC校验:http://www.ip33.com/crc.html
图片高度缩减隐写
- 通过修改PNG图片的高度值,来对部分信息进行隐藏的。
- 解题思路
- 分析题目提示;
- 查看图片内容;
- 计算校验和。(熟悉图片格式、crc校验、进制转换)
图片结尾隐写
- png图片结尾隐写
- 在IEND数据块(49 45 4E 44 AE 42 60 82)之后附加额外数据内容,该数据不会被图片查看器加载、解析,从而达到隐藏信息的目的。
- 图片结尾隐写解题工具
- windows平台:Winhex,UltraEditor
- Kali环境:binwalk,dd,foremost指令
- 任何文件,都可以在文件尾附加隐写信息
Winhex的使用
- Winhex 实用技巧
- 查找文本:Ctrl+F
- 查找16进制:Alt+Ctrl+F-搜索下一个:F3
- 快速选择大数据块:
- 上下左右方向键移动光标
- alt+1 选定要修改的数据块的起始字节;
- 再使用alt+2选定结束字节; - 保存数据块到新文件:
- 右键–edit –copy block –into new file
Binwalk分离图片
Binwalk的使用
- Windows下binwalk的安装和使用
- 下载
- http://binwalk.org/
- https://github.com/ReFirmLabs/binwalk
- 安装
- pip install setup.py / python setup.py install
- 使用
- python scripts\binwalk [filename]
- 查找文本:Ctrl+F
- 查找16进制:Alt+Ctrl+F
- 搜索下一个:F3
- 下载
文档结尾隐写
-
在文件的结尾标志符之后附加隐藏信息,而不破坏源文件
- 文本信息
- 其他文档
-
一般,隐写内容都是附加在源文件的结尾
- 如果附加在头部,破坏了文件头,可能导致文件无法识别\
- 如果附加在中间,有可能破坏了源文件的信息
-
常见文件格式的文件头、文件尾
-
解题工具
- strings命令:查找可打印字符串
- binwalk命令:分析文件隐写内容
- dd、foremost命令:分离文件
-
流程
- binwalk [filename] # 也可以添加“-e”参数直接分离
- foremost [filename] # 生成一个output的文件夹
- dd if=源文件.jpg of=目标文件.jpg skip=偏移量 bs=1
strings 用法
- strings命令
- 在对象文件或二进制文件中查找可打印的字符串
- 选项
- -a --all:扫描整个文件而不是只扫描目标文件初始化和装载段
- -f –print-file-name:在显示字符串前先显示文件名-t --radix={o,d,x} :输出字符的位置,基于八进制,十进制或者十六进制
- -e --encoding={s,S,b,l,B,L} :选择字符大小和排列顺序:s = 7-bit, S = 8-bit, {b,l} = 16-bit, {B,L} = 32-bit
- Tips-我们使用strings + [filename] 命令即可
更多资料
- 在线工具
- 进制转换-在线工具 https://tool.lu/hexconvert/
- CRC在线计算 http://www.ip33.com/crc.html
- 在线工具——开源中国社区http://tool.oschina.net/
- 工具大全(各种解密工具)http://tool.bugku.com/
- 练习平台:
- i春秋,免费视频教程。https://www.ichunqiu.com/courses/ctf
- 实验吧,在线实验环境、题库。http://www.shiyanbar.com/ctf/practice
- 博客学习-CTF从入门到进(fang)阶(qi)之MISC -知乎 https://zhuanlan.zhihu.com/p/27598087
- CTF入门指南(0基础) Angel_Kitty -博客园 https://www.cnblogs.com/ECJTUACM-873284962/p/6691817.html
- Introduction | CTF Resources https://ctfs.github.io/resources/
参考于北理工大学慕课信息安全课程