hashcat rule 如何破解12位+字符的高强度密码?

在线wifi跑包 金刚包跑包 cap跑包 hccapx ewsa在线 就来 握手包跑包

各位好 又见面了 我是曹操 今天给大家带来一篇新的教程

希望各位细心学习 低调用网

hashcat -a 1 -m 0 hash.txt google-10000.txt google-10000.txt

当你看到这个标题时,你可能会怀疑。破解一个12个字符以上的密码,在理论上是不可能的。根据安全专家的说法,要破解一个12个字符以上的高强度密码,可能需要17134年的时间。然而,如果我们利用一些现代硬件设备,如”预算”裂解装置,我们可以在相对合理的时间范围内,穷举出像MD5、NTLM、SHA1等标准快速散列算法的密码。通常情况下,对于超过8个字符的标准快速散列算法加密的密码,采用暴力破解方式被认为是无法破解的。

例如,当我们分析一种语言的特点和不同人的习惯时,我们发现英语单词的平均长度为4.79个字符,而人们通常习惯于使用多个单词组合来构建密码。如果您想了解更多关于破解工具及其使用的内容,请参考Amazon上的Hash Crack。

那么为什么12个字符以上的超强密码容易受到攻击呢?事实上,通常人们在创建超过10个字符的密码时,习惯于使用一些常见的单词或短语组合。这种行为并不是一个”漏洞”,而是人类思维和行为习惯的自然结果。因此,这个问题将一直存在于我们周围。我当然赞同使用XKCD漫画中随机生成的四个单词作为密码,但这只适用于非快速散列算法,如bcrypt。在本文中,我将演示Hashcat的组合和混合两种攻击方式,让您看到攻击者如何利用硬件设备对所谓的高强度密码进行有效攻击。

组合和混合攻击背景
首先,让我们快速介绍一下这两种攻击方法:

组合攻击:将两个字典中的所有单词相互组合。
例如:
dictionary1.txt dictionary2.txt
pass => password, passpass, passlion
word => wordpass, wordword, wordlion
lion => lionpass, lionword, lionlion

混合攻击:字典攻击,但具有附加/前置一个暴力掩码的能力。
例如:
dictionary.txt ?u?l?l
pass => passAbc, passBcd, passCde
word => wordAbc, wordBcd, wordCde
lion => lionAbc, lionBcd, lionCde

更详细的解释可以在Hashcat的网站上找到。

组合攻击
让我们看看组合攻击如何帮助我们组合英语单词来构建密码。在这里,我建议使用Google的10,000个最常见的单词列表作为我们的组合字典。这个列表是根据Google的Trillion单词库的n-gram频率分析确定的。

现在让我们使用两个随机选择的英语单词,组合成一个16个字符的密码,比如shippingnovember。如果这是一个通过MD5加密的密码,我们可以如何使用Hashcat的组合攻击来破解它:

例如:

hashcat rule

通过让Hashcat将字典中的每个单词彼此组合,并结合一些性能较好的硬件设备,密码可以在不到1秒的时间内被破解。这种破解方法目前仍然有效,对于中等较慢的哈希类型效果仍然不错。

也许有人会说,”我使用的是shippingnovember,全是小写字母,所以可以被破解。但是如果我做一些简单的修改,比如添加特殊字符或改变字母大小写,比如ShippingNovember,就不容易被破解了。”那么,让我们快速测试一下。首先,我使用Hashcat的”combinator.bin”将Google的字典列表合并成一个单独的字典。

例如:

hashcat -a 0 -m 0 hash.txt google-10000-combined.txt -r best64.rule

然后,我们可以使用Hashcat结合这个新生成的基于规则的字典文件,对修改大小写后的密码ShippingNovember进行爆破。

例如:

hashcat rule

这次攻击花费了28秒,成功破解了密码。

3个单词
现在让我们来看看由三个随机单词组成的短语密码,比如”securityobjectivesbulletin”。看起来不错吧?我们刚刚创建了一个新的”google-10000-combined.txt”字典文件,现在我们可以继续使用之前的方法,将由两个单词组合的字典与单个单词的字典列表进行组合。

例如:

hashcat rule

如果添加了一些字符变体,破解就会变得更困难一些。但是,你是否注意到了一个趋势?

4个单词
接下来,让我们尝试攻击使用四个随机英语单词生成的密码,比如”sourceinterfacesgatheredartists”。在这个例子中,我们增加了一个单词,这意味着我们的破解空间更大了。它的组合大约有10,000,000,000,000,000种可能性。然而,即使如此,它的强度也会大打折扣,因为我们使用的是MD5散列函数。现在,我将使用Hashcat结合新创建的”combined”字典,再次进行组合攻击。

例如:

hashcat rule

这次攻击可能需要大约4天的时间才能完成。但幸运的是,我们在5小时35分钟内成功破解了密码。如果对这个密码进行简单的修改,比如添加数字或特殊字符,就会超出我们的破解范围,但再次随机选择的通用词是不匹配的。

混合攻击
Google-10000 + 掩码
对于第一个示例,我将使用之前在组合攻击演示中的google-10000.txt字典作为我们爆破的基本单词列表。然后,我将使用PACK和来自weakpass.com网站上的hashesorg251015.txt字典进行演示。

