快速破解各种散列hash [ hashcat入门篇 ]
0x00 前言
最近恰巧刚搞到一批hash,所以就寻思着,要不顺手小结一点关于hash破解的东西吧,反正经常要用,就当留备忘了,顺便也分享给大家,主要还是希望大家都能在实际渗透中能尽快上手用,既是这样,就肯定不会涉及太深,比如,其内部的破解算法具体是如何实现的等…,我们都不会去深入剖析,毕竟,并不是为了去写此类工具,如果真的有兴趣,可自行去读源码[ 起码自己暂时还没那能力 ]
,经常渗透的朋友可能都非常清楚,由于各种各样的途径,我们经常会搞到各种各样的散列[ hash ]
,比如,各类web管理用户的密码hash,各类系统用户的密码hash,各种第三方服务器工具配置文件中的hash,各类办公套件文件启动密码的加密hash,等…今天,我们就来简要说明一下关于各类hash破解工具的使用,以备不时之需…其实,明眼人都很清楚,hash破解本质是没啥实际技术含量的[ 前提你自己不写此类工具 ]
,还是那句话,主要目的还是希望大家能尽快上手,既然是好东西就要想办法把它应用到实际干活儿中,不然,意义何在呢…废话少说,咱们开始介绍今天的第一款hash破解工具,hashcat
想必该工具早已家喻户晓[ 关于hash破解的东西,后续我会做成一个单独的系列 ]
,希望大家能持续关注,你们的支持,会是自己努力创作的源泉,嘿嘿…
0x01 先介绍几个相对比较好用的在线hash破解站,其实,诸如此类的站点非常多,不过大多都不太靠谱,后期遇到好的我会再贴上来
算是国内比较知名的在线hash破解站,虽然目前支持的散列类型还比较少,不过就成功率来讲,还行吧,在你自己没有特别好的显卡,GPU矩阵或者性能强劲的CPU的时候,它无疑是个很好的替代品,实在没查到,起码还可以在后台帮你跑五天,先不管能不能跑出来,总归是个希望
如果cmd5实在跑不出来,不妨再尝试它,也是个比较老的在线hash破解站了,估计朋友们也都比较熟悉,这里就不啰嗦了
另外,在淘宝上也有很多提供这种hash爆破服务的卖家,实在不行还可以尝试直接丢给他们跑,一般跑出来才会让你付钱,其实说白点儿,他们可能也是在后台拿GPU矩阵跑的,需要注意的是,找个靠谱点儿的店就好了,某宝骗子多,形形色色,有些东西总让人防不胜防
最后,在kali中也自带了一个在线的hash破解脚本findmyhash
,其实,脚本做的事情非常low,就是轮询着把你提供的hash丢到各个hash破解站上去查询,如果查到了就把对应的结果明文发回来,实在不行,还可以丢到谷歌上跑跑,仅此而已,可能唯一要注意的是先把kali挂上vpn,不然,有些站点可能访问不了,说实话,基本就是个废除了最普通的md5,别的就算了吧
,实在没办法,碰碰运气还是可以的
0x02 识别hash类型
如果你实在搞不清楚某条hash的具体散列类型,不妨先用下面的脚本[kali自带]大致识别下,可能不太准,不过粗略的看一眼还是可以的,另外,谷歌上也有很多在线的hash类型识别站,可自行去尝试,这里就不一一列举了
0x03 使用hashcat前的一点点准备工作
务必保证已经事先装好对应的显卡驱动看官网这情况,最新版的hashcat除了增加了一些新的散列类型之外,貌似也已经不再区分AMD和英伟达显卡了,如果你用的是旧版本的hashcat,请根据自己实际的显卡类型来选择对应版本的hashcat
,之后再到其官方站点把hashcat down下来,注意,直接解压即可运行,无需再额外装任何东西,用什么系统就运行对应系统的可执行程序即可实际破解中,更推荐用linux,可能就是装驱动稍微有点儿麻烦,不过还好啦,如果实在搞不定,在win下跑也是一样的
,本来想用显卡给大家演示的,没办法,家里的电脑,集成显卡没钱,无奈
,大家谅解哈,所以,下面就直接全部用kali自带的hashcat来演示了,不同类型的hashcat,单就用法来讲,其实也没啥太大区别,实际使用中建议还是自己买块好点儿的显卡跑,如果真有条件很显然,本人是个穷逼
GPU矩阵也是可以考虑的
0x04 关于hashcat的一些常用选项
如果在kali中提示要升级到新版本[kali2.x可能会出现这样的情况],请把系统时间修改到2010年之前即可,这里就只说几个最常用的选项,关于其它的各种小选项,因为自己实际中用的比较少,如果大家万一用到,扫一眼帮助即可,篇幅原因这里就只捡最核心的说了
0x05 hashcat 不同破解模式下的具体工作细节:
最简单的纯粹基于字典的爆破模式,后面可以连续跟上多个字典文件,破解的成功与否最终还是取决于字典质量,在几乎同等的破解时间里,是我我肯定不会先选它的,简单跑一些弱口令什么的,还是可以的,话说回来,如果只是跑些弱口令,大可不用hashcat,未免有些大材小用了,不是吗
一种相对智能高效的爆破模式,它的意思是这样的,如果你事先已经明确知道密码中可能包含哪些字符串,你可以把那些字符串事先写到文件中,每行对应一个字符串,然后hashcat会自动根据你所提供的这些字符串,尝试所有可能的组合进行猜解
基于纯掩码的爆破方式,如果你有需求要大批量爆破hash,可能会用到,后面我们会用绝大部分的篇幅来说它,这里需要稍微注意下,你给定的掩码是多少位它就只破解多少位,比如,你给的是7位的掩码,它就只跑7位这么长,它可能并不是你想象的那样,是从1位一直跑到第7位
这样自动轮询,如果你想让它自动变长跑,启用increment模式指定密码的最小和最大长度即可,之前理解的有点儿错,也是看官方的wiki才知道的,汗…
基于字典和掩码配合的爆破模式,它的破解过程其实也比较简单,就是每次从前面的字典中取出一个字符串然后和后面掩码的所有组合进行拼接,直到撞到对应的明文
基于掩码和字典配合的爆破模式,跟6的过程正好相反,只不过这次它是从前面进行拼接
0x06 hashcat 不同的掩码所表示的具体字符及掩码字符集规则使用样例:
掩码是个非常灵活的东西,你可以把它放到任何你想放的位置上,甚至,你愿意的话,也可以把自己想跑的一些掩码规则都事先放到一个文件中,然后以.hcmask命名,加载就可以让hashcat自动跑了,这样用起来比较方便,省的后期经常需要人为干预,后续会为大家简单演示下
比如,下面的例子:
当然,你也可以自定义字符集规则,注意,可以连续指定多个不同的规则集
比如,下面的例子:
0x07 不同破解模式下的具体应用场景,用的时候需要稍微注意下语句格式(暂以破解最普通的md5 hash为例)
基于纯字典的爆破模式 Straight
:
稍微智能一些的字典爆破模式,需要事先把密码中有可能包含到的单词都放到字典中 Combination
:
比如,我有两个这样的字典,字典包含如下的字符串,而我的实际密码是adminpass [ 字典文件可同时有很多个,不过那也意味你的组合也会特别多,速度就会慢 ]
,实际破解就可以像下面就这样写
基于纯掩码的爆破模式,其实就是尝试逐个位破解,一般人的密码设置习惯大都是基于大小写字母数字这种形式的,如果hash实在比较多,可以尝试从指定的位数开始一位位的将大小写特殊字符轮询这跑,可以节省一些时间 [Brute-force]:
破解九位纯小写字母组成的密码hash,可以看到在我双CPU双核的虚拟机中破解这种只是两三分钟的事情
前三位小写字母,后四位数字
10位纯数字,其实大家都很清楚,底层对数字的处理速度是最快的
7位小写字母加数字的随机组合
除了上面这种常规的掩码写法,你也可以这样,比如,你明确的知道密码的某一位或者几位上可能是什么字符,你也可以这样写掩码,假设密码明文为loveshare
,你实际破解的掩码就可以这样写,它只会去破解有掩码的位,速度自然就非常快了
基于字典和掩码配合的爆破模式,把可能存在的字符串事先写到字典中,然后hashcat在破解的时候会把后面所有的掩码组合跟前面的字典每行中的字符串进行拼接,直到猜解出明文,下面也是一样,只不过下面是把掩码放在了前面字典放在了后面Hybrid Wordlist + Mask
,其实,它想表达的意思非常简单,如
实际的明文密码是这样的
那你实际破解的掩码,就可以这样写
其实,它实际的拼接过程就相当于下面这样,直到最后就会撞到adminpass123
下面是多字典实例
基于掩码和字典配合的爆破模式 [Hybrid Mask + Wordlist]:
基于increment的自动变长模式,下面的意思就表示自动破解4到8位由小写子目录和数字组成的密码hash:
0x08 下面是一些我们可能会经常碰到的散列掩码爆破实例,自己机器性能不是太好,为了节省时间,所以实际设置的密码都非常简单,大多是9位以内的小写字母加数字
破解最普通的md5 hash [可能也是大家用的最多的散列,本身并非加密算法,大多是用来做hash校验用的,除了常规网站后台管理密码,另外,很多常见服务器端工具的默认加密都是基于此类型,如,filezilla,等等…],下面表示破解8位由小写字母数字组成的密码:
破解 sha系列 hash [绝大多数linux发行版的默认用户密码加密类型都是基于sha系列的变种]
:
纯sha1,五位小写字母:
纯sha224,五位小写字母:
纯sha256,五位小写字母:
纯sha384,五位小写字母:
纯sha512,五位小写字母[速度稍慢]:
破解 linux 系统用户密码hash[可能稍微有些慢,相比之下用john这也是一款比较好用的hash破解工具,后续我们还会单独说
跑,效果可能会更好一些]:
破解 win 2008 系统用户的 ntlm hash [实际破解中只需要破解ntlm部分的值即可,lm的值就不用了,另外,还有域中的各类证书散列类型破解基本都是如此,这里就不一一举例了]
:
破解 mysql 4/5.x 数据库用户hash[ 记得实际破解的时候把hash开头的*去掉,要不然可能识别不出来 ]
:
破解 mssql系列[2005/2008/2012] 数据库用户hash:
破解 pgsql 数据库用户hash [ 其实是md5的变种,跑的时候记得把hash开头的md5去掉,不过自己在实际跑的过程中,暂时还有些问题,如果用普通的md5来跑,跑出来的明文和我实际的密码还有一些出入 ]
:
破解 oracle 11g 数据库用户hash[记得倒数第20个字符加 : ,要把盐区分出来]
:
破解 wpa/wpa2 握手包中的无线密码hash [可能需要你自己先把握手包用wpaclean整理一下,再用aircrack输出成hashcat认识的散列格式,非常实用,具体内容请查看无线破解相关文章]:
破解 wordpress 4.x 用户密码hash [实际测试版本 4.7.4]
,具体加密方式在wp-includes\class-phpass.php 文件中的HashPassword()函数中
破解 joomla < 2.5.18 用户密码hash [实际测试版本 joomla 2.5.1]
,具体加密方式在 libraries\joomla\user\helper.php 文件中的genRandomPassword()和getCryptedPassword()函数中
破解 joomla > 2.5.18 用户密码hash [跟上面wp的散列类型其实是一样的,但自己实际跑的时候hash却没有识别出来,暂时还没找到问题的根源,如果有成功的朋友,麻烦也告诉我一下,实际测试版本joomla 3.7]
,具体加密方式在 libraries\joomla\user\helper.php 文件中的genRandomPassword()和getCryptedPassword()函数中
破解drupal 7.x 用户密码hash [ 实际测试版本7.5.4 ]
,具体加密方式在 includes\password.inc 文件中的_password_crypt函数中
破解discuz 3.x 用户密码hash [实际测试版本discuz x3.2 ,暂时还有些问题]
,具体加密方式在 uc_client\model\user.php 文件中的add_user函数中
破解phpbb3 用户密码hash [实际测试版本 phpbb3.2,暂时还有些问题]:
破解 htpasswd 密码hash [也有些问题]:
破解Adobe PDF 11文件密码hash,后面针对这种包公套件的加密破解,都需要自己先把hash提取出来,在john基本都有对应的hash提取脚本,可直接用,后续我们再说,下面几种类型的破解有几个还有一些问题,不过,我们后面用john来搞就好了
破解 Office 2013 文件密码hash:
破解 RAR5压缩文件密码hash:
破解 7-Zip压缩文件密码hash:
破解 WinZip压缩文件密码hash:
破解grub 2.x hash:
破解 TrueCrypt 密码hash[曾经还算是个比较强的磁盘加密工具,自己也一直在用,只不过后来发生了一段故事,导致它官方自爆不再安全,也是尴尬]:
破解 Skype 密码hash [需要自己从对应的xml文件把hash提取出来,很抱歉,我没成功]:
0x09 关于GPU参数优化 [ 这次根本没用到 ]和自定义破解规则[比较复杂,但更智能灵活,可这也就意味着速度就..嘿嘿,你懂的]方面的东西,这里暂时就不提了,仅仅作为hash破解入门,这些差不多足以应对你日常的各种破解需求了
0x10 关于在实际破解中自己的一些建议,暂以大批量hash爆破为例[事先没有任何密码规律可循,只能盲测的那种情况]
0x11 关于密码安全的一些个人建议
0x12 后话:
纵观全文,单单就工具使用来讲,还是蛮简单的,希望你也是这种感觉,那我文章的目的就达到了,嘿嘿……[虽然过程中还存在着一些瑕疵,待后期找到原因会再补充上来],作为使用基本也不存在什么技术含量,真正的难点可能还是在于对各种加密算法加密细节的理解[这里没有涉及的原因,是我怕把大家带沟里了,所以,想想还是算了,我们是在讲渗透,而非专门研究加密解密]和工具自身的破解算法上,还是那句话,我们并不是为了专门研究密码学[这么复杂的数学问题还是留给那些聪明秃顶的人去搞吧,我们只需要躺着享用他们的成果就好了,站在他们的肩膀上,也许能走的更快,毕竟,我们最终的目想获取目标机器的最高权限,手段不限,而hash破解只是这其中的一个环节而已]或者编写此类的hash破解工具[千万别偏离了方向,务必懂得取舍,不然容易”走火入魔”],对于渗透者来说,我们只是想利用手里现有的各种凭证,来继续下一步的渗透动作,仅此而已,所以,大可不用在这些工具上浪费太多的时间,能快速上手,并且能跑出来自己想要的东西才是主要目的,与其花那么长的时间在这种工具上,不如花更多的时间好好想想该如何’搞’到这些hash才是正途,搞到hash起码还能说明你离目标又近了一步,连hash到搞不到才是真正的尴尬,不忘初心,方得永生!说这么多绝不是在教唆怂恿大家去干坏事儿哈,由此文章所引发的一切后果,与本公众号及本文作者无任何关系,本质还是想让大家用别人干坏事儿的方法来保护我们自己,都是成年人,不要做傻逼事儿,相信你会懂的,如果你觉得这些东西对你有用,请持续关注本人公众号,可能暂时还没什么文章,不过后续就可能会有大批你感兴趣的文章了,嘿嘿…写文章确实不容易,都不是信手拈来的,要一边测,一边截图,一边写,生怕写错,所以出文章的速度可能大打折扣,当然啦,我也可以写的很快,很粗糙,而且没有经过任何实战的考量就告诉大家,不过,我自己还是想尽量给大家一些更实用的东西,凭空意淫出来的东西,可能对大家并没有什么实质性的帮助,很久之前,在某个前辈的博客上,看到过这么一句话,觉得对我的触动一直都挺大的,这里也分享给大家共勉,”我所说过的我都做过”,希望大家谅解, hash破解的东西还没完,后续还会紧接着奉上,转载请务必注明出处,谢谢,欢迎大家一起交流