misc入门之图片隐写

misc

主要类型:

1.数据编码、图形密码

2.图片隐写

3.音频&视频隐写

4.流量分析

5.内存取证-在磁盘里隐藏一些东西

6.游戏隐写-打通关获得flag或者游戏中的地图之类的信息

基础知识:

010editor/winhex

图片十六进制文件头文件尾+文件模板

文件属性(exiftools)

kali

010editor:

一个字节由两位十六进制数组成

010左侧显示十六进制右侧显示字符串,如果一个字节不能显示成字符,则会显示成”.”

alt+4打开模板,没有模板的文件可以用F5加载模板

010里复制是ctrl+shift+c粘贴是v,kali同理

010里找不到图片的宽高,可以用图片文件属性的像素值(十进制),然后转换成十六进制,再在010里搜索找到第一个,然后可以进行修改等
文件头到文件尾为图片内容,其余部分为多余或隐藏内容

文件头尾:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
JPEG (jpg),                          文件头:FFD8FF                        文件尾:FF D9               
PNG (png),    文件头:89504E47                      文件尾:AE 42 60 82
GIF (gif),   文件头:47494638                      文件尾:00 3B
ZIP Archive (zip), 文件头:504B0304                     文件尾:50 4B
kdmv 文件头:4B444D56
TIFF (tif),   文件头:49492A00                      
Windows Bitmap (bmp),   文件头:424D                        
CAD (dwg),   文件头:41433130                     
Adobe Photoshop (psd), 文件头:38425053                     
Rich Text Format (rtf), 文件头:7B5C727466                    
XML (xml), 文件头:3C3F786D6C                    
HTML (html), 文件头:68746D6C3E
Email [thorough only] (eml), 文件头:44656C69766572792D646174653A
Outlook Express (dbx), 文件头:CFAD12FEC5FD746F
Outlook (pst), 文件头:2142444E
MS Word/Excel (xls.or.doc), 文件头:D0CF11E0
MS Access (mdb), 文件头:5374616E64617264204A
WordPerfect (wpd), 文件头:FF575043
Adobe Acrobat (pdf), 文件头:255044462D312E
Quicken (qdf), 文件头:AC9EBD8F
Windows Password (pwl), 文件头:E3828596
RAR Archive (rar), 文件头:52617221
Wave (wav), 文件头:57415645
AVI (avi), 文件头:41564920
Real Audio (ram), 文件头:2E7261FD
Real Media (rm), 文件头:2E524D46
MPEG (mpg), 文件头:000001BA
MPEG (mpg), 文件头:000001B3
Quicktime (mov), 文件头:6D6F6F76
Windows Media (asf), 文件头:3026B2758E66CF11
MIDI (mid), 文件头:4D546864

图片隐写分类:

简单类隐写:

1.属性

2.文件末尾藏字符串

3.文件包含

4.修改文件头

图种隐写:

5.gif动图-用PS或者stegsolve查看每一帧

6.png(bmp)

7.jpg

特征明显的隐写:

8.双图隐写

9.stegpy

10.silenteye

文件包含:

一张图片文件尾后面藏着另一张图片,通过查找文件头文件尾判断

直接在010editor里新建一个文件,把后面的十六进制复制到新建文件保存为正确后缀名就可以分离出来

kali:

1.strings命令:查找可打印的字符串,以换行符或空字符结束

strings file | grep pass可以查找文件中指定的字符串

2.grep命令:查找文件里符合条件的字符串

-a 不忽略二进制数据
grep -a “xxx” file

3.file命令:用来探测给定文件的类型

4.binwalk工具分离文件

binwalk -e file提取文件
binwalk -D/-dd=jpeg file分解指定类型文件

5.foremost工具分离所有文件

foremost file 会得到一个output文件夹

6.dd命令分离指定文件

dd if=file of=输出文件 bs=1 skip=24437 //bs设置每次读取1块,skip是指从文件开头跳过24437个块开始复制,这个值可以用binwalk来查看

gif图种:

用PS或者stegsolve查看每一帧

用Ulead gif工具查看帧的时间间隔,可以把时间间隔换成二进制、莫斯或者培根之类的

png(bmp)图种:

破坏文件头一定不能显示,破坏文件尾还有可能能显示

png图片有IHDR(文件头数据块header chunk)和IDAT(图像数据块image data chunk)和IEND(图像结束数据块image end data chunk)
IHDR包含图片的宽和高和颜色等基本信息,因此可以在IHDR里修改宽和高
有些题目会把png文件头删了,所以看到IHDR和IDAT时,就可以判断为png文件,把文件头加上

CRC即循环冗余校验

CRC校验码由文件头数据块标识和IHDR共十七位字节进行CRC计算得到,后面四个字节为该png图片的CRC32校验值

利用CRC校验可以用python脚本爆破png图片的正确高和宽

通过010的工具计算校验值,若不相同则应该把高度调大,一般都是调大

pngcheck工具:

pngcheck.win64.exe -v file查看文件块IDAT,正常的块在65524的时候就满了,若有的IDAT块没有到65524,则这个IDAT块是有问题的,因为他本来应该并入到上一个块里。

zlib隐写:

zlib是一种数据格式,用于存储压缩后的数据

查看异常的IDAT块,78 9C是zlib压缩的标志

把从78 9C到00之前的内容复制到python脚本可以解压缩zlib内容,也可以用binwalk -e file直接分解出flag

lsb隐写:

最低有效位隐写,原理就是图片中的像数一般是由三种颜色组成,即三原色,由这三种原色可以组成其他各种颜色,例如在PNG图片的储存中,每个颜色会有8bit,LSB隐写就是修改了像数中的最低的1bit,在人眼看来是看不出来区别的,也把信息隐藏起来了。譬如我们想把’A’隐藏进来的话,如下图,就可以把A转成16进制的0x61再转成二进制的01100001,再修改为红色通道的最低位为这些二进制串。

test1

test2

可以用stegsolve查看RGB通道的最低位,然后用data extract查看ascii值
stegsolve中Alpha是透明度的颜色通道

也可以用zsteg工具查看通道信息

kali里zsteg file查看lsb信息或者zsteg file -a尝试所有已知的组合

导出内容:zsteg -e 所在通道 file > 输出文件名

之所以归类在png(bmp)图种是因为png是无损压缩,bmp是没有经过压缩的,你修改的信息不会丢失,而像jpg图片对像素进行了有损压缩,你修改的信息可能会被压缩的过程破坏。

加密lsb隐写,用cloacked-pixel工具的lsb.py脚本来解

python2 lsb.py extract <stego_file> <out_file> <password>

bmp或者pdf文件解密可以用wbStego4.3open工具直接解密

参考资料

https://www.bilibili.com/video/BV1VA411u7Tg?p=2

  • Copyright: Copyright is owned by the author. For commercial reprints, please contact the author for authorization. For non-commercial reprints, please indicate the source.

扫一扫,分享到微信

微信分享二维码
  • Copyrights © 2020-2021 Blog of Tianze

请我喝杯咖啡吧~

支付宝
微信