如何在 Linux 上使用 hashcat 破解哈希

您是网络安全领域的初学者吗? 你想站在它的进攻端吗? 作为一名红队队员,您将学习许多有助于您执行网络杀伤链活动的技术和战术。 其中一项任务是权限提升,您可以在其中获取密码哈希。

hashcat 是一个功能强大且用途广泛的工具,它通过执行各种攻击模式,使用已知的哈希值暴力破解存储的凭据。 本文介绍了渗透测试人员、系统管理员、间谍或黑客用来查找密码的密码破解实用程序。

什么是哈希?

散列是一种单向数学函数或唯一标识符,它返回固定长度的输出,而与输入大小/长度无关。 因此,这是一个不可逆的过程,不需要像加密中那样的密钥来解密哈希值。

散列的最常见目的是确保数据传输过程中数据的完整性不被篡改。 哈希的属性如下:

  • 提供快速计算
  • 好的算法避免不同输入的相同输出
  • 它们具有确定性
  • 输入的微小变化会显着影响输出哈希值

为什么使用哈希猫?

hashcat 是一个多线程实用程序,允许您配置线程数并根据优先级限制执行。 它支持 300 多种哈希算法,例如 MD4、MD5、SHA1、SHA512、bcrypt、HMAC-SHA512、NTLM、MySQL、WHIRLPOOL 等。 它适用于所有类型的操作系统,包括 Windows、Linux、Unix 和 BSD。

使用 hashcat 破解密码哈希的方法

hashcat 提供了多种攻击模式(组合器、基于规则、暴力猜测、混合和字典攻击)以提供更好的覆盖范围。 以下是 hashcat 用来破解散列密码的一些攻击的解释:

  1. 蛮力攻击:蛮力攻击利用所有可能的字符组合来确定准确的密码。 但是,它有最大密码长度和字符数的限制。 此外,高级级别的蛮力攻击还可以通过做出复杂性假设来优化时间。 例如,一种高级的暴力破解技术可以假设第一个字符更可能是大写字母,而数字最有可能出现在密码的末尾,等等。
  2. 字典攻击:字典攻击利用预先计算的密码列表,具体取决于围绕目标收集的信息或在用户中观察到的模式。 因此,它需要一些最常用的密码并为其添加一些排列以增加范围。
  3. 混合攻击:混合是上述攻击的组合,因为它通过字典攻击检查密码是否“可破解”,如果不可能,则继续使用蛮力技术。

如何在 Linux 上安装 hashcat

hashcat 在 Kali Linux 中默认可用。 在 Ubuntu 和 Debian 上安装它:

sudo apt-get update
sudo apt-get install hashcat

在 Fedora、CentOS 和其他基于 RHEL 的发行版:

sudo dnf update
sudo dnf install hashcat

在 Arch Linux 上安装 hashcat:

sudo pacman -Syu
sudo pacman -S hashcat

安装后,使用 help 命令列出所有可用选项:

hashcat --help

一些 hashcat 选项及其描述如下:

选项描述
-m默认值为 0 的哈希类型,即 MD5 哈希
-一种攻击类型,0为直接攻击,2为组合攻击,3为蛮力攻击
-o将破解的密码存储在输出文件中
词汇表需要密码词表的路径来匹配和破解哈希

笔记:在使用 hashcat 之前,请确保您的系统符合其硬件工作要求。 查看 官方网站 更多细节。

在 Linux 中从 /etc/shadow 文件中破解哈希

/etc/shadow 文件存储 Linux 上所有用户密码的乱码或散列值。 这是一个具有严格访问权限的关键文件; 它是并且必须只能由 root 帐户访问。

因此,如果您遇到可读的 /etc/影子 通过任何普通用户帐户进行文件,您可以获得root帐户的哈希值并使用hashcat实用程序破解密码哈希。

出于演示目的,更改为 root 帐户并创建一个新的用户帐户 爱丽丝 了解 hashcat 的工作原理:

sudo su
sudo useradd -c "Alice" alice

使用 passwd 命令创建密码:

passwd alice

检查里面的哈希密码值 /etc/影子 文件如下:

cut -d: -f1 /etc/shadow | grep alice

输出:

alice:$y$j9T$TANXgpk59y8r3jgPbDl/w/$UqiK6yahwqfyqhcegWLa1.z64TyePP5.VQpUnLqI3VD:19023:0:99999:7::

上述输出中的哈希从“爱丽丝:” 开始;将其保存在一个新文件中 哈希.txt.

你可以去 哈希猫网站 识别散列函数的类型和相关的参考值。 SHA512 哈希模式通常由 $6$ 期限,参考值为1800。

也可以在里面找加密方式 登录.defs 文件:

grep ENCRYPT_METHOD /etc/login.defs

然后,使用 hashcat 命令检查哈希函数的关联值,如下所示:

hashcat -h | grep sha512

现在使用 hashcat 实用程序来破解散列 -一种 攻击模式的标志, -m 散列参考值的标志(因为它不支持散列函数名称), 哈希.txt 文件路径和单词表的路径 摇滚你.txt.

hashcat -m 1800 -a 0 hash.txt /usr/share/wordlists/rockyou.txt

输出:

<snip>
.
.
$y$j9T$TANXgpk59y8r3jgPbDl/w/$UqiK6yahwqfyqhcegWLa1.z64TyePP5.VQpUnLqI3VD:12345
.
.
<snip>

笔记: 在 Kali Linux 上, 摇滚你.txt 默认情况下,文件在 /usr/share/wordlists 目录。 您还可以通过在终端中运行以下命令来使用其他词表:

locate wordlists | less

输出:

但是,对于其他 Linux 发行版,您需要下载 摇滚你.txt 来自 GitHub 存储库的文件如下:

wget https://github.com/danielmiessler/SecLists/blob/master/Passwords/Leaked-Databases/rockyou-20.txt

使用 hashcat 在 Linux 上破解密码

构建良好的身份验证系统不会以纯文本和清晰可见的形式存储用户密码,因为它们可能会导致安全漏洞。 更好的身份验证机制将密码作为哈希值存储在安全且无法访问的文件中。 但是,像 hashcat 这样的密码破解程序旨在使用各种攻击模式破译或猜测密码。

本文详细介绍了渗透测试人员必须知道使用 hashcat 实用程序破解散列密码的方法。 作为红队成员,有必要了解攻击者可以用来破坏身份验证控制的技术,并提供覆盖系统漏洞的指南。