如何在 Linux 上使用 hashcat 破解哈希值
如果您从事渗透测试,破解密码是一项需要学习的重要技能。以下是如何使用 hashcat 在 Linux 上破解哈希值。
您是网络安全领域的初学者吗?你想站在进攻方吗?作为一名红队成员,您将学习许多帮助您执行网络杀伤链活动的技术和策略。其中一项任务是权限升级,您可以在其中获取密码哈希值。
hashcat 是一个强大且多功能的工具,可以通过执行各种模式的攻击,使用已知的哈希值暴力破解存储的凭据。本文介绍了渗透测试人员、系统管理员、间谍或黑客用来查找密码的密码破解实用程序。
什么是哈希?
散列是一种单向数学函数或唯一标识符,无论输入大小/长度如何,它都会返回固定长度的输出。因此,这是一个不可逆的过程,不需要像加密中那样的密钥来解密哈希值。
散列最常见的目的是确保数据传输过程中数据的完整性不被篡改。散列的性质如下:
提供快速计算
好的算法可以避免不同输入产生相同的输出
它们具有确定性的本质
输入的微小变化会显着影响输出的哈希值
为什么使用 hashcat?
hashcat 是一个多线程实用程序,允许您配置线程数并根据优先级限制执行。它支持 300 多种哈希算法,例如 MD4、MD5、SHA1、SHA512、bcrypt、HMAC-SHA512、NTLM、MySQL、WHIRLPOOL 等。它适用于所有类型的操作系统,包括 Windows、Linux、Unix 和 BSD。
使用 hashcat 破解密码哈希的方法
hashcat 提供多种攻击模式(组合、基于规则、暴力猜测、混合和字典攻击)以提供更好的覆盖范围。以下是 hashcat 用于破解哈希密码的一些攻击的解释:
暴力攻击:暴力攻击利用所有可能的字符组合来确定确切的密码。但是,它有最大密码长度和字符数的限制。此外,高级的暴力攻击还可以通过做出复杂性假设来优化时间。例如,先进的暴力破解技术可以假设第一个字符更有可能是大写,数字最有可能出现在密码的末尾,等等。
字典攻击:字典攻击根据围绕目标收集的信息或在用户中观察到的模式,利用预先计算的密码列表。因此,它需要一些最常用的密码并为其添加一些排列以扩大范围。
混合攻击:混合是上述攻击的组合,因为它通过字典攻击检查密码是否“可破解”,如果不可能,则转向暴力技术。
如何在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选项及其说明如下:
Options | Description |
---|---|
-m | The type of hash with a default value of 0 i.e. MD5 hash |
-a | Type of attack, 0 for a straight attack, 2 for combination, and 3 for a brute-force attack |
-o | Stores cracked password in an output file |
wordlist | Requires a path to the wordlist of passwords to match and crack the hashes |
注意:在使用 hashcat 之前,请确保您的系统符合其硬件工作要求。查看官方网站了解更多详情。
破解 Linux 中 /etc/shadow 文件的哈希值
/etc/shadow文件存储了Linux上所有用户密码的乱码或哈希值。这是一个具有严格访问权限的关键文件;它只能且只能由 root 帐户访问。
因此,如果您通过任何常规用户帐户遇到可读的 /etc/shadow 文件,您可以获取 root 帐户的哈希值并使用 hashcat 实用程序破解密码哈希。
为了演示目的,更改为 root 帐户并创建一个新的用户帐户 alice 以了解 hashcat 的工作原理:
sudo su
sudo useradd -c "Alice" alice
使用 passwd 命令创建密码:
passwd alice
检查 /etc/shadow 文件中的哈希密码值,如下所示:
cut -d: -f1 /etc/shadow | grep alice
输出 :
alice:$y$j9T$TANXgpk59y8r3jgPbDl/w/$UqiK6yahwqfyqhcegWLa1.z64TyePP5.VQpUnLqI3VD:19023:0:99999:7::
上述输出中的哈希值从“alice:”开始;将其保存在新文件 hash.txt 中。
您可以访问hashcat网站来识别哈希函数的类型和相关参考值。 SHA512哈希模式一般用$6$术语标识,参考值为1800。
您还可以在 login.defs 文件中查找加密方法:
grep ENCRYPT_METHOD /etc/login.defs
然后,使用 hashcat 命令检查哈希函数的关联值,如下所示:
hashcat -h | grep sha512
现在使用 hashcat 实用程序来破解哈希,其中 -a 标志为攻击模式,-m 标志为哈希参考值(因为它不支持哈希函数名称), hash.txt 文件路径,以及单词列表 rockyou.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 上,rockyou.txt 文件默认位于 /usr/share/wordlists 目录中。您还可以通过在终端中运行以下命令来使用其他单词列表:
locate wordlists | less
输出 :
但是,对于其他 Linux 发行版,您需要从 GitHub 存储库下载 rockyou.txt 文件,如下所示:
wget https://github.com/danielmiessler/SecLists/blob/master/Passwords/Leaked-Databases/rockyou-20.txt
在 Linux 上使用 hashcat 破解密码
完善的身份验证系统不会以明文和清晰的方式存储用户密码,因为它们可能会导致安全漏洞。更好的身份验证机制将密码作为哈希值存储在安全且无法访问的文件中。然而,诸如 hashcat 之类的密码破解程序被设计为使用各种攻击模式来破译或猜测密码。
本文详细介绍了渗透测试人员必须了解的使用 hashcat 实用程序破解哈希密码的方法。作为红队成员,有必要了解攻击者可以用来破坏身份验证控制的技术,并提供覆盖系统漏洞的指南。