我选择使用hashesorg字典,因为它的效率相对较高,评级为65.9,并且字典的大小相对较小。我们需要做的是分析hashesorg的数据集,并根据一定的字符长度创建基于最流行密码模式的掩码。这些掩码将与我们的google-10000.txt单词列表结合,并形成一个有效的混合攻击。

PACK示例
生成5-6个字符长度的混合掩码密码,并输出到掩码文件。(注意,这可能需要一些时间)

例如:

python maskgen.py hashesorg_5or6.masksoptindex -o hashesorg_5or6.hcmask

然后,让我们将生成的掩码文件格式转换为Hashcat可以无缝使用的.hcmasks格式文件。

PACK示例
现在,我们可以使用Hashcat中的攻击模式6,并结合新创建的hashesorg掩码文件进行混合攻击了。这将启动一个有序的攻击,从第一个掩码开始,逐一尝试下一个。有些攻击可能会很快,有些可能需要一些时间。为了达到我们的测试目的,我们将使用一个随机密码”environmentsqaz472″。我们知道最终我们将成功破解它。

例如:

hashcat rule

这次攻击花费了将近20分钟的时间。大部分时间都用在了格式转换上,而从攻击开始到成功破解只用了14秒。

Rockyou + Rockyou-1-60.hcmask
现在,让我们使用从Rockyou密码数据集派生的Hashcat内置掩码。Hashcat中的rockyou掩码已经被分割成更小的块,其大小基于编号逐渐增加。我将使用最小的.hcmask文件rockyou-1-60,因为它包含较高概率的掩码,非常适用于混合攻击模式。我们还将将其与实际的Rockyou密码配对,可以在Skullsecurity上找到。在配对掩码和字典时,请确保字典的大小不会过大,否则攻击将需要很长时间。个人而言,我喜欢将我的混合攻击字典控制在500M以内,甚至更小。

让我们从Rockyou字典中随机选择密码”sophia!”,然后我们再添加一个任意日期”1996″,这样就生成了一个密码1996sophia!。前面的部分可以看作是用户名,后面的部分是出生年份。现在,我们可以开始尝试攻击了。这次攻击中,我将把rockyou-1-60数据集中按顺序包含的掩码列表附加到Rockyou字典中的所有密码上。

例如:

hashcat rule

这种攻击可能只需要几分钟就能命中一个”d?d?d?d”的掩码。这只是为了演示目的,但充分展示了混合攻击的过程和威力。rockyou-1-60.hcmask中共包含836个不同的掩码,如果你觉得不够,Hashcat将自动包含rockyou数据集中的所有掩码。

Cut First 5 Chars + 掩码
让我们创建一个自己的字典和掩码,以配合我们的混合攻击。根据前面的分析,我们知道平均英语单词长度为4.79个字符。因此,我们创建的字典最多包含5个字符长度。在这个例子中,我们将再次使用rockyou.txt字典。我们将使用cut命令从字典中截取前5个字符,并按顺序将它们追加到一个名为first5_dict.txt的文件中。根据您的硬件性能,生成字典的时间可能会有所不同。您可能会注意到,这个新生成的字典文件非常小,只有18MB。但对于非快速散列算法来说,这是一个非常理想的字典文件。

例如:

hashcat -a 6 -m 0 hash.txt first5_dict.txt rockyou-1-60.hcmask

接下来,让我们将新生成的first5dict.txt字典与Hashcat中的rockyou-1-60掩码配对。现在,让我们随机生成一个密码。在这里,我从first5dict.txt字典文件中随机选择了Alty5和随机数字9402847的组合作为我的密码,即Alty59402847。

例如:

hashcat rule

这种攻击可能需要大约30分钟的时间才能成功破解密码。

直接通过掩码攻击12+字符密码
让我们再次使用rockyou.txt字典作为示例生成这些掩码。但在此之前,让我们先测试一下我们的机器对MD5哈希爆破的速度。

例如(MD5):

hashcat rule

从以上测试结果可以看出,我们的机器的破解速度为760亿次每秒(76,000,000,000 c/s)。现在,让我们使用PACK从rockyou.txt字典生成新的掩码。

例如:

python statsgen.py rockyou.txt -o rockyou.masks

然后,让我们生成Hashcat的hcmask文件,设定攻击速度为1天(86400秒),攻击范围涵盖12-15个字符长度。

例如:

pythong maskgen.py rockyou.masks –optindex –minlength=12 –maxlength=15 –targettime=86400 –pps=76000000000 -o rockyou_12-15.hcmask

当成功生成掩码文件后,我们就可以使用rockyou_12-15.hcmask文件对MD5哈希进行爆破了。如果一切顺利,我们将在一天内破解出结果。

例如:

hashcat -a 3 -m 0 hash.txt rockyou_12-15.hcmask

通过以上的介绍和演示,相信您已经意识到,密码的安全性并不仅仅取决于字符的长度。如果您想更好地保护您的账户,避免被他人窃取,您必须摒弃一些不良习惯。例如,使用一些常见的单词或短语组合,或者完全使用小写字母或纯数字来构建密码。这些都可能给您的账户带来安全隐患。因此,我强烈建议您尽可能使用密码管理器,如1Password和Keepass等应用程序。

赞(8)