MISC--图片篇

文件头

JPEG (jpg) 文件头:FF D8 FF  文件尾:FF D9
PNG (png),文件头:89 50 4E 47
Windows Bitmap (bmp), 文件头:42 4D 文件尾:
GIF (gif),文件头:47 49 46 38
XML (xml),文件头:3C 3F 78 6D 6C
HTML (html),文件头:68 74 6D 6C 3E
MS Word/Excel (xls.or.doc),文件头:D0 CF 11 E0
MS Access (mdb),文件头:53 74 61 6E 64 61 72 64 20 4A
Adobe Acrobat (pdf),文件头:25 50 44 46 2D 31 2E
Windows Password (pwl),文件头:E3 82 85 96
ZIP Archive (zip),文件头:50 4B 03 04
RAR Archive (rar),文件头:52 61 72 21
Wave (wav),文件头:57 41 56 45
AVI (avi),文件头:41 56 49 20
TIFF (tif), 文件头:49 49 2A 00 文件尾:

三板斧工具组合

以下是针对文件(尤其是GIF等图像)分析的 三板斧工具组合 及其应用场景解析,结合逆向工程、隐写分析和数据提取的需求:


第一板斧:基础结构分析

工具组合:010 Editor + strings

目标

快速解析文件头、元数据、隐藏文本,定位可疑内容。

应用场景

  1. 010 Editor

    • 功能:查看文件十六进制结构,解析GIF格式的逻辑块(如头部、图像描述块、注释块等)。

    • 操作示例

      • 使用 GIF.bt 模板自动解析GIF结构。

      • 检查是否存在非常规块(如注释块中的隐藏文本)。

    • 优势:可视化分析,支持自定义脚本批量解析。

  2. strings

    • 功能:提取文件中的可打印字符串(如URL、密钥、调试信息)。

    • 操作示例

      strings -n 8 -t x suspicious.gif | grep "http\|key"
    • 典型输出

      0x1A3: http://malicious.site  
      0x2F0: FLAG{He1lo_Steg0}

适用场景

  • 初步筛查可疑文件中的明文信息。

  • 逆向分析二进制文件中的关键字符串。


第二板斧:隐写分析

工具组合:StegSolve + zsteg

目标

检测图像隐写术(如LSB隐写、通道隐藏、颜色平面异常)。

应用场景

  1. StegSolve

    • 功能:逐帧/逐通道分析GIF,查看各颜色通道(RGB/Alpha)和位平面的异常。

    • 操作示例

      • 切换至 Frame Browser 查看GIF各帧差异。

      • 使用 Image Combiner 对比不同位平面(如仅显示最低有效位)。

    • 典型发现:某帧的LSB位中隐藏二维码。

  2. zsteg

    • 功能:自动化检测PNG/BMP中的LSB隐写(对GIF支持有限,但可尝试提取)。

    • 操作示例

      zsteg -a suspicious.gif
    • 输出示例

      [?] 123 bytes of extra data after image end (IEND), offset = 0x1234

注意事项

  • GIF隐写可能需要结合逐帧分析(如使用StegSolve)。

  • zsteg对GIF支持较弱,可改用 GifSteg 或手动提取帧后分析。


第三板斧:数据分离与深度提取

工具组合:binwalk + foremost

目标

分离文件中嵌入的其他文件(如压缩包、文本、加密数据)。

应用场景

  1. binwalk

    • 功能:扫描文件签名,识别潜在嵌入文件(如ZIP、PNG、Base64)。

    • 操作示例

      binwalk -Me suspicious.gif
    • 输出示例

      DECIMAL       HEXADECIMAL     DESCRIPTION  
      0             0x0             GIF image data  
      12345         0x3039          Zip archive data
  2. foremost

    • 功能:按文件头自动提取嵌入内容(如从GIF中分离出隐藏的ZIP)。

    • 操作示例

       
      foremost -i suspicious.gif -o output_dir

    • 典型结果

      output_dir/zip/00012345.zip

适用场景

  • 提取GIF尾部附加的加密压缩包。

  • 分离被拼接的多文件组合(如图片+文本拼接)。


 综合实战流程

案例:CTF题目中的GIF隐写

  1. 第一板斧

    • strings 发现GIF末尾有 PK 头(ZIP文件标志)。

    • 010 Editor 确认尾部附加数据偏移量。

  2. 第二板斧

    • StegSolve 检查各帧未发现异常,排除LSB隐写。

  3. 第三板斧

    • 运行 binwalk -e suspicious.gif 提取尾部ZIP文件。

    • 解压ZIP后获得加密文本,进一步破解获得Flag。


 工具链总结

阶段工具核心用途
初步分析010 Editor、strings结构解析、明文提取
隐写检测StegSolve、zsteg通道分析、LSB隐写破解
数据提取binwalk、foremost文件分离、嵌入内容恢复

四个Linux命令

1. strings 命令

功能

从二进制文件中提取所有可打印的字符串(ASCII 或 Unicode),常用于逆向工程、文件分析或调试。

基本用法

strings [选项] <文件名>
  • 常用选项

    • -n <长度>:仅显示长度 ≥ 指定值的字符串(默认4字符)。

    • -t {d,o,x}:显示字符串在文件中的偏移量(十进制/八进制/十六进制)。

    • -e {s,S,b,l}:指定字符编码(如 s 为 ASCII,l 为 16 位 Unicode)。

示例

# 提取文件中的长度≥8的字符串,并显示十六进制偏移量
strings -n 8 -t x suspicious.bin

# 提取 Unicode 字符串
strings -e l malware.exe

