惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

SecWiki News
SecWiki News
I
InfoQ
The Cloudflare Blog
人人都是产品经理
人人都是产品经理
博客园 - Franky
T
Tailwind CSS Blog
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
量子位
博客园_首页
罗磊的独立博客
V
V2EX
李成银的技术随笔
大猫的无限游戏
大猫的无限游戏
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
T
True Tiger Recordings
Vercel News
Vercel News
Cyberwarzone
Cyberwarzone
Cisco Talos Blog
Cisco Talos Blog
F
Fox-IT International blog
D
Darknet – Hacking Tools, Hacker News & Cyber Security
M
Microsoft Research Blog - Microsoft Research
Know Your Adversary
Know Your Adversary
爱范儿
爱范儿
The Register - Security
The Register - Security
G
Google Developers Blog
The Hacker News
The Hacker News
Malwarebytes
Malwarebytes
S
Securelist
博客园 - 三生石上(FineUI控件)
Jina AI
Jina AI
T
Threat Research - Cisco Blogs
T
The Exploit Database - CXSecurity.com
S
SegmentFault 最新的问题
博客园 - 叶小钗
F
Fortinet All Blogs
Apple Machine Learning Research
Apple Machine Learning Research
宝玉的分享
宝玉的分享
博客园 - 聂微东
T
Threatpost
博客园 - 【当耐特】
D
Docker
P
Privacy & Cybersecurity Law Blog
www.infosecurity-magazine.com
www.infosecurity-magazine.com
G
GRAHAM CLULEY
V
Visual Studio Blog
C
Cisco Blogs
IT之家
IT之家
S
Security Archives - TechRepublic
Latest news
Latest news
阮一峰的网络日志
阮一峰的网络日志

阁子

小工具(三) 相机小述 四元数与旋转矩阵 小工具(二) 私有办公服务搭建 小工具(一) 图床搭建 Git基本用法 Telegram接管聊天消息 Docker博客环境封装及自动化部署 小聊乐理 LXD搭设服务器 Time Machine 不满就折腾小记 GStreamer笔记五: Media Formats and Pad Capabilities GSreamer笔记四: GUI Toolkit Integration GStreamer笔记三: Time Management GStreamer笔记二: Dynamic Pipeline GStreamer笔记一: GStreamer Concepts
Hashcat密码破解
2019-03-14 · via 阁子

拿到了一个被加密的Excel,要求输入密码才能打开,于是尝试了下密码破解方法。

AROP破解

AROP(ADVANCED OFFICEPASSWORD RECOVERY)好像是比较主流的Office的破解工具,有收费版和免费版,区别在于密码长度是否超过4字节。
用了一个虚拟机跑了一下,字典查询没有,于是暴力破解,嗯,破解速度比较令人绝望,毕竟是CPU在跑。
将该Excel文件解压之后,可以发现里面包含DataSpaceEncryptedPackage以及EncryptionInfo等文件,打开EncryptionInfo文件,可以看到里面加密的一些信息:

1

2

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>

