集成 John the Ripper 与其他工具

Kali LinuxBeginner
立即练习

引言

John the Ripper (JtR) 是一个强大且流行的开源密码破解工具。虽然它本身非常有效,但当它与其他工具集成到更广泛的安全测试工作流程中时,其真正潜力才能得到释放。通过脚本进行自动化可以进一步提高其效率,从而实现流程化和可重复的密码审计和恢复任务。

在本实验中,你将探索 John the Ripper 如何与其他常用安全工具集成。我们将涵盖 JtR 与 Hashcat、Metasploit 和 Aircrack-ng 的概念性工作流程。然后,你将通过编写一个简单的 bash 脚本来自动化 JtR 破解会话,获得实践经验。

将 John the Ripper 与 Hashcat 结合使用(概念性)

在本步骤中,我们将讨论 John the Ripper 和 Hashcat 的概念性集成。两者都是领先的密码破解工具,但它们各有优势。John the Ripper 以其基于 CPU 的破解性能和自动检测多种哈希类型(hash types)的能力而闻名。另一方面,Hashcat 是世界上最快的密码破解器,擅长 GPU 驱动的攻击。

虽然它们经常被视为替代品,但可以在工作流程中将它们结合使用。例如,你可以使用 John the Ripper 的实用工具,如 unshadow,从 Linux 系统中提取和合并密码文件和 shadow 文件。

示例工作流程:

  1. 从目标 Linux 系统获取 /etc/passwd/etc/shadow 文件。
  2. 使用 JtR 的 unshadow 工具将它们合并到一个包含用户名和哈希的文件中:unshadow passwd shadow > hashes_for_cracking.txt
  3. 将生成的 hashes_for_cracking.txt 文件输入 Hashcat,以利用其强大的 GPU 破解能力。

此步骤纯粹是概念性的,旨在帮助你理解潜在的协同作用。此处没有需要执行的命令。关键要点是,一个工具的实用程序可以用来为另一个工具准备数据。

将 John the Ripper 与 Metasploit 集成(概念性)

在本步骤中,我们将探讨 John the Ripper 与 Metasploit Framework 的概念性集成。Metasploit 是一个强大的渗透测试框架,用于发现、利用和验证漏洞。一个常见的后渗透(post-exploitation)任务是从受损系统中转储(dump)密码哈希。这时,JtR 就成为了工作流程中的关键部分。

示例工作流程:

  1. 攻击者使用 Metasploit 的漏洞利用(exploit)获得对系统的初始访问权限。
  2. 在 Meterpreter 会话中使用后渗透模块,例如 run post/windows/gather/hashdump,攻击者转储密码哈希(例如,来自 Windows SAM 数据库的 NTLM 哈希)。
  3. 攻击者将这些哈希保存到本地机器上的一个文件中。
  4. 然后,离线使用 John the Ripper,通过各种技术(如字典攻击或暴力破解)来破解这些哈希。
  5. 一旦密码被破解,就可以利用它来提升权限或在网络中的其他系统之间进行横向移动(pivot),可能使用 psexec 等其他 Metasploit 模块。

这种集成展示了一个典型的攻击生命周期,其中 Metasploit 用于获取访问权限,而 JtR 用于离线凭证破解。此步骤是概念性的,无需执行任何命令。

将 John the Ripper 与 Aircrack-ng 结合使用(概念性)

在本步骤中,我们将讨论如何将 John the Ripper 与 Aircrack-ng 套件结合使用来破解 Wi-Fi 密码。Aircrack-ng 是用于审计无线网络的一套工具。WPA/WPA2 审计的关键部分是捕获 4 字节握手(4-way handshake),当客户端连接到接入点(access point)时会发生此握手。此握手包含一个哈希,可以破解该哈希以揭示网络的预共享密钥(PSK)。

示例工作流程:

  1. 使用 Aircrack-ng 套件中的工具,如 airodump-ng,来监控无线流量并捕获 WPA/WPA2 握手。这通常保存为 .cap 文件。
  2. .cap 文件本身不是哈希。它必须转换为密码破解器可以理解的格式。你可以使用 aircrack-nghcxpcaptool 等其他工具进行此转换。
  3. 例如,你可以使用带 -J 选项的 aircrack-ng 来创建一个与 Hashcat 兼容的文件(.hccapx),John the Ripper 也可以处理该文件。命令大致如下:aircrack-ng your_capture.cap -J output_hash_file
  4. 最后,使用 John the Ripper 和字典文件(wordlist)来破解哈希文件:john --wordlist=passwords.txt output_hash_file.hccapx

