压缩包隐写
字数 1336 2025-08-11 21:26:16

压缩包隐写技术详解

一、压缩包基础原理

压缩包的基本原理是通过查找文件内的重复字节,建立"词典"文件并用代码表示重复内容,从而减少冗余数据。例如:

  • 原始数据:"000011111"
  • 压缩后:"0(4)1(5)"

在CTF比赛中常见的压缩包类型:

  • ZIP文件
  • RAR文件

二、文件头识别

1. ZIP文件头

  • 文本格式:以"PK"开头
  • 十六进制:504B或更完整的504B0304
  • 在010editor中的表现:

2. RAR文件头

  • 文本格式:以"Rar"开头
  • 十六进制:
    • RAR5:52 61 72 21 1A 07 01 00
    • RAR4:52 61 72 21 1A 07 00
  • RAR4文件尾:C4 3D 7B 00 40 07 00

三、压缩包隐写技术

1. 爆破技术

  • 适用场景:已知压缩包被加密且密码有规律
  • 常用工具:ARCHPR
  • 爆破策略:
    • 6位纯数字
    • 生日日期
    • 姓名首字母等特定组合

2. 伪加密技术

ZIP伪加密

  • 原理:修改全局方式位标记
    • 奇数(如01):表示加密
    • 偶数(如00):表示未加密
  • 修改方法:
    • 标志位位于504B0304之后的固定位置
    • 将偶数改为奇数即可实现伪加密

RAR伪加密

  • 原理:修改HEAD_FLAGS内的PASSWORD_ENCRYPTED字段
  • 修改方法:
    • 使用010editor的文件模板识别
    • 将PASSWORD_ENCRYPTED字段改为1

3. CRC32爆破

  • 原理:利用CRC32校验值的唯一性
  • 适用条件:被压缩文件很小(通常<10字节)
  • 实现方式:
    • 使用开源脚本爆破
    • 从结果中筛选有意义的单词组合

4. 已知明文攻击

  • 原理:利用压缩包中已知文件推算加密密钥
  • 必要条件:
    • 已知文件大小>12Byte
    • 使用相同压缩软件和压缩方式
  • 攻击步骤:
    1. 创建无密码的相同文件压缩包
    2. 比较两个压缩包中相同文件
    3. 提取差异部分(3个32bit key)
    4. 使用key解密其他文件

5. DOCX文件分析

  • 本质:ZIP格式的压缩文件
  • 文件头:504B0304
  • 分析步骤:
    1. 修改后缀为.zip
    2. 解压后可查看XML、Image等文件
    3. 查找隐藏文件或图片

6. 注释信息隐藏

  • 位置:压缩包的注释信息位
  • 查看方法:使用常规解压缩软件查看

7. 文件修复

  • 常见问题:文件头损坏
  • 修复方法:
    1. 识别正确的文件头
    2. 手动添加缺失的文件头
    3. 重新解压

四、实战示例

示例1:十六进制转压缩包

  1. 识别504B0304开头的十六进制数据
  2. 使用CyberChef转换为ZIP文件
  3. 解压获取flag.txt

示例2:CRC32爆破

  1. 获取多个CRC32值
  2. 使用脚本爆破得到可能结果
  3. 组合有意义单词如"th1s_hxb_secret"

示例3:明文攻击

  1. 找到压缩包中已知的无加密版本文件
  2. 使用相同方式压缩该文件
  3. 用Advanced Archive Password Recovery进行攻击

五、工具推荐

  1. 010editor:分析文件结构
  2. ARCHPR:密码爆破
  3. CyberChef:数据转换
  4. Advanced Archive Password Recovery:明文攻击

六、防御措施

  1. 使用强密码
  2. 避免在压缩包中包含可预测的文件
  3. 定期检查压缩包完整性
  4. 对敏感文件使用多重加密
压缩包隐写技术详解 一、压缩包基础原理 压缩包的基本原理是通过查找文件内的重复字节,建立"词典"文件并用代码表示重复内容,从而减少冗余数据。例如: 原始数据:"000011111" 压缩后:"0(4)1(5)" 在CTF比赛中常见的压缩包类型: ZIP文件 RAR文件 二、文件头识别 1. ZIP文件头 文本格式:以"PK"开头 十六进制:504B或更完整的504B0304 在010editor中的表现: 2. RAR文件头 文本格式:以"Rar"开头 十六进制: RAR5:52 61 72 21 1A 07 01 00 RAR4:52 61 72 21 1A 07 00 RAR4文件尾:C4 3D 7B 00 40 07 00 三、压缩包隐写技术 1. 爆破技术 适用场景:已知压缩包被加密且密码有规律 常用工具:ARCHPR 爆破策略: 6位纯数字 生日日期 姓名首字母等特定组合 2. 伪加密技术 ZIP伪加密 原理:修改全局方式位标记 奇数(如01):表示加密 偶数(如00):表示未加密 修改方法: 标志位位于504B0304之后的固定位置 将偶数改为奇数即可实现伪加密 RAR伪加密 原理:修改HEAD_ FLAGS内的PASSWORD_ ENCRYPTED字段 修改方法: 使用010editor的文件模板识别 将PASSWORD_ ENCRYPTED字段改为1 3. CRC32爆破 原理:利用CRC32校验值的唯一性 适用条件:被压缩文件很小(通常 <10字节) 实现方式: 使用开源脚本爆破 从结果中筛选有意义的单词组合 4. 已知明文攻击 原理:利用压缩包中已知文件推算加密密钥 必要条件: 已知文件大小>12Byte 使用相同压缩软件和压缩方式 攻击步骤: 创建无密码的相同文件压缩包 比较两个压缩包中相同文件 提取差异部分(3个32bit key) 使用key解密其他文件 5. DOCX文件分析 本质:ZIP格式的压缩文件 文件头:504B0304 分析步骤: 修改后缀为.zip 解压后可查看XML、Image等文件 查找隐藏文件或图片 6. 注释信息隐藏 位置:压缩包的注释信息位 查看方法:使用常规解压缩软件查看 7. 文件修复 常见问题:文件头损坏 修复方法: 识别正确的文件头 手动添加缺失的文件头 重新解压 四、实战示例 示例1:十六进制转压缩包 识别504B0304开头的十六进制数据 使用CyberChef转换为ZIP文件 解压获取flag.txt 示例2:CRC32爆破 获取多个CRC32值 使用脚本爆破得到可能结果 组合有意义单词如"th1s_ hxb_ secret" 示例3:明文攻击 找到压缩包中已知的无加密版本文件 使用相同方式压缩该文件 用Advanced Archive Password Recovery进行攻击 五、工具推荐 010editor:分析文件结构 ARCHPR:密码爆破 CyberChef:数据转换 Advanced Archive Password Recovery:明文攻击 六、防御措施 使用强密码 避免在压缩包中包含可预测的文件 定期检查压缩包完整性 对敏感文件使用多重加密