shadow文件分析
shadow文件分析
前言
在分析路由器的时候需要用到默认的密码是什么,但是我无法从网上知道,于是我想办法通过shadow去分析密码出来
shadow文件
当前的Linux系统出于安全性考虑,etc/passwd
文件中并没有存储Linux用户的密码信息,而是转移到了/etc/shadow文件下,又称为“影子文件
”。该文件只有root用户才能read权限,其他用户无权查看,使密码泄露风险降低。同时shadow文件中存储的密码采用SHA512散列加密,相比较原始的MD5,加密等级更高
。
shadow文件密码存储格式:
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(盐参)计算的最终结果
示例:
1 | $6$PUehV6sk$Y1ctlOYUyKJMO868w7C78xeCvkGz4R7M73Hs6cg.IsMSN.2QryqCbbno5wvklwHn4is//ibMQA0TIWiledmp80 |
该shadow文件显示,使用加密算法为SHA-512,随机数(salt)为PUehV6sk
,加密密钥为Y1ctlOYUyKJMO868w7C78xeCvkGz4R7M73Hs6cg.IsMSN.2QryqCbbno5wvklwHn4is//ibMQA0TIWiledmp80
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 使用参数指南
使用Kali中内置的Hashcat工具进行破解。
参数标准语句:
1 | 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) |
使用方法
1 | hashcat --force -a 0 shadow.txt dic.txt -o results.txt |
- dic.txt:破解的字典
- shadow.txt:要破解的shadow文件
- results.txt:如果破解成功后,生成的结果
破解后的结果会在results.txt 里面,不会在终端输出结果
例子
1 | $1$9.EU8ItY$z4EfK4vQ.tIaWfa8OR6HS1 |
命令行
1 | hashcat --force -a 0 shadow.txt dic.txt --show |
运行结果
1 | ┌──(kali㉿kali)-[~/Desktop/hash] |