此工作流程展示了如何使用一个特定领域的专业工具(Wi-Fi)来提供通用工具(如 JtR)处理的原始数据。此步骤是概念性的,无需执行任何命令。

用于自动化的 John the Ripper 脚本

在本步骤中,我们将从理论转向实践。将 John the Ripper“集成”的最常见方法是将其命令行界面封装在脚本中。这使你能够自动化重复性任务,并将其构建到更大的工具链中。我们将创建一个简单的 bash 脚本来运行字典攻击,然后展示结果。

首先,让我们创建自动化脚本。使用 nano 编辑器在当前目录 ~/project 中创建一个名为 crack.sh 的新文件。

nano crack.sh

现在,将以下内容添加到文件中。此脚本将接受哈希文件和字典文件作为输入,运行 John,然后显示任何已破解的密码。

#!/bin/bash

if [ "$#" -ne 2 ]; then
  echo "Usage: $0 <hash_file> <wordlist_file>"
  exit 1
fi

HASH_FILE=$1
WORDLIST=$2

echo "[-] Starting John the Ripper..."
john --wordlist="$WORDLIST" "$HASH_FILE" > /dev/null 2>&1

echo "[+] Cracking attempt finished."
echo "[+] Showing cracked passwords:"
john --show "$HASH_FILE"

保存文件并按 Ctrl+X,然后按 Y,最后按 Enter 退出 nano

接下来,我们需要使脚本可执行。

chmod +x crack.sh

现在,让我们为测试创建一个简单的字典文件。此实验的设置脚本已经创建了一个名为 hashes.txt 的文件,其中包含一个示例哈希。此哈希的密码是 password123

echo "password123" > wordlist.txt

最后,运行你的自动化脚本。将 hashes.txt 文件和你的新 wordlist.txt 提供给它。

./crack.sh hashes.txt wordlist.txt

你应该会看到以下输出,表明脚本成功运行了 John 并找到了密码。

[-] Starting John the Ripper...
[+] Cracking attempt finished.
[+] Showing cracked passwords:
user1:password123

1 password hash cracked, 0 left

你现在已经成功创建了一个自动化 John the Ripper 的简单脚本!

理解 John the Ripper API(如果适用)

在最后一步中,我们将阐明“John the Ripper API”的概念。当开发者谈论 API(Application Programming Interfaces,应用程序编程接口)时,他们通常指的是用于 Web 服务的 REST API 或特定编程语言的文档齐全的库。

John the Ripper 在此意义上没有正式、稳定的公共 API。其主要接口是命令行(CLI),它功能强大、灵活,并且如你在上一步中所演示的那样,专为交互和脚本编写而设计。

JtR 的核心功能包含在一个库中,有时被称为 libjohn。对于高级 C 程序员来说,技术上可以链接此库来构建自定义应用程序。然而,这是一项复杂的任务,并非典型用例,也不作为公共 API 支持。

因此,对于绝大多数用户和集成而言,“使用 JtR API”意味着:

  • 从脚本(例如 Bash、Python、Perl)调用 JtR 可执行文件
  • 解析该工具的命令行输出
  • 与其文件进行交互,例如哈希文件输入以及存储已破解密码的 john.pot 文件。

关键要点是,与 John the Ripper 的集成和自动化是通过 CLI 脚本实现的,而不是通过传统的编程库或 Web API。

总结

在本实验中,你探索了如何通过将 John the Ripper 与其他工具集成并自动化其执行来增强其功能。

你学习了将 JtR 与其他主要安全工具结合的概念性工作流程:

  • 使用 JtR 的实用工具为 Hashcat 的基于 GPU 的破解准备哈希。
  • 在使用 Metasploit Framework 进行后渗透(post-exploitation)期间,使用 JtR 来破解获取的哈希。
  • 使用 JtR 来破解由 Aircrack-ng 套件捕获的 Wi-Fi 握手包。

然后,你通过编写和执行一个 bash 脚本来自动化密码破解会话,将理论付诸实践,这是将 JtR 集成到更大工作流程中的主要方法。最后,你阐明了 JtR 的“API”是其强大的命令行接口,这是其灵活性和集成潜力的关键。