共计1044个字符,预计需要花费3分钟才能阅读完成。
作用
如果我们有一个加密的 ZIP 压缩包,并且知道里面的某些内容(如某个文件),那么我们可以根据这些内容进行已知明文的攻击,获得压缩包的密钥(相当于密码),得到压缩包里面的所有文件。
使用条件
-
必须为 ZIP 压缩包,其他格式不适用
-
ZIP 有两种加密方式:ZipCrypto 和 AES256。只适用于 ZipCrypto,不能用于 AES256。
现在的压缩软件大部分都采用了更先进的 AES256 加密方法,无法使用明文攻击。但 360 压缩、好压等等软件仍然在使用传统的 ZipCrypto 加密,为明文攻击提供了可能。
原理
早在 1994 年,ZIP 的加密算法 ZipCrypto 就已经被确定存在明文攻击的漏洞。 详情见论文,点这里。
攻击
我们有一个被加密的压缩包,已知里面的一个公告文件:
并且他的加密算法是 ZipCrypto,符合我们刚才所说的攻击条件。
我们先构造一个明文的压缩包,将公告文件压缩到里面,并且采用相同的压缩方式:
接着采用 bkcrack 工具进行破解, 点这里下载 。
选择自己的系统下载即可,如果无法访问 GitHub, 点这里直接下载 。
将这个软件解压出来,并把刚才的两个压缩包丢这个目录下。在这个文件夹开一个 cmd 窗口,输入命令:
# 加密.zip 是要攻击的压缩包文件名,公告.txt 是加密压缩包里面已知的文件。# 公告.zip 是刚才我们创建的压缩包,里面包含 公告.txt 这个明文文件。bkcrack -C 加密.zip -c 公告.txt -P 公告.zip -p 公告.txt
# Having a zip archive encrypted.zip with the entry cipher being the ciphertext and plain.zip with the entry plain as the known plaintext, bkcrack can be run like this:
bkcrack -C encrypted.zip -c cipher -P plain.zip -p plain
明文没有问题的话就成功获得了密钥 ffe9e9e9 d65f814a f3c468c9
。
接下来就是用这个密钥来解压所有文件,直接用密钥去除压缩包的密码:
# 加密.zip 是加密后的压缩包,ffe9e9e9 d65f814a f3c468c9 是刚才跑出来的密钥,解密.zip 是去除密码后的压缩包。bkcrack -C 加密.zip -k ffe9e9e9 d65f814a f3c468c9 -D 解密.zip
此时这个文件夹下多了个 解密.zip 的无密码的压缩包,直接解压即可:
至此为止一个压缩包的密码就被你破解啦!!!