CTF中ZIP伪加密压缩文件分析

CTF中ZIP伪加密压缩文件分析

耀鳞光翼 Lv3

ZIP压缩包组成结构

概述

ZIP文件格式是一种数据压缩和文档储存的文件格式,原名Deflate,发明者为菲尔·卡茨(Phil Katz),他于1989年1月公布了该格式的资料。ZIP通常使用后缀名“.zip”,它的MIME格式为application/zip

文件结构

简要来说,一个ZIP压缩包由3个部分组成,分别是:压缩源文件数据区+压缩源文件目录区+压缩源文件目录结束标志

创建无密码压缩包example_no_passwords.zip,内含文件flag.txt,其内容为flag{abcdef},以此为例:

example_no_passwords.zip
example_no_passwords.zip

  1. 绿色部分—压缩源文件数据区

    数据存储区包含一个或多个文件实体,每个文件实体通常以50 4B 03 04开头,这也是压缩文件头,用于判断文件是否为压缩包的一个参考。文件实体记录着文件被压缩后的各种信息,压缩包内的每一个被压缩的文件都会对应一个文件实体。

    偏移字节数描述
    04固定值0x04034b50
    42解压缩的版本
    62标志位
    82压缩方式
    102文件最后
    122文件最后修改日期
    144CRC-32校验
    184压缩后大小
    224压缩前大小
    262文件名称长度
    282扩展字段长度
    30n文件名称
    32+nm扩展字段

    50 4B 03 04:这是文件头标记

    14 00:解压文件所需要的pkware版本

    00 00:全局方式标记位(有无加密)

  2. 紫色—压缩源文件目录区

    主要记录文件目录的相关信息,如注释、大小、文件名等等。同样包含所有被压缩文件的文件头(File Head),通常是以50 4B 01 02标识开头。中心目录区可能包含多个文件头。

    50 4B 01 02:目录中文件头标记(4 字节)

    14 00:压缩使用的paware版本(2字节)

    14 00:解压缩使用的paware版本(2字节)

    00 00:全局方式标记位(有无加密,有无伪加密的关键)(2字节)

  3. 黄色—目录结束标识

    主要记录压缩包开始分卷号开始的偏移量,主要决定文件的目录结构,以及压缩包的相关信息,以50 4B 05 06开头(只有一个)。

全局方式标记位

在上述两个全局方式标记位中,各自都用了4个数字来标识,其中只有第2个数字对加密有影响

[!IMPORTANT]

第2个数字为奇数时—>加密

第2个数字为偶数时—>未加密

辨别加密方式

  1. 无加密:

    压缩源文件数据区全局方式标记位为00 00

    压缩源文件目录区全局方式标记位为00 00

    如下图所示:

    example_no_passwords.zip
    example_no_passwords.zip

  2. 真加密:

    压缩源文件数据区全局方式标记位为09 00

    压缩源文件目录区全局方式标记位为09 00

    example_passwords.zip
    example_passwords.zip

  3. 伪加密:

    压缩源文件数据区全局方式标记位为00 00

    压缩源文件目录区全局方式标记位为09 00

example_fake.zip
example_fake.zip

修复方式和思路

  1. 无加密:不需要修复,直接查看内部文件或者解压即可

  2. 真加密:可以在Linux中使用fcrackzip进行密码爆破

  3. 伪加密:

    • 一种方式是根据上述ZIP文件的结构,对被修改的伪加密全局方式标记位进行修改,使用010editor查看并修改

    • 另外一种方式是,可以使用诸多压缩解压工具提供的修复压缩包工具,有一定概率可以自动修复成功,去除伪加密

此外,上述只是针对ZIP文件的伪加密修复方式,如果文件为RAR压缩,则使用十六进制编译器打开RAR文件,找到第24个字节,该字节位数为4表示加密,0表示无加密,将尾数改为0即可破解伪加密。

  • 标题: CTF中ZIP伪加密压缩文件分析
  • 作者: 耀鳞光翼
  • 创建于 : 2025-01-12 12:09:00
  • 更新于 : 2025-01-12 12:24:04
  • 链接: https://blog.lightwing.top/2025/01/12/fake_compression/
  • 版权声明: 本文章采用 CC BY-NC-SA 4.0 进行许可。
评论