实例操作
登录名和密码
你有很多种方式来指定尝试的登录名和密码,使用 “-l” 选项指定单个登录名,使用 “-p” 选项指定单个密码。使用 “-L” 选项指定一个文件来指定多个登录名,使用 “-P” 选项指定一个文件来指定多个密码。例如:
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/
1234
此外,你可以通过指定 “-e” 选项尝试基础的密码,”-e” 选项有三个参数:
- s - 使用登录名作为密码
- n - 使用空密码
- r - 将登录名倒序作为密码
如果你想使用这个选项,尝试使用组合的方式指定,比如可以使用 “-e sn” 指定使用登录名作为密码和尝试空密码。
除了使用 -p/-P 外,还有一种指定登录名密码的方式,使用 “登录名:密码” 的格式放到文件中指定,例如:
admin:password
test:test
foo:bar
123
这是一种公共的默认的账号列表格式,这种格式也是一开始提到的 “dpl4hydra.sh” 生成的默认账号文件的格式。
你可以使用 “-C” 选项指定该格式的文件,当使用这种账号模式时,就不能再使用 “-l/-L/-p/-P” 选项(不过可以使用 “-e nsr” 选项)。
例子:
hydra -C default_accounts.txt ftp://localhost/
1
最后,还有一种Brute Force模式(暴力模式),使用 “-x” 选项指定(此选项不能和 “-p/-P/-C” 选项一起使用):
-x minimum_length:maximum_length:charset
1
上面的 charset
位置,使用 a
表示小写字母,A
表示大写字母,1
表示数字,and for anything else you supply it is their real representation.
例子:
-x 1
生成一个字符的并且小写字母的密码。也就是说该参数会尝试从a到z共26个密码。a
-x 1
生成长度为1到3个字符并且全部小写字母的密码a
-x 2
生成长度为2到5个字符并且只包含斜杠的密码/
-x 5
生成长度为5到8个字符并且有大写字母和数字的密码A1
例子:
hydra -l ftp -x 3:3:a ftp://localhost/
1
模块的特殊选项
通过第三个命令行参数(目标主机 服务名称 选项)或者使用 “-m” 选项,你可以给模块加一个选项。很多模块可以加,有一些必须加。
查看特定模块的选项,执行:
hydra -U <module>
1
例如:
./hydra -U http-post-form
1
特定的选项可以通过 “-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
123
恢复 中止/崩溃 的会话
当hydra终止后,可能是因为Control-C,进程被杀死,或者崩溃,它会留下一个 “hydra.restore” 文件,这个文件包含了所有的恢复会话所需的必要信息。这个会话文件每隔5分钟写一次。
注意:hydra.restore文件不能复制到不同的平台下(例如:在不同的字符编码的平台间复制,或者不同的操作系统)。
如何 扫描/破解 代理服务器
环境变量 “HYDRA_PROXY_HTTP” 定义了Web代理(这种只能用于http服务)。格式如下:
HYDRA_PROXY_HTTP="http://123.45.67.89:8080/"
HYDRA_PROXY_HTTP="http://login:password@123.45.67.89:8080/"
HYDRA_PROXY_HTTP="proxylist.txt"
123
最后一个示例是一个文本文件包含多达64个代理(格式定义与其他示例相同)。
对于所有其他的服务,使用 “HYDRA_PROXY” 环境变量去扫描/破解。例如:
HYDRA_PROXY=[connect|socks4|socks5]://[login:password@]proxy_addr:proxy_port
1
例子:
HYDRA_PROXY=connect://proxy.anonymizer.com:8000
HYDRA_PROXY=socks4://auth:pw@127.0.0.1:1080
HYDRA_PROXY=socksproxylist.txt
123
附加提示
按可能性对密码文件内容进行排序,并且使用 “-u” 选项查找最快的密码!
去除密码字典中重复的密码! 这将会节省很多时间 :-)
cat words.txt | sort | uniq > dictionary.txt 1
如果你知道目标密码的策略(只允许用户使用最少6个字符,包含至少一个字母和一个数字,等等。你可以使用hydra自带的 “pw-inspector” 工具来减少密码列表:
cat dictionary.txt | pw-inspector -m 6 -c 2 -n > passlist.txt 1
结果输出
破解结果会和其它信息一起输出到标准输出。通过指定 “-o” 命令行参数,可以将破解结果写入一个文件。使用 “-b” 选项指定输出的格式。目前支持如下几个格式:
text
- 普通文本。jsonv1
- 1.x版本使用的JSON数据格式(见下)。json
- 最后一个版本使用的JSON数据格式,当前最后一个版本就是1.x。
如果使用JSON输出,当hydra启动报错时,结果文件中可能会有非JSON格式的数据,可能会导致解析报错,需要特殊处理。
JSON格式
这里有一个JSON输出的数据格式示例。注意某些字段信息的标记说明:
errormessages
- 该字段是一个数组,包含有hydra运行结束后的错误输出。输出的内容很随意,没有任何格式。success
- 表明hydra是否没有出现任何错误成功执行完成。(注意 不是表示有没有发现弱口令)。根据是否完成取值true或false。quantityfound
- 发现的用户名密码对的数量。jsonoutputversion
- Schema版本, 1.00, 1.01, 1.11, 2.00, 2.03, 等等。
1.00 版本例子:
{
"errormessages": [
"[ERROR] Error Message of Something",
"[ERROR] Another Message",
"These are very free form"
],
"generator": {
"built": "2018-03-01 14:44:22",
"commandline": "hydra -b jsonv1 -o results.json ... ...",
"jsonoutputversion": "1.00",
"server": "127.0.0.1",
"service": "http-post-form",
"software": "Hydra",
"version": "v8.5"
},
"quantityfound": 2,
"results": [
{
"host": "127.0.0.1",
"login": "bill@example.com",
"password": "bill",
"port": 9999,
"service": "http-post-form"
},
{
"host": "127.0.0.1",
"login": "joe@example.com",
"password": "joe",
"port": 9999,
"service": "http-post-form"
}
],
"success": false
}
12345678910111213141516171819202122232425262728293031323334
速度
使用并行特性,密码破解速度会非常快,但是,它取决于协议,不同协议速度不同。通常最快的是POP3和FTP。
尝试改变 “-t” 选项的参数去加快速度,参数值越大,速度越快(当然如果过快可能会使服务宕掉,或者会触发服务的登录保护机制)
推荐文章: