如何使用 Hashcat 工具破解密码?

道德黑客与渗透测试中的密码破解

在信息安全领域,密码破解是道德黑客和渗透测试中至关重要的一环,其目标是获取系统或服务器的访问权限。

在实际应用中,系统和数据库很少直接以明文形式存储密码。为了保障安全,密码通常会经过处理后才被保存。

在数据存储之前,密码会经过哈希处理,而系统在验证用户身份时,也会比较密码的哈希值,而非原始密码本身。

不同的系统会采用不同的加密方式,因此密码哈希的存储方式也会各异。只要拥有密码哈希值,理论上就可以尝试破解出原始密码。

本文将介绍如何使用一款强大且便捷的命令行工具——Hashcat,来进行密码哈希的破解。

接下来,让我们深入了解Hashcat。

不过,在此之前…

什么是哈希函数?

哈希处理,指的是通过一种特定的数学函数(即哈希函数),将任意长度的输入文本转换为固定长度的文本字符串的过程。换言之,任何文本,无论其长短,都可以通过算法转化为一组随机的整数和字母组合。

  • 输入:指的是需要被哈希处理的消息或数据。
  • 哈希函数:是一种加密算法,例如 MD5 或 SHA-256,负责将字符串转换为哈希值。
  • 哈希值:是哈希处理的最终结果。

Hashcat简介

Hashcat 是一款以速度著称的密码恢复工具。它的设计目标是在短时间内破解复杂程度较高的密码。该工具不仅支持基于字典的攻击,还支持暴力破解。

Hashcat 提供了两种不同的版本:基于 CPU 和基于 GPU(图形处理单元)。基于 GPU 的版本在破解哈希时速度更快。你可以在其官方网站上查看 GPU 驱动程序的要求。

功能特点

  • 免费且开源
  • 支持超过 200 种哈希类型
  • 兼容 Linux、Windows 和 macOS 等多种操作系统
  • 支持 CPU 和 GPU 多平台运行
  • 可以同时破解多个哈希
  • 支持十六进制 salt 和十六进制字符集文件,以及自动性能调整
  • 内置基准测试系统
  • 支持分布式破解网络

你可以在 Hashcat 的官方网站上了解到更多功能。

Hashcat的安装

首先,请确保你的 Linux 系统已经更新到最新状态,包括所有程序和工具。

为此,打开终端并输入以下命令:

$ sudo apt update && sudo apt upgrade

Hashcat 通常会预装在 Kali Linux 中,你可以在“密码破解”部分找到它。如果你需要在其他 Linux 发行版上手动安装,请在终端中输入以下命令:

$ sudo apt-get install hashcat

Hashcat的使用

要开始使用 Hashcat,你需要一些密码哈希值。如果没有现成的哈希值,你可以先自己生成一些。

以下是使用命令行生成哈希的格式:

echo -n "输入内容" | 算法 | tr -d "-">>输出文件名

以下示例演示了如何使用 md5 算法将一些单词转换为哈希值:

┌──(root💀kali)-[/home/writer/Desktop]
└─# echo -n "techblik.com" | md5sum | tr -d "-">>crackhash.txt
echo -n "password123" | md5sum | tr -d "-">>crackhash.txt
echo -n "Webtechnology" | md5sum | tr -d "-">>crackhash.txt
echo -n "microsoftteams" | md5sum | tr -d "-">>crackhash.txt
echo -n "recyclebin" | md5sum | tr -d "-">>crackhash.txt

生成的哈希值将保存到名为 crackhash.txt 的文件中。

现在,查看一下该文件中保存的哈希值:

┌──(root💀kali)-[/home/writer/Desktop]
└─# cat crackhash.txt

066d45208667198296e0688629e28b14
482c811da5d5b4bcd497ffeaa98491e3
72a2bc267579aae943326d17e14a8048
2192d208d304b75bcd00b29bc8de5024
caae8dd682acb088ed63e2d492fe1e13

