3.4 暴力破解攻击

暴力破解攻击是指对加密数据尝试所有可能的密文,直到找到正确的密文。从资源和时间占用的角度看,暴力破解攻击的成本极其高。攻击者通常是看中了密文的长度限制和密文的简单性来对加密中的漏洞加以利用。如果密文通常是基于字典中的单词,那么这意味着攻击者需要测试的全部空间就是对应的词典中的所有单词,这使得猜测的范围远小于采用随机字符的单词。避免暴力破解攻击的最好办法是使用很长的复杂的密文,外加尝试若干次数后采用超时阻止等其他方法来提高安全因子。

3.4.1 Hydra

Hydra 是由The Hacker's Choice(THC) 开发的一款工具,它使用暴力破解攻击方法来测试一系列不同的协议。它是攻击邮件系统的理想选择,因为Hydra可以锁定特定的IP和协议,比如邮件系统使用的POP3和SMTP的管理员账户。

在启动Hydra之前,应该对目标进行侦察工作,比如邮件系统。第2章 中介绍了漏洞评估工具Zenmap ,它可以用来为Hydra收集如下信息:

另一个常跟Hydra搭配使用的侦察工具是Firefox插件Tamper Data

Tamper Data 是由Adam Judson开发的。它允许攻击者查看HTTP和HTTPS的GET和POST信息。在使用如Hydra一类的工具进行暴力破解攻击时,这些信息非常有用,因为你可以自动化Hydra来打开网页,并对不同的用户名和密码组合进行测试。

启用Tamper Data插件后,我们就能在对Web表单提交用户名之前启动该插件了。

Tamper Data会显示在字段分组中输入的信息。攻击者可以对这些数据进行操作并重新提交,即使该网站是经过加密的。

在本例中,我们看到当用户点击login 按钮时提交的用户名pink 和密码pinkprincess

这两个例子是对目标进行侦察以收集Hydra需要的有用信息的两个实用方法。Kali中还有一大把的其他方法和自带工具可以用来收集Hydra中用到的Web信息。不过,我们推荐使用Netcat和Tamper Data。它们是目前最有效的方法。

现在已经完成了侦察阶段,让我们启动Hydra看看如何使用侦察阶段收集到的信息来进行暴力破解密码攻击。

要在Kali中访问Hydra,浏览Password Attacks > Online Attacks ,然后选择Hydra 。它会打开一个终端窗口,然后自动启动Hydra。

终端窗口中的开头文档解释了如何运行Hydra。举个例子,如果你想要使用SMTP攻击一个位于192.168.1.1的管理员账户的密码文件,可以输入:

hydra -l admin -p /root/password.txt 192.168.1.1 smtp

如果要在Web表单中使用Hydra,我们就需要收集之前在Tamper Data插件中收集到的信息。在Web表单中使用Hydra的语法是<url>:<表单参数>:<失败字符串>

URL=https://www.facebook.com/login.php?login_attempt=1email=pink&passwd=pinkprincessl&login="log in"

现在可以运行Hydra了。你需要提供一个含有用户名的文件,还需要一个含有密码的文件。

hydra -L /cloudcentrics/usernamelist -P /cloudcentrics/passwords_demo_file.txtt -facebook.com http-get-form "login.php?login_attempt=1:username=^EMAIL^&TOKEN=^PASSWORD^&login=Login:incorrect"

它的语法可能会非常复杂,而且站点跟站点之间也会变化。在同一个网站上也可能会不同。我们推荐你先在实验室中掌握了Tamper Data和Hydra,然后再在现场渗透测试中使用。

3.4.2 DirBuster

DirBuster 是为暴力破解Web应用服务器上的目录和文件名而设计的。很多情况下,Web服务器看上去依然是默认安装后的状态,而应用和网页实际上都隐藏在里面。DirBuster就是为了找出这些隐藏的因素而设计的。

DirBuster可以在Web Applications > Web Crawlers 中找到,名为dirbuster 。打开后,必须填完某些字段后才能发起攻击。至少必须输入目标URL,选择线程数(我们建议最多不超过100)及文件列表。你可以点击Browse 来选择默认的列表或是自己设置。

Kali的有些版本可能并未包含默认的字典。你可以在线下载默认字典,然后将DirBuster指向它们,如下面的截图所示:

填完基本信息后,点击Start ,DirBuster会开始漏洞评估。很有可能它会说完成时间会是在几天后。不过,你通常能够在几分钟内就找到有用的数据。下面的截图中找出了一个很有趣的/cgi-bin/目录:

