1.前言
本博客将介绍Kali系统中的HashCat工具的使用,利用Hashcat工具对linux系统下shadow文件进行弱口令检查。
2.环境
- Centos 7
- Kali-Linux -2018
3.Shadow文件
当前的Linux系统出于安全性考虑,etc/passwd 文件中并没有存储Linux用户的密码信息,而是转移到了/etc/shadow文件下,又称为“影子文件”。该文件只有root用户才能read权限,其他用户无权查看,使密码泄露风险降低。同时shadow文件中存储的密码采用SHA512散列加密,相比较原始的MD5,加密等级更高。
shadow文件密码存储格式:$id$salt$encrypted$
id代表使用的加密算法:
id | Method |
1 | MD5 |
2a | Blowfish(not in mainline glibc;added in some Linux distribution) |
5 | SHA-256(since glibc 2.7) |
6 | SHA-512(since glibc 2.7) |
salt是长度1-16字符的随机数,随机数的引入增大了破解难度
encrypted是最终的密文,即通过加密算法和salt(盐参)计算的最终结果
示例:
$6$PUehV6sk$Y1ctlOYUyKJMO868w7C78xeCvkGz4R7M73Hs6cg.IsMSN.2QryqCbbno5wvklwHn4is//ibMQA0TIWiledmp80
该shadow文件显示,使用加密算法为SHA-512,随机数(salt)为PUehV6sk,加密密钥为Y1ctlOYUyKJMO868w7C78xeCvkGz4R7M73Hs6cg.IsMSN.2QryqCbbno5wvklwHn4is//ibMQA0TIWiledmp80
4.HashCat工具
4.1 介绍
hashcat系列软件在硬件上支持使用CPU、NVIDIA GPU、ATI GPU来进行密码破解。在操作系统上支持Windows、Linux平台,并且需要安装官方指定版本的显卡驱动程序,如果驱动程序版本不对,可能导致程序无法运行。NVIDIA users GPU破解驱动需要ForceWare 331.67以及更高版本,AMD 用户则需要Catalyst 14.9以及更高版本,可以通过Catalyst 自动侦测和下载检测工具来检测系统应该下载那个版本,下载地址:地址,选择合适的版本安装即可。其官方github 网站地址为:地址
4.2 使用参数指南
本次演示以一台远端centos的shadow文件为例,使用Kali中内置的Hashcat工具进行破解。
工具路径:
参数标准语句:
hashcat -a 0 -m <加密模式> <shadow文本.txt> <密码文本.txt> -o 输出文本.txt
参数列表:
-a | 指定要使用的破解模式,其值参考后面对参数。“-a 0”字典攻击,“-a 1” 组合攻击;“-a 3”掩码攻击。 |
-m | 指定要破解的hash类型,如果不指定类型,则默认是MD5 |
-o | 指定破解成功后的hash及所对应的明文密码的存放位置,可以用它把破解成功的hash写到指定的文件中 |
--force | 忽略破解过程中的警告信息,跑单条hash可能需要加上此选项 |
--show | 显示已经破解的hash及该hash所对应的明文 |
--increment | 启用增量破解模式,你可以利用此模式让hashcat在指定的密码长度范围内执行破解过程 |
--increment-min | 密码最小长度,后面直接等于一个整数即可,配置increment模式一起使用 |
--increment-max | 密码最大长度,同上 |
--outfile-format | 指定破解结果的输出格式id,默认是3 |
--username | 忽略hash文件中的指定的用户名,在破解linux系统用户密码hash可能会用到 |
--remove | 删除已被破解成功的hash |
-r | 使用自定义破解规则 |
Hash id对照表:
(常见ID 其他请使用--help获取)
Name | Method |
0 | MD5 |
100 | SHA1 |
1300 | SHA2-224 |
1400 | SHA2-256 |
3800 | md5($salt.$pass.$salt) |
3710 | md5($salt.md5($pass)) |
4010 | md5($salt.md5($salt.$pass)) |
1800 | sha512crypt $6$, SHA512 (Unix) |
4.3 操作步骤
提取shadow文件,使用编辑器打开,选择关键信息($id$salt$encrypted$),保存为shadow.txt文件,提前准备一个密码字典,我们命令为dic.txt。
shadow.txt:
dic.txt
命令执行:
hashcat --force -m 1800 -a 0 shadow.txt dic.txt -o results.txt
若与字典中的弱口令碰撞成功,会输出results.txt,反之则没有弱口令。
红色框住的就是破解出的密码:
当然你可以批量执行,就是提取较多的shadow文件信息到txt文件中,从前面我们也可以看出选择一个好的字典格外重要。
感谢阅读!