返回介绍

4.1 从网络外部查找凭证

发布于 2024-10-13 11:41:06 字数 4441 浏览 0 评论 0 收藏 0

作为红队,找到目标突破口可能很复杂,而且需要大量资源。在本书前两版中,我们复制了被攻击者的身份鉴权页面,购买了相似的域名,搭建了钓鱼网站,生成定制的恶意软件等。

有时,我告诉红队……一定要把事情简单化。很多时候我们提出了疯狂复杂的计划,但是最终发挥作用的是最简单的计划。

常用的一种基本技术是密码暴力破解。但是,作为红队,我们必须了解如何巧妙地做到这一点。随着公司的发展,公司引入了更多的技术和工具。对于攻击者来说,这无疑提供了施展能力的舞台。当公司开始连接互联网时,我们开始了解身份验证技术,应用于电子邮件(ieOffice 365 或 OWA)、通信(Lync、XMPP、WebEx)工具、协作工具(JIRA、Slack、Hipchat、Huddle),以及其他外部服务(Jenkins、CMS 站点、支持站点)。这些是我们想要攻击的目标。

我们尝试攻击这些服务器/服务的原因是,我们正在寻找根据被攻击者的轻量目录访问协议(LDAP)/活动目录(AD)基础架构进行身份验证的应用程序。这可以通过某些活动目录集合、单点登录过程或直接管理活动目录。我们需要找到一些常用的凭证,从而可以开展下一步攻击。从侦察阶段开始,发现并识别了大量电子邮件和用户名账户,我们可以通过所谓的密码喷射实施攻击。我们将针对所有不同的应用程序,尝试猜测基本密码,正如我们在现实世界的高级持续威胁(APT)攻击事件中看到的那样。

我们为什么要对不同的外部服务进行身份鉴权?

  • 某些身份验证源不会记录来自外部服务的尝试。
  • 虽然我们通常会看到需要双因素身份验证的电子邮件或 VPN,但是面向外部的聊天系统可能不需要。
  • 密码重用率非常高。
  • 有时外部服务不会在多次错误尝试时锁定 AD 账户。

目前有许多工具可以用于暴力破解,但是这里我们只重点介绍其中的几个。第一个是 Spray 工具,来自 Spiderlabs 实验室。虽然 Spray 使用时有点复杂,但是我非常喜欢这个工具提供的密码“喷射”功能。例如,该工具支持 SMB、OWA 和 Lync(Microsoft Chat)协议。

要使用密码喷射功能,需指定以下内容。

  • spray.sh -owa <targetIP> <usernameList> <passwordList><AttemptsPerLockoutPeriod> <LockoutPeriodInMinutes> <Domain>。

正如您将在下面的示例中看到的那样,我们运行 Spray 工具,攻击 cyberspacekittens 公司的虚假 OWA 邮件服务器(实际上根本存在),当它尝试用户名 peter 和密码 Spring2018 时,身份认证通过了(您可以通过数据长度判断是否成功),如图 4.1 所示。

0401

这是一个使用 Curl 工具快速脚本实现的 OWA 系统暴力破解
图 4.1

我经常遇到的一个问题是尝试使用哪些密码,因为在锁定账户之前,您只能进行有限次数的密码尝试。这个问题没有明确的答案,尝试的内容严重依赖于攻击目标。我们曾经成功尝试非常简单的密码,如“Password123”,但很少有用户使用这样简单的密码。通常我们尝试的凭证密码如下。

  • 季节+年份。
  • 本地运动队+数字。
  • 查看之前的泄露事件,找到目标公司的用户并使用类似的密码。
  • 公司名称+年份/数字/特殊字符(!、$、#和 @)。

使用这些密码,我们可以慢慢地全天候进行扫描尝试,以免触发任何账户锁定。请记住,只需要一个密码就可以进入目标系统!

Spray 工具配置非常简单,并且通过设置可以应用在其他应用程序。您需要做的是捕获密码尝试的 POST 请求(您可以在 Burp Suite 中捕获请求),复制所有请求数据,并将其保存到文件中。对于任何需要暴力破解的字段,您需要提供字符串“sprayuser”和“spraypassword”。

举个例子,在我们的环境中,post-request.txt 文件将如下所示。

POST/owa/auth.owa HTTP/1.1
Host: mail.cyberspacekittens.com
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101
Firefox/52.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Referer:
https://mail.cyberspacekittens.com/owa/auth/logon.aspx?replaceCurrent=1&url=https%3a%2f%2fmail.cyberspacekittens.com%2fowa%2f
Cookie: ClientId=VCSJKT0FKWJDYJZIXQ; PrivateComputer=true; PBack=0
Connection: close
Upgrade-Insecure-Requests: 1
Content-Type: application/x-www-form-urlencodeddestination=https%3A%2F%2Fcyberspacekittens. com%2Fowa%2F&flags=4
&forcedownlevel=0&username=    sprayuser @cyberspacekittens.com&pass
word=     spraypassword &passwordText=&isUtf8=1

如前所述,spray.sh 的另一个优点是它支持 SMB 和 Lync 协议。另一个可以利用 Spraying 结果的工具叫作 Ruler。Ruler 是 Sensepost 编写的工具,允许您通过 MAPI/HTTP 或 RPC/HTTP 与 Exchange 服务器进行交互。虽然这里主要讨论使用 Ruler 进行暴力破解/信息搜集,但是这个工具还支持一些持久性攻击功能,我们将进行简要说明。

我们可以利用的第一个功能类似于 Spray 工具,暴力破解用户名和密码。Ruler 将接收用户名和密码列表,并尝试查找凭证,如图 4.2 所示。它将自动尝试获取 Exchange 配置以及凭证。下面运行 Ruler。

  • ruler --domain cyberspacekittens.com brute --users ./users.txt --passwords ./passwords.txt。

0402

图 4.2

找到单个密码后,我们就可以使用 Ruler 工具,转储 O365 全局地址列表(GAL)中的所有用户,从而查找更多的电子邮件地址及其所属的电子邮件组,如图 4.3 所示。

0403

图 4.3

使用这些电子邮件地址,我们能够通过暴力破解工具,尝试登录所有账户,并找到更多凭证,这是密码的循环使用。但是,Ruler 工具的主要功能是,一旦您拥有凭证,就可以利用 Office/Outlook 中的“功能”,在被攻击者的电子邮件账户上创建规则和表单。如果您决定不使用 Outlook 表单,或者功能已被禁用,那么我们可以随时重新使用电子邮件的攻击方式。这种方式让人感觉有点猥琐,因为您必须以其中一个用户身份登录并阅读所有电子邮件。通过阅读电子邮件,知道了一些好笑的事情之后,我们希望找到和用户彼此信任的人(但不是好朋友)的交流邮件。由于他们已经建立了良好的信任,因此我们希望利用这层关系并向他们发送恶意软件。通常,我们会修改其中一个邮件中的附件(如 Office 文件/可执行文件),然后重新发送给对方,但附件内容中包括我们定制的恶意软件。使用来自内部地址的可信连接和电子邮件将扩大攻击范围和成功率。

本书反复提及的一点是,整个活动旨在测试蓝队的检测工具/流程。我们开展某项行动,了解蓝队是否能够发出警报或者取证并检测出发生的攻击事件。对于这部分行动,我喜欢验证目标公司是否能够发现有人正在获取用户的电子邮件。因此,我们所做的是使用 Python 脚本转储所有受感染的电子邮件。在许多情况下,这可能是千兆字节的数据!

高级实验

一个很好的练习是针对不同的身份验证类型服务、测试所有密码。尝试并构建一个密码喷射工具,用于对 XMPP 服务、常见第三方 SaaS 工具和其他常见协议进行身份验证测试。更好的方法是搭建多个虚拟主机,这些虚拟主机都由一个主服务器控制。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文