使用 John the Ripper 破解 PDF 文档

Kali LinuxBeginner
立即练习

引言

在本实验中,你将使用强大的开源密码破解工具 John the Ripper 来探索破解密码保护的 PDF 文档的过程。你将学习如何创建安全的 PDF,提取其哈希值,然后尝试破解密码。本实验还将涵盖不同的 PDF 加密类型,并提供保护 PDF 文档的最佳实践。理解这些概念对于网络安全专业人员以及任何处理 PDF 格式敏感信息的人来说都至关重要。

创建密码保护的 PDF 文档

在此步骤中,你将创建一个简单的文本文件,并将其转换为密码保护的 PDF 文档。我们将为此目的使用 enscriptps2pdf 命令。enscript 将文本文件转换为 PostScript,而 ps2pdf 将 PostScript 转换为 PDF。

首先,在你的 ~/project 目录中创建一个名为 secret.txt 的简单文本文件。

echo "This is a secret document." > ~/project/secret.txt
cat ~/project/secret.txt

接下来,将 secret.txt 转换为 PostScript 文件。

enscript -p ~/project/secret.ps ~/project/secret.txt
ls -l ~/project/secret.ps

现在,将 PostScript 文件转换为密码保护的 PDF。我们将用户密码和所有者密码都设置为 labex123。用户密码限制打开文档,而所有者密码限制打印或编辑等权限。

ps2pdf -sOwnerPassword=labex123 -sUserPassword=labex123 ~/project/secret.ps ~/project/protected.pdf
ls -l ~/project/protected.pdf

你已成功创建了一个密码保护的 PDF 文档。

使用 pdf2john 从 PDF 中提取哈希

在此步骤中,你将使用 pdf2john.py 从密码保护的 PDF 文档中提取哈希。pdf2john.py 是一个与 John the Ripper 一起提供的 Python 脚本,用于从 PDF 文件中提取可破解的哈希。

首先,找到 pdf2john.py 脚本。它通常位于 John the Ripper 安装的 run 目录中。

find /usr/share/john -name pdf2john.py

现在,使用 pdf2john.py~/project/protected.pdf 中提取哈希,并将其保存到名为 pdf_hash.txt 的文件中。

python3 /usr/share/john/pdf2john.py ~/project/protected.pdf > ~/project/pdf_hash.txt
cat ~/project/pdf_hash.txt

输出将显示一个哈希字符串,John the Ripper 可以尝试破解它。格式通常包括 PDF 版本、加密类型以及实际哈希的信息。

使用 John the Ripper 破解 PDF 哈希

在此步骤中,你将使用 John the Ripper 破解提取的 PDF 哈希。本次演示我们将使用一个简单的字典文件。

首先,在你的 ~/project 目录中创建一个名为 wordlist.txt 的字典文件。包含 labex123(正确的密码)和其他一些常用密码。

echo -e "password\n123456\nlabex123\nqwerty" > ~/project/wordlist.txt
cat ~/project/wordlist.txt

现在,使用 John the Ripper 和 wordlist.txt 来破解 pdf_hash.txt 中的哈希。

john --wordlist=~/project/wordlist.txt ~/project/pdf_hash.txt

John the Ripper 将处理哈希和字典文件。如果找到匹配项,它将显示破解的密码。

破解完成后,你可以查看 John 已找到并存储的已破解密码。

john --show ~/project/pdf_hash.txt

你应该会看到 protected.pdf 的破解密码是 labex123

理解 PDF 加密类型

在此步骤中,你将了解不同的 PDF 加密类型以及它们如何影响 PDF 文档的安全性。PDF 加密随着时间而发展,新版本提供了更强的保护。

PDF 加密通常使用 RC4 或 AES 等算法。密钥长度也有所不同,更长的密钥提供更强的安全性。

  • RC4 40-bit: 这是一种较旧且较弱的加密方法,很容易被破解。
  • RC4 128-bit: 一种更常见的旧标准,但仍然容易受到现代破解技术的影响。
  • AES 128-bit: 一种更强的加密标准,更能抵抗暴力破解攻击。
  • AES 256-bit: 目前 PDF 可用的最强加密,提供强大的保护。

你可以使用 exiftool 来检查 PDF 的加密详细信息。让我们检查一下我们创建的 protected.pdf

exiftool ~/project/protected.pdf | grep "Encryption"

输出将显示类似 Encryption : RC4 128-bitAES 256-bit 的详细信息,具体取决于用于创建 PDF 的工具和版本。我们的 ps2pdf 命令通常默认使用 RC4 128-bit 以实现旧版本兼容性。更强的加密需要特定的选项或更新的 PDF 创建工具。

理解加密类型至关重要,因为它直接影响破解密码所需的精力。较弱的加密类型破解速度更快。

正确地保护 PDF 文档

在此步骤中,你将学习保护 PDF 文档的最佳实践,以防止未经授权的访问和破解。虽然 John the Ripper 等工具可以破解弱密码,但强大的安全措施可以使其极其困难甚至不可能。

以下是保护 PDF 文档的关键建议:

  1. 使用强密码: 这是最关键的一步。强密码应具备:

    • 长度足够(至少 12-16 个字符)。
    • 复杂性高(混合大小写字母、数字和符号)。
    • 唯一性(不用于任何其他账户或文档)。
    • 随机性(避免使用字典单词或个人信息)。
  2. 使用强大的加密算法: 始终选择可用的最高加密标准,最好是 AES 256-bit。创建 PDF 时,请确保你的软件配置为使用现代加密。

  3. 同时设置用户密码和所有者密码:

    • 用户密码: 限制打开文档。这是主要的保护措施。
    • 所有者密码: 限制打印、复制内容、编辑或添加注释等权限。即使知道用户密码,所有者密码也可以阻止某些操作。
  4. 避免将密码与文档一起存储: 切勿将 PDF 的密码与 PDF 本身存储在同一位置或同一系统上。

  5. 定期更新软件: 确保你的 PDF 创建和查看软件是最新版本,以受益于最新的安全补丁和加密标准。

  6. 考虑使用数字签名: 为了保证真实性和完整性,数字签名可以验证文档的来源并确保其未被篡改。

通过遵循这些实践,你可以显著增强 PDF 文档的安全性,并保护敏感信息免遭未经授权的访问。

总结

在本实验中,你通过 John the Ripper 获得了破解密码保护的 PDF 文档的实践经验。你学会了如何创建密码保护的 PDF,使用 pdf2john.py 提取其哈希值,然后成功破解密码。此外,你还探索了不同的 PDF 加密类型,并理解了它们对安全性的影响。最后,你回顾了正确保护 PDF 文档的关键最佳实践,强调了强密码和现代加密标准的重要性。这些知识对于保护敏感信息和理解 PDF 文件中的潜在漏洞至关重要。