渗透测试指南-第3部分(OSINT,密码转储和密码喷洒)

渗透测试指南-第3部分(OSINT,密码转储和密码喷洒)

本文简介

识别公司使用的服务
生成电子邮件
像黑客一样索引已泄露的数据
生成密码字典
使用BurpSuite进行密码破解

如果你是一名红队成员/一名渗透测试人员,或者任何深入从事安全行业的人,你至少应该对“密码喷洒”的概念略知一二。这并不是一个新的概念,在此之前可能已经被写过几千次了。然而,就像做任何事情一样,我通常有一种独特的(有些人称之为怪异的)做事方式,因此我很高兴能分享我的方法和我的工作方式。

这个理论
在2000年中期,暴力破解是每个人都在做的事情。他们会在web服务或远程访问服务(如RDP)上找到一个有效的帐户,然后使用单词列表(如rock. txt)攻击它。如今,供应商更聪明了;它们检测失败的登录尝试,记录它们,并在收到太多登录尝试时锁定帐户。

不过,我们也注意到了一些问题:供应商通常允许4-5个错误密码才能锁定账户。这将是超级恼人的,如果,作为一个用户,每当你忘记你的密码,你被锁定后,3次错误的尝试。也许你只是打错了!

另一件事也发生了:人们开始想出更安全的密码。由于是基于网络的,即使供应商没有锁定帐户,一个成功的暴力破解也需要数周才能完成!这远远不是理想的,特别是考虑到当时的组织开始实施像密码复杂性规则,密码轮换政策等。这些都是增加安全性的东西,对吧?

嗯,有几分。如果你使用爆破,它可能会让你的生活更加困难(这就是为什么我们有hashcat规则),但如果你使用喷雾,你会非常感激这些规则。

密码喷洒是什么?

好问题。“密码喷洒”指的是在多个账户上尝试几个常用密码。使用喷洒,我们寻找的是安全问题严重的账户,而不是单个账户的密码。

密码喷洒需要什么?

了解目标公司的服务(电子邮件是个不错的选择)
目标服务中有效的电子邮件地址列表(越大越好)
了解密码复杂性规则(我们可以猜到这些)
熟悉常用密码
可选:用户帐户被盗用的密码(这对增加你的机会非常重要)

理论到实践

被动服务侦察

找出公司使用的服务非常容易,您可以被动地完成所有这些工作。

为此,我想与我的小朋友DNSDumpster进行交流。输入您的目标域名并检查MX记录。

还要查看TXT记录:

如果您与使用Office 365接收电子邮件的公司打交道,则会看到诸如microsoft-com.mail.protection.outlook.comTXT记录之类的信息,以允许通过Microsoft发送电子邮件。使用Gmail的公司也是如此。(如果仔细观察,通常很容易确定。)

密码喷射不仅限于电子邮件服务;检查子域中的内容,例如Jira或其他任何平台。

确定要喷涂的目标后,让我们继续。

电子邮件生成

