您的位置:首页 > 运维架构 > Linux

Hashcat破解linux hash密码

2016-05-24 19:06 1066 查看

0x00:前言

学习时获得了/etc/shadow文件,需要尝试破解linux的登录密码. 但是只是搜索到简单的命令解释和普通的MD5值破解示例,都没有讲清楚来龙去脉,估计好多像我一样的小菜都看得云里雾里.最后看了一遍介绍使用Hashat破解linux登录密码的文章,就记录下来学习心得吧.

0x01:来龙去脉

00: linux登录密码文件

linux系统中有一个用户密码配置文件/etc/shadow,里面存放着用户名,Hash加密后的值,最后一次修改密码的日期(1970年1月1日距今的天数),密码的最小生存周期,最大生存周期等等,具体解释如下:

1)“登录名”是与/etc/passwd文件中的登录名相一致的用户账号
2)“口令”字段存放的是加密后的用户口令字,长度为13个字符。如果为空,则对应用户没有口令,登录时不需要口令;如果含有不属于集合{./0-9A-Za-z}中的字符,则对应的用户不能登录。
3)“最后一次修改时间”表示的是从某个时刻起,到用户最后一次修改口令时的天数。时间起点对不同的系统可能不一样。例如在SCOLinux中,这个时间起点是1970年1月1日。
4)“最小时间间隔”指的是两次修改口令之间所需的最小天数。
5)“最大时间间隔”指的是口令保持有效的最大天数。
6)“警告时间”字段表示的是从系统开始警告用户到用户密码正式失效之间的天数。
7)“不活动时间”表示的是用户没有登录活动但账号仍能保持有效的最大天数。
8)“失效时间”字段给出的是一个绝对的天数,如果使用了这个字段,那么就给出相应账号的生存期。期满后,该账号就不再是一个合法的账号,也就不能再用来登录了。


/etc/passwd文件是用户账户配置文件,只保存用户账户的基本信息,并不保存密码信息.

01:Hash

建立一个测试用户:test密码:pass的一条完整的/etc/shadow记录实例如下:



test:$6$f0EotKbw$sLAujh0EleiXNAuoph20iL517cXlcExWLATwz3xgCEyYlsIECUa9nuDdiT5/ntWfJDfxFhYGcMknkCq5Awgf20:15118:0:99999:7:::


其中

test 是用户名
$6$  是表示一种类型标记为6的密码散列suans fa,这里指SHA-512哈希算法.
f0EotKbw 指的是加盐(Salt)值


哈希又叫散列,是由散列算法生成的散列值.

关于Hash的特性:

原始密码经哈希函数计算后得到一个哈希值;
改变原始密码,哈希函数计算出的哈希值也会相应改变;
同样的密码,哈希值也是相同的;
哈希函数是单向、不可逆的。也就是说从哈希值,你无法推算出原始的密码是多少


有了哈希函数,就可以将密码的哈希值存储进数据库。用户登录时,检验用户输入密码的哈希值是否与数据库中的哈希值相同来判断是否是合法用户.

常用的破解方法就是:字典破解,暴力破解,逆向查表,彩虹表.

然后就有了盐(Salt).

一个随机生成的字符串。将盐与原始密码连接在一起(放在前面或后面都可以),然后将concat后的字符串加密。采用这种方式加密密码,彩虹表就不灵了(因为盐是随机生成的).

使用Hashcat破解(hash值比对,查表)linux登录密码时,并不需要一条完整的/etc/shadow记录,要把上面的完整记录削减成如下形式:

$6$f0EotKbw$sLAujh0EleiXNAuoph20iL517cXlcExWLATwz3xgCEyYlsIECUa9nuDdiT5/ntWfJDfxFhYGcMknkCq5Awgf20


只留下加密类型,Salt值,hash值就可以了,写成一行保存到文件中.

02:Hashcat

Hashcat系列有3个版本,分别是hashcat、 oclhashcat-lite和oclhashcat-plus.

其中hashcat是利用CPU来暴力破解密码的,支持的算法是最多的,但是相比破解速度很慢。

oclhashcat-lite和oclhashcat-plus都是利用GPU来破解密码的,破解速度比利用CPU的hashcat快很多倍。

oclHashcat-plus支持使用GPU破解多个HASH,并且支持的算法高达77种。oclHashcat-lite只支持使用GPU对单个HASH进行破解,支持的HASH种类仅有32种,但是对算法进行了优化,可以达到GPU破解的最高速度。

0x02:破解

现在差不多了,可以破解linux的登录密码了,不过要先准备一个密码命中率比较高的字典wordlist.txt.

有了上面的解释,再根据Hashcat的–help参数解释,就可以用命令了.



格式如下:

hashcat -m 1800 -a 0 -o found.txt crack.hash rockyou.txt


-m参数是告诉hashcat解密的Hash类型,1800则是指SHA-512(Unix)类型密码;

-a参数是指定攻击模式,0代表Straight模式,使用字典进行破解尝试;

-o参数是指输出结果文件,输出到found.txt文件中;

crack.hash是整理后的要破解的hash列表;

rockyou.txt是准备的密码字典文件.

过一会发现那个pass密码破解出来了,可是真正想破解的到写完文章时还没破解出来,电脑也变很热了……下次还是试试用GPU的吧~



Hashcat的具体命令使用方法详解可参考:这篇文章

英文介绍破解linux密码原文链接:Hashcat
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息