查看原文
其他

密码破解浅析

信息安全公益宣传,信息安全知识启蒙。

加微信群回复公众号:微信群QQ群16004488

加微信群或QQ群可免费索取:学习教程

教程列表见微信公众号底部菜单


最近恰巧刚好搞到一批hash,所以就寻思着,要不顺手小结一点关于hash破解的东西,反正经常要用,就当留备忘了,顺便也分享给大家,主要还是希望大家都能在实际渗透中能尽快上手用。经常渗透的朋友可能都非常清楚,由于各种各样的途径,我们经常会搞到各种各样的散列[hash],比如,各类web管理用户的密码hash,各类系统用户的密码hash,各种第三方服务器工具配置文件中的hash,各类办公套件文件启动密码的加密hash等等。今天,我们就来简要说明一下关于各类hash破解工具的使用,以备不时之需。

几个常用的破解网站


下面是几个相对还算好用的在线hash破解站,其实,诸如此类的站点还有非常多,不过大多都不太靠谱,后期遇到好的我会再贴上来。

http://www.cmd5.com

这个是国内比较知名的一个在线hash破解站,虽然目前支持的散列类型还比较少,不过就成功率来讲,在你自己没有特别好的显卡,GPU矩阵或者性能强劲的CPU的时候,它无疑是个很好的替代品,实在没查到,起码还可以在后台帮你跑五天,先不管能不能跑出来,总归是个希望。

http://www.objectif-securite.ch

如果cmd5实在跑不出来,不妨再尝试它,也是个比较老的在线hash破解站了,估计朋友们也都比较熟悉,这里就不啰嗦了。

万能的淘宝

另外,在淘宝上也有很多卖家提供这种hash爆破服务,实在不行还可以尝试直接丢给他们跑,一般跑出来才会让你付钱,他们可能也是在后台拿GPU矩阵跑的,需要注意的是,找个靠谱点儿的店就好了,某宝骗子多,形形色色有些东西总让人防不胜防……

在线破解工具

kali中也自带了一个在线的hash破解脚本'findmyhash',其实,脚本做的事情非常low,就是轮询着把你提供的hash丢到各个hash破解站上去查询,如果查到了就把对应的结果明文发回来,实在不行,还可以丢到谷歌上跑跑,仅此而已,可能唯一要注意的是先把kali挂上vpn,不然,有些站点可能访问不了,说实话,基本就是个废[除了最普通的md5,别的就算了吧],实在没办法,碰碰运气还是可以的。

findmyhash md5 -h ff9830c42660c1dd1942844f8069b74a

识别hash类型


如果你实在搞不清楚某条hash的具体散列类型,不妨先用下面的脚本[kali自带]大致识别下,可能不太准,不过粗略的看一眼还是可以的。另外,谷歌上也有很多在线的hash类型识别站,可自行去尝试,这里就不一一列举了。

hash-identifier

hash暴力破解


除了在线查找的方法,剩下的方法就是自定义字典或者穷举的方式进行暴力破解,网络上有一款爆破hash非常的强大的工具--hashcat,支持多种hash破解以及多种字典规则,利用gpu破解速度奇快。

使用hashcat之前需要什么?

务必保证已经事先装好对应的显卡驱动(看官网这情况,最新版的hashcat除了增加了一些新的散列类型之外,貌似也已经不再区分AMD和英伟达显卡了,如果你用的是旧版本的hashcat,请根据自己实际的显卡类型来选择对应版本的hashcat),之后再到其官方站点把hashcat down下来,注意,直接解压即可运行,无需再额外装任何东西,用什么系统就运行对应系统的可执行程序即可[实际破解中,还是更推荐用linux,可能就是装驱动稍微有点儿麻烦,不过还好啦,如果实在搞不定,在win下跑也是一样的]。下面直接全部用kali自带的hashcat来演示,不同类型的hashcat,单就用法来讲,其实也没啥太大区别,实际使用中建议还是自己买块好点儿的显卡跑,如果真有条件,GPU矩阵也是可以考虑的:https://hashcat.net/files/hashcat-3.6.0.7z