如果您阅读过我以前的OSINT文章,您将对我们如何做到这一点有所了解。多年来,我已经完善了自己的方法,并将其放入了一个非常不错的无头工具中,我将其称为[EmailGen](https://github.com/navisecdelta/EmailGen)(原始,对吧?)。

该工具很简单;它使用了Bing,在不弄乱API密钥的情况下,比Bing更容易抓取,而且我们也不会牺牲太多准确性,这很好。

在运行此工具之前,我想做的第一件事是Google linkedin.com your target company查看返回的内容。您正在寻找他们的LinkedIn页面的格式。某些LinkedIn页面将仅是“公司”,而某些页面将是“ Company,Inc”,等等。

在这种情况下,我们可以看到,对于Microsoft,在其LinkedIn上使用的名称就是“ Microsoft”。

现在,您需要确定公司用于构造电子邮件地址的格式。我们可以手动执行此操作,也可以与我们可信赖的朋友联系:https : //hunter.io/

搜索返回后,猎人通常会返回一种我们可以输入到EmailGen中的格式,例如: {first}.{last}@{domain}

对于Microsoft,我们将运行以下命令:

./EmailGen.rb -c "Microsoft" -d "microsoft.com" -f "{first}.{last}@{domain}" -o microsoft-emails.txt
快速提示,EmailGen还可以用于生成姓名和电子邮件的CSV。只需提供格式为{first},{last},{domain}.

现在,您已经拥有了这些电子邮件地址,可以开始下一阶段了。

索引黑客入侵

在上一篇文章中,我谈到了使用WeLeaks API循环浏览电子邮件和获取域名。从那时起,由于滥用,WeLeaks API已被弃用。

对于没有经验的人,WeLeaks是一项服务,可收集违规并为其建立索引。诸如Dropbox,AdultFriendFinder,MySpace,LinkedIn等服务已全部被黑客入侵,并且用户信息已被转储。WeLeaks会获取此信息并使其可搜索。

真正的罪犯通常会执行一种称为“密码填充”的技术,获取违规数据并尝试使用违规密码的用户帐户,以希望他们重新使用了密码。实际上,2014年,当我的iMac帐户由于密码填充活动而遭到破坏后,我的MacBook Pro被远程锁定时,我个人受到了这一影响。

为了响应WeLeaks关闭其API,我想出了一个名为CredCatch的工具。它使用Selenium抓取WeLeaks付费帐户,以获取纯文本凭据。

与所有美好的事物一样,它停止了工作。

值得庆幸的是,我有爱尔兰传统,所以我很固执。我开始与犯罪分子@DevinStokes的伙伴在一个项目中进行索引,以索引ELK堆栈(即Elasticsearch,Logstash和Kibana)中的BreachCompilation等密码违规行为。然后,我们编写了一个可以查询ES的命令行工具。我们或多或少建立了自己的WeLeakInfo。我希望可以分享有关该项目的更多信息,但是恐怕在处理违规数据的合法性方面可能会受到限制。

我将来可能会或可能不会分享更多信息或资源来构建自己的WikiLeaks。如果这样做,它将在我的Twitter上https://twitter.com/pry0cc/上,所以请关注我进行更新。

可以通过WeLeakInfo或BreachCompilation手动获取违规数据。获得这些数据后,将电子邮件和密码放入如下文件中:

alice@example.org:breachedPass123
alice@example.org:breachedPass33
bob@example.org:mysupersecretleakedpass

我们稍后将使用此文件。

生成密码喷雾词表

此方法是许多安全专家非正式提及的方法,但很少写入代码中。

我写了另一个我称为[X-Prey](https://github.com/navisecdelta/X-Prey)的工具。X-Prey会使用您先前创建(或由Titan生成)的违反密码列表以及电子邮件列表(由EmailGen生成),并制作一个专门用于喷雾的专用单词列表。生成此合并列表后,您将能够在喷涂广告系列中利用潜在的密码重用。

密码喷涂

现在,这是有趣的部分。到目前为止,我们已经:

  • 生成电子邮件列表
  • 发现泄露的密码
  • 生成用于喷涂的唯一密码表

如果您没有遇到任何障碍,则您的单词表应类似于以下内容:

wordlist.txt

(Truncated)
alice@example.org:NaviSec2019!
alice@example.org:Pa$$w0rd!
sean@example.org:12345
sean@example.org:Spring2019
sean@example.org:Spring2019!
sean@example.org:Pa$$w0rd!
dcuthbert@example.org:DontCallMeDanny
dcuthbert@example.org:NaviSec2019
dcuthbert@example.org:Pa$$w0rd!

让我们将此单词表分为两部分,以便将其输入BurpSuite:

cat wordlist.txt | sed 's/:/ /g' | awk '{ print $1 }' >> wordlist_users.txt && cat demo_wordlist.txt | sed 's/:/ /g' | awk '{ print $2 }' >> wordlist_passes.txt

在这一点上,您使用的喷涂方法在很大程度上取决于您的意图。如果您要喷涂Lync,OWA,Office365或类似的东西,我强烈建议您查看[PasswordSprayingToolkit](https://github.com/byt3bl33d3r/SprayingToolkit/),然后使用Atomizer。如果您要喷涂其他任何东西,BurpSuite可以在这项工作中提供极大的帮助。

快速提示:如果您拥有Burp Pro,这将变得更加容易,因为社区版本在Intruder功能方面受到限制。

BurpSuite入侵者

打开Burpsuite,并确保正确配置了代理,并且您的浏览器安装了根SSL证书。

准备就绪后,访问您的目标站点并尝试登录。我通常会使用admin:password,因此稍后进行选择时就很清楚了。

右键单击代理请求,然后选择“发送到入侵者”:

进入Intruder后,在顶部的导航菜单上选择“位置”,将“攻击类型”设置为“干草叉”,并确保正确设置了位置。

现在相应地加载您的用户名和密码列表,然后点击开始

瞧!我们应该从喷雾中得到所有结果。由于这是我纯粹用于演示目的的服务器,因此在此特定示例中没有身份验证。

实际的身份验证系统会因系统的不同而有所不同:某些系统会有所帮助,并且403在身份验证失败时会被禁止,在200成功进行身份验证时会被拒绝。其他系统可能会200为每个请求返回成功,即使失败的身份验证尝试也是如此。如果发现这种情况,则应开始按长度过滤响应,然后按响应内容过滤。在Burp中,所有这些都非常简单。

额外防御

阅读这篇文章的评论后,我立即意识到我错过了一个机会来谈论如何抵御这种情况。

如果您是一支蓝色团队,并且试图防止密码喷雾,那么实施密码黑名单以阻止陈词滥调的“ Summer2018”密码可能是一个不错的第一步。

实施2FA[双因子认证]毋庸置疑,尽管要知道,当攻击者采用社会工程学方法从人们那里提取代码时,它并不是完全可靠的。不过,这是您正在建立的防御盔甲的另一个链接。

就我个人而言,我仍在评估开发有效的代理的好方法(那不是您的胳膊和腿),但是如果攻击者在没有代理的情况下进行喷洒,则关联来自相同IP的失败登录尝试可能也是一种很好的防御方法你自己

结论

总而言之,密码喷涂是需要大量准备的方法。使用过去的证书是我以前从未见过的任何其他技术,因此,希望您喜欢我每天如何处理此问题。

from