本帖最后由 a57595135a 于 2024-3-24 20:02 编辑
前言
笔者就以WPS Excel为例,演示下破解过程,操作系统使用的是Ubuntu 22.04桌面版。
准备工作
1、一个带密码的excel文档
2、如果你的机器没有独显,则安装OpenCL驱动
sudo apt update
sudo apt install intel-opencl-icd
3、如果是NVIDIA独显
(1)安装显卡驱动
sudo add-apt-repository ppa:graphics-drivers/ppa
sudo apt update
sudo apt search nvidia-driver
sudo apt install nvidia-driver-525 #选择一个合适的版本我这里选的是525
sudo reboot
安装好显卡驱动后命令行输入:
如果能正常输出类似下面的版本信息,则驱动安正确
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 525.125.06 Driver Version: 525.125.06 CUDA Version: 12.0 |
|-------------------------------+----------------------+----------------------+```
(2)安装CUDA Toolkit
根据上面显卡驱动输出的 CUDA Version 下载对应的CUDA Toolkit,如果版本不对则有可能不能正常运行,我这里就下载CUDA Toolkit 12.0版本,下载地址:
CUDA Toolkit
https://developer.nvidia.com/cuda-toolkit
CUDA Toolkit Download
https://developer.nvidia.com/cuda-downloads
CUDA Toolkit Archive
https://developer.nvidia.com/cuda-toolkit-archive
一步一步的选择你的CUDA版本以及系统版本后会显示安装命令,以下是ubuntu 22.04下cuda 12.0版本的安装命令:
wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2204/x86_64/cuda-ubuntu2204.pin
sudo mv cuda-ubuntu2204.pin /etc/apt/preferences.d/cuda-repository-pin-600
wget https://developer.download.nvidia.com/compute/cuda/12.0.0/local_installers/cuda-repo-ubuntu2204-12-0-local_12.0.0-525.60.13-1_amd64.deb
sudo dpkg -i cuda-repo-ubuntu2204-12-0-local_12.0.0-525.60.13-1_amd64.deb
sudo cp /var/cuda-repo-ubuntu2204-12-0-local/cuda-*-keyring.gpg /usr/share/keyrings/
sudo apt-get update
sudo apt-get -y install cuda
设置环境变量:
vim ~/.bashrc
export CUDA_HOME=/usr/local/cuda
export PATH=${CUDA_HOME}/bin:${PATH}
export LD_LIBRARY_PATH=${CUDA_HOME}/lib64:$LD_LIBRARY_PATH
使其生效
检查cuda安装是否正确,命令行输入:nvcc -V
nvcc -V
nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2022 NVIDIA Corporation
Built on Mon_Oct_24_19:12:58_PDT_2022
Cuda compilation tools, release 12.0, V12.0.76
Build cuda_12.0.r12.0/compiler.31968024_0
安装破解工具HASHCAT
官网地址:https://hashcat.net/hashcat/
下载地址:https://hashcat.net/files/hashcat-6.2.6.7z
下载编译hash提取工具
下载地址:https://github.com/openwall/john
编译安装
cd src
./configure && make -s clean && make -sj4
编译完成后将会在run目录生成可执行文件。
提取office密码hash
进入john的run目录执行:
cd ../run
./office2john.py '/home/ubuntu/Desktop/test.xlsx' > ~/Desktop/hash.txt
内容如下:
cat ~/Desktop/hash.txt
test.xlsx:$office$*2007*20*128*16*8eb5dfb7076b984f872835699267d09d*a3f37477a61095f9d1823e4b798b4b3a*2d3a5d0c4b58ee023575a429433679cc8ecc2cae
通过hash头$office$*2007*可以观察出WPS采用的是MS2007版本的加密算法。
而office对应的hash_type有以下几种:
9700 | MS Office <= 2003 $0/$1, MD5 + RC4 | Documents
9710 | MS Office <= 2003 $0/$1, MD5 + RC4, collider #1 | Documents
9720 | MS Office <= 2003 $0/$1, MD5 + RC4, collider #2 | Documents
9800 | MS Office <= 2003 $3/$4, SHA1 + RC4 | Documents
9810 | MS Office <= 2003 $3, SHA1 + RC4, collider #1 | Documents
9820 | MS Office <= 2003 $3, SHA1 + RC4, collider #2 | Documents
9400 | MS Office 2007 | Documents
9500 | MS Office 2010 | Documents
9600 | MS Office 2013 | Documents
2007版本对应的hash_type id是9400
执行破解
进入hashcat目录执行
./hashcat.bin -a 3 -m 9400 '$office$*2007*20*128*16*8eb5dfb7076b984f872835699267d09d*a3f37477a61095f9d1823e4b798b4b3a*2d3a5d0c4b58ee023575a429433679cc8ecc2cae' --force ?l?l?l?a?a?a
几分钟后密码就破解成功了。我这里使用的是暴力破解的方式,hashcat也可以加载密码字典文件,具体的大家可以自行搜索学习下。
性能测试
输入下面的命令测试机器性能
建议大家使用带显卡的机器进行破解,经测试集显和独显差距很大,我的集显电脑破解速度为5000+每秒,而独显电脑则可以达到15万+每秒。
内置掩码规则
- [ Built-in Charsets ] -
? | Charset
===+=========
l | abcdefghijklmnopqrstuvwxyz [a-z] 纯小写字母
u | ABCDEFGHIJKLMNOPQRSTUVWXYZ [A-Z] 纯大写字母
d | 0123456789 [0-9] 纯数字
h | 0123456789abcdef [0-9a-f] 小写子目录和数字
H | 0123456789ABCDEF [0-9A-F] 大写字母和数字
s | !"#$%&'()*+,-./:;<=>?@[\]^_`{|}~ 特殊字符
a | ?l?u?d?s 键盘上所有可见的字符
b | 0x00 - 0xff 可能是用来匹配像空格这种密码的
下面举几个简单的例子来了解一下掩码的设置
八位数字密码:?d?d?d?d?d?d?d?d
八位未知密码:?a?a?a?a?a?a?a?a
前四位为大写字母,后面四位为数字:?u?u?u?u?d?d?d?d
前四位为数字或者是小写字母,后四位为大写字母或者数字:?h?h?h?h?H?H?H?H
前三个字符未知,中间为admin,后三位未知:?a?a?aadmin?a?a?a
6-8位数字密码:--increment --increment-min 6 --increment-max 8 ?d?d?d?d?d?d?d?d
6-8位数字+小写字母密码:--increment --increment-min 6 --increment-max 8 ?h?h?h?h?h?h?h?h
如果我们想设置字符集为:abcd123456!@-+,那该怎么做呢。这就需要用到自定义字符集这个参数了,hashcat支持用户最多定义4组字符集
--custom-charset1 [chars]等价于 -1
--custom-charset2 [chars]等价于 -2
--custom-charset3 [chars]等价于 -3
--custom-charset4 [chars]等价于 -4
在掩码中用?1、?2、?3、?4来表示。
再来举几个例子:
--custom-charset1 abcd123456!@-+。然后我们就可以用"?1"去表示这个字符集了
--custom-charset2 ?l?d,这里和?2就等价于?h
-1 ?d?l?u,?1就表示数字+小写字母+大写字母
-3 abcdef -4 123456 那么?3?3?3?3?4?4?4?4就表示为前四位可能是“abcdef”,后四位可能是“123456”
==========================================================================
补充说明
很多朋友说没有windows教程,其实跟上面的linux没什么太大区别,我这里简单的说一下windows步骤:
1、安装NVIDIA显卡驱动(前提是独显)
2、安装cuda-toolkit(前提是独显)
命令行输入nvidia-smi查看对应的CUDA Version,然后前往 https://developer.nvidia.com/cuda-toolkit-archive
选择CUDA版本、操作系统版本、下载exe(local)安装,安装时选择自定义安装,只勾选第一项CUDA,且CUDA的子项取消勾选Visual studio Integration
3、下载windows版本的 office、zip、rar等 hash提取工具:https://www.openwall.com/john/
4、下载HASHCAT破解工具:https://hashcat.net/files/hashcat-6.2.6.7z
优化建议
1、对于破解过的hash值,用./hashcat.bin hash --show查看结果
2、所有的hash破解结果都在hashcat.potfile文件中
3、如果破解的时间太长,可以按s键可以查看破解的状态,p键暂停,r键继续破解,q键退出破解
4、中途暂停或者终止后,使用./hashcat64.bin --restore恢复运行
5、在使用GPU模式进行破解时,可以使用-O参数自动进行优化
6、在实际破解中的建议,如果我们盲目的去破解,会占用我们大量的时间和资源,建议先跑一些常用的弱口令和密码字典文件
7、参数优化
考虑到hashcat的破解速度以及资源的分配,我们可以对一些参数进行配置
(1)Workload tuning 负载调优。
该参数支持的值有1,8,40,80,160
--gpu-accel 160 可以让GPU发挥最大性能
(2)Gpu loops 负载微调
该参数支持的值的范围是8-1024(有些算法只支持到1000)
--gpu-loops 1024 可以让GPU发挥最大性能
(3)Segment size 字典缓存大小
该参数是设置内存缓存的大小,作用是将字典放入内存缓存以加快字典破解速度,默认为32MB,可以根据自身内存情况进行设置,当然是越大越块了。
--segment-size 512 可以提高大字典破解的速度
8、性能测试
以wps office为例(如果不指定-m参数将跑所有hash-type):
./hashcat.bin -b -m 9400
-----------------------------------------------------
* Hash-Mode 9400 (MS Office 2007) [Iterations: 50000]
-----------------------------------------------------
Speed.#1.........: 156.1 kH/s (71.91ms) @ Accel:512 Loops:1024 Thr:32 Vec:1
根据上述测试,我的机器性能为每秒计算156100个office hash,从而我们可以评估下跑某一个密码长度所需的时间。
假设我们要跑1-10位数字:10 ** 10 / 156000 / 3600 ≈ 17.8小时
最后我的显卡是NVIDIA GeForce RTX 2060 12G,供大家参考一下,这个卡本身算力是比较弱的,如果是4090之类的很可能会突破百万每秒。 |