现在大部分系统对于在线密码爆破还是比较关注的,不管加不加代理,都能比较准确地识别出在线爆破的行为。所以就有了和在线密码爆破相对应的离线密码破解。
离线密码破解简介
离线破解指已经提前获得加密密文,在不与目标服务器交互的情况下,利用在线网站或本地程序对密文进行破解。
离线破解有这些优势:
- 不会触发密码锁定机制
- 不会产生大量登录失败日志引起管理员注意
离线破解比较麻烦的一点就是要提前拿到账户密码的加密密文,可能需要一些其他手段入侵目标客户端,传一些木马过去,做一些网络代理的设置。
离线密码破解的工具
现在可以用来进行离线破解的辅助工具很多,比如:
- 一些在线的密文破解网站
- hash-identifier
- hashid
- john
- hashcat
实操准备
随便找个主流网站,抓包看一下登录时传递给服务器的密码。我是抓了百度账户登录时传递的其中一个密文参数:1e3f2dd1c81f2075171a547893391274,其实我不确定这个是不是密码的密文,不过这里只是演示密文爆破,只要知道思路就行。
加密方式分析
拿到密文后,还不能直接进行破解,因为现在加密方式太多了,如果没找到正确的加密方式,花再多的时间也无法破解。
分析加密方式的工具有很多,kali中集成了hash-identifier:

hash-identifier
直接将加密后的hash值输入就可以:

分析加密方式
hash-identifier给出了最有可能的加密方式。
kali中还有一个工具hashid,使用非常简单,它没有工具控制台,直接命令行使用:

hashid的使用
hashid罗列出来所有可能的加密方式,但是没有给出建议。
这些分析工具给出的结果都不一定就是正确的,只能作为参考,在安全领域,要保持一个谨慎的态度,不要完全相信任何一款工具。
密文破解:hashcat
有了加密方式的猜测后,就可以对密文进行破解了,这里使用的工具是hashcat,可以先看一下帮助说明:

hashcat -h
hashcat的可使用参数非常多,功能也非常强大。这里不对参数进行逐个介绍了,就给出几种常用的使用命令,如果对hashcat特别感兴趣可以给我留言,可以单独整理一篇详细的内容。
hashcat不能直接将加密后的hash直接传入,需要将hash字符串存在文档中,将文档传给hashcat。

存hash值得文件
使用命令:
hashcat -m 0 passwords.hash passwords.txt
参数-m是指定加密方式得,0表示MD5得加密方式,hashcat支持得加密方式有很多:

hashcat支持得加密方式(截图不全)
文件passwords.hash是加密的hash值,passwords.txt是密码字典文件。不要以为离线密码爆破就不需要字典,因为很多加密方式都是非对称加密,是不可还原的,所以只能将字典中的值通过同样的加密方式计算hash值,然后进行比对,这种方式获取的破解值其实也只是参考值,因为存在不同字符串通过加密后得到一样的hash值这种情况。
破解命令被执行后,得到结果:

爆破后的结果
hashcat有一个攻击模式的参数-a:

-a参数
前面使用的破解命令没传-a参数,其实是默认了-a 0,就是直接使用字典文件。
0:直接使用字典文件中的值
1:将字典文件中的字符串进行组合后使用,例如字典文件中有a、b两个值,破解的时候就会使用ab、ba、aa、bb
3:指定字符集或者全部字符集的所有组合
6:字典加掩码破解
7:掩码加字典破解
9:联想破解
一般都是直接使用默认0的,3的话没有非常好的硬件作为支持,几乎不可能成功,其他攻击方式我没有使用过。
密文破解:john
john也是kali中集成的一款密码破解工具。还是先看一下帮助文档:

john -h
这款工具也支持非常多的加密算法:

john支持的所有加密算法
执行这个命令:
john --wordlist=passwords.txt passwords.hash
参数–wordlist用于指定字典,最后跟得是加密后得hash文件。执行后得到结果:

密码破解结果
john还有其他使用方法,但是这里没必要展开,感兴趣可以留言。
总结
离线密码破解工具其实挺多的,但是难点其实不是工具的使用。是加密的hash字符串怎么获取、怎么找到合适的字典,还有爆破时硬件能不能提供足够的算力。

如若转载,请注明出处:https://www.zzibang.com/8320.html