实时分析破解统计数据

Kali LinuxBeginner
立即练习

引言

Hashcat 是一个强大且流行的密码恢复工具。在运行破解会话时,尤其是可能耗时较长的会话,监控其进度和性能至关重要。Hashcat 提供了一个详细的实时状态屏幕,让你能够了解攻击速度、预计完成时间、硬件性能等信息。

在本实验中,你将学习如何启动一个基本的 Hashcat 会话并解读其实时统计数据。完成后,你将能够有效地监控你的密码破解任务,以确保它们以最佳状态运行。

启动 Hashcat 会话

在此步骤中,你将使用 Hashcat 启动一个密码破解会话。我们将使用位于你的 ~/project 目录中的预配置哈希文件和字典文件。

首先,让我们检查一下我们将要使用的文件。hashes.txt 文件包含一个 MD5 哈希,而 wordlist.txt 文件包含一个潜在密码的小列表。

启动 Hashcat 字典攻击的基本命令是 hashcat -m <hash_type> -a <attack_mode> <hash_file> <wordlist_file>

  • -m 0 指定哈希类型为 MD5。
  • -a 0 指定攻击模式为“Straight”(直通)或字典攻击。

现在,打开终端并运行以下命令来启动会话。Hashcat 将会初始化并开始尝试破解哈希。

hashcat -m 0 -a 0 hashes.txt wordlist.txt

当 Hashcat 启动时,你将看到类似以下的输出。暂时不用担心所有细节;让它运行即可。

hashcat (v6.2.x) starting...

...

OpenCL Platform #1: The pocl project
====================================
* Device #1: pthread-skylake-avx512, 2047/4095 MB (1023 MB allocatable), 2MCU

...

Session..........: hashcat
Status...........: Running
Hash.Name........: MD5
Hash.Target......: hashes.txt
Time.Started.....: ...
Time.Estimated...: ...
Guess.Base.......: File (wordlist.txt)
Guess.Queue......: 1/1 (100.00%)
Speed.#1.........:   XX.X kH/s (X.XXms) @ Accel:X Loops:X Thr:X Vec:X
Recovered........: 0/1 (0.00%) Digests
Progress.........: 0/5 (0.00%)
Rejected.........: 0/0 (0.00%)
Restore.Point....: 0/1 (0.00%)
Restore.Sub.#1...: Salt:0 Amplifier:0-1 Iteration:0-1
Candidates.#1....: password -> hashcat
Hardware.Mon.#1..: Temp: N/A Util: N/A Core: N/A Mem: N/A Bus: N/A

[s]tatus [p]ause [b]ypass [c]heckpoint [q]uit =>

让会话运行,然后继续下一步。

按下 's' 查看状态屏幕

在此步骤中,你将学习如何手动请求正在运行的 Hashcat 会话的状态更新。

当 Hashcat 运行时,它会监听键盘输入来控制会话。在输出的底部,你会看到一个类似 [s]tatus [p]ause [b]ypass [c]heckpoint [q]uit => 的提示。这表明了可用的命令。

要获取最新的统计数据,只需按下键盘上的 s 键,然后按 Enter。Hashcat 将立即在终端打印一个更新的状态屏幕。

现在就去按下 s 吧。

s

你将看到一新块文本,其外观与初始状态报告非常相似。这就是实时统计屏幕,我们将在后续步骤中对其进行剖析。

Session..........: hashcat
Status...........: Running
Hash.Name........: MD5
Hash.Target......: hashes.txt
Time.Started.....: ...
Time.Estimated...: ...
Guess.Base.......: File (wordlist.txt)
Guess.Queue......: 1/1 (100.00%)
Speed.#1.........:   XX.X kH/s (X.XXms) @ Accel:X Loops:X Thr:X Vec:X
Recovered........: 1/1 (100.00%) Digests, 1/1 (100.00%) Salts
Progress.........: 4/5 (80.00%)
Rejected.........: 0/4 (0.00%)
Restore.Point....: 4/5 (80.00%)
Restore.Sub.#1...: Salt:0 Amplifier:0-1 Iteration:0-1
Candidates.#1....: labex -> labex
Hardware.Mon.#1..: Temp: N/A Util: N/A Core: N/A Mem: N/A Bus: N/A

