hashcat 暴力破解 RAR 压缩包密码 您所在的位置:网站首页 如何破解解压秘密 hashcat 暴力破解 RAR 压缩包密码

hashcat 暴力破解 RAR 压缩包密码

2024-06-27 03:13| 来源: 网络整理| 查看: 265

RAR被加密了不要扔,裹上鸡蛋液面包糠…

如何破解加密RAR文件?

尝试绕过或删除密码?不好意思,任何宣称此类方法的大概率为骗子

目前想要破解加密RAR只有暴力破解这一条路

关于暴力破解

密码从来都不是以明文方式储存的——储存并用来验证的是由明文密码生成的哈希值

通过特定算法可以将明文字符串转换为定长哈希值,该过程通常是不可逆的,因此无法通过哈希逆向计算出明文

举一个简单的例子,现在有几个明文密码如下:

1234567abcdandy20201234+ouHfgeoY8+/M7wtzzgj

通过SHA256加密后,他们分别为:

123456788d4266fd4e6338d13b845fcf289579d209c897823b9217da3e161936f0315890285c86bb5f5b7e7828b18328bd0fe79da92b9f3cc89f296392a4fbeac6bd74803ac674216f3e15c761ee1a5e255f067953623c8b388b4459e13f978d7c846f4774eb56fda08df64bf8006e53fd69f8a82e615cfa61bc17fb1ef2fd4d9984e1a

仅从加密后定长的密文来说,是无法分辨明文密码的复杂度的

想要破解这些定长哈希?只有暴力破解一条路可以走

强密码与弱密码

在尝试暴力破解之前,我们先来做一个简单的数学计算

每一位字符可能出现以下几种情况:

字符集 内容 数量 小写字母 a-z 26 大写字母 A-Z 26 数字 0-9 10 符号 «空格»!“#$%&’()*+,-。/:;?@[\]^_`{|}〜 35

综上所述,一个密码的破解难度根据长度不同呈指数级上升。如果密码中还包括中文/日文/阿拉伯文等语言,可以直接放弃了,算到next big bang都算不出来

那么,方法呢?社工

最有效的破解办法就是从设置密码的人下手

云破解

如果你想要尝试破解一个强密码,很不幸这是几乎不可能的

但你仍然可以去云解密网站(通常是收费的)碰碰运气,这些网站拥有比你本地更强大的算力和也许有用的逆解密库

本地破解

这是本文的重点,目前市面上破解RAR的软件非常多:

BandZip PassFab for RAR TrueCrack …

然而这些不是收费就是年久失修,并且效果远远不如目前主流的开源破解工具hashcat

hashcat可以调用CUDA运算,是世界上最快最高级的密码破解工具,目前社区非常活跃,文档详细,更新维护及时。下面就简单介绍一下如何使用这套工具链破解加密RAR文件

CUDA

CUDA (Compute Unified Device Architecture) 是NVIDIA推出的基于GPU的并行计算平台,玩过机器学习的一定对CUDA不陌生,两个字“牛逼”就对了

由于我的电脑是2年前安装的CUDA,具体安装细节不记得了,请自行谷歌

john + hashcat

hashcat用于撞哈希,那么如何找到加密RAR的哈希值呢?

这里就要用到john中提供的一个小工具rar2john,它可以将RAR中的密码哈希提取出来

你可以在下面找到这两个工具

john: advanced offline password cracker

John the Ripper password cracker

openwall/john - GitHub

hashcat: World’s fastest and most advanced password recovery utility

hashcat - advanced password recovery

hashcat/hashcat - GitHub

rar2john

以下流程在Windows 10平台进行~

下载john的release,找到run\rar2john.exe

对加密RAR文件执行(密码:abcd):

1.\rar2john.exe "D:\Users\Desktop\1.rar"

程序会提取出哈希值并输出下面的内容:

1D:\Users\Desktop\1.rar:$rar5$16$36fe9da24ec2f10020ba8a989370c697$15$7d2ce8243b92cc889393233fdba54896$8$72203c88592c67e4 hashcat

有了哈希值,我们便可以使用hashcat进行暴力破解了

先说几个常用参数的意义(更高级的玩法请参考hashcat wiki):

-a

选择攻击方式,一般使用参数 -a 3 即掩码攻击(有规则约束的暴力穷举)

-m

选择攻击模式,针对不同的hash算法选择规定的值,参见Example hashes

对于RAR,我们选择:

RAR3-hp: 12500 RAR5: 13000

可以由rar2john提取出的hash值分辨出

字符集

?l: abcdefghijklmnopqrstuvwxyz ?u: ABCDEFGHIJKLMNOPQRSTUVWXYZ ?d: 0123456789 ?h: 0123456789abcdef ?H: 0123456789ABCDEF ?s: «space»!"#$%&'()*+,-./:;?@[\]^_{|}~ ?a: ?l?u?d?s ?b: 0x00 - 0xff

除此之外,还可以自定义字符集,参见Mask Attack

