当前位置:网站首页 > 网络安全培训 > 正文

ZIP已知明文攻击深入利用

freebuffreebuf 2020-11-18 320 0

本文来源:光通天下

一、前言

你加密的压缩包比你想象中的还不安全!

哪怕对于信息安全人员来说,很多时候给压缩包加上一个密码就以为的是万事大吉了。但事实是,很多情况下,你的加密压缩包,远远没有你想象的安全。

二、内容概要

以往进行ZIP已知明文攻击,通常需要一个完整的明文文件。 而本文讨论的攻击方式只需要知道加密压缩包内容的12个字节,即可进行攻击破解降低了已知明文的攻击难度。同时,结合各类已知的文件格式,更扩宽了ZIP已知明文攻击的攻击面。

三、正文

3.1 ZIP已知明文攻击的一般利用

以往出现在网络安全竞赛中的已知明文攻击考点,或者大部分网上的文章,都需要知道加密zip文件中的一个完整明文文件并且要求明文以相同的标准被压缩,这才有可能会攻击成功。

其实传统的已知明文攻击要成功需要三个条件,在此我将条件列出来:

完整的明文文件

明文文件需要被相同的压缩算法标准压缩(也可理解为被相同压缩工具压缩)

明文对应文件的加密算法需要是 ZipCrypto Store

第三点是我们实际应用中常常会被忽略的。因竞赛中遇到的题目,都是提前设置好的。

· AES256-Deflate/AES256-Store加密的文件不适用于明文攻击。

ZIP的加密算法大致分为两种ZipCrypto和AES-256,各自又分Deflate和Store。

ZipCrypto Deflate

ZipCrypto Store

AES-256 Deflate

AES-256 Store

ZipCrypto算是传统的zip加密方式。只有使用ZipCrypto Deflate /Store才可以使用 ZIP已知明文攻击进行破解。

传统的ZIP已知明文攻击利用,windows下可以使用AZPR,linux下可以使用pkcrack。

3.2 ZIP已知明文攻击的深入利用

本文要探讨的攻击方法并不需要知道压缩文件中完整的明文,只需在已知加密压缩包中的少部分明文字节时即可进行攻击破解。而各类文件都有其自身固定的文件格式,结合这类格式,极大扩展了ZIP明文攻击的攻击面。
具体要求如下:

至少已知明文的12个字节及偏移,其中至少8字节需要连续。

明文对应的文件加密方式为ZipCrypto Store

该方法对于ZIP加密的算法有要求,明文对应的文件加密方式需要为ZipCrypto Store。经测试,Winrar(v5.80)、7zip(v19.00)默认状态下加密使用的就是AES256算法,直接排除。360压缩(v4.0.0.1220)、好压(v6.2)使用的是ZipCrypto,不固定使用Store或Deflate(如果要固定使用ZipCrypto Store算法加密,可以在压缩的时候指定压缩方式为“存储”)。

以下破解用到的压缩包,都是经360压缩或者好压加密打包的。

3.2.1 使用到的工具项目
bkcrack:https://github.com/kimci86/bkcrack

bkcrack安装:
apt install cmake -y
cmake .
make     //在src下生成bkcrack文件
cp bkcrack /usr/sbin/bkcrack    //作为系统命令使用

bkcrack常用参数:

-c 提取的密文部分
-p 提取的明文部分
-x 压缩包内目标文件的偏移地址  部分已知明文值
-C 加密压缩包
-o offset  -p参数指定的明文在压缩包内目标文件的偏移量

在此我们不是“造轮子”,而是“使用轮子”,偏向于实操,利用已有的手段工具去解决现有的问题。话不多说,上实操案例。

3.3 实操案例

案例中演示的压缩包等,都可在文末附件中下载。

3.3.1 加密文本破解
文本类文件被加密成zip时,有很大的概率以ZipCrypto Store方式加密存储。
创建加密zip:
生成uuid,将字符串 “flag{16e371fa-0555-47fc-b343-74f6754f6c01}” 保存为flag.txt。然后用360压缩将文件添加为加密ZIP: flag_360.zip


攻击破解:
采用8+4的方式提取部分已知明文来进行攻击测试,
flag{16e371fa-0555-47fc-b343-74f6754f6c01}

