Linux查询用户是否存在弱口令

密码文件

[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积分

  1. 下载到Linux中后解压
tar zxvf john-1.8.0.tar.gz
  1. 利用yum 工具安装c++编译器
yum install gcc gcc-c++ -y
  1. 查看自带的密码字典
[root@ john-1.8.0] cd run
[root@ run] vi password.list
  1. make编译代码
[root@ john-1.8.0] cd src
[root@ src] make linux-x86-64

执行后会发现run目录下多了一个文件john

  1. 利用john脚本分析账户密码文件
    账户和密码文件分别存放在 /etc/passwd/etc/shadow
[root@ run] ./john /etc/passwd /etc/shadow

如果是简单的密码的话,一会就可以跑出来,显示在控制台
最大的缺陷是只可以跑出简单的密码,稍微复杂一点就不能读取,这样的话如果是用于对比撞库的弱口令(密码结构复杂,但已泄露,也算弱口令),就无法实现,还是需要方法一
结果历史纪录会存储在john-1.8.0/run目录下的john.pot文件中

你可能感兴趣的:(Linux)