hashcat的参数简介

如果在kali中提示要升级到新版本[kali2.x可能会出现这样的情况],请把系统时间修改到2010年之前即可,这里就只说几个最常用的选项,关于其它的各种小选项,因为自己实际中用的比较少,如果大家万一用到,扫一眼帮助即可,篇幅原因这里就只捡最核心的说了。

-a           指定要使用的破解模式
-m           指定要破解的hash类型所对应的id[下面有一份完整的hash id对照表],几乎现在市面上常用的一些散列类型它都支持,而且每个版本更新都会增加一些新的算法
-o           指定破解成功后的hash及所对应的明文密码的存放位置,可以用它把破解成功的hash写到指定的文件中
--force       忽略破解过程中的警告信息,跑单条hash可能需要加上此选项
--show       显示已经破解的hash及该hash所对应的明文
--increment     启用增量破解模式,你可以利用此模式让hashcat在指定的密码长度范围内执行破解过程,其实,并不建议这么用,因为破解时间可能会比较长
--increment-min   密码最小长度,后面直接等于一个整数即可,配置increment模式一起使用
--increment-max   密码最大长度,同上
--outfile-format  指定破解结果的输出格式id,一般自己常用3
--username      忽略hash文件中的指定的用户名,在破解win和linux系统用户密码hash可能会用到
--remove       删除已被破解成功的hash
-r           使用自定义破解规则,这个后期抽空再说吧,比较的复杂,不是一两句话能说完的

hashcat模式介绍

0 | Straight    最简单的纯粹基于字典的爆破模式,后面可以连续跟上多个字典文件,破解的成功与否最终还是取决于字典质量,在几乎同等的破解时间里,是我我肯定不会先选它的,简单跑一些弱口令什么的,还是可以的,话说回来,如果只是跑些弱口令,大可不用hashcat,未免有些大材小用了,不是吗 1 | Combination          一种相对智能高效的爆破模式,它的意思是这样的,如果你事先已经明确知道密码中可能包含哪些字符串,你可以把那些字符串事先写到文件中,每行对应一个字符串,然后hashcat会自动根据你所提供的这些字符串,尝试所有可能的组合进行猜解
3 | Brute-force          基于纯掩码的爆破方式,如果你有需求要大批量爆破hash,可能会用到,后面我们会用绝大部分的篇幅来说它,这里需要稍微注意下,你给定的掩码是多少位它就只破解多少位,比如,你给的是7位的掩码,它就只跑7位这么长,它可能并不是你想象的那样,"是从1位一直跑到第7位"这样自动轮询,如果你想让它自动变长跑,启用increment模式指定密码的最小和最大长度即可,之前理解的有点儿错,也是看官方的wiki才知道的,汗……
6 | Hybrid Wordlist + Mask     基于字典和掩码配合的爆破模式,它的破解过程其实也比较简单,就是每次从前面的字典中取出一个字符串然后和后面掩码的所有组合进行拼接,直到撞到对应的明文
7 | Hybrid Mask + Wordlist     基于掩码和字典配合的爆破模式,跟6的过程正好相反,只不过这次它是从前面进行拼接

hasncat掩码介绍

掩码是个非常灵活的东西,你可以把它放到任何你想放的位置上,甚至,你愿意的话,也可以把自己想跑的一些掩码规则都事先放到一个文件中,然后以.hcmask命名,加载就可以让hashcat自动跑了,这样用起来比较方便,省的后期经常需要人为干预,后续会为大家简单演示下:

l | abcdefghijklmnopqrstuvwxyz 纯小写字母
u | ABCDEFGHIJKLMNOPQRSTUVWXYZ 纯大写字母
d | 0123456789 纯数字
h | 0123456789abcdef 常见小写子目录和数字
H | 0123456789ABCDEF 常见大写字母和数字
s |  !"#$%&'()*+,-./:;<=>?@[\]^_`{|}~                   特殊字符
a | ?l?u?d?s 以上所有字符
b | 0x00 - 0xff 可能是用来匹配像空格这种密码的

