1. 引言

在数字世界中,安全威胁层出不穷。常见的威胁包括病毒、木马、拒绝服务攻击(DoS)、中间人攻击等。这些攻击的目标各不相同,有的旨在修改系统配置,有的让系统无法访问,有的则试图窃取数据。

但还有一类威胁,它们的目标是拖慢甚至瘫痪系统,从而让系统更容易受到其他攻击,或者造成更大的破坏。Zip 炸弹(Zip Bomb) 就是这类攻击的代表。

Zip 炸弹,也被称为解压炸弹(Decompression Bomb)或“死亡之 ZIP”,是一种利用 ZIP 压缩特性来触发系统崩溃的恶意文件。

在本教程中,我们将深入了解 Zip 炸弹的原理,包括它是如何构造的,又是如何被用于攻击的。

我们会先简要回顾 ZIP 压缩的基本原理,接着介绍 Zip 炸弹的核心机制,最后探讨攻击者是如何实际使用这种攻击方式的。


2. ZIP 压缩原理

压缩文件的本质是对数据进行重新编码,以减少其占用的字节数。压缩效果主要取决于两个因素:

  • 压缩算法
  • 文件的熵(Entropy)

2.1. 压缩基础概念

熵可以理解为数据的“混乱程度”。高熵文件数据随机性强,模式难以识别;低熵文件则数据重复性高,容易找到压缩空间。

压缩器在处理低熵文件时通常能获得较高的压缩率。对于高熵文件,压缩器会采用各种策略来提高效率,比如:

  • 利用数据频率
  • 重组数据结构
  • 针对特定文件类型优化

有些压缩器还会使用熵减少技术,先对数据进行预处理,使其更容易压缩。

2.2. ZIP 压缩方法

ZIP 压缩的核心算法源自 Lempel-Ziv(LZ)算法。该算法通过滑动窗口构建字典,查找重复数据并用偏移量和长度替代原始内容。

以下是一个 LZ 压缩的伪代码示例:

algorithm LZCompression(input):
    // INPUT
    //    input = 待压缩的字节流
    // OUTPUT
    //    压缩后的字节流

    Create an empty dictionary
    P <- the first byte of the input
    Insert P in the dictionary with code 0

    for C in input, except the first byte:
        if P + C in the dictionary:
            P <- P + C
        else:
            if P not in the dictionary:
                Insert P into the dictionary with the next code

            Write the code for P in the compressed file
            Insert P + C to the dictionary with the next code
            P <- C

    Write the code for P in the compressed file

LZ 算法在数据重复性强(低熵)时压缩效果最佳。例如,一个 10 字节滑动窗口的 LZ 压缩示意图如下:

LZ

ZIP 压缩器在 LZ 基础上进一步优化,遵循 DEFLATE 标准。因此,一个低熵的大文件可以被压缩成非常小的 ZIP 文件。


3. Zip 炸弹攻击

Zip 炸弹攻击的核心思想是:利用 ZIP 压缩特性构造出体积极小但解压后体积极大的恶意文件,从而在解压过程中消耗大量系统资源(CPU、内存、磁盘),最终导致系统崩溃。

攻击者通常希望 ZIP 炸弹在解压时迅速耗尽内存,使目标系统宕机。不过,也有攻击者设计 ZIP 炸弹来破坏文件系统,而不是单纯消耗内存。

我们从两个方面来看 ZIP 炸弹的攻击方式:文件构造和攻击手段。

3.1. ZIP 炸弹文件构造

ZIP 炸弹的构造方式多种多样,攻击者会根据 ZIP 压缩特性设计出体积最小、破坏力最强的文件。常见的 ZIP 炸弹类型包括:

多层嵌套型(Multi-layered)

  • ZIP 文件中嵌套多层 ZIP 文件
  • 最终解压出一个超大低熵文件
  • 著名例子:42.zip

单层压缩型(Single-layered)

  • 一个 ZIP 文件中包含多个低熵文件
  • 利用压缩算法达到极致压缩率
  • 示例:zbsm, zblg, zbxl

自复制型(Self-replicating)

  • 解压后会自我复制,形成递归膨胀
  • 技术复杂,依赖特定数据结构
  • 示例:r.zip

不同类型的 ZIP 炸弹需要不同的攻击条件和利用方式。

3.2. ZIP 炸弹攻击方式

光有 ZIP 炸弹文件还不够,攻击者还需要让目标系统执行解压操作。常见的攻击方式包括:

诱导受害者手动解压

  • 将 ZIP 炸弹伪装成正常文件(如文档、图片)
  • 通过社交工程诱导用户点击解压

利用程序自动解压机制

  • 某些程序(如杀毒软件、邮件网关、浏览器)会自动解压上传或下载的 ZIP 文件
  • 攻击者上传 ZIP 炸弹后,系统自动解压导致资源耗尽

结合恶意软件执行

  • 先感染目标系统,植入恶意程序
  • 自动遍历系统中所有 ZIP 文件并强制解压

⚠️ 注意:不同类型的 ZIP 炸弹适合不同的攻击方式。例如,多层 ZIP 炸弹不适合诱导用户手动解压,因为需要多次解压才能触发最终爆炸。


4. 总结

本教程我们深入探讨了 ZIP 炸弹的原理与攻击方式。

我们首先回顾了 ZIP 压缩的基本机制,特别是 Lempel-Ziv 算法如何利用低熵数据实现高压缩率。接着我们了解了 ZIP 炸弹的构造方式,以及攻击者如何利用系统自动解压机制或诱导用户触发解压过程。

虽然 ZIP 文件本身并非恶意,但其压缩特性被攻击者利用,成为一种有效的攻击手段。

因此,作为开发人员或系统管理员,在处理压缩文件时应保持警惕,尤其要防范自动解压流程中的潜在风险。


原始标题:How Does a Zip Bomb Work?