暴力破解在线服务的工具Hydra

  • 2017-07-31
  • 640
  • 0

hashcat可以高速破解各种hash值,整个破解过程完全是在本地运行的,和网络无关。而很多时候,我们是需要暴力破解各种在线服务的用户名和密码的,这时hashcat便排不上用场了。在以前,遇到这种情况,我都是用BurpSuite来破解,现在,有了更多的选择————Hydra。

Hydra号称是世界顶级的密码暴力破解工具,专业破解各种网络服务的用户名和密码,几乎支持所有知名服务,我的Kali中的Hydra是v8.3,支持的网络服务有:

asterisk cisco cisco-enable cvs firebird ftp ftps http[s]-{head|get|post} http[s]-{get|post}-form http-proxy http-proxy-urlenum icq imap[s] irc ldap2[s] ldap3[-{cram|digest}md5][s] mssql mysql nntp oracle-listener oracle-sid pcanywhere pcnfs pop3[s] postgres rdp redis rexec rlogin rsh rtsp s7-300 sip smb smtp[s] smtp-enum snmp socks5 ssh sshkey svn teamspeak telnet[s] vmauthd vnc xmpp

我知道的网络服务它都有所覆盖,看上去好强。嗯,强大到它特意提醒,不要用于军队和秘密组织,或是其他非法用途。

其实Hydra是很容易使用的,命令语法如下:

    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] [-SOuvVd46] [service://server[:PORT][/OPT]]

之所以要特意写一篇博文,就是为了记录一下有这么一个工具。但若到此为止,这篇文章也未免太水了点,所以,翻译下Hydra各个参数的意思吧:

  -R        恢复前一次失败的或缓存的攻击
  -S        使用SSL连接
  -s PORT   若是服务没有使用默认端口,则用这一参数指定端口
  -l LOGIN or -L FILE  把LOGIN作为登录名,或是从文件FILE中载入一系列登录名
  -p PASS  or -P FILE  将PASS作为密码, 或是从文件FILE中载入一系列密码
  -x MIN:MAX:CHARSET  生成暴力破解用的密码, 输入 "-x -h" 获得更多帮助
  -e nsr    尝试: n 空密码,s 将登录名作为密码,r 反转登录
  -u        循环用户名, 不使用密码 (有效的! 用 -x 说明)
  -C FILE   取代 -L/-P 选项,输入格式是以冒号分割:"login:pass"
  -M FILE   要攻击的服务器列表, 一行一个, 用':'指定端口
  -o FILE   将找到的用户名/密码对写入到文件FILE中,而不输出到标准输出
  -f / -F   当找到一对用户名/密码后退出 (-M: -f 每个主机, -F 全局)
  -t TASKS  同时运行TASKS个线程 (每个主机默认为16)
  -w / -W TIME  每个请求的等待时间 (32) / 线程之间发起连接的时间间隔 (0)
  -4 / -6   使用IPv4 (默认) / IPv6 地址 (put always in [] also in -M)
  -v / -V / -d  冗余模式 / 展示每次攻击时使用的用户名和密码 / 调试模式
  -O        使用旧版的SSL v2 和 v3
  -q        不输出有关连接错误的信息
  -U        服务模块用法细节
  server    目标服务器: DNS, IP or 192.168.0.0/24 (使用此选项或 -M 选项)
  service   要破解的服务 (支持的协议在上面已经给出了)
  OPT       一些服务模块支持额外的输入 (参数 -U 可查看模块帮助)

用HYDRA_PROXY_HTTP或HYDRA_PROXY(如果需要,则用HYDRA_PROXY_AUTH指定用户名密码)来配置代理,例如:

  % export HYDRA_PROXY=socks5://127.0.0.1:9150 (or socks4:// or connect://)
  % export HYDRA_PROXY_HTTP=http://proxy:8080
  % export HYDRA_PROXY_AUTH=user:pass

下面是几个使用示例:

  hydra -l user -P passlist.txt ftp://192.168.0.1
  hydra -L userlist.txt -p defaultpw imap://192.168.0.1/PLAIN
  hydra -C defaults.txt -6 pop3s://[2001:db8::1]:143/TLS:DIGEST-MD5
  hydra -l admin -p password ftp://[192.168.0.0/24]/
  hydra -L logins.txt -P pws.txt -M targets.txt ssh

注意到有一种服务类型为:http[s]-{get|post}-form,选择此服务类型,Hydra会发送Web的form表单模拟登录,可选POST或GET方式。下面是以POST方式提交form表单、暴力破解登录密码的例子:

  hydra -L userlist.txt -P passlist.txt 192.168.56.101 http-post-form "/admin/login.jsp:username=^USER^&password=^PASS^&submit=login:wrong username or password"

可以看到,在服务类型http-post-form后,还有一个长长的字符串参数,这个参数被“:”分割成了三部分,分别是:

  • /admin/login.jsp
  • username=^USER^&password=^PASS^&submit=login
  • wrong username or password

第一部分是登录页面的路径;第二部分是表单字段,用“^USER^”作为用户名的占位符、“^PASS^”作为登录密码的占位符;第三部分是错误提示,即用户名或密码错误时返回页面中包含的一段字符串,Hydra根据这个字符串来判断登录是否成功。

评论

还没有任何评论,你来说两句吧