linux下的/etc/passwd&&/etc/shadow

你会不会突然的出现,在街角的咖啡店!

最近有遇到对/etc/shadow中的密码进行爆破问题,但是却没有成功,之前记得也有过总结这个,却找不到了。无奈就过来再记录下,以免下次查阅!

/etc/passwd

/etc/passwd是系统识别用户的一个文件,这个文件存放着所有用户账号的信息。其中当然包括账号与密码。当我们以root这个账号登录时,系统首先会查阅 /etc/passwd 文件,看是否有root这个账号,然后确定root的UID,通过UID 来确认用户和身份。

/etc/passwd的文件内容:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
root权限下执行查看
# cat /etc/passwd

root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:System daemons:/etc:
bin:x:2:2:Owner of system commands:/bin:
sys:x:3:3:Owner of system files:/usr/sys:
adm:x:4:4:System accounting:/usr/adm:
uucp:x:5:5:UUCP administrator:/usr/lib/uucp:
auth:x:7:21:Authentication administrator:/tcb/files/auth:
cron:x:9:16:Cron daemon:/usr/spool/cron:
listen:x:37:4:Network daemon:/usr/net/nls:
lp:x:71:18:Printer administrator:/usr/spool/lp:
sam:x:200:50:Sam san:/usr/sam:/bin/sh
1
2
root:x:0:0:root:/root:/bin/bash
用户名:密码:用户ID:组ID:用户描述:主目录:shell

系统中有一类用户称为伪用户(psuedo users),这些用户在/etc/passwd文件中也占有一条记录,但是不能登录,因为它们的登录Shell为空。它们的存在主要是方便系统管理,满足相应的系统进程对文件属主的要求。常见的伪用户如下:

bin 拥有可执行的用户命令文件
sys 拥有系统文件
adm 拥有帐户文件
uucp UUCP使用
lp lp或lpd子系统使用
nobody NFS使用

除了上面列出的伪用户外,还有许多标准的伪用户,例如:audit, cron, mail, usenet等,它们也都各自为相关的进程和文件所需要。

/etc/shadow

由于/etc/passwd文件是所有用户都可读的,如果用户的密码太简单或规律比较明显的话,一台普通的计算机就能够很容易地将它破解,因此对安全性要求较高的Linux系统都把加密后的口令字分离出来,单独存放在一个文件中,这个文件是/etc/shadow文件。 有超级用户才拥有该文件读权限,这就保证了用户密码的安全性。

/etc/shadow中的记录行与/etc/passwd中的一一对应,它由pwconv命令根据/etc/passwd中的数据自动产生

它的文件格式与/etc/passwd类似,具体如下

1
2
3
4
5
6
7
8
9
10
11
12
13
14
# cat /etc/shadow

root:Dnakfw28zf38w:8764:0:168:7:::
daemon:*::0:0::::
bin:*::0:0::::
sys:*::0:0::::
adm:*::0:0::::
uucp:*::0:0::::
nuucp:*::0:0::::
auth:*::0:0::::
cron:*::0:0::::
listen:*::0:0::::
lp:*::0:0::::
sam:EkdiSECLWPdSa:9740:0:0::::
1
2
root:$36zQdAHKBxYr1lSPP26x1IhP6bOAigu7qO1ENtsyfxtU6hHvMdQMrgfxKhJ/ltkgAYwqA45ps/2HTF6saI/6gzLe7sF6kr1:16596:0:99999:6:::
登录名:加密口令:最后一次修改时间:最小时间间隔:最大时间间隔:警告时间:不活动时间:失效时间:标志

后三个一般是没有的

“加密口令”字段存放的是加密[MD5,SHA-256,SHA-512]后的用户口令字,长度为13个字符。如果为空,则对应用户没有口令,登录时不需要口令;如果含有不属于集合 { ./0-9A-Za-z }中的字符,则对应的用户不能登录。

密码爆破

最后介绍下如何爆破,我们先来了解下linux系统密码加密的原理:

密文由3部分组成,以”$”分隔,第一部分为ID(用来表示加密的方法),第二部分为盐值,第三部分为加密密文

ID 加密方法
1 MD5
5 SHA-256
6 SHA-512

盐值:盐值就是使用随机字符码混合密码加密算法所产生的密码,作用就是即使是同一个密码,使用同一种加密方式,所产生的密文值也不同 。

工具爆破:John the Ripper (“JtR”) 是一个非常有用的工具。这是一个快速的密码破解器,适用于Windows和许多Linux系统。它具有很多功能,对于很多密码破解均有奇效。JtR破解的文件必须有特定的格式。要转换passwd和shadow文件,我们需要利用/usr/sbin/unshade可执行文件。这需要超级用户权限才能执行。

1
sudo /usr/sbin/unshadow /etc/passwd /etc/shadow > ~/passwords.txt
1
/usr/sbin/john --wordlist=/usr/share/wordlists/rockyou.txt ~/passwords.txt

即可完成爆破。

该工具的详细是使用功能可见https://xz.aliyun.com/t/3958