例:?a?l?l?l?d?d?d?d 代表第一位为任意字符,第二到第四位为小写字母,后四位为数字

--increment

自增遍历模式(不确定密码长度的情况)

--increment-min

规定自增模式密码最短的长度

--increment-max

规定自增模式密码最长的长度

Crack Start!

复制rar2john得到的哈希值,执行:

1.\hashcat.exe -m 13000 -a 3 '$rar5$16$36fe9da24ec2f10020ba8a989370c697$15$7d2ce8243b92cc889393233fdba54896$8$72203c88592c67e4' ?a?a?a?a

即对应 RAR5 进行掩码攻击,寻找4位长度随机字符的密码

注意在 Bash 和 Powershell 中,$ 的含义为变量,需要用单引号括起来才可以使用

查看输出:

1234567891011121314151617181920212223242526272829303132333435363738394041424344hashcat (v6.1.1) starting...* Device #1: WARNING! Kernel exec timeout is not disabled. This may cause "CL_OUT_OF_RESOURCES" or related errors. To disable the timeout, see: https://hashcat.net/q/timeoutpatch* Device #2: WARNING! Kernel exec timeout is not disabled. This may cause "CL_OUT_OF_RESOURCES" or related errors. To disable the timeout, see: https://hashcat.net/q/timeoutpatch* Device #3: Unstable OpenCL driver detected!This OpenCL driver has been marked as likely to fail kernel compilation or to produce false negatives.You can use --force to override this, but do not report related errors.nvmlDeviceGetFanSpeed(): Not SupportedCUDA API (CUDA 10.2)====================* Device #1: GeForce GTX 1050 Ti, 3376/4096 MB, 6MCUOpenCL API (OpenCL 1.2 CUDA 10.2.150) - Platform #1 [NVIDIA Corporation]========================================================================* Device #2: GeForce GTX 1050 Ti, skippedOpenCL API (OpenCL 2.1 ) - Platform #2 [Intel(R) Corporation]=============================================================* Device #3: Intel(R) HD Graphics 630, skipped* Device #4: Intel(R) Core(TM) i7-7700HQ CPU @ 2.80GHz, skippedMinimum password length supported by kernel: 0Maximum password length supported by kernel: 256Hashes: 1 digests; 1 unique digests, 1 unique saltsBitmaps: 16 bits, 65536 entries, 0x0000ffff mask, 262144 bytes, 5/13 rotatesApplicable optimizers applied:* Zero-Byte* Single-Hash* Single-Salt* Brute-Force* Slow-Hash-SIMD-LOOPWatchdog: Temperature abort trigger set to 90cHost memory required for this attack: 169 MB

注意第18行,设备 #1 没有skip,即使用了CUDA进行运算

我使用的17年款游戏本,配置为GTX1050Ti,使用CUDA进行运算约为11000个密码每秒

查看当前运行状态:

12345678910111213141516Session..........: hashcatStatus...........: RunningHash.Name........: RAR5Hash.Target......: $rar5$16$36fe9da24ec2f10020ba8a989370c697$15$7d2ce8...2c67e4Time.Started.....: Fri Aug 28 17:02:51 2020 (42 secs)Time.Estimated...: Fri Aug 28 19:05:54 2020 (2 hours, 2 mins)Guess.Mask.......: ?a?a?a?a [4]Guess.Queue......: 1/1 (100.00%)Speed.#1.........: 11034 H/s (8.51ms) @ Accel:4 Loops:128 Thr:1024 Vec:1Recovered........: 0/1 (0.00%) DigestsProgress.........: 442368/81450625 (0.54%)Rejected.........: 0/442368 (0.00%)Restore.Point....: 0/857375 (0.00%)Restore.Sub.#1...: Salt:0 Amplifier:18-19 Iteration:13696-13824Candidates.#1....: nari -> n!^sHardware.Mon.#1..: Temp: 71c Util: 99% Core:1733MHz Mem:3504MHz Bus:8

注意到4位长度密码暴力破解需要尝试 $81450625(95^4)$ 次,按照我这块显卡的性能需要破解2个小时

由此可得:

5位随机:8天 6位随机:25个月 7位随机:198年 8位随机:18.6个世纪

如果知道密码的线索来约束随机范围的话,耗费的时间会少很多

而且这是最坏的情况,万一运气好呢?

比如这个预计2小时的密码 abcd,我用了14分钟就跑出来了…

关于如何加强密码强度

破解说完了,来说说反破解

目前流行的密码管理解决方案为随机生成强密码 + 密码管理软件(如 Bitwarden,1Password 等),基于此方案,我不知道我有账号的几百个网站任何一个的密码(就算绑架我也没用

一个简单的生成随机密码的方法:

12# 生成16位随机密码openssl rand -base64 16

除此之外:

一定要包含一个符号,这可以让解密难度提升NNNN倍 8位数以上,只有量子计算机可破 不同网站设置不同密码,防止某些网站泄露数据库 万物 over TLS

需要注意的是,某些本地加密软件(如WD Security)

如果忘记了密码真的是神仙也救不了…



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有