比如,下面的例子:

?l?l?l?l?l?l?d?d?d?d     表示6位小写子目录4位数字组成的密码,注意这里的位置全部都是一一对应的
de?l?d?s56pos        表示由de加一位小写字母加一位数字加一位特殊字符后面跟上56pos组成的密码

当然,你也可以自定义字符集规则,注意,可以连续指定多个不同的规则集

-1, --custom-charset1   | CS   | User-defined charset ?1   | -1 ?l?d?u
-2, --custom-charset2   | CS   | User-defined charset ?2   | -2 ?l?d?s
-3, --custom-charset3   | CS   | User-defined charset ?3   |
-4, --custom-charset4   | CS   | User-defined charset ?4

比如,下面的例子:

-1 ?l?s ?1?1?1?1?1              表示五位由特殊字符和小写字母组成的密码 -1 ?d?l -2 ?d?l?u -3 ?l?u ?1?2?3  表示密码的第一位可能是小写字母或者数字,第二位可能是大小写字母或者数字,第三位可能是大或小写字母

应用场景


不同破解模式下的具体应用场景,用的时候需要稍微注意下语句格式(暂以破解最普通的md5 hash为例)

基于纯字典的爆破模式 [Straight]

hashcat --force -a 0 -m 0 hash.txt /home/weak_wordlist/pass/weakpass.txt -o res.txtcat res.txt

字典与字典组合[Combination]:

我有两个这样的字典,字典包含如下的字符串,而我的实际密码是’adminpass’(字典文件可同时有很多个,不过那也意味你的组合也会特别多,速度就会慢),实际破解就可以像下面就这样写。

cat dic1.txt dic2.txt

hashcat --force -a 1 -m 0 hash.txt dic1.txt dic2.txt

纯掩码的爆破模式[Brute-force]

基于纯掩码的爆破模式,其实就是尝试逐个位破解,一般人的密码设置习惯大都是基于大小写字母数字这种形式的,如果hash实在比较多,可以尝试从指定的位数开始一位位的将大小写特殊字符轮询这跑,可以节省一些时间。

破解九位纯小写字母组成的密码hash,可以看到在我双CPU双核的虚拟机中破解这种只是两三分钟的事情。

hashcat --force -a 3 -m 0 hash.txt ?l?l?l?l?l?l?l?l?l

前三位小写字母,后四位数字
hashcat --force -a 3 -m 0 hash.txt ?l?l?l?d?d?d?d

10位纯数字,其实大家都很清楚,底层对数字的处理速度是最快的
hashcat --force -a 3 -m 0 hash.txt ?d?d?d?d?d?d?d?d?d?d

7位小写字母加数字的随机组合
hashcat --force -a 3 -m 0 hash.txt -1 ?l?d ?1?1?1?1?1?1?1

除了上面这种常规的掩码写法,你也可以这样,比如,你明确的知道密码的某一位或者几位上可能是什么字符,你也可以这样写掩码,假设密码明文为’loveshare’,你实际破解的掩码就可以这样写,它只会去破解有掩码的位,速度自然就非常快了。

hashcat --force -a 3 -m 0 hash.txt ?l?lve?l?la?l?l

字典加掩模式[Hybrid Wordlist + Mask]

基于字典和掩码配合的爆破模式,把可能存在的字符串事先写到字典中,然后hashcat在破解的时候会把后面所有的掩码组合跟前面的字典每行中的字符串进行拼接,直到猜解出明文,下面也是一样,只不过下面是把掩码放在了前面字典放在了后面。其实,它想表达的意思非常简单,比如: dic1.txt 中的内容是这样的

admin root ....

实际的明文密码是这样的

adminpass123

那你实际破解的掩码,就可以这样写

hashcat --force -m 0 hash.txt -a 6 dic1.txt -1 ?l ?l?1?1?1?d?d?d

其实,它实际的拼接过程就相当于下面这样,直到最后就会撞到adminpass123

