背景
对加密的ZIP压缩包进行密码破解的方式有很多,网上也有很多文章,今天只介绍一种——JohnTheRipper。
JohnTheRipper
摘自百度百科:
John the Ripper,是一个快速的密码破解工具,用于在已知密文的情况下尝试破解出明文的破解密码软件,支持目前大多数的加密算法。如DES、MD4、MD5等。它支持多种不同类型的系统架构,包括Unix、Linux、Windows、DOS模式、BeOS和OpenVMS,主要目的是破解不够牢固的Unix/Linux系统密码。
其实JohnTheRipper的主要功能是破解经过加密的密码,这里简单的举个例子。
比如你在某网站的账户名是:abc123,密码是:password123。
用户名 | 密码 |
---|---|
abc123 | password123 |
网站是不可能明文保存你的密码password123的,它会对你的这个密码进行加密,比如储存password123的md5值(实际中不会这么简单,这里涉及到很多加密的知识,不做展开)。
实际储存的是:
用户名 | 密码 |
---|---|
abc123 | 7576f3a00f6de47b0c72c5baf2d505b0 |
这样即使该网站的数据库被黑了,黑客也不能反向推测出你的密码。
但是不可逆不代表不可破解,简单理解就是JohnTheRipper是一款可以通过你储存的这组hash值能够反向算出你的密码的软件。
ZIP破解
但是我们今天用到的是JohnTheRipper的另一个功能,破解ZIP文件。
fcrackzip
在介绍JohnTheRipper的使用前,顺便提一下fcrackzip,也是一款对ZIP文件进行暴力破解的软件,用法简单,但是早已不维护,而且效率远低于JohnTheRipper。不过我当时正是由fcrackzip才发现JohnTheRipper的,感谢这些真正牛逼的人为开源世界作出的贡献~~~
下面言归正传…
源码下载
下载地址:https://github.com/magnumripper/JohnTheRipper
git clone https://github.com/magnumripper/JohnTheRipper.git
安装依赖
编译前需要先安装依赖的库,我们可以先看官方安装说明:
The Jumbo versions requires OpenSSL 0.9.7 or later. To get all functionality
you need 1.0.1. For building, not only the run-time libs are needed but also
“devel” stuff like header files. This is often a separate package, so, e.g.,
for Ubuntu you need “libssl-dev” as well as “libssl”
A few helper tools need C++. Some helper tools are written in Python. A couple
helper tools (vncpcap2john and SIPdump) need libpcap. A couple of formats need
extra libraries in order to get included:
mozilla libnss
krb5-18/23 libkrb5
wowsrp libgmp (will build without it, but is slower then)
Again, you also need e.g. libnss-dev, libkrb5-dev and libgmp-dev in order to
build.
这里因为我需要的库都已经安装,就不另外写安装说明了,没有的库可以自行安装 。
ubuntu安装库的命令一般是:
apt-get install libxxx-dev
这样同时包含链接库和需要的头文件。
编译
这里演示的是最基本功能的编译,还有很多可配置项,具体可以阅读INSTALL文件。
cd JohnTheRipper-bleeding-jumbo
cd src
./configure && make -sj4
不出意外的话,很快就能编译完成,下面就是破解阶段了!
暴力破解
我们首先自己先创建一个有密码的zip压缩包,命名为target.zip
将target.zip拷贝至JohnTheRipper-bleeding-jumbo目录
这时候运行下面的代码:
./run/zip2john target.zip > hash
./run/john hash
下面就静静地等待密码破解即可!
比如我这次设的密码是shang
JohnTheRipper破解后显示的信息是:
0g 0:00:00:07 3/3 0g/s 21199p/s 21199c/s 21199C/s 123456
shang (target.zip)
1g 0:00:00:08 DONE 3/3 (2018-01-01 21:35) 0.1206g/s 23319p/s 23319c/s 23319C/s 123456..013355
需要注意的是,纯暴力破解的话8位以内的密码相对快一点,8位以上的话就基本很难了。
软件还有很多其他选项,比如使用字典,知道密码长度,给出密码的部分字符串加速等待。感兴趣的可以深入研究,毕竟JohnTheRipper功能非常强大,今天介绍的只是它很小的一个功能。