我们利用以下这部分明文,来进行攻击破解:
*lag{16e3********************74f6********

-------------------------------------------------------------------------------------------------------------------
#准备已知明文
echo -n "lag{16e3" > plain1.txt   //连续的8明文
echo -n "74f6" | xxd             //额外明文的十六进制格式,37346636

#攻击
bkcrack -C flag_360.zip -c flag.txt -p plain1.txt -o 1 -x 29 37346636

#由于时间较长,为防止终端终端导致破解中断,可以加点小技巧
bkcrack -C flag_360.zip -c flag.txt -p plain1.txt -o 1 -x 29 37346636 > 1.log 2.png > 2_out.png
----------------------------------------------------------------------------------------------------------------

3.2.4 EXE文件格式破解

EXE文件默认加密情况下,不太会以store方式被加密,但它文件格式中的的明文及其明显,长度足够。如果加密ZIP压缩包出现以store算法存储的EXE格式文件,很容易进行破解。
大部分exe中都有这相同一段,且偏移固定为64:

生成一个加密EXE的ZIP压缩包进行测试:nc64.zip

攻击破解:
--------------------------------------------------------------------------------------------------------------
#准备明文
echo -n "0E1FBA0E00B409CD21B8014CCD21546869732070726F6772616D2063616E6E6F742062652072756E20696E20444F53206D6F64652E0D0D0A2400000000000000" | xxd -r -ps > mingwen

#攻击
time bkcrack -C nc64.zip -c nc64.exe -p mingwen -o64  >1.log!DOCTYPE html>
xml文件开头通常是?xml version="1.0" encoding="UTF-8"?>


在此以web.xml为例,web.xml 是网络程序中的一个很重要的配置文件。
常见xml文件头为:
?xml version="1.0" encoding="UTF-8"?>


网站目录肯定会涉及到多级目录,我们也同样进行模拟。在文件夹中创建一个二级目录“123”,并将一个web.xml放入该二级目录中,然后打包成加密ZIP。

攻击:
----------------------------------------------------------------------------------------------------------
echo -n '?xml version="1.0" encoding="UTF-8"?>' > xml_plain
time bkcrack -C xml.zip -c 123/web.xml -p xml_plain -o 0  //注意相对路径
----------------------------------------------------------------------------------------------------------
攻击成功:

解密:
bkcrack -C xml.zip -c 123/web.xml  -k e0be8d5d 70bb3140 7e983fff  -d web.xml

3.2.7 SVG文件格式破解
xml格式的文件除了.xml以外,也包括.svg文件。SVG是一种基于XML的图像文件格式。

攻击:
-------------------------------------------------------------------------------------------------------------
//已知明文
echo -n '?xml version="1.0" ' > plain.txt

bkcrack -C secrets.zip -c spiral.svg -p plain.txt -o 0
-----------------------------------------------------------------------------------------------------------
攻击成功:

解密:
------------------------------------------------------------------------------------------------------------
//解密 Store算法  直接解密即可
bkcrack -C secrets.zip -c spiral.svg -k c4038591 d5ff449d d3b0c696 -d spiral_deciphered.svg

//解密 deflate算法
bkcrack -C secrets.zip -c advice.jpg -k c4038591 d5ff449d d3b0c696 -d advice.deflate

//该文件使用了deflate算法压缩的,解码出来的是Deflate的数据流,因此须将其解压缩。
python3 inflate.py advice.deflate > advice.jpg
--------------------------------------------------------------------------------------------------------------

四、结尾

4.1 结语

以上这些案例只是给打击做个示范,打开大家的思路,实际可用的场景有许多。例如一些CTF题目压缩包的非预期解,或者网络上资源的破解。

4.2 注意点

已知的明文长度越长,破解速度越快

图片、文本格式文件、压缩包是最容易以store算法被加密打包的

有时会出现攻击得到了秘钥,却无法解密正确文件的情况

存在rbkcrack项目,增加了部分支持

4.3 附件下载

链接:https://pan.baidu.com/s/1fuuHYFHSU2e0eIAjO7FLfw
提取码:t2y4

4.4 参考文章

https://www.aloxaf.com/2018/10/zip_crack/
https://zhuanlan.zhihu.com/p/129855130

本文作者:光通天下无患实验室 BlusKing

转载请注明来自网盾网络安全培训,本文标题:《ZIP已知明文攻击深入利用》

标签:网络安全技术

关于我

欢迎关注微信公众号

关于我们

网络安全培训,黑客培训,渗透培训,ctf,攻防

标签列表