前言
由于Linux是Internet最流行的服务器操作系统,因此它的安全性备受关注。这种安全主要靠口令实现。
Linux使用一个单向函数crypt()来加密用户口令。单向函数crypt()从数学原理上保证了从加密的密文得到加密前的明文是不可能的或是非常困难的。当用户登录系统时,系统并不是去解密已加密的口令,而是将输入的口令明文字符串传给加密函数,将加密函数的输出与/etc/passwd文件中该用户的PASSWORD域进行比较,若匹配成功,则允许用户登录系统。
在目前多数Linux系统中,口令文件都做了shadow变换,即把/etc/passwd中的口令域分离出来,单独存在/etc/shadow文件中,并加强对shadow文件的保护,以增强口令安全。因此,在破解密码是,要先做UNshadow变换,将/etc/passwd文件与/etc/shadow文件合二为一。
Linux 系统下的用户密码存储在 /etc/shadow (hash值)或者 /etc/passwd 文件中。如果有管理员权限,则可以从这两个文件中获取加密后的密码 hash,然后使用 john 等工具进行密码破解。要破解 Linux 系统用户密码,可以使用暴力破解或者字典攻击的方式进行尝试。
目录
前言
1、john简介
2、john参数
3、john实例
步骤一: 合并密码文件
步骤二: 使用John工具进行密码破解
1、john简介
John the Ripper一款免费、开源的暴力密码破解器,它有多平台版本,支持目前大多数的加密算法,如DES、MD4、MD5等。该软件破解密码方式简单而粗暴,理论上只要时间上面允许,该软件可以破译绝大多数用户密码。
John the Ripper免费的开源软件,支持目前大多数的加密算法,如DES、MD4、MD5等。它支持多种不同类型的系统架构,包括Unix、Linux、Windows、DOS模式、BeOS和OpenVMS,主要目的是破解不够牢固的Unix/Linux系统密码。
2、john参数
John支持四种密码破解模式:
- 1.字典模式:在这种模式下,用户只需要提供字典和密码列表用于破解。
- 2.单一破解模式:这是john作者推荐的首选模式。John会使用登录名、全名和家庭通讯录作为候选密码。
- 3.递增模式:在该模式下john会尝试所有可能的密码组合。这是最具威力的一种。
- 4.外部模式:在这种模式下,用户可以使用john的外部破解模式。使用之前,需要创建一个名为(list.external : mode)的配置文件,其中mode有用户分配。
下面是 John the Ripper 常用的参数和选项:
--wordlist=<file>: 指定密码字典文件路径。
--rules: 使用密码破解规则,如大小写互换、添加特殊字符等。
--stdin: 从标准输入中读入密码,适用于使用管道等方式输入密码。
--format=<format>: 指定哈希算法类型,如MD5、SHA-1、SHA-256等。
--show: 显示已破解的密码。
--pot=<file>: 指定已破解密码的保存文件路径。
--incremental: 使用增量模式进行破解,尝试所有可能的密码组合。
--session=<name>: 为当前破解会话指定名称。
--status: 显示当前破解进度。
--fork=<n>: 指定使用多少个进程进行并行破解。
--mask: 使用掩码模式进行暴力破解,限制密码的可能字符类型。
以上是 John the Ripper 常用的参数和选项,可以根据需要进行组合使用。
3、john实例
使用unshadow命令及John工具破解某一Linux系统靶机的用户密码,并实现明文输出显示。
步骤一: 合并密码文件
在Linux系统中,密码哈希值通常存储在/etc/shadow文件中,只有root用户才能读取和修改该文件,
使用unshadow命令生成一个含有/etc/passwd和/etc/shadow文件信息合并的文件:
sudo unshadow /etc/passwd /etc/shadow > gyp
步骤二: 使用John工具进行密码破解
Linux使用一个单向函数crypt()来加密用户口令,所以密码算法为crypt 的hash算法,
john --format=crypt gyp
可以看到破解了三个用户的密码为:kali