千家信息网

Hashcat中基于规则的攻击是怎样的

发表于:2024-11-21 作者:千家信息网编辑
千家信息网最后更新 2024年11月21日,本篇文章为大家展示了Hashcat中基于规则的攻击是怎样的,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。在hashcat中还隐藏有一种攻击模式,这也是hash
千家信息网最后更新 2024年11月21日Hashcat中基于规则的攻击是怎样的

本篇文章为大家展示了Hashcat中基于规则的攻击是怎样的,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。

在hashcat中还隐藏有一种攻击模式,这也是hashcat中最复杂的攻击方式,即基于规则(rule)的攻击(-a 0 )。hashcat中的规则与字典结合就会发挥出非常惊人的作用。

什么是规则

所谓规则是一种用来产生候选密码的编程语言,规则由多个具有不同功能的函数组成,与正则表达式有相似之处,但是不同于正则表达式。总之,规则是一种非常灵活,方便,且操作性很强的辅助工具。

在规则语法中,不同的字符或符号代表不同的功能,在写规则时,可以根据等待破译的密码的特征,将这些功能进行组合。使用规则最大的好处是:我们可以根据已知的密码特征,写出相应的规则,这些规则可以把字典内容处理成合适的形式。当然利用规则还可以扩充字典内容。

常见规则举例

注:hashcat字典中组成单词的字母从0开始计数,而且是十六进制的形式。

以下是部分常见hashcat规则函数举例。想了解更多hashcat的规则函数,请点这里。

函数
功能
规则应用举例输入输出
oXY将位置X处的字符替换成Yo2KdigapisdiKapis
xNM从位置N开始删除M个字符x23DigAipsDips
iNX在位置N处插入字符Xi2LdIGAPISdILGAPIS
*XY交换XY两处的字符*0AIloveyou!?????loveyou!?I??
yN重复首部N个字符y48008208008800820
C首字母小写,其余大写CDigapisdIGAPIS
c首字母大写,其余小写cDIGPAISDigapis
t大写变小写,小写变大写tDigApisdIGaPIS
r单词倒叙rDigApissipAgiD
d重复dDigDigDig
f回文fDigDiggiD
{循环左移{DigApisigApisD
}循环右移}DigApissDigApi
[删除第一个字符[DigApisigApis
]删除最后一个字符]DigApisDigApi

如何写规则

写规则时,首先要用清楚自己的需求,然后根据需求撰写规则。写规则的时候,首先要明确自己所需要的密码的构成和形式,总结规律。根据密码已知的特征撰写规则。

Hashcat中的规则函数,通常是"oXY"的形式,第一位表示函数名,第二位代表操作位置,第三表示操作。Hashcat中有自带的规则文件,这些规则文件,看起来是一串一串无规律的字符串,但是每一段字符串都会对字典中的字符进行复杂的操作。

下面是几条简单的规则,希望通过分析这几条规则,大家可以了解如何写出自己的规则。首先要明确,规则中的函数会按顺序执行,每个函数的作用域就是字典中的每一条字符串,函数与函数之间没有关系,都是各自执行自己的功能。当然,不同函数的功能可以叠加。

例:sa4 sb6 sc<

分解方法:sX

描述:1)用字符a代替字符串中所有4。 |2)用字符b代替字符串中所有6。 |3)用字符c代替字符串中所有< 。

:d[

分解方法:d 和[

描述:1)将字符串重复一遍。 |2)将重复之后的字符串的第一个字符删除。

:i4 O12

分解方法:i4 和O12

描述:1)在位置4插入一个空格。 |2)删除从位置1开始的2个字符;

:d O05

分解方法:d 和 o05

描述:1)将字符串重复一遍。 |2)把位置0处的字符替换成5

:'4p4

分解方法:'4 和p4

描述:1)在位置4之前,截断单词。 |2)在这个单词后,将该单词再重复4遍。

:$ O23

分解方法:$ 和O23

描述:1)在单词末尾添加一个空格。 |2)删除从位置2开始的3个字符。

:T6T3

分解方法:T6和T3

