返回上一页

CTF压缩包加密破解总结

提问时间:2020-11-13 22:00
共1个精选答案
开心软件网
开心软件网 2020-11-13 22:00
最佳答案

mac 解压软件 显示crc_mac 解压软件 显示crc

加密zip包基本上只有三条思路:伪加密,爆破,明文思路

1.zip加密暴力破解、字典破解

ZIP压缩方式支持密码加密。加密的时候会在文件头部保存密钥相关信息。fcrackzip是Kali自带的一款工具。它支持暴力破解和字典破解两种模式。

该工具只支持ZIP压缩文件,不支持RAR压缩文件。因为这两种文件使用不同的压缩算法。

 目录
隐写篇
0x01. 通过进制转换隐藏信息
0x02. 在图片中隐藏压缩包(图种)
加密篇
0x03. 伪加密
0x04. 爆破/字典/掩码攻击
0x05. 明文攻击
0x06. CRC32碰撞
格式篇
0x07. 修改格式

0x01. 通过进制转换隐藏信息

这种方法比较简单,直接拿一道题讲解(题目来自ISCC 2017 Basic-04)。题目给了一个txt文档如下图

在这里插入图片描述

经过观察,所有数据都在16进制能表示的范围之内,因此先尝试使用十六进制编码解密,python脚本如下:

在这里插入图片描述

运行结果如下,虽然存在大量乱码,但还是能看到flag.txt,因此猜测txt中的这段字符是zip包的16进制表示(同时开头的PK也暗示这是一个zip包,PK是zip格式发明者Phil Katz的名称缩写,zip的前两个字母就用了PK)

在这里插入图片描述

将此16进制文件导入到16进制编辑器中,这里用010editor做演示

在这里插入图片描述

导入后选择 Save As(快捷键 ctrl + shift + s),给新文件命名时加上后缀.zip,保存后发现zip文件是正常的,因此证明思路正确,

另:除了16进制的编码转换,有时还会遇到2进制编码的转换,思路相同,不再复述

0x02. 在图片中隐藏压缩包(图种)

这种方法大概是zip中最常见的,多用于在一张图片中隐藏一个压缩包,这种方法的原理是:以jpg格式的图片为例,一个完整的 JPG 文件由 FF D8 开头,FF D9结尾,图片浏览器会忽略 FF D9 以后的内容,因此可以在 JPG 文件中加入其他文件。

也以一道题为例为例(ISCC 2017 Basic-07),对于这种隐写最简单的方法是使用Kali下的binwalk进行检测,binwalk 图片名 如下,检测出图片中存在压缩包

在这里插入图片描述

分离这个压缩包利用Linux下的foremost工具, foremost 图片名 如下,foremost默认的输出文件夹为output,在这个文件夹中可以找到分离出的zip(推荐使用这种方法,因为foremost还能分离出其他隐藏的文件)

mac 解压软件 显示crc_mac 解压软件 显示crc

另:本题后续步骤为构造字典,爆破握手包

0x03. 伪加密

Zip伪加密与zip的文件格式有关(zip的格式详解请翻到本文的最后0x07部分),zip中有一位是标记文件是否加密的,如果更改一个未加密zip包的加密标记位,那么在打开压缩包时就会提示该文件是加密的。

对于伪加密有以下几种方法:

1.在Mac OS及部分Linux(如Kali)系统中,可以直接打开伪加密的zip压缩包

2.使用检测伪加密的ZipCenOp.jar,解密后如果能成功打开zip包,则是伪加密,否则说明思路错误

3. 使用16进制编辑器改回加密标记位

以HBCTF的一道题讲解这几种方法:

在这里插入图片描述

如上,尝试解压压缩包时提示有密码,根据题干:比爆破更好的方法推测为伪加密,用三种方法来解此题:

1.用除windows外的系统直接打开压缩包

在Mac OS和部分Linux系统(如Kali)中,右键解压可直接打开伪加密的zip压缩包,笔者暂未明确何种Linux能打开伪加密压缩包,如有传授,不胜感激!

2.使用ZipCenOp.jar(需java环境) 使用方法