<encryption xmlns="http://schemas.microsoft.com/office/2006/encryption" xmlns:p="http://schemas.microsoft.com/office/2006/keyEncryptor/password" xmlns:c="http://schemas.microsoft.com/office/2006/keyEncryptor/certificate"><keyData saltSize="16" blockSize="16" keyBits="256" hashSize="64" cipherAlgorithm="AES" cipherChaining="ChainingModeCBC" hashAlgorithm="SHA512" saltValue="tLnK9YHGccHAgMyj9Nuwmg=="/><dataIntegrity encryptedHmacKey="wF7fTyyf/qhB8Vg+8fvQcspTyuR7cc2+yjIyuEAF0O8avnv0LxYhw+DaVmikzCbFDjLgFCAj6+C6m6iJdhuknA==" encryptedHmacValue="IK7Xc7/e0AVLERogsLvFl912xsbhw+oRKd/ABUwE5vw5iQtcAkM0K0rjz+gB8UlDDJlGbQx0HOKWypF3EDbqcA=="/><keyEncryptors><keyEncryptor uri="http://schemas.microsoft.com/office/2006/keyEncryptor/password"><p:encryptedKey spinCount="100000" saltSize="16" blockSize="16" keyBits="256" hashSize="64" cipherAlgorithm="AES" cipherChaining="ChainingModeCBC" hashAlgorithm="SHA512" saltValue="wisEIaAFG08tJoh3tD0Bqw==" encryptedVerifierHashInput="ZMMqH6NC6xpnsH8zBXtfyA==" encryptedVerifierHashValue="mEcTV0662f/U1+nndKsBiv+L/CsAusbw+So+pA4g8TBKq70rNYy7nkZk+tYB6M/fFZdBfRH4363GRI4m8WPk6Q==" encryptedKeyValue="xUZ5hE+Tzhim5YcUf7KOA5Z1jAG+cTaOGRd859sCkPA="/></keyEncryptor></keyEncryptors></encryption>

其中,采用的是AES算法,有盐(salt,指随机的数据,加入到哈希的过程中,加大破解难度),hash算法是SHA512,spinCount=100000经过了100000次的迭代操作,想直接逆向破解,实在太难。字典尝试无效,只能暴力破解,但是随着密码长度增加,以及字母数字、特殊字符的引入,破解难度指数增长。对于纯小写字母的6位密码,复杂度为$26^6 = 308915776$次,七位则超过了80亿次,指望这个靠CPU计算的软件,实际希望不大,跑了半天后放弃了。

Hashcat破解

Hashcat号称世界上最快的密码破解,世界上第一个和唯一的基于GPGPU规则引擎,免费多GPU(高达128个GPU),多哈希,多操作系统(Linux和Windows本地二进制文件),多平台(OpenCL和CUDA支持),多算法,资源利用率低,基于字典攻击,支持分布式破解等等。

嗯,暴力破解的话,只能考虑使用GPU跑,这时,开源的hashcat就是一个不错的选择。

获取文件hash值

使用hashcat破解office,先需要获取文件的hash值,网上有现成的工具office2join.py,然后用python运行,参数加上该office文件即可。

1

2

3

python office2john.py ../test.xlsx

test.xlsx:$office$*2013*100000*256*16*c22b0421a0051b4f2d268877b43d01ab*64c32a1fa342eb1a67b07f33057b5fc8*984713574ebad9ffd4d7e9e774ab018aff8bfc2b00bac6f0f92a3ea40e20f130

可以看到,加密方式为office2013,将第一个冒号后面的字串复制到一个新文件中保存即可。

hashcat破解

知道加密方式后,需要找到对应的破解模式,首先使用--help看一下帮助:

1

./hashcat64.bin --help

可以看到office的加密模式有以下几种:

1

2

3

4

5

6

7

8

9

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

所以,office2013选择-m 9600,然后开始破解:

1

./hashcat64.bin -a 3 -m 9600 --session test -o found.txt hash.txt ?l?l?l?l?l?l?l

其中,-a表示破解模式,3是暴力破解,--session test是将该次破解进程命名,可有可无,但之后如果要中断再恢复,则可以使用进程名恢复。-o found.txt是将找到的结果输出到指定文件中,hash.txt是之前保存hash码的文件,最后是一串正则表达式,有?l?u?d?s,分别表示小写字母、大写字母、数字、和特殊字符。该例子表示暴力破解七位小写字母的密码。

但由于不确定位数,先从简单的开始,破解从1到8位的小写字母:

1

./hashcat64.bin -a 3 -m 9600 -o found.txt hash.txt --increment --increment-min 1 --increment-max 8 ?l?l?l?l?l?l?l?l

其中,--increment-min 1 --increment-max 8即如本身含义。
然后查看一下显卡运行情况:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

Tue Mar 12 14:57:13 2019

+-----------------------------------------------------------------------------+

