引言
在本实验中,你将探索使用强大的工具 John the Ripper 来破解受密码保护的 RAR 压缩文件。RAR (Roshal Archive) 是一种专有的压缩文件格式,支持数据压缩、错误恢复和文件分卷。虽然 RAR 文件提供了强大的压缩和安全功能,但弱密码可能使其容易受到暴力破解攻击。
John the Ripper 是一个免费开源的密码破解工具。它最初设计用于检测弱 Unix 密码,但也支持各种其他哈希类型,包括来自 RAR 压缩文件的哈希。在本实验结束时,你将了解如何创建受密码保护的 RAR 文件,使用 rar2john 提取其哈希,然后使用 John the Ripper 尝试恢复密码。你还将深入了解破解 RAR 和 ZIP 压缩文件的区别,并学习保护你的 RAR 文件最佳实践。
创建一个受密码保护的 RAR 文件
在此步骤中,你将创建一个简单的文本文件,然后将其压缩成一个受密码保护的 RAR 压缩文件。此 RAR 文件将作为我们后续步骤中破解密码的目标。
首先,创建一个名为 rar_test 的新目录并进入该目录:
mkdir ~/project/rar_test
cd ~/project/rar_test
接下来,创建一个名为 secret.txt 的文本文件并添加一些内容。我们将使用 nano 来完成此操作。
nano secret.txt
在 nano 编辑器中输入以下内容:
This is a secret message.
The password is 'labex'.
按 Ctrl+S 保存文件,然后按 Ctrl+X 退出 nano。
现在,从 secret.txt 创建一个名为 secret.rar 的受密码保护的 RAR 压缩文件。我们将使用密码 labex。
rar a -p labex secret.rar secret.txt
a 选项代表“将文件添加到压缩文件”,-p 用于指定密码。你应该会看到类似以下的输出:
RAR 5.00 freeware Copyright (c) 1993-2013 Alexander Roshal 20 August 2013
Shareware version Type 'rar -?' for help
Creating archive secret.rar
Adding secret.txt OK
Done
为了验证文件确实受密码保护,请尝试在不提供密码的情况下提取它:
unrar e secret.rar
系统将提示你输入密码:
UNRAR 5.00 freeware Copyright (c) 1993-2013 Alexander Roshal 20 August 2013
secret.rar
Extracting from secret.rar
Enter password (will not be echoed) for secret.txt:
按 Ctrl+C 取消提取。
使用 rar2john 从 RAR 文件中提取哈希
在此步骤中,你将使用 rar2john 工具(它是 John the Ripper 套件的一部分)从 secret.rar 文件中提取密码哈希。此哈希是密码的一种表示形式,John the Ripper 可以尝试破解它。
请确保你仍然在 ~/project/rar_test 目录中:
cd ~/project/rar_test
现在,在你的 secret.rar 文件上运行 rar2john,并将输出重定向到一个名为 rar_hash.txt 的新文件中:
rar2john secret.rar > rar_hash.txt
此命令处理 secret.rar 文件,并将提取的哈希输出到标准输出,然后保存到 rar_hash.txt 中。
你可以使用 cat 命令查看 rar_hash.txt 文件的内容:
cat rar_hash.txt
输出将类似于以下内容(实际哈希值会有所不同):
secret.rar:$rar5$16$...
这一行包含了 John the Ripper 开始破解密码所需的信息。$rar5$... 格式表示这是一个 RAR5 哈希。
使用 John the Ripper 破解 RAR 哈希
在此步骤中,你将使用 John the Ripper 来破解上一步提取的密码哈希。我们将使用简单的字典攻击(wordlist attack),这种方法对于弱密码非常有效。
请确保你仍然在 ~/project/rar_test 目录中:
cd ~/project/rar_test
John the Ripper 自带一个默认的字典文件。在本实验中,我们将创建一个小的自定义字典文件,其中包含我们已知的密码(labex),以确保快速破解。
创建一个名为 wordlist.txt 的文件,内容如下:
nano wordlist.txt
在 nano 编辑器中输入以下密码,每行一个:
password
123456
labex
john
按 Ctrl+S 保存文件,然后按 Ctrl+X 退出 nano。
现在,使用 rar_hash.txt 文件和你的自定义 wordlist.txt 运行 John the Ripper:
john --wordlist=wordlist.txt rar_hash.txt
John the Ripper 将开始处理哈希。由于 labex 在我们的字典中,它应该会很快找到密码。输出将显示破解出的密码:
Using default input encoding: UTF-8
Loaded 1 password hash from rar_hash.txt (RAR5)
Cost 1 (iteration count) is 262144 for all loaded hashes
Will run 4 OpenMP threads
Press 'q' or Ctrl-C to abort, almost any other key for status
labex (secret.rar)
1g 0:00:00:00 DONE (2023-10-27 10:30) 100.0% (ETA: 00:00:00) 1.000g/s 4.000p/s 4.000c/s 4.000C/s labex
Session completed.
labex (secret.rar) 这一行表明已为 secret.rar 压缩文件找到了密码 labex。
你还可以查看 John the Ripper 已找到并存储的已破解密码:
john --show rar_hash.txt
此命令将显示所有已成功破解并存储在 John 的内部 pot 文件中的密码:
secret.rar:labex
1 password hash cracked, 0 left
这证实了 John the Ripper 已成功破解了 RAR 密码。
比较 RAR 和 ZIP 破解
在此步骤中,我们将简要比较破解 RAR 压缩文件与破解 ZIP 压缩文件的过程,并强调一些关键差异。这两种格式都常用于压缩,但它们的加密机制以及用于破解它们的工具可能有所不同。
首先,让我们创建一个受密码保护的 ZIP 文件进行比较。请确保你位于 ~/project/rar_test:
cd ~/project/rar_test
为 ZIP 压缩文件创建一个新的文本文件:
nano zip_secret.txt
添加一些内容:
This is a secret message for ZIP.
The password is 'zip_pass'.
保存并退出 nano(Ctrl+S,Ctrl+X)。
现在,创建一个名为 zip_secret.zip 的受密码保护的 ZIP 压缩文件,密码为 zip_pass:
zip -P zip_pass zip_secret.zip zip_secret.txt
-P 选项用于直接指定密码。
adding: zip_secret.txt (deflated 29%)
与 rar2john 类似,也有一个用于从 ZIP 文件提取哈希的 zip2john 工具。
zip2john zip_secret.zip > zip_hash.txt
查看提取的 ZIP 哈希:
cat zip_hash.txt
输出将与 RAR 哈希不同,通常以 zip_secret.zip:$zip$... 开头:
zip_secret.zip:$zip2$*0*1*0*...
现在,让我们尝试使用包含 zip_pass 的字典文件来破解它:
nano zip_wordlist.txt
添加以下内容:
password
zip_pass
123456
保存并退出 nano。
john --wordlist=zip_wordlist.txt zip_hash.txt
John the Ripper 将破解 ZIP 密码:
Using default input encoding: UTF-8
Loaded 1 password hash from zip_hash.txt (PKZIP)
Cost 1 (iteration count) is 1024 for all loaded hashes
Will run 4 OpenMP threads
Press 'q' or Ctrl-C to abort, almost any other key for status
zip_pass (zip_secret.zip)
1g 0:00:00:00 DONE (2023-10-27 10:35) 100.0% (ETA: 00:00:00) 1.000g/s 4.000p/s 4.000c/s 4.000C/s zip_pass
Session completed.
主要区别:
- 哈希格式: RAR 和 ZIP 文件使用不同的内部加密和哈希格式,需要特定的
*2john工具(rar2john对比zip2john)。 - 加密强度: 现代 RAR(RAR5)加密通常被认为比标准的 ZIP 加密(ZipCrypto)更强,尤其是在使用 AES-256 时。这意味着对于强密码,破解 RAR5 可能需要更多的计算资源和时间。
- 工具: 虽然 John the Ripper 可以处理这两种格式,但底层的哈希提取和破解模块是不同的。其他工具,如
fcrackzip,是专门为 ZIP 设计的,而rarcrack则是为 RAR 设计的。
此比较表明,虽然总体方法(提取哈希,使用字典破解)是相似的,但处理不同压缩文件格式的具体细节有所不同。
RAR 安全最佳实践
在此步骤中,我们将讨论保护你的 RAR 压缩文件并防止其被轻易破解的最佳实践。了解这些实践对于保护你的敏感数据至关重要。
在本实验中我们轻松破解 secret.rar 文件所体现出的能力,凸显了强密码的重要性。以下是 RAR 安全的一些最佳实践:
使用强壮、唯一的密码:
- 长度: 目标是使用至少 12-16 个字符的密码。密码越长,破解的难度呈指数级增长。
- 复杂度: 包含大小写字母、数字和特殊字符的组合。避免使用常用词汇、姓名或容易猜到的序列(如“123456”或“password”)。
- 唯一性: 切勿在不同的账户或压缩文件之间重复使用密码。如果一个密码泄露,其他密码仍然是安全的。
利用密码管理器:
- 密码管理器可以为你生成和存储复杂、唯一的密码,让你无需记住所有密码即可轻松遵循上述建议。
启用强加密(RAR5 配合 AES-256):
- 在创建 RAR 压缩文件时,请确保你使用的是最新的 RAR 格式(RAR5),它默认使用 AES-256 加密。这比旧的 RAR 格式或较弱的加密算法要安全得多。大多数现代
rar工具默认使用 RAR5。
- 在创建 RAR 压缩文件时,请确保你使用的是最新的 RAR 格式(RAR5),它默认使用 AES-256 加密。这比旧的 RAR 格式或较弱的加密算法要安全得多。大多数现代
避免将密码存储在压缩文件附近:
- 切勿将压缩文件的密码存储在与压缩文件本身相邻的文本文件或便签上。这样做会使密码保护失去意义。
限制对压缩文件的访问:
- 将受密码保护的 RAR 文件存储在访问受限的安全位置。即使有强密码,如果攻击者获得了对你设备或网络的物理访问权限,他们也可能有更多机会尝试破解。
警惕网络钓鱼和社交工程:
- 攻击者可能会试图通过虚假的电子邮件、网站或直接通信来诱骗你泄露密码。对于未经请求的敏感信息请求,务必保持警惕。
通过遵循这些最佳实践,你可以显著提高 RAR 压缩文件的安全性,并保护你的数据免遭未经授权的访问。请记住,任何安全链中最薄弱的环节通常是人为因素或弱密码。
总结
在本实验中,你通过 John the Ripper 获得了破解受密码保护的 RAR 压缩文件的实践经验。你首先创建了一个带有已知密码的示例 RAR 文件。然后,你学习了如何使用 rar2john 工具提取 RAR 哈希,该工具将压缩文件的密码信息转换为 John the Ripper 可以理解的格式。
随后,你成功地将 John the Ripper 与自定义字典文件结合使用,破解了 RAR 压缩文件的密码,展示了受弱密码或常用密码保护的压缩文件的脆弱性。你还探讨了破解 RAR 和 ZIP 压缩文件的区别,并注意到了不同的哈希格式和加密强度。
最后,本实验以讨论 RAR 安全最佳实践结束,强调了强壮、唯一的密码、利用现代加密以及实践良好的安全卫生习惯以保护存储在压缩文件中的敏感数据的重要性。本实验提供了对密码破解技术以及强密码策略关键需求的入门级理解。


