hashcat之基于规则的攻击
来源:互联网 发布:java编译原理 编辑:程序博客网 时间:2024/05/18 15:51
原文
Rule-based Attack
译文
描述
基于规则的攻击是最为复杂的攻击之一。这样说的原因很简单。基于规则的攻击就像是设计用于产生候选密码的编程语言。例如,它有用于修改、切断、扩展单词的函数,有用于跳过某些单词的条件操作。这些特性使它成为最为灵活、精确和有效的攻击模式。
为何不使用正则表达式
为何要重复造轮子?很简单啊,正则表达式太慢了。通常,我们不得不在赶在hash算法开始之前——10ms内,生成1,000,000,000或更多的新鲜候选密码,而且这一过程要一再重复。只需看一眼你的GPU速度显示就知道该如何决定。
和其他规则引擎的兼容性
hashcat的规则引擎中,只要函数名和John the Ripper和PasswordsPro规则引擎中的函数名是一样的,那么该函数便是100%兼容的,反之亦然。稍后,我们会介绍一些我们自己和、不兼容的函数。但这些函数有他们自己的名字不会产生冲突。
实现了的兼容函数
下列函数100%兼容于John the Ripper和PasswordsPro:
- #
- *代表N从0开始。超过9的字符位置用A-Z来表示(A-10)
- +代表这条规则仅仅在hashcat中实现了
- #在oclHashcat v1.37→v1.38和hashcat v0.51→v0.52之间有所变动
译者注:“改变单词中所有字母的大小写”的“改变大小写”原文为“toggle case”。怎么个改变法?大写变小写,小写变大写,如输入为abCdE,输出则为ABcDe。
译者注:uMl4中包含4个函数:u、M、l、4。u函数将输入的p@ssW0rd转换为P@SSW0RD,M函数将P@SSW0RD存储到内存中,l函数将输入(也即是M函数的输出,为P@SSW0RD)中所有大写字母转为小写,输出为p@ssw0rd,4函数的输入是p@ssw0rd,将内存中的词(P@SSW0RD)添加到当前词(即输入)的后面,输出为p@ssw0rdP@SSW0RD。lMX428、rMr6和lMuX084同理。
丢弃文本的规则
注意:丢弃规则仅仅在hashcat-legacy或是使用“-j”、“-k”的hashcat中有效。在hashcat中,丢弃规则不会作为常规规则(在规则文件中的)而发生效力。
译者注:回文字符串是指形如“aaabbcbbaaa”这样正着反着读一模一样的字符串。
实现了的特有函数
下列函数在John the Ripper或是PasswordsPro中是无效的:
- *代表N从0开始。超过9的字符位置用A-Z来表示(A-10)
- +仅仅在John the Ripper中有效?
- #在测试版或未正式发行版中有效
书写规则
书写规则最重要的事情是搞清楚你想写什么。这通常意味着你必须分析十几个明文密码,而这些明文密码是被习惯设置的,来总结有什么共同之处。例如,人们常常在他们的密码后添加数字以增加密码长度。所以,我们便总结出了一下两个“要素”:
- 我们想在后边添加些什么
- 想添加在后边的是数字
回顾下函数列表,我们会发现在后边添加些什么应该使用函数“$”。所以,如果我们想在密码后添加“1”,我们应该写出这样的规则:
$1
这确实很简单。但如果我们想添加1-9的所有数字呢?这就要用到一种叫做混合攻击的模式了。
需要注意:
- 如果不是被用作参数,空白字符将被忽略。这会使源码看上去整齐些。
- 用字符“#”开头表示注释一行
生成规则
有两种方式自动地生成规则。
- 使用maskprocessor,这里有专门的文章讨论这一话题:Using maskprocessor to create rules
- 使用随机规则,见下文
随机规则
这是hashcat独有的特性。你可以使用hashcat生成直接作用于当下命令的随机规则。当你已经尝试过作用于你的所有字典的所有规则后若是不知道接下来要干什么,这便是一件好事情。有三种配置参数:
让hashcat生成应用于每个攻击的NUM条规则:
--generate-rules=NUM
要指定函数数量(最小值到最大值的一个范围)则应该使用:
--generate-rules-func-min=NUM --generate-rules-func-max=NUM
这个数量虽然没有限制但也不推荐设置得过大。当和参数-g一起使用时,超过-g参数指定数目的规则将被忽略。
例如,随机产生的规则可能是:“l r”、“l ^f”和“sa@”,这些都是能够使用的有效的规则。然而,规则“l ^f sa@ r $3”将被忽略,因为它包含了5个函数,而默认情况下,最小值为1,最大值为4。
你可以将随机生成的规则和规则文件中的规则混合。例如,你的规则文件中包含了200条规则,使用参数-g 500,则会生成另外的300条规则。
译者注:这一段是有些莫名其妙的。输入命令:echo p@ssW0rd > word,再输入命令:hashcat –stdout –generate-rules=10 word,看看输出,可能会有所悟。
保存匹配的规则
这一功能和规则生成器结合使用将带来极大的方便,也可用于统计分析你的规则集合。
使用这些参数以保存任意的匹配密码的规则:
--debug-mode=1 --debug-file=matched.rule
这将保存每个匹配中相匹配的规则,所以结果规则文件中可能包含许多重复规则。
调试规则
使用hashcat我们可以容易地调试规则。这意味着可以验证我们写的规则实际上是不是我们想要的。只需使用参数–stdout同时忽略hashlist就行。
这有个例子:
创建一个简单的字典:
$ echo WORd > word
生成一个简单的规则,规则“c”将大写第一个字母,小写其余部分。
$ echo c > rule
接着便是如何查看规则生成器的调试输出了:
$ ./hashcat-cli64.bin -r rule --stdout word Word
这一特性也可用于快速生成候选密码。这意味着如果你有别的支持从标准输入读数据的程序,则可直接将hashcat的输出作为别的程序的输入。
使用“p”(第N个指定的字符)作为位置规则
位置码字符“p”(看看Github上的讨论:点这儿)记录指定字符第N次出现的位置,这使得字符串中的位置也可被用在规则中。当使用“%”(丢弃某文本,除非它中出现了指定字符至少X次)和“/”(丢弃不包含指定字符的文本)时,“p”自动生效。
如果你想操作第一次出现的指定字符,你可以使用%1s或者更简单地使用’/’:
$ echo -n 'Odessa77' | hashcat --stdout -j '%1s Dp ip$' Ode$sa77 $ echo -n 'Odessa77' | hashcat --stdout -j '/s Dp ip$' Ode$sa77
如果你想操作第二次出现的指定字符:
$ echo -n 'Odessa77' | hashcat --stdout -j '%2s Dp ip$'Odes$a77
等等等等。不像替换所有指定字符的“s”规则,这允许你选择替换指定字符中的哪几个。
注意,只有在命令行参数“-j”和“-k”中,位置码字符“p”才有效。
在下面的例子中,规则中的“%2s”的意思是丢弃某文本除非它含有两个“s”,“p”的意思是操作第二次出现的字符“s”。
在hashcat-legacy或hashcat中看规则/的示例。
多规则
从oclHashcat-plus v0.07开始,基于规则的攻击中添加了一个新特性。
你可以随心所欲地添加多个-r参数,不再是以前的只能有一个-r参数或一个规则文件。
他们不是顺序执行的!
每个规则文件中的规则都会和另一个规则文件中的规则相组合。这就使得你可以容易地创造自己的攻击模式。
$ cat 123.rule $1 $2 $3 $ cat abc.rule $a $b $c $ hashcat --stdout -r 123.rule -r abc.rule wordlist hashcat1a hashcat2a hashcat3a hashcat1b hashcat2b hashcat3b hashcat1c hashcat2c hashcat3c
因为生成规则的总数取决于所有列表,所以若是叠加多个大列表,可用内存将会很快耗光。但是,叠加精心选择的规则将会有很好的效果。
支持
目前支持这种攻击模式的有:
- hashcat
- hashcat-legacy
限制
在hashcat中,单行规则中函数数量和多规则中函数总量的上限均为255。
- hashcat之基于规则的攻击
- 对规则的攻击
- Hashcat
- iptables规则之基于时间的策略
- hashcat软件的简单实用
- 防黑之阻断基于PcAnyWhere的攻击方法
- 网络攻击之基于ARP欺骗的网络攻击程序源码
- 基于规则的专家系统
- 基于规则的分类
- 基于规则的分类
- 基于规则的分类
- Hash破解神器:Hashcat的简单使用
- 三、基于状态的攻击
- 基于WPAD的中间人攻击
- 基于约束的SQL攻击
- 基于约束的SQL攻击
- 基于约束条件的SQL攻击
- 基于约束条件的SQL攻击
- hdu 1527 取石子游戏
- C#判断浮点数是否为0
- 运维中常用的linux命令集锦
- 74. Search a 2D Matrix
- 用sprintf实现sql参数绑定
- hashcat之基于规则的攻击
- 吾家女婿看过来
- 安全防护工具之:Clair
- kali在高清屏幕下如何放大字体与图标
- 和客户沟通的总结
- Python学习之路Day2
- 打字游戏
- Android Studiod 的安装详情
- HDU 6046 hash (HASH, 2017 Multi-Univ Training Contest 2)