典型场景

  • 逆向工程:查找二进制文件中的密钥、URL 或调试信息。

  • CTF 隐写分析:从图片或文档中提取隐藏的文本 Flag。

  • 恶意软件分析:定位可疑字符串(如 http://key=)。


2. zsteg 命令

功能

自动化检测 PNG/BMP 图像中的隐写数据,支持 LSB(最低有效位)隐写、通道分析及数据提取。

基本用法

 
zsteg [选项] <图片文件>
  • 常用选项

    • -a:全面检测所有可能的隐写方式。

    • -E <模式>:指定隐写层并提取数据(如 b1,rgb,lsb)。

    • -v:显示详细分析过程。

示例

# 全面检测 PNG 图像中的隐写数据
zsteg -a flag.png

# 提取 RGB 通道 LSB 隐藏的数据并保存到文件
zsteg -E "b1,rgb,lsb" flag.png -o hidden.zip

典型场景

  • CTF 隐写题:从图片中提取 LSB 隐藏的 Flag 或加密数据。

  • 安全分析:检测图片中是否携带恶意代码。

  • 限制:对 GIF 支持较弱,需结合 StegSolve 逐帧分析。


3. binwalk 命令

功能

扫描文件以识别嵌入的其他文件(如 ZIP、PNG、ELF 等),支持签名匹配与数据提取。

基本用法

 
binwalk [选项] <文件名>
  • 常用选项

    • -e:自动提取已知文件类型。

    • -M:递归提取嵌套文件(需配合 -e)。

    • -D "文件类型":仅提取指定类型的文件(如 -D "zip")。

示例

 
# 扫描文件并显示嵌入的签名
binwalk firmware.bin

# 提取所有可识别的文件到 output 目录
binwalk -e -M firmware.bin

# 仅提取 JPEG 文件
binwalk -D "jpeg" image.jpg

典型场景

  • 固件分析:提取固件中的内核、配置文件。

  • CTF 文件分离:从复合文件中分离出隐藏的 Flag 图片或压缩包。

  • 数据恢复:从损坏文件中恢复部分内容。

4. foremost 命令

功能

基于文件头/尾签名从原始数据中恢复文件,支持自定义规则,适合深度数据提取。

基本用法

 
foremost [选项] -i <输入文件> -o <输出目录>
  • 常用选项

    • -c <配置文件>:指定自定义配置文件(定义文件签名)。

    • -t <文件类型>:仅恢复指定类型(如 jpg,pdf)。

    • -v:显示详细提取过程。

示例

# 从磁盘镜像中恢复所有支持的文件类型
foremost -i disk.img -o recovery/

# 仅恢复 JPEG 和 ZIP 文件
foremost -t jpg,zip -i data.bin -o output/

典型场景

  • 数字取证:从硬盘镜像中恢复已删除文件。

  • CTF 数据恢复:从二进制文件中提取隐藏的图片或文档。

  • 文件碎片重组:通过签名匹配拼接碎片化文件。



工具对比与组合使用

工具核心功能适用场景优势
strings提取可打印字符串逆向工程、文本线索提取快速筛查明文信息
zsteg图像隐写分析(LSB/通道)PNG/BMP 隐写检测自动化分析隐藏数据
binwalk文件签名识别与提取固件分析、复合文件分离支持递归提取和多种文件类型
foremost基于签名的深度文件恢复数据恢复、数字取证灵活支持自定义签名

组合使用示例

CTF 题目:分离图片中的隐藏压缩包并提取 Flag

  1. 初步分析

    strings image.png | grep "flag"  # 查找明文字符串
    zsteg -a image.png              # 检查隐写数据
  2. 文件分离

    binwalk -e image.png            # 提取嵌入的 ZIP 文件
  3. 深度恢复

    foremost -i extracted.zip -o flag_output  # 确保完整提取

常见问题

  1. zsteg 无法检测到隐藏数据

    • 尝试逐通道分析(如 zsteg -E "r,g,b")或检查其他位平面。

  2. binwalk 提取不完整

    • 使用 foremost 补充提取,或手动通过 dd 命令切割数据。

  3. strings 输出过多干扰信息

    • 结合 grep 过滤关键字(如 strings file | grep "KEY")。

5.Exiftool命令

Kali Linux 中使用 ExifTool 处理图像或文件的元数据(EXIF、IPTC、XMP 等)非常方便。以下是详细的用法指南,涵盖安装、基础操作和进阶场景

基础用法

1. 查看元数据

# 查看文件所有元数据(显示全部标签)

exiftool image.jpg

# 查看特定信息(如拍摄时间、GPS坐标、相机型号)
exiftool -DateTimeOriginal -GPSPosition -Model image.jpg

# 查看所有支持的元数据标签(列表)
exiftool -list

隐写分析(CTF 场景)

# 检查隐藏的注释或异常标签
exiftool image.jpg | grep -iE "flag|comment|warning"

实战案例

CTF 题目:从图片元数据中提取 Flag

  1. 查看所有元数据:

    exiftool suspicious.jpg
  2. 发现异常注释字段:

    Comment: FLAG{Ex1f_1s_P0w3rfu11}
  3. 直接提取:

    exiftool -Comment suspicious.jpg | grep "FLAG"

杂列

不同帧之间的间隔时间来隐写的。这里利用linux下的工具identify

identify -format "%T " misc39.gif > 1.txt
s="11000111110100110011011100111101000110111111101111111011011010101100100111000011000101100101100110110011001110010111001011010111001101100010011011111000101100101011001001101100111000110010001110010110110011001111000010111001110010111000101100011110000101100000110100011010101110011111101"
flag=""
for i in range(41): #287//7
    flag += chr(int(s[7*i:7*(i+1)],2))
print(flag)

参考

《CTF那些事儿》

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值