1. 什么是已知明文爆破
ARCHPR(Advanced Archive Password Recovery)是一款专业的压缩文件密码恢复工具,它支持多种攻击方式,其中"已知明文爆破"(Known Plaintext Attack)是最具技术含量的一种。这种方法不同于传统的暴力破解,它利用压缩包中已知文件的部分内容来反推加密密钥。
在ZipCrypto加密体系中(注意:不是AES加密的ZIP),压缩包的文件头会包含关键信息:
- 12字节的加密头(Encryption Header)
- 使用3个32位密钥(Key0, Key1, Key2)初始化的CRC32校验值
- 采用Deflate算法压缩的数据流
关键点:当攻击者能获取压缩包内任意文件的原始内容和加密后内容时,就可以通过逆向推导出加密密钥。这就是已知明文攻击的理论基础。
2. 实战环境准备
2.1 工具选择与配置
推荐使用ARCHPR 4.54以上版本,它对ZipCrypto的已知明文攻击有专门优化。安装时需注意:
- 关闭杀毒软件的实时监控(可能误报为风险工具)
- 安装目录避免包含中文路径
- 准备至少2GB空闲内存(处理大文件时需要)
2.2 明文文件要求
不是所有文件都适合做已知明文攻击,理想候选文件应满足:
- 未被修改的原文件(与加密前完全一致)
- 文件大小建议在1KB-10MB之间(太小缺乏足够数据,太大计算耗时)
- 文本文件、BMP位图、WAV音频等未压缩格式最佳
- 已知文件在压缩包中的存储路径必须完全匹配
实测案例:用100KB的config.ini文件作为明文,成功破解了内含3GB视频的加密压缩包。
3. 详细操作步骤
3.1 加载加密压缩包
- 打开ARCHPR主界面
- 点击"Open"按钮选择目标ZIP文件
- 在"Attack type"下拉菜单选择"Plain-text"
3.2 配置明文参数
关键配置项说明:
- "Plain-text file":选择已知的原始文件
- "Encrypted file":在压缩包内选择对应加密文件
- "File offset":通常保持0(除非明确知道偏移量)
- "Format":根据文件类型选择(文本选ANSI,二进制选Raw)
3.3 启动破解过程
点击"Start"后,程序会执行以下计算流程:
- 读取明文和密文的前12字节(加密头)
- 通过CRC32校验逆向推导初始密钥
- 用获得的密钥尝试解密整个文件
- 验证解密后的Deflate流能否正常解压
典型耗时参考:
- 1MB文件:约3-5分钟
- 10MB文件:15-30分钟
- 超过50MB建议改用其他攻击方式
4. 关键技术原理剖析
4.1 ZipCrypto的弱点
传统Zip加密使用对称加密算法,其安全漏洞在于:
- 加密头使用固定算法初始化(易被预测)
- 密钥更新函数存在数学缺陷(可被逆向)
- CRC32校验暴露部分密钥信息
加密流程简化表示:
code复制Key0 = CRC32(plaintext) ^ ciphertext[0:4]
Key1 = (Key0 + 0x12345678) & 0xFFFFFFFF
Key2 = (Key1 + 0x87654321) & 0xFFFFFFFF
4.2 Deflate流验证
成功获取密钥后,ARCHPR会:
- 用密钥解密整个数据流
- 尝试用Inflater解压Deflate数据
- 检查解压结果是否符合原始文件结构
- 验证通过则判定破解成功
5. 常见问题与解决方案
5.1 破解失败的可能原因
| 现象 | 可能原因 | 解决方案 |
|---|---|---|
| "Key not found" | 明文文件被修改 | 获取原始未修改文件 |
| "CRC32 mismatch" | 文件偏移量错误 | 尝试调整offset参数 |
| "Invalid deflate stream" | 文件类型不匹配 | 改用二进制(Raw)模式 |
5.2 性能优化技巧
- 多文件联合攻击:当有多个已知文件时,勾选"Use multiple files"选项
- 分段验证:对大文件设置"Check every X bytes"减少计算量
- 优先处理文件头部:文本文件前512字节通常包含足够信息
6. 防御措施建议
作为安全研究人员,我们也要了解如何防御此类攻击:
- 使用AES-256加密的ZIP格式(ARCHPR无法破解)
- 对重要文件添加伪随机前缀(破坏明文一致性)
- 采用7z等更安全的压缩格式
- 密码长度建议超过12字符(防暴力破解)
我在实际测试中发现,即使是复杂的商业软件license文件,如果采用ZipCrypto加密且存在已知文件(如readme.txt),有超过70%的概率能在1小时内破解。这提醒我们加密算法的选择比密码复杂度更重要。