admin?l?1?1?1?d?d?dpass?l?1?1?1?d?d?d...

下面是多字典实例

hashcat --force -m 0 hash.txt -a 6 dic1.txt dic2.txt -1 ?l ?l?1?1?1?d?d?d

掩码和字典配合的爆破模式 [Hybrid Mask + Wordlist]

hashcat --force -m 0 hash.txt -1 ?l?d ?1?1?1?1 -a 7 dic1.txt dic2.txt

基于increment的自动变长模式

基于increment的自动变长模式,下面的意思就表示自动破解4到8位由小写子目录和数字组成的密码hash:

hashcat --force -a 3 -m 0 hash.txt --increment --increment-min=4 --increment-max=8 -1 ?l?d

实例讲解


下面是一些我们可能会经常碰到的散列掩码爆破实例,自己机器性能不是太好,为了节省时间,所以实际设置的密码都非常简单,大多是9位以内的小写字母加数字。

破解最普通的md5 hash

破解最普通的md5 hash[可能也是大家用的最多的散列(本身并非加密算法,大多是用来做hash校验用的),除了常规网站后台管理密码,另外,很多常见服务器端工具的默认加密都是基于此类型,如:filezilla,等等……],下面表示破解8位由小写字母数字组成的密码:

hashcat --force -a 3 -m 0 hash.txt -1 ?l?d ?1?1?1?1?1?1?1?1

破解 sha系列 hash

绝大多数linux发行版的默认用户密码加密类型都是基于sha系列的变种

纯sha1,五位小写字母
hashcat --force -a 3 -m 100 hash.txt ?l?l?l?l?l

纯sha224,五位小写字母

hashcat --force -a 3 -m 1300 hash.txt ?l?l?l?l?l

纯sha256,五位小写字母
hashcat --force -a 3 -m 1400 hash.txt ?l?l?l?l?l

纯sha384,五位小写字母
hashcat --force -a 3 -m 10800 hash.txt ?l?l?l?l?l

纯sha512,五位小写字母[速度稍慢]
hashcat --force -a 3 -m 1700 hash.txt ?l?l?l?l?l

破解 linux 系统用户密码hash

可能稍微有些慢,相比之下用john(这也是一款比较好用的hash破解工具,后续我们还会单独说)跑,效果可能会更好一些。

hashcat --force -a 3 -m 1800 hash.txt ?l?l?l?l?l

破解 win 2008 系统用户的 ntlm hash

实际破解中只需要破解ntlm部分的值即可,m的值就不用了,另外,还有域中的各类证书散列类型破解基本都是如此,这里就不一一举例了。

hashcat --force hash.txt -m 1000 -a 6 dic1.txt ?s?s?s?d?d?d

破解 mysql 4/5.x 数据库用户hash

记得实际破解的时候把hash开头的*去掉,要不然可能识别不出来

select * from mysql.user\G;hashcat --force hash.txt -m 300 -a 3 ?l?l?l?l

破解 mssql系列[2005/2008/2012] 数据库用户hash

SELECT name, password_hash FROM master.sys.sql_logins hashcat --force hash.txt -m 132 -a 3 ?l?l?l?l?l?d?d?d

破解 pgsql 数据库用户hash

实是md5的变种,跑的时候记得把hash开头的md5去掉,不过自己在实际跑的过程中,暂时还有些问题,如果用普通的md5来跑,跑出来的明文和我实际的密码还有一些出入。

SELECT usename, passwd FROM pg_shadow; hashcat --force hash.txt -m 12 -a 3 ?l?l?l?l?l?d?d?d

破解 oracle 11g 数据库用户hash

得倒数第20个字符加':',要把盐区分出来

ELECT name,spare4 FROM sys.user$; S:EC9E3B871377F217DCFA18F1B84F2F2EACFF9299:AB4B59A17C93F8CB4840 hashcat --force hash.txt -m 112 -a 3 ?l?l?l?l?l

破解 wpa/wpa2 握手包中的无线密码hash

