前言

在工作上遇到一个客户的前供应商导出的文件是加密的,然后需要对其进行解密.我当时就懵逼了…

用notepad++打开看到是7z格式的加密文件,我感觉就可能破解不出来了,7zip使用的是AES256加密算法(Advanced Encryption Standard)高级加密标准,截至2006年,针对AES唯一的成功攻击是旁道攻击或社会工程学攻击.两者都是非暴力破解方式,难度系数较高,简而言之,前者就是绕开密码攻击密码系统或者其他漏洞,而后者就是分析人类习惯,从人的社会习惯等除法寻求密码.

虽然遇到这么一个坑事,但还是尽力去做的,就当时提升自己吧!所以就有了这一篇博文,mark一下我在解决(程序还在跑)的过程.

准备破解

解决这样的问题,对于我来说目前只能通过暴力的方式破解,社会工程学破解就是使用人类常用密码进行字典枚举,第二个方式就是限定字符的排列组合进行穷举(不推荐,效率低,浪费电)

我在破解过程中收集了几款软件,这里分别记录下相关的用法和分析下优缺点.

  1. RARcrack
  2. 7zcracker
  3. Hashcat
  4. 自己写脚本
  5. ARCHPR

使用方法

RARcrack

RARCrack是简单穷举方式暴力破解的,可以编写xml文件使得破解范围变小,可以限定使用的字符以及密码长度,它是linux环境的下软件所以需要在linux环境下运行,刚好我手头有一台服务器就用来跑这个了,超过6位数的密码,在没限定条件下几乎无法破解.(26+26+10)的六次方有56,800,235,584排列组合, 所以在不推荐用于没有任何密码提示的情况下使用,如字符长度和字符限制以及字符占位等等.

简单说下如何安装使用吧!
安装环境:

Software requirements:
> glibc 2.4
any POSIX compatible operating system [sorry Window$ isn't]
pthreads
libxml2
and finally: 7zip, unrar, unzip

安装步骤:

$ tar -xjf rarcrack-VERSION.tar.bz2
$ cd rarcrack-VERSION
// you need gcc or any C compiler (edit Makefile CC=YOUR_C_COMPILER)
$ make
// you must be root in next step:
$ make install

使用命令

rarcrack your_encrypted_archive.ext [--threads thread_num] [--type rar|zip|7z]

如: rarcrack pojie.7z --threads 10 --type 7z

RARcrack进阶

<?xml version="1.0" encoding="UTF-8"?>
<rarcrack>
<abc>0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ</abc>
 <current>uU</current>
 <good_password></good_password>
</rarcrack>

编写自定义的xml文件可以缩减密码范围,加快破解速度,标签abc是指定破解密码的字符范围,current标签是指当前密码前缀或者使用0进行占位表示密码由多少位数开始.此外xml文件名相同放在破解目录下,如破解的是test.7z那么xml文件名就是test.7z.xml

优点: 就是简单,易上手,支持多线程,当你记得部分密码或者记得密码长度时是一个不错的工具.

缺点: 也是很明显,就是比较笨,不支持配置字典进行破解,在没有任何配置情况下就是蛮力破解,浪费电呀!

推荐指数: ☆☆☆

7zcracker

7zcracker是内置了简单的字典进行破解的,当超出字典就会采用蛮力破解,它是windows下的软件,使用cmd命令行启动.

从网上下载7zcracker,进行解压,进入目录运行7zcracker.exe 输入需要破解的文件路径.等待即可 .

优点: 非常简单,不需要任何知识即可上手,可破解比较简单的密码.

缺点: 不支持多线程,不支持字典配置,不支持密码配置,是简单带来的坏处.

推荐指数: ☆☆☆

Hashcat

hashcat号称世界上最快的密码破解,世界上第一个和唯一的基于GPGPU规则引擎,免费多GPU(高达128个GPU),多哈希,多操作系统(Linux和Windows本地二进制文件),多平台(OpenCL和CUDA支持),多算法,资源利用率低,基于字典攻击,支持分布式破解等等,目前最新版本为4.01,下载地址,hashcat目前支持各类公开算法高达247类,市面上面公开的密码加密算法基本都支持!hashcat系列软件在硬件上支持使用CPU、NVIDIA GPU、ATI GPU来进行密码破解。在操作系统上支持Windows、Linux平台,并且需要安装官方指定版本的显卡驱动程序,如果驱动程序版本不对,可能导致程序无法运行。NVIDIA users GPU破解驱动需要ForceWare 331.67以及更高版本,AMD 用户则需要Catalyst 14.9以及更高版本,可以通过Catalyst 自动侦测和下载检测工具来检测系统应该下载那个版本,下载地址,选择合适的版本安装即可。其官方github 网站地址

因为我是破解7z需要下载7zhash生成工具philsmd/7z2hashcat

Sample:
$ 7z2hashcat64-1.2.exe "file.7z" > hash.txt
$ hashcat64 -h
$ hashcat64 -m 11600 -a 0 hash.txt wordlist.txt -r rules/best64.rule

首先生成7z文件hash,然后执行破解程序,wordlist.txt为字典,使用hashcat需要注意系统温度,避免高温烧坏电脑.

优点: 支持复杂的密码破解,支持gpu加速,破解效率高

缺点: 工具使用复杂,需要较强的专业知识,是专业的hacker工具

更多请参考:hashcat wiki

推荐指数: ☆☆☆☆

自己编写脚本

这个灵活性比较高,看个人code的能力,一般也是利用相关字典进行简单的破解,主要定制化程度高.

这里我贴一段Python的代码:

#!/usr/bin/env python2
import os,sys

f = open(sys.argv[1],'r')
lines = f.read().splitlines()

for line in lines:
    x = os.system('7z e {0} -p{1}'.format(sys.argv[2],line))
    if x == 0:
        print ('[~] Password is : {0}\n\n'.format(line))
        exit(1)

print ('[!] Password not found in the provided list!\n\n')
$easy.py <passwords-file> <7z-file-to-bruteforce>

文件使用绝对路径,使用7z命令,需要先将7z加入到path路径下.

优点: 定制化程度高,灵活性程度高,效率与个人code能力成正比,可随意配置字典以及修改代码

缺点: 单线程,效率较低

笔者重新写了一个版本,一般破解会有多个字典,直接使用字典所在文件夹作为参数,递归自动遍历所有字典.

#!/usr/bin/env python2
import os
import sys


def traversingFolder(path, crack_file):
    files = os.listdir(path)
    for file in files:
        file = os.path.join(path, file)
        if os.path.isdir(file):
            if not os.listdir(file):
                continue
            else:
                traversingFolder(file, crack_file)
        else:
            doCheck(file, crack_file)


def doCheck(filepath, crack_file):
    lines = open(filepath, 'r').read().splitlines()

    for line in lines:
        x = os.system('7z e {0} -p{1}'.format(crack_file, line))
        if x == 0:
            print('[~] Password is : {0}\n\n'.format(line))
            exit(1)


traversingFolder(sys.argv[1], sys.argv[2])
print('[!] Password not found in the provided list!\n\n')

运行命令:

$easy.py <passwords-dir> <7z-file-to-bruteforce>

代码地址

这里附一个爆破密码地址:Blasting_dictionary

ARCHPR

这里额外说一下这款破解工具,本来是不需要的,因为不支持7z,但是由于其功能强大与方便,所以在这里mark一下.

ARCHPR 全程advanced rar password recovery,支持RAR和ZiP格式压缩的文件

下载地址

优点: 支持字典破解,支持字符长度范围调,支持明文破解

缺点: 不支持7z


 目录


买个卤蛋,吃根冰棒