一、前言

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

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

二、内容概要

往年进行ZIP已知明文功击,一般须要一个完整的明文文件。而本文讨论的功击方法只须要晓得加密压缩包内容的12个字节,即可进行功击破解增加了已知明文的功击难度。同时,结合各种已知的文件格式,更拓宽了ZIP已知明文功击的功击面。

三、正文3.1ZIP已知明文功击的通常借助

往年出现在网路安全大赛中的已知明文功击考点,或则大部份网上的文章linux系统命令,都须要晓得加密zip文件中的一个完整明文文件而且要求明文以相同的标准被压缩,这才有可能会功击成功。

虽然传统的已知明文功击要成功须要三个条件,在此我将条件列下来:

完整的明文文件

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

明文对应文件的加密算法须要是ZipCryptoStore

第三点是我们实际应用中往往会被忽视的。因大赛中遇见的题目,都是提早设置好的。

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

已知明文攻击和选择明文攻击_已知明文攻击是指_linux加密打包命令 zip

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

ZipCryptoDeflate

ZipCryptoStore

AES-256Deflate

AES-256Store

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

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

3.2ZIP已知明文功击的深入借助

本文要阐述的功击方式并不须要晓得压缩文件中完整的明文,只需在已知加密压缩包中的少部份明文字节时即可进行功击破解。而各种文件都有其自身固定的文件格式,结合这类格式,极大扩充了ZIP明文功击的功击面。

具体要求如下:

起码已知明文的12个字节及偏斜,其中起码8字节须要连续。

明文对应的文件加密方法为ZipCryptoStore

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

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

3.2.1使用到的工具项目

bkcrack:

bkcrack安装:

aptinstallcmake-y

cmake.

make//在src下生成bkcrack文件

cpbkcrack/usr/sbin/bkcrack//作为系统命令使用

bkcrack常用参数:

-c提取的密文部份

-p提取的明文部份

-x压缩包内目标文件的偏斜地址部份已知明文值

-C加密压缩包

-ooffset-p参数指定的明文在压缩包内目标文件的偏斜量

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

3.3实操案例

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

3.3.1加密文本破解

文本类文件被加密成zip时,有很大的机率以ZipCryptoStore方法加密储存。

创建加密zip:

生成uuid,将字符串“flag{16e371fa-0555-47fc-b343-74f6754f6c01}”保存为flag.txt。之后用360压缩将文件添加为加密ZIP:flag_360.zip

功击破解:

采用8+4的方法提取部份已知明文来进行功击测试,

flag{16e371fa-0555-47fc-b343-74f6754f6c01}

我们借助以下这部份明文linux加密打包命令 zip,来进行功击破解:

*lag{16e3********************74f6********

——————————————————————————————————————-

#打算已知明文

echo-n”lag{16e3″>plain1.txt//连续的8明文

echo-n”74f6″|xxd//额外明文的十六补码格式,37346636

#功击

bkcrack-Cflag_360.zip-cflag.txt-pplain1.txt-o1-x2937346636

#因为时间较长,为避免终端终端造成破解中断,可以加点小方法

bkcrack-Cflag_360.zip-cflag.txt-pplain1.txt-o1-x2937346636>1.log&//后台运行,结果存入1.log

//加上time参数便捷估算爆破时间

timebkcrack-Cflag_360.zip-cflag.txt-pplain1.txt-o1-x2937346636>1.log&

//查看爆破进度

tail-f1.log

——————————————————————————————————————-

注:·-p指定的明文不须要转换,-x指定的明文须要转成十六补码

·提到的偏斜都是指“已知明文在加密前文件中的偏斜”。

已知明文攻击和选择明文攻击_linux加密打包命令 zip_已知明文攻击是指

长达近16分钟,成功得到密钥,这不是压缩包的加密密码,而是ZIP内部的三段密钥。

已知明文攻击是指_已知明文攻击和选择明文攻击_linux加密打包命令 zip

b21e5df4abab99aa943094308c336475

使用该密钥进行揭秘:

bkcrack-Cflag_360.zip-cflag.txt-kb212121ee55dfdfdf4abab99aa943094308c336475-dflag.txt

3.3.2借助PNG图片文件头破解

PNG文件头:

89504E470D0A1A0A0000000D49484452

满足,12个字节的要求。拿一张图片和一个flag.txt一起打包成加密ZIP压缩包:png4.zip

linux加密打包命令 zip_已知明文攻击是指_已知明文攻击和选择明文攻击

功击破解:

——————————————————————————————————————-

#打算已知明文

echo89504E470D0A1A0A0000000D49484452|xxd-r-ps>png_header

#功击

timebkcrack-Cpng4.zip-c2.png-ppng_header-o0>1.log&

tail-f1.log

——————————————————————————————————————-

历时近7分钟破解出密钥:e0be8d5d70bb31407e983fff

已知明文攻击是指_linux加密打包命令 zip_已知明文攻击和选择明文攻击

借助密钥揭秘文件:

bkcrack-Cpng4.zip-cflag.txt-ke0be8d5d70bb31407ee983983fff-dflag.txt

3.2.3借助压缩包格式破解

将一个名为flag.txt的文件打包成ZIP压缩包后,你会发觉文件名称会出现在压缩包文件头中,且偏斜固定为30。且默认情况下,flag.zip也会作为该压缩包的名称。

所以linux加密打包命令 zip,当一个加密压缩包中存在另一个ZIP压缩包时,且还能晓得或猜想该压缩包内的文件名称时,可以尝试进行已知明文功击。

将flag.zip与其他文件(选用一张图片)一起用快压打包成加密ZIP压缩包:test5.zip

已知的明文片断有:

·“flag.txt”8个字节,偏斜30

·ZIP本身文件头:504B0304,4字节

8+4,满足了破解的最低要求

功击:

————————————————————————————————————

echo-n”flag.txt”>plain1.txt//-n参数防止换行,不然文件中会出现换行符,造成功击失效

timebkcrack-Ctest5.zip-cflag.zip-pplain1.txt-o30-x0504B0304>1.log&

tail-f1.log

————————————————————————————————————-

得到密钥:

b21e5df4abab99aa943094308c336475

已知明文攻击是指_已知明文攻击和选择明文攻击_linux加密打包命令 zip

借助密钥揭秘:

bkcrack-Ctest5.zip-cflag.zip-kb212121ee55dfdfdf4abab99aa943094308c336475-dflag.zip

flag.zip可以直接成功揭秘。

但若果揭秘2.png,因为是ZipCryptodeflate加密的,所以揭秘后须要bkcrack/tool内的inflate.py脚本再度处理。

—————————————————————————————————————-

bkcrack-Ctest5.zip-c2.png-kb212121ee55dfdfdf4abab99aa943094308c336475-d2.png

python3inflate.py2_out.png

—————————————————————————————————————-

3.2.4EXE文件格式破解

EXE文件默认加密情况下linux系统应用,不太会以store形式被加密,但它文件格式中的的明文及其显著,宽度足够。假如加密ZIP压缩包出现以store算法储存的EXE格式文件,很容易进行破解。

大部份exe中都有这相同一段,且偏斜固定为64:

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

功击破解:

————————————————————————————————————--

#打算明文

echo-n”0E1FBA0E00B409CD21B8014CCD270726F6772616D2063616E6E6F7426E20696E20444F53206D6F64652E0D0D0A2000″|xxd-r-ps>mingwen

#功击

timebkcrack-Cnc64.zip-cnc64.exe-pmingwen-o64>1.log&

#查看进度

tail-f1.log

———————————————————————————————————

很快就解出了密钥:

linux加密打包命令 zip_已知明文攻击是指_已知明文攻击和选择明文攻击

linux加密打包命令 zip_已知明文攻击是指_已知明文攻击和选择明文攻击

b21e5df4abab99aa943094308c336475

揭秘:

bkcrack-Cnc64.zip-cnc64.exe-kb212121ee55dfdfdf4abab99aa943094308c336475-dnc64.exe

3.2.5流量包pcapng格式揭秘

这个有例题:垂钓城杯-量子加密

具体格式介绍及解法参考官方的writeup,已打包在附件中

已知明文攻击是指_linux加密打包命令 zip_已知明文攻击和选择明文攻击

加密算法都是Store

选用第二段文件头格式:

00004D3C2B1A01000000FFFFFFFFFFFFFFFF

功击:

——————————————————————————————————

echo-n”00004D3C2B1A01000000FFFFFFFFFFFFFFFF”|xxd-r-ps>pcap_plain1

timebkcrack-C3.zip-ccapture.pcapng-ppcap_plain1-o6

———————————————————————————————————-

揭密:

bkcrack-C3.zip-ccapture.pcapng-ke33a580cc0c96a811246d892-dout.pcapng

3.2.6网站相关文件破解

网站目录中参杂着大量类型的文件,哪怕被打包成加密ZIP,也很容易找到突破口。

比如:

robots.txt的文件开头内容一般是User-agent:*

html文件开头一般是

xml文件开头一般是

在此以web.xml为例,web.xml是网路程序中的一个很重要的配置文件。

常见xml文件头为:

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

已知明文攻击和选择明文攻击_已知明文攻击是指_linux加密打包命令 zip

功击:

———————————————————————————————————-

echo-n''>xml_plain

timebkcrack-Cxml.zip-c123/web.xml-pxml_plain-o0//注意相对路径

———————————————————————————————————-

功击成功:

揭密:

bkcrack-Cxml.zip-c123/web.xml-ke0be8d5d70bb31407ee983983fff-dweb.xml

3.2.7SVG文件格式破解

xml格式的文件不仅.xml以外,也包括.svg文件。SVG是一种基于XML的图象文件格式。

已知明文攻击和选择明文攻击_已知明文攻击是指_linux加密打包命令 zip

功击:

————————————————————————————————————-

//已知明文

echo-n'plain.txt

bkcrack-Csecrets.zip-cspiral.svg-pplain.txt-o0

———————————————————————————————————--

功击成功:

linux加密打包命令 zip_已知明文攻击是指_已知明文攻击和选择明文攻击

揭秘:

————————————————————————————————————

//揭秘Store算法直接揭秘即可

bkcrack-Csecrets.zip-cspiral.svg-kc4038591d55ffff449449dd3b0c696-dspiral_deciphered.svg

//揭秘deflate算法

bkcrack-Csecrets.zip-cadvice.jpg-kc4038591d55ffff449449dd3b0c696-dadvice.deflate

//该文件使用了deflate算法压缩的,解码下来的是Deflate的数据流,因而须将其解压缩。

python3inflate.pyadvice.jpg

————————————————————————————————————--

四、结尾4.1结语

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

4.2注意点

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

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

有时会出现功击得到了密钥,却未能揭秘正确文件的情况

存在rbkcrack项目,降低了部份支持

4.3附件下载

链接:

提取码:t2y4

4.4参考文章

文章转自:FreeBuf.COM-光通天下无患实验室BlusKing

Author

这篇优质的内容由TA贡献而来

刘遄

《Linux就该这么学》书籍作者,RHCA认证架构师,教育学(计算机专业硕士)。

发表回复