引言
欢迎来到本实验,学习在渗透测试场景中使用 John the Ripper (JtR)。John the Ripper 是一个强大且流行的开源密码破解工具。对于渗透测试人员来说,它是识别和利用弱密码的必备工具,弱密码仍然是最常见的安全漏洞之一。
在本实验中,你将学习如何将 JtR 集成到典型的渗透测试工作流程中。你将从破解捕获的 shadow 文件中的用户密码开始,在权限提升(privilege escalation)的上下文中利用这些信息,然后应用 JtR 来破解受保护文件的密码。最后,你将学习记录和向利益相关者报告发现结果的关键步骤。
将 John the Ripper 集成到渗透测试工作流程
在此步骤中,你将执行密码攻击的第一个阶段:破解在侦察(reconnaissance)过程中获得的哈希值。本地权限提升(local privilege escalation)的一个常见目标是 /etc/shadow 文件,该文件存储 Linux 系统上的用户密码哈希。我们已经通过在你的 ~/project 目录中提供一个 shadow.txt 文件来模拟这一点。
首先,让我们使用自定义的字典(wordlist)对 shadow.txt 文件运行 John the Ripper。字典是一个包含潜在密码的文本文件。
执行以下命令开始破解过程:
john --wordlist=wordlist.txt shadow.txt
John 将加载哈希值,并测试 wordlist.txt 中的每个密码。由于 weakuser 的密码在我们的字典中,它将被快速破解。
Using default input encoding: UTF-8
Loaded 1 password hash (sha512, 512/512 AVX512BW 16x)
Cost 1 (iteration count) is 5000 for all loaded hashes
Will run 4 processing threads
Press 'q' or Ctrl-C to abort, almost any other key for status
password123 (weakuser)
1g 0:00:00:00 DONE (2023-10-27 10:30) 100.0g/s 100.0p/s 100.0c/s 100.0C/s password123
Use the "--show" option to display all of the cracked passwords reliably
Session completed
一旦密码被破解,John 会将其存储在 ~/.john/ 目录下的 john.pot 文件中。要查看特定哈希文件的破解密码,你可以使用 --show 选项。
运行此命令以显示破解的密码:
john --show shadow.txt
你将看到用户名和破解的密码。
weakuser:password123:19657:0:99999:7:::
1 password hash cracked, 0 left
你已成功破解了用户的密码,这是许多渗透测试中的关键第一步。
使用 John the Ripper 进行本地权限提升
在此步骤中,你将学习如何使用破解的密码来提升权限。在破解了 weakuser 的密码后,下一步合乎逻辑的操作是查看该账户提供了什么访问权限。如果 weakuser 拥有 sudo 权限或对敏感文件的访问权限,你就可以获得对系统的更多控制权。
让我们通过尝试使用你刚刚破解的密码(password123)切换到 weakuser 账户来模拟这一点。
使用 su(substitute user,切换用户)命令切换到 weakuser:
su weakuser
系统会提示你输入密码。输入 password123 并按 Enter 键。
Password:
如果密码正确,你的命令提示符会发生变化,表明你现在是以 weakuser 的身份运行。
weakuser@...:/home/labex/project$
在实际的渗透测试中,你现在会从该用户的角度探索系统,例如,通过运行 sudo -l 来检查 sudo 权限。对于本实验来说,仅仅演示你可以访问该账户就足够了。
现在,输入 exit 返回到你原来的 labex 用户 shell。
exit
这个练习展示了弱密码的直接影响:它可能导致未经授权的账户访问,这是进一步系统被攻陷的垫脚石。
将 John the Ripper 应用于网络渗透测试
在此步骤中,你将了解 John the Ripper 的多功能性如何超越系统密码哈希。渗透测试人员经常在文件共享或后渗透(post-exploitation)阶段发现受密码保护的文件,例如 ZIP 压缩包。JtR 也能破解这些文件。
我们在你的 ~/project 目录中提供了一个名为 protected.zip 的受密码保护的文件。这个过程包含两个阶段:首先,从文件中提取一个可破解的哈希值,然后,使用 John 来破解该哈希值。
许多与 JtR 相关的工具可以帮助从不同文件类型中提取哈希值。对于 ZIP 文件,我们使用 zip2john。运行以下命令从 protected.zip 中提取哈希值,并将其保存到名为 zip_hash.txt 的文件中:
zip2john protected.zip > zip_hash.txt
你可以查看 zip_hash.txt 的内容,了解哈希值是什么样的。
cat zip_hash.txt
现在,在这个新的哈希文件上运行 John the Ripper。这次,我们不指定字典,让 John 使用其默认模式,其中包括一个尝试常见密码变体的单次破解模式。
john zip_hash.txt
John 应该会非常快速地破解密码。
Using default input encoding: UTF-8
Loaded 1 password hash (PKZIP, 32/64)
Cost 1 (iteration count) is 1000 for all loaded hashes
Will run 4 processing threads
Press 'q' or Ctrl-C to abort, almost any other key for status
supersecret (protected.zip)
1g 0:00:00:00 DONE (2023-10-27 10:35) 100.0g/s 12345p/s 12345c/s 12345C/s supersecret
Session completed
和之前一样,使用 --show 选项来查看 ZIP 文件的破解密码。
john --show zip_hash.txt
protected.zip:supersecret
1 password hash cracked, 0 left
你已成功恢复了 ZIP 文件的密码,这表明 JtR 可以应用于在渗透测试过程中发现的不同类型的数据。
记录 John the Ripper 攻击的发现
在此步骤中,你将专注于渗透测试的一个关键的、非技术性方面:文档记录。仅仅发现漏洞是不够的;你必须清晰地记录它们,以便能够修复。一份好的报告应详细说明漏洞、其影响以及修复建议。
你现在将创建一个简单的发现报告,保存在一个 markdown 文件中。使用 nano 文本编辑器创建一个名为 findings.md 的文件。
nano findings.md
在 nano 编辑器中,复制并粘贴以下文本。这个模板记录了你到目前为止发现的两个漏洞。
## 渗透测试发现 - 弱密码
### 发现 1:弱用户账户密码
- **漏洞:** 用户 `weakuser` 的密码很弱。
- **密码:** `password123`
- **影响:** 可能导致本地权限提升和未经授权的系统访问。
- **建议:** 强制执行强密码策略,要求复杂性和长度。重置 `weakuser` 的密码。
### 发现 2:受保护压缩包上的弱密码
- **漏洞:** 压缩包 `protected.zip` 的密码很弱。
- **密码:** `supersecret`
- **影响:** 压缩包内的敏感数据对任何找到该文件的人都暴露了。
- **建议:** 为所有加密文件和压缩包使用强密码和复杂密码。
粘贴文本后,通过按 Ctrl+X,然后按 Y,最后按 Enter 来保存文件并退出 nano。
你现在已经创建了一个清晰简洁的发现记录,这是任何专业渗透测试的重要组成部分。
向利益相关者报告弱密码
在最后一步中,你将练习创建一份适合利益相关者(如系统管理员或管理层)的高层摘要。虽然详细的发现文档是为技术团队准备的,但摘要报告能以更直接的方式传达风险和采取行动的必要性。
你将创建一个名为 report_summary.txt 的简单文本文件,模拟一封电子邮件或一份报告摘要。
使用 nano 编辑器创建文件:
nano report_summary.txt
在 nano 编辑器中,复制并粘贴以下摘要。这段文字清晰简洁地传达了问题和所需的行动。
To: System Administrator
From: Penetration Tester
Subject: Critical Vulnerability: Weak Passwords Detected
This report summarizes critical password vulnerabilities discovered during the recent penetration test.
1. User 'weakuser' has a crackable password ('password123'), posing a risk of privilege escalation.
2. A protected file 'protected.zip' uses a weak password ('supersecret'), exposing its contents.
Immediate action is required to enforce a stronger password policy and reset the identified weak passwords.
通过按 Ctrl+X,然后按 Y,最后按 Enter 来保存文件并退出 nano。
这标志着本场景的渗透测试工作流程的完成。你不仅识别并利用了漏洞,还记录并准备了报告以确保它们得到解决。这完成了从发现到修复的整个周期。
摘要
恭喜你完成了本次实验!你已成功地通过 John the Ripper 完成了一个真实的渗透测试流程。
在本次实验中,你学会了如何:
- 通过破解
shadow文件中的哈希值,将 John the Ripper 集成到渗透测试流程中。 - 使用破解出的密码模拟本地权限提升尝试。
- 通过破解受保护 ZIP 压缩包的密码,将 JtR 应用于不同的数据类型。
- 理解以清晰、结构化的方式记录发现的重要性。
- 创建一份摘要报告,有效地向利益相关者传达漏洞。
这些技能对于任何参与道德黑客和安全审计的网络安全专业人员来说都是基础。