可能需要你自己先把握手包用wpaclean整理一下,再用aircrack输出成hashcat认识的散列格式,非常实用。

hashcat -a 3 -m 2500 wpahash.hccap ?l?l?l?l?l?l?l?l

破解 wordpress 4.x 用户密码hash

实际测试版本 4.7.4--具体加密方式在wp-includes\class-phpass.php 文件中的HashPassword()函数中

hashcat --force hash.txt -m 400 -a 3 ?l?l?l?d?d?d

破解 joomla < 2.5.18 用户密码hash

实际测试版本 joomla 2.5.1--具体加密方式在 libraries\joomla\user\helper.php 文件中的genRandomPassword()和getCryptedPassword()函数中

hashcat --force hash.txt -m 11 -a 3 ?l?l?l?l?l

破解 joomla > 2.5.18 用户密码hash

跟上面wp的散列类型其实是一样的,但自己实际跑的时候hash却没有识别出来,暂时还没找到问题的根源,如果有成功的朋友,麻烦也告诉我一下] [实际测试版本joomla 3.7]:具体加密方式在 libraries\joomla\user\helper.php 文件中的genRandomPassword()和getCryptedPassword()函数中

hashcat --force hash.txt -m 400 -a 3 ?l?l?l?l?l

破解drupal 7.x 用户密码hash

实际测试版本7.5.4--具体加密方式在 includes\password.inc 文件中的_password_crypt函数中

hashcat --force -m 7900 hash.txt -a 3 ?l?l?l?l?l

破解discuz 3.x 用户密码hash

实际测试版本discuz x3.2,暂时还有些问题,具体加密方式在 uc_client\model\user.php 文件中的add_user函数中

hashcat --force -m 2611 hash.txt -a 3 ?l?l?l?l?l

破解phpbb3 用户密码hash

实际测试版本 phpbb3.2,暂时还有些问题

hashcat --force -m 400 hash.txt -a 3 ?l?l?l?l?l?d?d?d

破解 htpasswd 密码hash

hashcat --force -m 1500 hash.txt -a 3 ?d?d?d?d?d?d

破解Adobe PDF 11文件密码hash

后面针对这种包公套件的加密破解,都需要自己先把hash提取出来,在john基本都有对应的hash提取脚本,可直接用,后续我们再说,下面几种类型的破解有几个还有一些问题,不过,我们后面用john来搞就好了。

hashcat --force -m 10700 hash.txt -a 3 ?d?d?d?d?d?d

破解 Office 2013 文件密码hash

hashcat --force -m 9600 hash.txt -a 3 ?d?d?d?d?d?d

破解 RAR5压缩文件密码hash

hashcat --force -m 13000 hash.txt -a 3 ?d?d?d?d?d?d

破解 7-Zip压缩文件密码hash

hashcat --force -m 11600 hash.txt -a 3 ?d?d?d?d?d?d

破解 WinZip压缩文件密码hash

hashcat --force -m 13600 hash.txt -a 3 ?d?d?d?d?d?d

破解grub 2.x hash

hashcat --force -m 7200 hash.txt -a 3 ?d?d?d?d?d?d

破解 TrueCrypt 密码hash

曾经还算是个比较强的磁盘加密工具,自己也一直在用,只不过后来发生了一段故事,导致它官方自爆不再安全,也是尴尬。

hashcat --force -m 62XY hash.txt -a 3 ?d?d?d?d?d?d

破解 Skype 密码hash [需要自己从对应的xml文件把hash提取出来,很抱歉,我没成功]:

hashcat --force -m 23 hash.txt -a 3 ?d?d?d?d?d?d

实际破解中自己的一些建议


