【Hydra网络爆破工具】详细使用教程

什么是Hydra?

  • Hydra(九头蛇) 是一款暴力破解工具,能帮助渗透测试人员和合法(授权)黑客破解网络服务的密码。 Hydra 能够对 50 多种协议进行快速字典爆破,包括 telnet、FTP、HTTP、HTTPS、SMB、数据库以及其他多种服务。
  • Hydra由黑客组织“The Hacker’s Choice”开发。
  • 它于 2000年首次发布,作为一个概念验证工具,展示了如何对网络登录服务进行爆破。
  • Hydra还是一个并行登录破解工具,意味着可以同时建立多个连接。与顺序暴力破解不同,这减少了破解密码所需的时间。
  • 虽然 John 和 Hydra都是暴力破解工具,但 John 离线工作,而 Hydra 在线工作。 在本文中,我们将探讨 Hydra 的工作原理,并介绍一些实际用例。

注意:本文章仅供教育目的。如果您非法使用并陷入麻烦,我不会承担任何责任。在扫描/暴力破解/利用系统之前,请一定获得资产所有者的许可。

如何安装 Hydra

Hydra 在 Kali Linux 和 Parrot OS 中已预先安装。如果您使用的是其中之一,可以立即开始使用 Hydra。

在 Ubuntu 上,可以使用 apt 包管理器安装:
$ apt install hydra
在 Mac 上,可以在 Homebrew 中找到 Hydra:
$ brew install hydra

如果您使用的是 Windows,建议使用虚拟机并安装 Linux。个人而言,如果您想成为专业的渗透测试人员,不推荐使用 Windows。

如何使用 Hydra

让我们看看如何使用 Hydra。我们将了解 Hydra 为暴力破解用户名和密码提供的常见格式和选项,包括单个用户名/密码爆破、密码喷洒爆破和字典爆破。

密码喷洒是一种暴力破解attack,恶意行为者会对多个账户尝试使用同一个密码进行破解,然后再尝试另一个密码。密码喷洒attack通常很容易成功,因为很多用户会使用简单易猜的密码,如“password”或“123456”等。

如果已经安装了 Hydra,可以使用 help 命令开始,如下所示:

$ hydra -h

这将为您提供在使用 Hydra 时可以参考的标志和选项列表。
在这里插入图片描述

Hydra参数分析:

root@kali:~# hydra -h
// 显示 Hydra 工具的帮助信息

Hydra v9.5 (c) 2023 by van Hauser/THC & David Maciejak - Please do not use in military or secret service organizations, or for illegal purposes (this is non-binding, these *** ignore laws and ethics anyway).

