
hydra
H Y D R A
(c) 2001-2023 van Hauser / THC
<[email protected]> https://github.com/vanhauser-thc/thc-hydra
许多模块由 David (dot) Maciejak @ gmail (dot) com 编写
BFG 代码由 Jan Dlabal <[email protected]> 编写
根据 AGPLv3 许可证发布(参见 LICENSE 文件)
请勿用于军事或秘密服务组织,或用于非法目的。
(这只是作者的愿望,不具有约束力。许多在这些组织中工作的人
无论如何都不关心法律和道德。如果你忽视这一点,你就不是一个“好”人。)
注意:不,这不是一份 Markdown 文档!老派风格!
当前 GitHub 状态下的 Hydra 可直接通过 Docker 下载:``` docker pull vanhauser/hydra
INTRODUCTION
------------
最大的安全漏洞之一是密码,正如每一项密码安全研究所显示的那样。该工具是一个概念验证代码,旨在让研究人员和安全顾问能够展示从远程系统获得未经授权访问是多么容易。
本工具仅供合法用途!
目前已经存在多个登录破解工具,但它们中没有一个支持攻击多个协议或支持并行连接。
该工具已在 Linux、Windows/Cygwin、Solaris、FreeBSD/OpenBSD、QNX(Blackberry 10)和 MacOS 上成功编译和测试。
目前,该工具支持以下协议:
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.
不过,用于新服务的模块引擎非常简单,因此很快就会有更多服务得到支持。
我们非常感谢您帮助编写、增强或修复模块!! :-)
获取方式
------------
您可以随时在 Hydra 的项目页面 https://github.com/vanhauser-thc/thc-hydra/releases 找到最新的发布/生产版本。
如果您对当前的开发状态感兴趣,公共开发仓库位于 GitHub 上:
svn co https://github.com/vanhauser-thc/thc-hydra
或
git clone https://github.com/vanhauser-thc/thc-hydra
请自行承担使用开发版本的风险。它包含新功能和新错误。可能无法正常工作!
或者(更简单的方法),您可以将其作为 Docker 容器拉取:```
docker pull vanhauser/hydra
要配置、编译并安装 Hydra,只需输入:``` ./configure make make install
If you want the SSH module, you have to set up libssh (not libssh2!) on your
system, get it from https://www.libssh.org, for ssh v1 support you also need
to add the "-DWITH_SSH1=On" option in the cmake command line.
IMPORTANT: If you compile on macOS, you must do this - do not install libssh via Homebrew.
If you use Ubuntu/Debian, this will install the supplementary libraries needed
for a few optional modules (note that some might not be available on your distribution):```
apt-get install libssl-dev libssh-dev libidn11-dev libpcre3-dev \
libgtk-3-dev libmysqlclient-dev libpq-dev libsvn-dev \
firebird-dev libmemcached-dev libgpg-error-dev \
libgcrypt11-dev libgcrypt20-dev freetds-dev
这将启用除 Oracle、SAP R/3、NCP 和 Apple 文件协议之外的所有可选模块和功能——这些你需要从供应商网站下载并安装。
对于所有其他 Linux 衍生版和基于 BSD 的系统,请使用系统软件安装程序,并查找类似命名的库,如上一条命令所示。在所有其他情况下,你必须下载所有源码库并手动编译。
如果你只输入 hydra,将看到重要选项的简短摘要。
输入 ./hydra -h 可查看所有可用的命令行选项。
请注意,不包含登录/密码文件。请自行生成。 不过,存在一个默认密码列表;使用 "dpl4hydra.sh" 生成一个列表。
对于 Linux 用户,提供了 GTK GUI;请尝试 ./xhydra
命令行用法语法如下: 要攻击一个目标或一个网络,你可以使用新的 "://" 格式: hydra [某些命令行选项] PROTOCOL://TARGET:PORT/MODULE-OPTIONS 旧模式也可用于这些情况,此外,如果你想从文本文件指定目标,则必须使用此模式:``` hydra [some command line options] [-s PORT] TARGET PROTOCOL [MODULE-OPTIONS]
通过命令行选项,你可以指定要尝试的登录名、密码、是否使用 SSL、攻击时应使用的并行任务数量等。
PROTOCOL 是你想要使用的攻击协议,例如 ftp、SMTP、http-get 或许多其他可用协议
TARGET 是你想要攻击的目标
MODULE-OPTIONS 是每个 PROTOCOL 模块特有的可选值
第一步 – 选择你的目标
你有三种方式指定要攻击的目标:
1. 命令行中的单个目标:直接输入 IP 或 DNS 地址
2. 命令行中的网络范围:CIDR 格式如 "192.168.0.0/24"
3. 文本文件中的主机列表:每行一个条目(见下文)
第二步 – 选择你的协议
尽量避免使用 telnet,因为它无法可靠检测登录尝试的成功或失败。
使用端口扫描器查看目标上启用了哪些协议。
第三步 – 检查模块是否有可选参数
hydra -U PROTOCOL
例如 hydra -U smtp
第四步 – 目标端口
这是可选的;如果未提供端口,则使用 PROTOCOL 的默认常用端口。
如果你指定使用 SSL("-S" 选项),则默认使用 SSL 常用端口。
如果你使用 "://" 表示法,则必须使用 "[" "]" 括号来提供 IPv6 地址或 CIDR("192.168.0.0/24")表示法进行攻击:
hydra [一些命令行选项] ftp://[192.168.0.0/24]/
hydra [一些命令行选项] -6 smtps://[2001:db8::1]/NTLM
注意,Hydra 的所有操作仅支持 IPv4!
如果你想攻击 IPv6 地址,必须添加 "-6" 命令行选项。
之后所有攻击将仅支持 IPv6!
如果你想通过文本文件提供目标,则不能使用 :// 表示法,而应使用旧式方法,仅提供协议(和模块选项):
hydra [一些命令行选项] -M targets.txt ftp
你也可以为每个目标条目添加 ":<port>" 来指定端口,例如:```
foo.bar.com
target.com:21
unusual.port.com:2121
default.used.here.com
127.0.0.1
127.0.0.1:2121
请注意,如果您想要附加 IPv6 目标,您必须提供 -6 选项,并且必须将 IPv6 地址放在文件中的括号内(!),如下所示:``` foo.bar.com target.com:21 [fe80::1%eth0] [2001::1] [2002::2]:https://raw.githubusercontent.com/vanhauser-thc/thc-hydra/master/8080 [2a01:24a:133:0:00:123:ff:1a]
LOGINS AND PASSWORDS
--------------------
You have many options on how to attack with logins and passwords
With -l for login and -p for password, you tell Hydra that this is the only
login and/or password to try.
With -L for logins and -P for passwords, you supply text files with entries.
e.g.:```
hydra -l admin -p password ftp://localhost/
hydra -L default_logins.txt -p test ftp://localhost/
hydra -l admin -P common_passwords.txt ftp://localhost/
hydra -L logins.txt -P passwords.txt ftp://localhost/
此外,您可以通过"-e"选项尝试基于登录名的密码。 "-e"选项有三个参数:``` s - try the login as password n - try an empty password r - reverse the login and try it as a password
如果你想要, 例如, 尝试 "try login as password" 和 "空密码", 你可以在命令行上指定 `-e sn`。
但是除了 `-p/-P` 之外, 还有两种尝试密码的模式:
你可以使用一个文本文件, 其中登录名和密码对由冒号分隔, 例如:```
admin:password
test:test
foo:bar
这是一个常见的默认账户样式列表,也由 Hydra 附带的 dpl4hydra.sh 默认账户文件生成器生成。 你可以使用 -C 选项使用此类文本文件 - 请注意,在此模式下你不能使用 -l/-L/-p/-P 选项(但可以使用 -e nsr)。 示例:``` hydra -C default_accounts.txt ftp://localhost/
最后,还有一个使用 -x 选项的暴力破解模式(该选项不能与
-p/-P/-C 一起使用):```
-x minimum_length:maximum_length:charset
字符集定义中,a 表示小写字母,A 表示大写字母,
1 表示数字,对于其他字符,你提供的就是它们的实际表示。
示例:```
-x 1:3:a generate passwords from length 1 to 3 with all lowercase letters
-x 2:5:/ generate passwords from length 2 to 5 containing only slashes
-x 5:8:A1 generate passwords from length 5 to 8 with uppercase and numbers
-x '3:3:aA1&~#\ "'<{([-|_^@)]=}>$%*?./§,;:!`' -v generates length 3 passwords with all 95 characters, and verbose.
示例:```
hydra -l ftp -x 3:3:a ftp://localhost/
通过第三个命令行参数(可选目标服务)或 -m 命令行选项,您可以向模块传递一个选项。 许多模块使用此选项;少数模块需要它!
要查看模块的特殊选项,请输入:
hydra -U
例如:
./hydra -U http-post-form
特殊选项可以通过 -m 参数、第三个命令行参数或 service://target/option 格式传递。
示例(它们全部等效):``` ./hydra -l test -p test -m PLAIN 127.0.0.1 imap ./hydra -l test -p test 127.0.0.1 imap PLAIN ./hydra -l test -p test imap://127.0.0.1/PLAIN
恢复中止/崩溃的会话
------------------------------------
当 Hydra 通过 Control-C 中止、被终止或崩溃时,它会留下一个
"hydra.restore" 文件,其中包含恢复会话所需的所有信息。
这个会话文件每5分钟写入一次。
注意:hydra.restore 文件不能被复制到不同平台(例如
从小端序到大端序,或从 Solaris 到 AIX)
如何通过代理扫描/破解
------------------------------
环境变量 HYDRA_PROXY_HTTP 定义了 web 代理(这仅适用于
HTTP 服务!)。
以下语法是有效的:```
HYDRA_PROXY_HTTP="http://123.45.67.89:8080/"
HYDRA_PROXY_HTTP="http://login:[email protected]:8080/"
HYDRA_PROXY_HTTP="proxylist.txt"
最后一个示例是一个包含最多64个代理的文本文件(使用与其他示例相同的格式定义)。
对于所有其他服务,请使用 HYDRA_PROXY 变量进行扫描/破解。
它使用相同的语法。例如:```
HYDRA_PROXY=[connect|socks4|socks5]://[login:password@]proxy_addr:proxy_port
例如:```
HYDRA_PROXY=connect://proxy.anonymizer.com:8000
HYDRA_PROXY=socks4://auth:[email protected]:1080
HYDRA_PROXY=socksproxylist.txt
-u 选项能更快地找到密码!pw-inspector 工具来缩小密码列表:
cat dictionary.txt | pw-inspector -m 6 -c 2 -n > passlist.txt结果与其他信息一同输出到标准输出。通过 -o 命令行选项,结果也可以写入文件。使用 -b 可以指定输出格式。目前支持以下格式:
text - 纯文本格式jsonv1 - 使用 1.x 版本 schema(定义见下文)的 JSON 数据json - 使用最新版本 schema 的 JSON 数据;目前只有版本 1。如果使用 JSON 输出,当 Hydra 启动时出现严重错误,结果文件可能不是有效的 JSON。
以下是 JSON 输出示例。部分字段说明: