你会不会突然的出现,在街角的咖啡店!
最近有遇到对/etc/shadow
中的密码进行爆破问题,但是却没有成功,之前记得也有过总结这个,却找不到了。无奈就过来再记录下,以免下次查阅!
/etc/passwd
/etc/passwd是系统识别用户的一个文件,这个文件存放着所有用户账号的信息。其中当然包括账号与密码。当我们以root这个账号登录时,系统首先会查阅 /etc/passwd 文件,看是否有root这个账号,然后确定root的UID,通过UID 来确认用户和身份。
/etc/passwd的文件内容:
1 | root权限下执行查看 |
1 | root:x:0:0:root:/root:/bin/bash |
系统中有一类用户称为伪用户(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 | # cat /etc/shadow |
1 | 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