linux、windows密钥暴力破解工具john的使用
[TOC]
什么是john
John the Ripper
是一款大受欢迎的、免费的开源软件。也是一个基于字典的快速破解密码的工具,是一款用于在已知密文的情况下尝试破解出明文的破解密码软件,支持目前大多数的加密算法,如 DES
、 MD4
、 MD5
等。 John the Ripper
支持字典破解方式和暴力破解方式。它支持多种不同类型的系统架构,包括 Unix
、 Linux
、 Windows
、 DOS
模式、 BeOS
和 OpenVMS
,主要目的是破解不够牢固的 Unix/Linux
系统密码。
john一般是kali自带。
john参数表
john
命令的具体参数选项如下表:
选 项 | 描 述 |
---|---|
–single | single crack 模式,使用配置文件中的规则进行破解 |
–wordlist=FILE–stdin | 字典模式,从 FILE 或标准输入中读取词汇 |
–rules | 打开字典模式的词汇表切分规则 |
–incremental[=MODE] | 使用增量模式 |
–external=MODE | 打开外部模式或单词过滤,使用 [List.External:MODE] 节中定义的外部函数 |
–stdout[=LENGTH] | 不进行破解,仅仅把生成的、要测试是否为口令的词汇输出到标准输出上 |
–restore[=NAME] | 恢复被中断的破解过程,从指定文件或默认为 $JOHN/john.rec 的文件中读取破解过程的状态信息 |
–session=NAME | 将新的破解会话命名为 NAME ,该选项用于会话中断恢复和同时运行多个破解实例的情况 |
–status[=NAME] | 显示会话状态 |
–make-charset=FILE | 生成一个字符集文件,覆盖 FILE 文件,用于增量模式 |
–show | 显示已破解口令 |
–test | 进行基准测试 |
–users=[-]LOGIN|UID[,…] | 选择指定的一个或多个账户进行破解或其他操作,列表前的减号表示反向操作,说明对列出账户之外的账户进行破解或其他操作 |
–groups=[-]GID[,…] | 对指定用户组的账户进行破解,减号表示反向操作,说明对列出组之外的账户进行破解。 |
–shells=[-]SHELL[,…] | 对使用指定 shell 的账户进行操作,减号表示反向操作 |
–salts=[-]COUNT | 至少对 COUNT 口令加载加盐,减号表示反向操作 |
–format=NAME | 指定密文格式名称,为 DES/BSDI/MD5/BF/AFS/LM 之一 |
–save-memory=LEVEL | 设置内存节省模式,当内存不多时选用这个选项。 LEVEL 取值在 1~3 之间 |
etc/passed和etc/shadow文件
首先要知道 /etc/passwd文件和 /etc/shadow文件
/etc/passwd文件格式
1 | root:x:0:0:root:/root:/bin/bash |
上面数据为passwd文件的一个片段,我们可以发现每一行都被分号
分为了7部分
。这七部分分别为:
- 用户名
- 密码(passwd文件人人可读,所以不放明文密码,真正的密码在/etc/shadow文件中)
- uid
- gid
- 用户注释
- 主目录
- 登陆的shell类型(bash/zsh/sh等)
/etc/shadow文件格式
1 | root:$6$f0EotKbw$sLAujh0EleiXNAuoph20iL517cXlcExWLATwz3xgCEyYlsIECUa9nuDdiT5/ntWfJDfxFhYGcMknkCq5Awgf20:15118:0:99999:7::: |
也是被分号隔开格式为:
1 | 用户名 |
爆破linux用户密码实例
利用 unshadow
组合 /etc/passwd
和 /etc/shadow
两个文件
unshadow
命令会将 /etc/passwd
的数据和 /etc/shadow
的数据结合起来,创建 1
个含有用户名和密码详细信息的文件。
我们可以通过以下命令将这两个文件结合起来:
1 | cd ~ |
使用 John the Ripper
破解 Linux
用户登录密码
我们这时候还需要一个字典,由于 John
自带了一个字典,字典位于 /usr/share/john/password.lst
。当然你也可以自行去网上选择适合你的字典。
我们可以开始对Linux登录用户名和密码进行破解:
1 | john --wordlist=/usr/share/john/password.lst test_passwd |
破解结果如下:
我们可以看到, test_passwd
文件中存在的三个用户名 root
,test
, python
的密码,均被破解了。
我们可以查看破解信息:
1 | john --show test_passwd |
出现报错: UTF-8 No password hashes loaded
John the Ripper 正确使用方法
现在 John the Ripper 爆破linux的shadow文件时需要加上 --format=crypt
所以现在 John the Ripper 的使用命令为:
1 | sudo john /etc/shadow --format=crypt |
原因是,如果查看合并后的文件或者没合并使用的shadow文件,并在用户名后面看到 $y$,则表明密码已使用 yescrypt 进行哈希处理。