关于在实际破解中自己的一些建议,暂以大批量hash爆破为例[事先没有任何密码规律可循,只能盲测的那种情况。

1、首先,弱口令字典先走一遍再说。

2、其次,跑掩码,把所有想跑的掩码全部事先放到.hcmask文件中,然后加载它自动跑,上面已有介绍。

3、如果只是针对单条hash,在上述方法都跑不出来的情况下,可以去仔细分析下目标的密码设置规律,再尝试组合,可能效率会高一点,但那也只是可能。

4、最后,如果你自己真的有能力,可以想办法把它做成分布式快速hash破解产品[密码机],然后拿到市面上去卖,也是完全可行的,毕竟已经有很多成功的案例,只不过你可能更多应该考虑下怎么比别人做的效率更高,更易用,不然,很难有市场。

密码安全个人建议


1、密码要保持足够的随机性,绝不要让别人轻易分析出的你密码设置习惯和规律,有很多的字典生成工具中的算法就是根据这个来的,不然,很快就会被别人撞到密码。

2、密码字符要足够混乱,严禁将单纯的大小写字母,数字,作为密码,在保证密码随机性的前提下,密码中最好同时包含有数字,大小写字母,特殊字符。

3、保证必要的密码长度,,推荐至少15位以上,我们也看到了,对于那种8,9位的纯字母数字的密码,在hashcat面前基本是不堪一击的,当然啦,等量子或者光子计算机技术成熟以后,估计现有的各种加密算法,基本要沦陷一大半了,另外,看到很多说密码要经常改,其实,个人认为在你密码没有任何泄露而且足够复杂的前提下,根本没有必要经常改,不过,这也是建立在你没有被人搞进去的大前提下的,密码即使再复杂,如果一下被人抓到了明文,也就是个摆设了,个人一直都认为安全本来就是一个多维度的东西,渗透者需要的有时只是一个有突破性的点,而防御者却要防御所有可能被攻破的维度,所以,一个优秀的防御者,在此之前也一定是一个优秀渗透者。

4、严禁一个密码同时用于n个账号登陆,不然,别人只需要拿着这一个密码就可以到你经常去的其它网站上把你的私人信息翻个顶儿朝天了,想必很多人为了图方便[起码在很久很久以前,自己也这样做过],可能都会这样做,很显然这是一种非常傻叉的行为,比如,专门针对此的"撞库攻击",其实,说到这类还想再多提一点信息搜集里的东西,"水坑攻击",其实,就是搜集的社交关系网,然后,在你经常去的一些偏门的站点上等着你,要么社工,要直接把那个站搞下来。

5、严禁把密码随意泄露给别人,这年头,社工几乎是无处不在的。

6、认清钓鱼站,看清楚再敲,不然,账号密码就被丢到别人的机器上了。

7、严禁把明文密码直接写到文件保存到系统里,基于等于给别人留了个后门,一条命令就什么都有了。

密码字典


关于密码你知道多少?密码也就是口令,通常作为身份验证的一部分来使用,也就是说如果密码被人盗取或者破解,那么攻击者就可以使用你的身份来做很多事情,这是你所不能接受的。在互联网上几乎每个人都有自己的密码,通常在多个网站登录都使用同一个密码,由于经常使用,所以密码也经常是容易记忆的,既然容易记忆那就很可能存在一定的规律,所以今天的主要内容就是关于密码组成的那些事,看看大家的常用密码是否中枪。

弱口令

弱口令的存在,一个很重要的原因是方便记忆,很简单不需要专门去记忆就完全可以记得住。还有一点是大众的用户不明白密码的重要性,抱着别人又不会专门来搞我的想法,即使被提醒修改密码也不会去修改。

针对这个的破解是最简单的,网络上出现了很多次的密码泄漏事件,其中有很多的明文密码被泄漏,经过排序计算重复,排在前面的就属于弱口令的行当,只需要提取其中的top100,说不定就能破解出很多用户的口令。在离线破解hash的时候,可以把网络上公开的密码字典全部收集起来,去重之后加入破解即可。

关于弱口令,freebuf上有一个文章专门做了描述:

http://www.freebuf.com/articles/web/42120.html
可以点击原文连接查看这个文章

密码分解的几种方式

除开弱口令之后,我们来重点分析一下,其他比较复杂的密码组成。通常由于数字一共有10个,所以使用纯数字作为密码的通常都可以视为弱口令,经过牌类组合之后,十位的数字密码使用hashcat可以轻松跑完。所以纯数字密码不在我们的讨论范围之内。

字符和数字组合

关于这个组合,我们来看几个常见密码:

password123、passw0rd、0password0、123456admin、a123456a

这种密码的组合方式也就大概这么几种:数字在字符串后面、数字在字符串中间、数字在字符串两边、数字在字符串前边,字符串在数字串两边等等。

对于这些密码如何生成相应的字典来破解呢?

数字在字符串后面

对于密码:password123,我们可以分解为两个部分,一个是常用字符串一个是常用数字串。知道这个之后我们就可以通过网络上泄漏的密码字典进行分解,提取其中比较常见的字符串以及常见的数字串,然后将提取出来的两个字典进行组合,这样针对这种类型的密码就可以破解出一大部分。这种方式同样可以使用的像123456admin(数字在字符串前边)也可以使用。像0password0(数字在字符串两边)、a123456a(字符串在数字串两边)由于是三个部分的组合,所以使用上面讲述的方法,最后三个字典文件进行组合,结果非常大,破解时间需求很大,而且密码破解率也不高,所以这种密码就可以使用后面提供的方法。

数字在字符串中间

对于密码:passw0rd,这个密码的存在通常是人们为了好记,在自己想到一个比较熟悉的字符串后,将其中的字母与数字进行了替换,例如:o换为0、B换为8、e换为3、i换为1等等。所以对于这种密码的破解,就需要了解用户的心思,将常用的替换字母做一下总结,整理一个常用字符串列表,对其中的字符一一替换生成字典,这样,这种方式的密码就可以在猜到使用的字符串之后轻松破解。

数字在字符串两边、字符串在数字串两边

对于密码组合比较复制的密码,通过收集常用字符串和常用数字串然后组合的方式不太现实,所以推荐一种方法,不仅仅适用于这种,几乎可以适用于所有类型的密码组合。

字符、数字、特殊字符

在前文的基础上,加上特殊字符后,组合方式多了一种,在破解难度上增加了n多倍,所以使用猜测组合的方式已经不太适用,所以这种密码的破解方式也要使用后面要讲的密码分解方式,使得密码破解更加简单便捷。

最终密码分解方式

对于所有的密码组合,在我们的能力范围之内,能够把小于十二位的密码破解出来就已经很不错了,就别说大于十二位的密码,所以我们讨论的范围就是小于十二位密码的密码破解。

首先拿到几个密码,如:admin123!@#、123@#pass、1S@d5da3等,如何使用一种方式适用多种密码的分解?我的做法是:

  • 总结一份全网公开的密码字典

  • 使用脚本提取所有密码的前面的五到八位,分别存入t5.txt、t6.txt、t7.txt、t8.txt

  • 使用脚本提取所有密码的后面的五到八位,分别存入e5.txt、e6.txt、e7.txt、e8.txt

  • 对所有文件进行排序并且计算其重复数,如果密码字典过大可以选择性的提取重复数大于等于几的密码进行使用

  • 最后使用前*后的方式组合密码,形成密码字典进行破解

推荐hash破解工具

其实hashcat自带的使用的mask的方式破解八位以内的密码还是可以的,破解八位以上的就需要字典与mask、mask与mask、字典与字典的组合才能完成任务。

总结


我们是在讲渗透,而非专门研究加密解密和工具自身的破解算法上,并不是为了专门研究密码学,对于渗透者来说,我们只是想利用手里现有的各种凭证,来继续下一步的渗透动作。仅此而已。所以,大可不用在这些工具上浪费太多的时间,能快速上手,并且能跑出来自己想要的东西才是主要目的,与其花那么长的时间在这种工具上,不如花更多的时间好好想想该如何'搞'到这些hash才是正途,搞到hash起码还能说明你离目标又近了一步,连hash到搞不到才是真正的尴尬,不忘初心,方得永生!


下面阅读原文有啥

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存