描述:1)改变单词中位置6处字母的大小写; |2)改变单词中位置3处字母的大小写。

:i3.2-3

分解方法:i3 和 .2 和 -3

描述:1)在位置3插入空格; |2)用位置2+1处的字符代替位置2处的字符。 |3)将位置3处上的字符的ASCII值减3

:$9$&$A

分解方法:$X

描述:1)在字符串末尾添加一个9。 |2)在字符串末尾添加一个&符号。 |3)在字符串末尾添加一个10(hashcat规则采用16进制)

:c^!x04

分解方法:c 和 ^X 和 xYN

描述:1)首字母大写,其余小写。 |2)在字符串首部添加字符!。 |3)从位置0开始删除4个字符。

:@)sf*40R9

分解方法:@)和 sf 和 *40 和 R9

描述:1)清除所有")"符号。 |2)用空格代替f 。 |3)交换位置4处与位置0处的字符。 |4)对位置9处的字符进行按位循环右移。

基于规则的攻击

-r/--rules-file

Hashcat中的"-r/--rules-file"命令可以调用规则,hashcat自带的规则文件在rules文件下。在直接攻击模式(-a 0)下,我们可以调用规则,结合字典,进行密码爆破。这样就扩大了字典的范围,在一定程度上提高了密码破译的成功率。

新版的hashcat可以同时调用多个规则文件进行攻击,这些规则文件中的规则彼此组合,形成新的规则。假设,一个规则文件有100条规则,两个同等规模的规则文件组合就会产生100*100=10000条新的规则。这些规则可以极大的扩大字典的范围。

通常是不同文件中的规则,按顺序彼此结合形成新规则,并作用于字典文件。

分析:

1.rule中的规则是"c";2.rule中的规则是"T3"和"t"。执行多个规则文件时,不同文件中的规则互相组合。

组合出的第一条规则:c T3。1)字典中的内容首字母大写,其余小写; |2)在改变位置3处的字母的大小写。

组合出的第二条规则:c t。1) 字典中的内容首字母大写,其余小写; |2)改变单词中所有字母的大小写。

生成随机规则

Hashcat可以自行生成规则进行密码爆破,当我们用自己写的规则和hashcat自带的规则文件还没有爆破出密码是,可以尝试生成随机规则进行密码爆破。hashcat可以利用我们设定的参数生成随机规则。由于是随机规则而且可以大规模生成,所以可能产生意想不到的结果。

Hashcat中生成随机规则有 3条参数:

-g/--generate-rules=X:生成X条规则。

--generate-rules-func-min=X:每条规则最少有X个函数

--generate-rules-func-max=X:每条规则中最多有X个函数

例如,不适用规则文件,而是使用随机生成的规则处理字典。

除了指定规则的数量,这一指定每条规则中的函数数量,下面这条命令指定,每条规则中最多具有6个函数。

在实际使用中,我们使用的规则文件通常会根据人类自己设定密码的习惯做设置。符合人类设置密码习惯的排在前面,不符合的排在后面。所以在实际应用中,如果一个规则和字典运行几个小时还没有结果时,大家可以终端运行,换一个字典和规则继续运行。密码是人类生成的,所以规则一定要符合人类的习惯。

规则文件导出

当我们生成的随机规则恰好产生作用时,可以把这些规则导出成一个规则文件,这样下次进行密码爆破可以继续使用这些规则。

--debug-mode:定义调试模式(仅用于规则)

--debug-file:将调试的规则输出到文件

利用debug命令可以在自动生成的规则中,将有效的规则提取出来,组成一个规则文件,以便下次进行爆破时使用。

由于debug只会提取有效的规则,所以生成的规则文件中可能会有重复的规则。


hashcat规则攻击比较复杂,所以单独算作一篇文章,其实hashcat基于规则的攻击应该是字节攻击模式(-a 0)的一部分。规则只有跟字典结合才能发挥作用,对字典的选择和对规则的选择一样重要。

上述内容就是Hashcat中基于规则的攻击是怎样的,你们学到知识或技能了吗?如果还想学到更多技能或者丰富自己的知识储备,欢迎关注行业资讯频道。

0