密码文件
[root@]# vi /etc/shadow
文件示例
root:$6$Z/WCDvdGbDCTQknC$PR5ynvhojpao1ZfTTQ/hfk5ckrr0QyPcqCjZfhvWSEwySvh.g7wLxnQ21jrpWCVSRqhr3z7ZbBxGX.jvdsZuh/::0:99999:7:::
bin:*:17834:0:99999:7:::
daemon:*:17834:0:99999:7:::
name | 登录名称,必须是有效用户名 |
---|---|
password | 已加密密码,分为三个部分用$分隔,第一部分表示用哪种哈希算法;第二部分是用于加密哈希的salt;第三部分是已加密的哈希哈希算法:1表示MD5;6表示SHA-512;5表示SHA-256。注意:在密码前一个感叹号(!)代表该用户被锁定,可以在机器上转到改用户,但无法远程。注意:密码是两个感叹号(!),表示没有设置密码 |
lastchanage | 最近一次更改密码的日期,以距离1970/1/1的天数表示 |
min-age | 密码更改后多少天内不能再次更改。0表示可以随时更改 |
max-age | 密码过期时间,必须在期限内修改密码 |
warning | 警告期,警告用户再过多少天密码将过期。0表示不提供警告 |
inactive | 宽限期,密码过期多少天仍然可以使用 |
expire | 帐号过期时间,以距离1970/1/1的天数表示。0或空字符表示永不过期 |
blank | 预留字段 |
两个不同用户使用相同代码,加密后哈希值不同,因为salt不同
salt是passwd命令自动生成的
实现思路1(有问题)
初步的想法是查到系统$分割的数据,根据加密算法以及添加salt值,将本地的密码文件跑一遍与系统加密后的hash值做对比
有个问题函待解决:加salt后的值与系统中存在的密码值不同,考虑情况是salt值添加的方法和位置有问题
实现思路2(有缺陷)
利用开源软件Joth the Ripper,一款密码分析工具,支持字典式的暴力破解。
下载地址csdn资源下载0积分
- 下载到Linux中后解压
tar zxvf john-1.8.0.tar.gz
- 利用yum 工具安装c++编译器
yum install gcc gcc-c++ -y
- 查看自带的密码字典
[root@ john-1.8.0] cd run
[root@ run] vi password.list
- make编译代码
[root@ john-1.8.0] cd src
[root@ src] make linux-x86-64
执行后会发现run
目录下多了一个文件john
- 利用john脚本分析账户密码文件
账户和密码文件分别存放在/etc/passwd
和/etc/shadow
中
[root@ run] ./john /etc/passwd /etc/shadow
如果是简单的密码的话,一会就可以跑出来,显示在控制台
最大的缺陷是只可以跑出简单的密码,稍微复杂一点就不能读取,这样的话如果是用于对比撞库的弱口令(密码结构复杂,但已泄露,也算弱口令),就无法实现,还是需要方法一
结果历史纪录会存储在john-1.8.0/run
目录下的john.pot
文件中