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 压缩示意图如下:
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 文件本身并非恶意,但其压缩特性被攻击者利用,成为一种有效的攻击手段。
因此,作为开发人员或系统管理员,在处理压缩文件时应保持警惕,尤其要防范自动解压流程中的潜在风险。