4.1 从网络外部查找凭证
作为红队,找到目标突破口可能很复杂,而且需要大量资源。在本书前两版中,我们复制了被攻击者的身份鉴权页面,购买了相似的域名,搭建了钓鱼网站,生成定制的恶意软件等。
有时,我告诉红队……一定要把事情简单化。很多时候我们提出了疯狂复杂的计划,但是最终发挥作用的是最简单的计划。
常用的一种基本技术是密码暴力破解。但是,作为红队,我们必须了解如何巧妙地做到这一点。随着公司的发展,公司引入了更多的技术和工具。对于攻击者来说,这无疑提供了施展能力的舞台。当公司开始连接互联网时,我们开始了解身份验证技术,应用于电子邮件(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 所示。
这是一个使用 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。
图 4.2
找到单个密码后,我们就可以使用 Ruler 工具,转储 O365 全局地址列表(GAL)中的所有用户,从而查找更多的电子邮件地址及其所属的电子邮件组,如图 4.3 所示。
图 4.3
使用这些电子邮件地址,我们能够通过暴力破解工具,尝试登录所有账户,并找到更多凭证,这是密码的循环使用。但是,Ruler 工具的主要功能是,一旦您拥有凭证,就可以利用 Office/Outlook 中的“功能”,在被攻击者的电子邮件账户上创建规则和表单。如果您决定不使用 Outlook 表单,或者功能已被禁用,那么我们可以随时重新使用电子邮件的攻击方式。这种方式让人感觉有点猥琐,因为您必须以其中一个用户身份登录并阅读所有电子邮件。通过阅读电子邮件,知道了一些好笑的事情之后,我们希望找到和用户彼此信任的人(但不是好朋友)的交流邮件。由于他们已经建立了良好的信任,因此我们希望利用这层关系并向他们发送恶意软件。通常,我们会修改其中一个邮件中的附件(如 Office 文件/可执行文件),然后重新发送给对方,但附件内容中包括我们定制的恶意软件。使用来自内部地址的可信连接和电子邮件将扩大攻击范围和成功率。
本书反复提及的一点是,整个活动旨在测试蓝队的检测工具/流程。我们开展某项行动,了解蓝队是否能够发出警报或者取证并检测出发生的攻击事件。对于这部分行动,我喜欢验证目标公司是否能够发现有人正在获取用户的电子邮件。因此,我们所做的是使用 Python 脚本转储所有受感染的电子邮件。在许多情况下,这可能是千兆字节的数据!
高级实验
一个很好的练习是针对不同的身份验证类型服务、测试所有密码。尝试并构建一个密码喷射工具,用于对 XMPP 服务、常见第三方 SaaS 工具和其他常见协议进行身份验证测试。更好的方法是搭建多个虚拟主机,这些虚拟主机都由一个主服务器控制。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论