以上就是通过你选择的算法生成哈希的过程。

接下来,在你的 Linux 机器上启动 Hashcat 工具。使用以下命令来运行 Hashcat:

$ hashcat --help

这个命令会显示运行该工具所需要的全部选项。在终端上,你可以找到所有可用的攻击模式和哈希模式。

命令的基本格式如下:

$ hashcat -a num -m num hash文件 词表文件

这里的 “num” 代表要使用的攻击模式和哈希模式对应的数字。在终端中向上滚动,你可以找到每种攻击模式和哈希模式对应的确切数字,例如,md4 的数字是 0,sha256 算法的数字是 1740。

我这里将使用 rockyou 词表。你可以在 /usr/share/wordlists 路径下找到这个词表。

你也可以使用 locate 命令来查找该词表的路径:

┌──(root💀kali)-[/home/writer]
└─# locate rockyou.txt

最后,使用以下命令,通过词表文件来破解哈希:

$ hashcat -a 0 -m 0 ./crackhash.txt rockyou.txt

在运行此命令后,你可能会遇到一个运行时错误(令牌长度异常错误),这个问题很容易解决。

要解决这个问题,可以将每个哈希值分别保存在不同的文件中。如果你的 CPU 或 GPU 性能较低,就容易出现此错误。如果你的计算机配备了高性能处理器,你可以尝试同时破解所有哈希,将其放在单个文件中。

在修复错误后,运行结果如下:

┌──(root💀kali)-[/home/writer/Desktop]
└─# hashcat -a 0 -m 0 hashcrack.txt rockyou.txt
hashcat (v6.1.1) starting...

OpenCL API (OpenCL 1.2 pocl 1.6, None+Asserts, LLVM 9.0.1, RELOC, SLEEF, DISTRO, POCL_DEBUG) - Platform #1 [The pocl project]
=============================================================================================================================
* Device #1: pthread-Intel(R) Core(TM) i5-8265U CPU @ 1.60GHz, 2403/2467 MB (1024 MB allocatable), 4MCU

Minimum password length supported by kernel: 0
Maximum password length supported by kernel: 256

Hashes: 1 digests; 1 unique digests, 1 unique salts
Bitmaps: 16 bits, 65536 entries, 0x0000ffff mask, 262144 bytes, 5/13 rotates
Rules: 1

Dictionary cache built:
* Filename..: rockyou.txt
* Passwords.: 14344405
* Bytes.....: 139921671
* Keyspace..: 14344398
* Runtime...: 1 sec

8276b0e763d7c9044d255e025fe0c212: [email protected]
                                                 
Session..........: hashcat
Status...........: Cracked
Hash.Name........: MD5
Hash.Target......: 8276b0e763d7c9044d255e025fe0c212
Time.Started.....: Sun Dec 12 08:06:15 2021 (0 secs)
Time.Estimated...: Sun Dec 12 08:06:15 2021 (0 secs)
Guess.Base.......: File (rockyou.txt)
Guess.Queue......: 1/1 (100.00%)
Speed.#1.........:  1059.6 kH/s (0.52ms) @ Accel:1024 Loops:1 Thr:1 Vec:8
Recovered........: 1/1 (100.00%) Digests
Progress.........: 4096/14344398 (0.03%)
Rejected.........: 0/4096 (0.00%)
Restore.Point....: 0/14344398 (0.00%)
Restore.Sub.#1...: Salt:0 Amplifier:0-1 Iteration:0-1
Candidates.#1....: 123456 -> pampam

Started: Sun Dec 12 08:06:13 2021
Stopped: Sun Dec 12 08:06:16 2021

从以上结果可以看出,在字典缓存的详细信息之后,哈希值被成功破解,密码也随之暴露。

总结

希望本文能够帮助你更好地理解如何使用 Hashcat 进行密码破解。

你或许也会对用于渗透测试的各种暴力破解工具以及一些优秀的渗透测试工具感兴趣。