ZIP明文攻击
免责声明
本文档仅供学习和研究使用,请勿使用文中的技术源码用于非法用途,任何人造成的任何负面影响,与本人无关.
相关工具
- archpr(Advanced Archive Password Recovery)
- keyunluo/pkcrack
- kimci86/bkcrack
wget https://github.com/kimci86/bkcrack/releases/download/v1.3.1/bkcrack-1.3.1-Linux.tar.gz tar -zxvf bkcrack-1.3.1-Linux.tar.gz cp bkcrack-1.3.1-Linux/bkcrack /usr/sbin/bkcrack bkcrack -h
点击关注,共同学习!
安全狗的自我修养
https://github.com/haidragon
ZIP 的加密算法
ZIP 的加密算法大致分为两种 ZipCrypto 和 AES-256, 各自又分 Deflate 和 Store。
- ZipCrypto Deflate
- ZipCrypto Store
- AES-256 Deflate
- AES-256 Store
ZipCrypto 算是传统的 zip 加密方式。
只有使用 ZipCrypto Deflate /Store 才可以使用 ZIP 已知明文攻击进行破解。
AES256-Deflate/AES256-Store 加密的文件不适用于明文攻击。
ZIP 明文攻击的条件
至少已知明文的 12 个字节及偏移,其中至少 8 字节需要连续。
明文对应的文件加密方式为 ZipCrypto Store
比较特殊的明文攻击案例
在知道目标文件部分连续明文的情况下,去爆破密钥
例如 flag.txt
flag{4d6ba874-881d-4c04-b7c3-5e974b81e86a
加密成 flag.zip 加密时注意使用 Deflate 压缩方法,ZipCrypto 加密算法
给出部分连续明文
flag{4d6ba874-881d-4c0
采用 bkcrack 进行爆破
echo "flag{4d6ba874-881d-4c0" > plain1.txt
bkcrack -C flag.zip -c flag.txt -p plain1.txt
# 爆破得到zip的密钥如下
1b10db88 4b87405b 0a41939c
利用密钥进行解密
bkcrack -C flag.zip -c flag.txt -k 1b10db88 4b87405b 0a41939c -d flag1.txt
cat flag1.txt
如果是已知部分且不连续可以采用 -o 偏移量参数组合使用
bkcrack -C flag.zip -c flag.txt -p plain1.txt -o 1 -x 29 37346636
# -c 提取的密文部分
# -p 提取的明文部分
# -x 压缩包内目标文件的偏移地址 部分已知明文值
# -C 加密压缩包
# -o offset -p参数指定的明文在压缩包内目标文件的偏移量
Source & Reference
点击关注,共同学习!
安全狗的自我修养