请注意,像 RecoveredProgress 这样的值已经发生了变化。

解释 Speed、Progress 和 ETA 字段

在此步骤中,我们将重点关注状态屏幕上的三个最重要指标:Speed(速度)、Progress(进度)和 ETA(预计到达时间)。理解这些字段有助于你评估破解会话的性能和持续时间。

让我们分别看一下每个字段的示例状态行:

  • Speed.Dev.#1.........: XX.X kH/s (X.XXms)

    • Speed:此行显示每个处理设备(CPU、GPU 等)的破解速度,通过 #1#2 等进行标识。速度以每秒哈希数(H/s、kH/s、MH/s)衡量。数字越大越好。在我们的例子中,虚拟机使用的是 CPU。
  • Progress.........: 4/5 (80.00%)

    • Progress:这显示了已测试的候选密码数量占密钥空间总数的比例。在此示例中,4/5 意味着已从我们的 wordlist.txt 中测试了 5 个单词中的 4 个。
  • Time.Estimated...: 0 secs

    • ETA (Estimated Time of Arrival):此字段标记为 Time.Estimated,提供了当前攻击完成的估计时间。这是根据当前速度和 Progress 字段中剩余的工作量计算得出的。对于像我们这样非常短的任务,它会很快变为 0 秒。

这三个指标为你提供了破解会话性能的快速、高层级的概览。

理解 Rejected 和 Restore.Point 计数

在此步骤中,我们将检查状态屏幕上的其他几个有用字段:RecoveredRejectedRestore.Point

让我们再次查看示例输出:

  • Recovered........: 1/1 (100.00%) Digests

    • Recovered:这是最重要的结果字段。它告诉你成功破解了多少哈希。这里,1/1 意味着目标文件中的一个哈希已被找到。一旦发生这种情况,Hashcat 就会将破解的密码打印到终端。
  • Rejected.........: 0/4 (0.00%)

    • Rejected:此计数器跟踪从你的字典或规则集(ruleset)中跳过了多少密码候选。如果密码不符合特定哈希类型的长度或字符要求,它可能会被拒绝。对于简单的 MD5 和字典攻击,这通常为零。
  • Restore.Point....: 4/5 (80.00%)

    • Restore Point:这指示了 Hashcat 当前正在工作的字典(或密钥空间)中的确切位置。如果你停止会话然后稍后恢复,Hashcat 将使用此恢复点从上次中断的地方继续,从而避免你从头开始。

通过监控这些字段,你可以跟踪成功的破解并诊断字典中可能存在的问题。

监控硬件温度和利用率

在最后一步中,你将了解 Hashcat 状态屏幕的硬件监控部分以及如何正确退出会话。

密码破解是一项非常密集的任务,可能会将你的硬件推向极限。Hashcat 内置了监控功能,可以帮助你关注系统的健康状况。

查看状态输出中的 Hardware.Mon 行:

  • Hardware.Mon.#1..: Temp: N/A Util: N/A Core: N/A Mem: N/A Bus: N/A
    • Temp:显示设备的温度(摄氏度)。
    • Util:显示设备的利用率百分比(即有多忙碌)。
    • Core/Mem:显示设备核心和内存的时钟速度。

注意:在我们的虚拟化实验环境中,这些值显示为 N/A(不适用),因为 Hashcat 无法直接访问主机的硬件传感器。在配备独立 GPU 的物理机器上,这些字段将显示实时数据,这对于防止过热和确保稳定性能至关重要。

现在我们的短会话已完成,并且我们已经分析了状态屏幕,是时候退出 Hashcat 了。为此,请按 q 然后按 Enter

q

Hashcat 将停止会话并返回到命令提示符。

总结

恭喜你完成了本次实验!

你已经学会了如何有效地监控正在运行的 Hashcat 会话。你现在知道如何:

  • 使用 Hashcat 启动一个基本的字典攻击。
  • 使用 s 命令查看实时状态屏幕。
  • 解释关键性能指标,如 Speed、Progress 和 ETA。
  • 理解 Recovered、Rejected 和 Restore Point 计数器的含义。
  • 识别硬件监控字段及其重要性。

这些技能是管理任何密码破解任务的基础,它们能让你跟踪进度、诊断问题,并确保你的硬件安全高效地运行。