安全路透社
当前位置:安全路透社 > 网络转载 > 正文

如何利用暴力破解攻击打进“敌人”内部

1.png

写在前面的话

在很多现实的攻击案例中,大多数攻击者都是通过暴力破解的方式来入侵目标系统的,此时攻击者主要利用的是弱密码以及密码管理方面的安全问题。Web应用和Web服务特别容易受到密码暴力破解攻击,因为它们相对来说比较容易实现远程访问,而且数量和种类都非常丰富。在这篇文章中,我们将站在攻击者的角度跟大家介绍几种不同类型的针对Web应用的暴力破解攻击。

注:我们将使用到网上现成的开源Web安全工具,例如AppBandit Attack ProxyFuzzer from the OnlineSuite来演示攻击路径。

基础认证

在互联网发展的早期,基础认证(例如摘要认证NTLM等)是普遍采用的认证标准。毫无疑问,这种方法的安全性是不足以满足我们需求的,但是很多开发人员仍在使用这种认证方案来对路由器管理接口和Web服务等关键节点进行保护。之所以这种认证方法能够得到广泛使用,主要是因为它实现起来非常简单(基于特殊构造的Header,其中包含的用户名和密码均以base64格式编码)。

接下来,我们要开发一个针对基础认证的暴力破解攻击。打开AppBandit的Fuzzer或Fuzzer from the online suite,并配置一些相关参数。首先,我们需要设置授权Header,然后添加基础认证选项:

2.png

我们将从已知账号中选取用户名,然后从某些著名数据库中选择常用字典:

3.png

AppBanditFuzzer没有自带字典文件,但是它们都可以使用外部字典。我们可以直接把字典文件拖进工具窗口,然后你就可以使用各种类型的常用字典列表了:

4.png

确保你将并行请求的最大数量设置为60以上,并降低timeout到5秒左右,这样可以提升攻击的效率。接下来,我们只需要观察控制台中的响应码就可以了解密码的破解情况了。

5.png

基于PIN码的认证

很多应用程序,尤其是移动端App都会使用基于PIN码的认证,即使用4-6位数字码进行认证。基于电子邮件或SMS短信发送认证令牌来实现2FA的方法也属于这类攻击范畴。毫无疑问,PIN码安全性的熵其实非常低,无论你准备按数字顺序破解还是随机破解,暴力破解的实施难度都不大。

接下来,我们将对一个虚拟的JSON服务发起攻击。首先,我们要配置有效的服务请求。然后再请求body中,我们还需要对PIN码生成器进行正确编码。因此,我们需要JSON编码器来引用这些值。除此之外,我们还需要将PIN码长度填充到正确长度。

6.png

用于实现数据填充的pad对象包含一个简单的循环计数器(0-9999),因为这里有效的PIN码是4位数字,所以我们需要在数字前填充额外的‘0’来制作4位数字PIN码,我们还可以利用同样的技术来制作6位或8位数字PIN码。

7.png

大家可以根据自己的需要来配置请求数量并降低timeout。跟针对基础认证的暴力破解攻击不同,这种类型的攻击需要根据目标应用程序的特性来设计。

基于表单的认证

基于表单的认证机制是目前Web最常见的身份验证方案。实际上,几乎任何一个PHP应用都实现了这种认证,但大多数的安全性都不高。为了发动针对表单认证的暴力破解攻击,我们这里需要设置目标应用程序所需要的参数。我们可以使用AppBandit Proxy或类似HTTPView这样的工具来捕捉信息。

这里我们可以稍微转变一下思路,比如说,我们不需要用很多密码去测试一个账号,我们可以用一小部分的常用密码来测试大量的账号。接下来,我们需要设置一个用户列表生成器。首先,我们要定义一些变量,并提升攻击的可配置性。

8.png

我们现在使用了一些字典(大多数来自seclists),我们可以动态生成电子邮件地址。实际上,我们还可以同时对多个域名实施攻击。

现在,我们要添加一百个常用密码(使用另一个seclists字典),结果如下:

9.png

在真实的攻击场景中,你可能还需要观察控制台中的响应请求,因为在很多情况下我们可以通过分析有效cookie来了解攻击是否成功。

总结

目前还没有任何一个安全系统可以完全抵御这种类型的攻击,因为攻击者可以通过多种方式来实现密码爆破攻击。坦白的说,只要我们还在使用密码,我们就是不安全的。虽然双因素身份认证机制是目前比较安全的一种方案,但是它同上是作为一种可选项出现的,而且在某些情况下2FA同样能够被绕过。

* 参考来源:secapps,FB小编Alpha_h4ck编译

未经允许不得转载:安全路透社 » 如何利用暴力破解攻击打进“敌人”内部

赞 (0)
分享到:更多 ()

评论 0

评论前必须登录!

登陆 注册