Syntax: hydra [[[-l LOGIN|-L FILE] [-p PASS|-P FILE]] | [-C FILE]] [-e nsr] [-o FILE] [-t TASKS] [-M FILE [-T TASKS]] [-w TIME] [-W TIME] [-f] [-s PORT] [-x MIN:MAX:CHARSET] [-c TIME] [-ISOuvVd46] [-m MODULE_OPT] [service://server[:PORT][/OPT]]
// 说明 Hydra 命令的语法格式

Options:
  -R        // 恢复之前中断或崩溃的会话
  -I        // 忽略现有的恢复文件(不等待 10 秒)
  -S        // 执行 SSL 连接
  -s PORT   // 如果服务在非默认端口上,在此指定端口
  -l LOGIN or -L FILE  // 使用指定的登录名 LOGIN,或从文件 FILE 加载多个登录名
  -p PASS  or -P FILE  // 尝试指定的密码 PASS,或从文件 FILE 加载多个密码
  -x MIN:MAX:CHARSET  // 密码暴力生成,输入"-x -h"获取帮助
  -y        // 禁用在暴力破解中使用符号,见上文
  -r        // 使用非随机的打乱方法进行 -x 选项的操作
  -e nsr    // 尝试 "n" 空密码、"s" 以登录名作为密码和/或 "r" 反转登录名
  -u        // 循环遍历用户,而非密码(有效!-x 选项隐含此操作)
  -C FILE   // 以冒号分隔的"login:pass"格式,代替 -L/-P 选项
  -M FILE   // 要attack的服务器列表,每行一个,':'指定端口
  -o FILE   // 将找到的登录/密码对写入 FILE 而不是标准输出
  -b FORMAT // 为 -o FILE 指定格式:text(默认)、json、jsonv1
  -f / -F   // 当找到登录/密码对时退出(-M: -f 针对每个主机,-F 全局)
  -t TASKS  // 每个目标并行运行的连接数(默认: 16)
  -T TASKS  // 总体并行运行的连接数(对于 -M,默认: 64)
  -w TIME   // 等待响应的时间(默认 32)
  -W TIME   // 每个线程之间连接的等待时间(默认 0)
  -c TIME   // 每个登录尝试在所有线程上的等待时间(强制 -t 1)
  -4 / -6   // 使用 IPv4(默认)/ IPv6 地址(在 -M 中也始终放在 [] 中)
  -v / -V / -d  // 详细模式/为每个尝试显示登录名和密码/调试模式
  -O        // 使用旧的 SSL v2 和 v3
  -K        // 不重复失败的尝试(适用于 -M 大规模扫描)
  -q        // 不打印关于连接错误的消息
  -U        // 服务模块使用详情
  -m OPT    // 特定于模块的选项,查看 -U 输出获取信息
  -h        // 显示更多命令行选项(完整帮助)
  server    // 目标:DNS、IP 或 192.168.0.0/24(这个或 -M 选项)
  service   // 要破解的服务(见下面支持的协议)
  OPT       // 某些服务模块支持额外的输入(-U 查看模块帮助)

"目前Hydra支持的协议(服务service)"
 Asterisk, AFP, Cisco AAA, Cisco auth, Cisco enable, CVS, Firebird, FTP,
 HTTP-FORM-GET, HTTP-FORM-POST, HTTP-GET, HTTP-HEAD, HTTP-POST, HTTP-PROXY,
 HTTPS-FORM-GET, HTTPS-FORM-POST, HTTPS-GET, HTTPS-HEAD, HTTPS-POST,
 HTTP-Proxy, ICQ, IMAP, IRC, LDAP, MEMCACHED, MONGODB, MS-SQL, MYSQL, NCP, NNTP, Oracle Listener,
 Oracle SID, Oracle, PC-Anywhere, PCNFS, POP3, POSTGRES, Radmin, RDP, Rexec, Rlogin,
 Rsh, RTSP, SAP/R3, SIP, SMB, SMTP, SMTP Enum, SNMP v1+v2+v3, SOCKS5,
 SSH (v1 and v2), SSHKEY, Subversion, Teamspeak (TS2), Telnet, VMware-Auth,
 VNC and XMPP.


Examples(使用示例):
  hydra -l user -P passlist.txt ftp://192.168.0.1
  // 使用指定的用户"user"和密码列表"passlist.txt"对 FTP 服务在 192.168.0.1 进行暴力破解
  hydra -L userlist.txt -p defaultpw imap://192.168.0.1/PLAIN
  // 使用用户列表"userlist.txt"和指定的默认密码"defaultpw"对 IMAP 服务在 192.168.0.1 进行破解,使用 PLAIN 认证方式
  hydra -C defaults.txt -6 pop3s://[2001:db8::1]:143/TLS:DIGEST-MD5
  // 使用冒号分隔的"login:pass"格式的文件"defaults.txt"对 IPv6 地址 2001:db8::1 的 POP3S 服务在 143 端口进行破解,使用 TLS 和 DIGEST-MD5 认证方式
  hydra -l admin -p password ftp://[192.168.0.0/24]/
  // 使用指定的用户"admin"和密码"password"对 192.168.0.0/24 网段的 FTP 服务进行暴力破解
  hydra -L logins.txt -P pws.txt -M targets.txt ssh
  // 使用用户列表"logins.txt"和密码列表"pws.txt",根据"targets.txt"中的目标列表对 SSH 服务进行暴力破解

如何使用 Hydra 进行单个用户名/密码attack

让我们从一个简单的attack开始。如果我们知道系统中预期的用户名和密码,可以使用 Hydra 进行测试。

以下是语法:

$ hydra -l <用户名> -p <密码> <服务器> <服务>

假设在 114.51.41.191 上有一个名为“tiandou”、密码为“aytdd”的用户,以下是如何使用 Hydra 测试 SSH 的凭据:

$ hydra -l tiandou -p aytdd 114.51.41.191 ssh

如果成功,结果将如下所示:
请添加图片描述
(aytdd不符合密码复杂度要求)

如何使用 Hydra 进行密码喷洒attack

如果我们知道一个密码,但不确定是谁在使用,我们可以使用密码喷洒attack来确定用户名。
密码喷洒attack是使用单个密码对多个用户进行测试。如果有人使用该密码,Hydra 会为我们找到匹配项。
此attack假设我们知道系统中的用户列表。对于此示例,我们将创建一个名为 users.txt 的文件,其中包含以下用户:

root
admin
user
zhangyi
tiandou
aytdd

现在我们要测试谁的密码是“zmyyq”。以下是如何使用 Hydra 进行密码喷洒attack:

$ hydra -L users.txt -p zmyyq 114.51.41.191 ssh

如果有任何用户与给定密码匹配,我们将得到类似的结果。还应注意,我们使用了 -L 标志而不是 -l。-l 用于单个用户名,-L 用于用户名列表(字典)。

如何使用 Hydra 进行字典attack

让我们看看如何进行字典attack。在实际场景中,这是我们经常使用 Hydra 的方式。
字典attack是指我们有单个/多个用户名,并向 Hydra 提供密码字典。Hydra 然后针对列表中的每个用户测试所有这些密码。
在此示例中,我将使用 Rockyou 字典以及之前attack中创建的 users.txt 文件。如果您使用 Kali Linux,可以在 /usr/share/wordlists/rockyou.txt 找到 RockYou 字典。
以下是字典attack的命令:

$ hydra -L users.txt -P /usr/share/wordlists/rockyou.txt 114.51.41.191 ssh

如果attack成功,我们将看到与其他两个命令类似的结果。Hydra 会将所有匹配的成功用户名/密码组合以绿色突出显示。

如何在 Hydra 中使用详细和调试标志

在运行大型暴力破解attack时,Hydra 可能非常安静。如果要确保 Hydra 按预期工作,可以使用两个标志。
详细(-v)标志将为我们显示每个用户名/密码组合的登录尝试。当有很多组合要测试时,这可能会产生大量信息,但如果需要,可以使用详细标志。
以下是一个示例结果。可以看到,Hydra 除了成功匹配外,还打印了失败尝试的信息。
在这里插入图片描述

我们还可以使用调试(-d)标志收集更多信息。以下是使用调试标志的相同结果:
在这里插入图片描述

可以看到,Hydra 打印的信息远远超过我们的需要。虽然我们很少使用调试模式,但我们可以选择观察 Hydra 在暴力破解服务时采取的每个操作也挺不错的。

如何在 Hydra 中保存结果

让我们看看如何保存结果。花费数小时破解密码,如果由于系统崩溃而丢失,那就毫无意义了。
我们可以使用 -o 标志并指定文件名来保存结果。以下是语法:

$ hydra -l <用户名> -p <密码> <ip> <服务> -o <file.txt>

更多标志和格式

Hydra 还提供了一些对我们作为渗透测试人员有用的其他标志和格式:

服务规范

无需单独指定服务,可以将其与 IP 地址一起使用。例如,要暴力破解 SSH,可以使用以下命令:

$ hydra -l <用户名> -p <密码> ssh://<ip>

如何恢复attack

如果 Hydra 的会话在attack进行中退出,可以使用 -R 标志恢复attack,而无需从头开始。

$ hydra -R

如何使用自定义端口

有时系统管理员会更改服务的默认端口。例如,FTP 可以在 3000 端口而不是默认的 21 端口运行。在这种情况下,可以使用 -s 标志指定端口。

$ hydra -l <用户名> -p <密码> <ip> <服务> -s <端口>

如何attack多个主机

如果要attack多个主机怎么办?很简单,可以使用 -M 标志。files.txt 将包含 IP 地址或主机的列表,而不是单个 IP 地址。

$ hydra -l <用户名> -p <密码> -M <host_file.txt> <服务>

有针对性的组合

如果我们有用户名和密码的列表,可以进行字典attack。但如果我们有关于哪些用户名可能具有一组密码的更多信息,可以为 Hydra 准备自定义列表。
例如,我们可以创建一个由分号分隔的用户名和密码列表,如下所示:

username1:password1
username2:password2
username3:password3

然后,我们可以使用 -C 标志告诉 Hydra 运行这些特定组合,而不是遍历所有用户和密码。这大大减少了完成暴力破解attack所需的时间。
以下是语法:

$ hydra -C <combinations.txt> <ip> <服务>

我们已经详细了解了如何使用 Hydra。现在您应该准备好对 FTP、SSH 和 Telnet 等网络服务进行实际审计。
但作为渗透测试人员,了解如何防御这些attack很重要。记住,we are good people😎

如何防御 Hydra

防御暴力破解attack的明显解决方案是设置强密码密码越强,应用暴力破解技术就越困难
我们还可以强制实施密码策略,每隔几周更改密码。不幸的是,许多个人和企业多年来一直使用相同的密码。这使他们容易成为暴力破解attack的目标。
另一种防止基于网络的暴力破解的方法是限制授权尝试(限制尝试登录次数)。如果在几次登录尝试失败后锁定账户,暴力破解attack将不起作用。这在QQ、需多应用中很常见,如果几次登录尝试失败,您的账户将被锁定。
最后,像 re-captcha **(验证码)**这样的工具可以很好地防止暴力破解attack。像 Hydra 这样的自动化工具无法像真正的人类一样解决验证码。

总结

Hydra 是一款快速灵活的网络暴力破解工具,可用于attack SSH 和 FTP 等服务。凭借模块化架构和对并行化的支持,Hydra 可以轻松扩展以包括新的协议和服务。
Hydra 无疑是渗透测试工具包中的强大工具。

  • 33
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值