跳转至

隐写术

英文: Steganography.

隐写术是一门关于信息隐藏的技巧与科学, 用于秘密传递信息和电子水印.

确定文件类型

对文件进行分析.

file [file]

CTF

若识别文件类型后使用相应软件无法打开可能是头部的 magic 数字缺失, 在文件头部添加对应的 magic 数字即可. 文件类型可能会通过文件名字暗示.

文件分离

识别并分离又多个文件合成的单个文件.

自动分离

binwalk [file]    # 分析
binwalk -e [file] # 分离

binwalk 只是将附加的文件分离出来, 不包含第一个文件.
若 binwalk 无法成功识别和分离, 可以使用 foremost:

foremost [file] # 分离
cat output/audit.txt

foremost 并没有在标准输出中直接给出有价值的信息, 而是写入到了输出目录中的 audit.txt 文件里.

手动分离

当多个文件数据不是简单的依次追加在文件末尾时, 自动分离便会失效或输出无效内容. 这时需要进人工动分析并手动分离.

dd if=[in_file] of=[out_file] bs=[block_size] count=[block_count] skip=[block_skip]

in_file 中从 block_skip * block_size 处开始大小为 block_size * block_count 的数据写入到 out_file 中.
若数据不是一块一块的, 则可以将 block_size 设置为 1(默认单位为字节), 这样 block_count 就表示要导出的字节数, block_skip 表示要跳过的字节数.

文件合并

cat [file1] [file2] > [out_file]
copy /B [file1]+[file2] [out_file] # Windows

CTF 文件内容隐写

直接把 ASCII 编码的 flag 塞到二进制文件中, 可以通过搜索关键字查找.

图片

针对图片文件的隐写需要先对图片文件大致的格式有基础的了解, 才能知道哪些地方可以藏数据且不破坏原本的图像或使人无法察觉.
图片文件可能包含一下几个部分:

  • 文件头部, 包含了数据部分长度和图像的属性, 如 Exif, GPS.
    其中一部分并不影响图像解析的数据可以用于隐藏数据. 看利用图片查看器, 文件属性查看器或 ExifTool 来进行查看.
    影响图像显示的属性(如图像大小), 也可以用于隐藏数据.
  • 数据部分, 包含了图像具体的数据.
    在这部分隐藏数据一定会影响到图像, 但可以使用 LSB 来使人无法察觉.
  • 尾部.

部分图片格式还包含了其他部分, 因此也有专门的藏数据的方法.

CTF

图片无法正常显示可能是图片属性的校验值错误, 需要更正校验值. 也有可能是图片大小不正确导致计算出的校验值错误.

LSB(Least Significant Bit)

LSBR(LSB Replacement)

通过改写每个像素的颜色的最后几个比特来隐藏数据.
以 256 位值表示一个颜色为例, 修改最后 2 比特对原值造成的变动在区间 [0, 2^2 - 1] 即 [0, 3] 内. 每个像素单个颜色的变化率大约在 0%~1% 之间, 因此肉眼不易察觉.

若图片是通过相机拍照得到的, 则会不可避免的存在相机底噪. 使得最低为为 0 和 1 的概率分别趋近于 0.5. 使用 LSBR 在图像的最低位被替换为一定量的数据后, 则会破坏统计特性.

分析

StegSolve 可以以更细的粒度(颜色通道, 具体的位)对图像进行操作.

  • File Format 查看文件信息.
  • Data Extract 用于分析使用 LSB 隐藏数据的图像.
  • Frame Browser 逐帧查看图像.
  • Image Combiner 对两张图片进行加减或位运算操作并显示结果.

zsteg 可以自动检测 LSB 并输出结果, 疑似有效的结果会高亮显示. 该工具可以通过以下指令安装:

gem install zsteg

CTF

CTF 图像相关的题目也可能直接将图像进行加密, 应先使用 stegdetect 检测加密方式, 然后再使用对应的解密工具和密钥进行解密.

stegdetect -s 10 [file]
outguess -r [file] [out_file]     # outguess
java Exrtact [file] -p [password] # F5

调色板

别名: EzStego.

部分图片格式会使用调色板, 如 PNG, GIF.

BPCS(Bit-Plane Complexity Segmentation)

抗干扰

由于图片传递的过程可能被二次加工(如压缩/滤镜/缩放等), 使隐写的数据具备一定抗干扰能力也十分重要.

  • 抗干扰: JSteg, F5.
  • 不抗干扰: LSB, 调色板.

常见文件格式头尾

图片

类型 文件头 文件尾
JPEG FF D8 FF FF D9
PNG 89 50 4E 47 0D 0A 1A 0A AE 42 60 82
GIF 47 49 46 38 39(37) 61 00 3B
BMP 42 4D
TIFF(tif) 49 49 2A 00
ico 00 00 01 00
Adobe Photoshop (psd) 38 42 50 53
TGA 未压缩 00 00 02 00 RLE压缩 00 00 10 00 00

Office

类型 文件头
MS Word/Excel(xls.or.doc) D0 CF 11 E0
MS Access(mdb) 53 74 61 6E 64 61 72 64 20 4A
WordPerfect(wpd) FF 57 50 43
Adobe Acrobat(pdf) 25 50 44 46 2D 31 2E
application/vnd.visio(vsd) D0 CF 11 E0 A1 B1 1A E1
Email [thorough only] (eml) 44 65 6C 69 76 65 72 79 2D 64 61 74 65 3A
Outlook Express(dbx) CF AD 12 FE C5 FD 74 6F
Outlook(pst) 21 42 44 4E
Rich Text Format(rtf) 7B 5C 72 74 66
txt Unicode:FE FF / Unicode big endian:FF FE / UTF-8:EF BB BF / ANSI无文件头

压缩包

类型 文件头 文件尾
ZIP Archive(zip) 50 4B 03 04 50 4B
RAR Archive(rar) 52 61 72 21

音频文件

类型 文件头
Wave(wav) 57 41 56 45
audio(Audio) 4D 54 68 64
audio/x-aac(aac) FF F1(9)

视频文件

类型 文件头
AVI(avi) 41 56 49 20
Real Audio(ram) 2E 72 61 FD
Real Media(rm) 2E 52 4D 46
MPEG(mpg) 00 00 01 BA(3)
Quicktime(mov) 6D 6F 6F 76
Windows Media(asf) 30 26 B2 75 8E 66 CF 11
MIDI(mid) 4D 54 68 64

代码文件

类型 文件头
XML(xml) 3C 3F 78 6D 6C
HTML(html) 68 74 6D 6C 3E
Quicken(qdf) AC 9E BD 8F
Windows Password(pwl) E3 82 85 96

其他类型

类型 文件头
Windows证书文件(der) 30 82 03 C9
CAD(dwg) 41 43 31 30
Windows Shortcut(lnk) 4C 00 00 00
Windows reg(reg) 52 45 47 45 44 49 54 34

参见

评论