| NVIDIA-SMI 410.78 Driver Version: 410.78 CUDA Version: 10.0 |

|-------------------------------+----------------------+----------------------+

| GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC |

| Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. |

|===============================+======================+======================|

| 0 GeForce RTX 208... Off | 00000000:18:00.0 Off | N/A |

| 90% 80C P2 247W / 250W | 2341MiB / 10989MiB | 94% Default |

+-------------------------------+----------------------+----------------------+

| 1 GeForce RTX 208... Off | 00000000:3B:00.0 Off | N/A |

| 90% 80C P2 248W / 250W | 2341MiB / 10989MiB | 95% Default |

+-------------------------------+----------------------+----------------------+

| 2 GeForce RTX 208... Off | 00000000:86:00.0 Off | N/A |

| 91% 81C P2 247W / 250W | 2341MiB / 10989MiB | 95% Default |

+-------------------------------+----------------------+----------------------+

+-----------------------------------------------------------------------------+

| Processes: GPU Memory |

| GPU PID Type Process name Usage |

|=============================================================================|

| 0 1852 C ./hashcat64.bin 2331MiB |

| 1 1852 C ./hashcat64.bin 2331MiB |

| 2 1852 C ./hashcat64.bin 2331MiB |

+-----------------------------------------------------------------------------+

如果中途有事,可以先暂停一下,然后跑完后再过来继续破解:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

./hashcat64.bin --restore

Session..........: test

Status...........: Cracked

Hash.Type........: MS Office 2013

Hash.Target......: $office$*2013*100000*256*16*c22b0421a0051b4f2d26887...20f130

Time.Started.....: Wed Mar 13 14:28:19 2019 (9 hours, 37 mins)

Time.Estimated...: Thu Mar 14 00:05:48 2019 (0 secs)

Guess.Mask.......: ?l?l?l?l?l?l?l [7]

Guess.Queue......: 1/1 (100.00%)

Speed.#1.........: 19777 H/s (8.49ms) @ Accel:64 Loops:16 Thr:256 Vec:1

Speed.#2.........: 19260 H/s (8.66ms) @ Accel:64 Loops:16 Thr:256 Vec:1

Speed.#3.........: 19438 H/s (8.60ms) @ Accel:64 Loops:16 Thr:256 Vec:1

Speed.#*.........: 58475 H/s

Recovered........: 1/1 (100.00%) Digests, 1/1 (100.00%) Salts

Progress.........: 2025455616/8031810176 (25.22%)

Rejected.........: 0/2025455616 (0.00%)

Restore.Point....: 74645504/308915776 (24.16%)

Restore.Sub.#1...: Salt:0 Amplifier:17-18 Iteration:7520-7536

Restore.Sub.#2...: Salt:0 Amplifier:0-1 Iteration:99984-100000

Restore.Sub.#3...: Salt:0 Amplifier:6-7 Iteration:53776-53792

Candidates.#1....: efmfogr -> ehdaznt

Candidates.#2....: svtdyyl -> srhqbks

Candidates.#3....: lnkkjnt -> ljnzibl

Hardware.Mon.#1..: Temp: 77c Fan: 87% Util: 94% Core:1635MHz Mem:6800MHz Bus:16

Hardware.Mon.#2..: Temp: 77c Fan: 87% Util: 93% Core:1695MHz Mem:6800MHz Bus:16

Hardware.Mon.#3..: Temp: 77c Fan: 87% Util: 94% Core:1725MHz Mem:6800MHz Bus:16

Started: Wed Mar 13 14:27:42 2019

Stopped: Thu Mar 14 00:05:50 2019

最后大概半天吧,跑出来结果如下:

1

$office$*2013*100000*256*16*c22b0421a0051b4f2d268877b43d01ab*64c32a1fa342eb1a67b07f33057b5fc8*984713574ebad9ffd4d7e9e774ab018aff8bfc2b00bac6f0f92a3ea40e20f130:semicjj

冒号后面的就是密码。