只要HTTP响应的状态码不是404,这个网页就是可以进行暴力破解攻击的。要在锁定中将目标锁定为/cgi-bin/,点击Stop 来结束扫描,然后点击Back 。在主界面上,Start 上方,有个选择漏洞评估起点的字段。要扫描/cgi-bin/目录内部,可以在该字段输入该目录然后点击Start

极有可能你会发现目录中还有目录要测试。重复同样的停止、更新起始字段、执行扫描的过程,进一步理清目标的情况。下面的截图显示了/cgi-bin/目录内的树状图关系:

你可以点击Report 按钮来将探索结果转换成报告的形式。你需要选择保存报告的位置,然后点击Generate Report 。然后会看到在弹出的文本文件中展示了你发现的内容。

3.4.3 WebSlayer

WebSlayer 是一个Web应用程序暴力破解工具。WebSlayer可以用来暴力破解表单(User/Password )、GETPOST 参数,也可以用于找出没有被链接的资源,如脚本、文件、目录等。WebSlayer提供了载荷生成器和结果分析器。

Attack Setup 标签中有一个url 字段,这里必须填上目标的URL。在URL字段下面是HeadersPOST 数据输入文本框。它还有一个设置载荷类型的选项,选项可以是DictionaryRange 或是PayloadDictionary 可以是包含载荷信息的文件,它可以是定制的文件,也可以是从可用字典列表中选择的某个字典。Range 设置可用来指定攻击的范围。Payload 设置可以从Payload Generator 标签中导入一个载荷。下面的截图显示了锁定了www.thesecurityblogger.com 的WebSlayer:

载荷生成器可用于创建定制的攻击载荷。你可以加载字典、数值范围、字符块、排列、信用卡、用户名和其他设置。你可以进行拼接,生成最终的攻击负载,然后上传到攻击标签进行定制攻击。

这里讲一个在Payload Generator 标签中定义数值范围载荷的例子。你可以在下面的截图中看到,这个例子中,我们将数值范围载荷设成了从01000 。范围选好后,点击add generator 按钮,它最终会生成一个临时生成器。将新创建的生成器拖到底部的Payload Creator 中,点击Generate Payload 。我们现在可以在Attack Setup 中导入刚刚创建的攻击载荷了。

在将载荷导入到攻击场景中或是选择好默认字典后,必须指定用WebSlayer将该载荷注入到哪里。你可以在要攻击的URL中用FUZZ 关键字。举个例子,下面的截图在攻击URI字段中显示了目标为http://www.thesecurityblogger.com/FUZZ ,其中FUZZ 就是一个攻击,它利用了WebSlayer中已有的两个字典:

WebSlayer可以攻击HTTP请求中的任何部分,比如首部和身份认证。为了让WebSlayer暴力破解Web服务器的密码,我们必须知道用户名,否则这个攻击很难成功。你需要抓取HTTP请求并尝试做一个登录,这样才能抓到攻击中需要用到的用户代理和内容。

Firefox提供了一个名为Live HTTP Headers 的插件。你可以在尝试登录到目标服务器时用它来收集这些信息。下面的例子演示了在用Live HTTP Headers抓取数据包时,用户joeymuniz用了一个错误的密码。

在Live HTTP Headers中抓取的用于WebSlayer的重要信息是User-AgentLogin Credentials ,如下面的截图所示:

用户代理信息会出现在HTTP首部部分,而登录信息会出现在POST数据部分。URL应该跟登录页匹配。Authentication 部分提供了不同的安全等级和用户名空间。

下面的这个例子演示了利用Live HTTP Headers中抓取的登录信息来尝试访问myspace 。错误的密码换成了FUZZ ,这样WebSlayer就知道哪个部分需要尝试暴力破解。这个例子中,Authentication 标签有不同的安全选项,身份认证方式设成了基本模式,用户名为joeymuniz ,后跟关键字FUZZ

你可以简单地输入网站、用户代理、内容和已知用户名。可以在需要密码的地方输入关键字FUZZ ,然后选择字典来对这些登录空间进行暴力破解。这是对Web服务器进行自动化暴力破解的一个简单途径。

myspace 实际使用的身份认证方式要比例子中介绍的强一些。

带有安全功能如账户锁定的目标可能不会受这个工具的影响。如果你锁定的目标是个受监控的资产,那么高级安全工具如IPS/IDS技术很有可能会发出警报。出于这些原因,在没有进行充分的侦察工作前,我们要谨慎将WebSlayer用于在线目标。

WebSlayer提供了将载荷和结果导出为文本和HTML格式的功能。我们也可以抓取日志文件,将其粘贴到文本文件中。