利用个人账户密码重用获取域凭证:无需接入目标网络即可入侵(第一部分)
引言
在本系列文章中,我将详细介绍多种无需接入目标组织网络即可获取域用户凭证的方法。第一种方法涉及利用密码重用问题,即用户可能在其他外部服务上重复使用其公司域账户的相同密码。第二种方法更为有趣,涉及发现目标组织的用户名架构,然后针对目标组织托管的外部服务(例如Outlook Web Access门户)进行密码喷洒攻击。其他方法将在后续文章中介绍。
在第一部分中,我将详细说明攻击者如何通过利用员工在个人账户上重用密码来获取公司域账户凭证。
本文不涉及便利贴
个人账户上的凭证重用
个人在多个网络服务上重复使用相同密码是一个非常大的问题。许多人出于便于记住多个登录信息的考虑,会在许多不同的服务上使用相同的密码。这样做的问题是,如果某个网站被入侵,并且用户在其个人账户和公司账户上重复使用了相同的密码,那么潜在的攻击者在获取个人凭证后,现在也可以访问公司账户凭证。
通常,当我们开始分析目标组织的凭证泄露时,我们往往只关注该组织拥有的域名。通过仅查看目标组织的域名,只能获取目标用户使用其公司电子邮件地址注册外部服务的凭证。一种更有趣的寻找用户凭证的方法涉及尝试定位公司员工的个人账户,这些账户曾是第三方泄露事件的一部分。由于用户可注册电子邮件的服务众多(如Yahoo、Gmail等),这可能是一项非常困难的任务。当目标组织本身提供个人账户服务时,定位用户个人账户的难度可以降低。
例如,考虑像Google这样拥有gmail.com的组织。可以合理推测Google的员工可能拥有gmail.com账户。在最近的一次任务中,我有机会测试一家也提供类似服务的公司,他们为客户提供电子邮件地址。Pwnedlist.com是少数收集来自各种数据泄露公开转储信息的网站之一。他们提供一项服务,允许用户提交电子邮件地址并确定该地址是否与数据泄露相关。Pwnedlist也接受域名。当向Pwnedlist提交域名时,该网站会告诉你目标域名中有多少账户曾是各种泄露事件的一部分。当我通过Pwnedlist.com搜索运行目标组织的域名时,我发现目标组织客户使用的域名有超过50,000个账户曾是各种数据泄露的一部分,最近的一次发生在我开始评估前几天。
我与目标组织讨论了他们的员工可能拥有作为该组织客户设置的个人账户的可能性。他们同意这是一种可能性。该组织正确地对其哪些客户曾是数据泄露的一部分感兴趣,并要求我提供这些数据。我随后从Pwnedlist收集了这些信息。
这让我开始思考分析和关联员工的个人账户凭证(曾是先前泄露事件的一部分)是否与其实际公司账户凭证一致的可能性。我是否能够将用户的个人账户凭证交叉引用回其公司账户,并可能使用他们在个人账户上使用的相同凭证登录?(只是为了澄清,我并非试图登录或利用个人的个人账户。目标是查看他们在第三方网站上使用的密码(曾是泄露的一部分)是否在其公司账户登录中被重复使用。)
在获取50,000个个人电子邮件地址及其潜在凭证后,必须找到一种方法将这些电子邮件地址与实际人员关联起来,然后可能将它们与公司电子邮件地址关联起来。允许用户创建自己电子邮件地址的网站的问题是,地址名称由用户自行决定。因此,在我的情况下,我最终从Pwnedlist获取了类似“Alpacas4Eva@targetorg.net”的账户凭证。
为了确定Alpacas4Eva@targetorg.net是否属于目标组织的实际员工,需要能够获取该电子邮件地址并找出它确切属于谁。为此,我使用了Pipl.com搜索引擎。Pipl.com接受电子邮件地址并提供大量他们从网络上许多不同社交媒体和新闻网站收集的信息。例如,你可以提交一个电子邮件地址,他们可能能够提供从LinkedIn、Facebook等网站收集的详细信息。
这些信息通常包括一个人的全名,如果他们在互联网上的某个地方发布过。此外,“职业”字段可能详细说明某人在互联网上(可能在LinkedIn上)说过他们在哪里工作。
Burp现在告诉我们响应是否包含公司名称。这有助于我们缩小员工的可能匹配范围。
管理者从不重用他们的密码,对吧?
在我提交给Pipl的50,000个电子邮件地址中,我最终得到了252个命中,这些似乎是员工的个人账户。在找到这252个潜在员工个人账户后,任务变为将它们转换为组织的电子邮件标准。如果Pipl能够找到我提交的个人电子邮件账户关联的个人的全名,那么将他们的名字转换为公司电子邮件地址(例如firstname.lastname@targetorganization.net)应该不会太困难。
对于这个特定的目标组织,我能够在侦察期间找到其他有效的电子邮件地址,因此发现架构非常容易。我随后能够将似乎是员工个人账户的内容转换为公司电子邮件账户地址。我还从Pwnedlist获得了这些账户的凭证。下一步是简单地尝试使用这些曾是第三方泄露一部分的凭证登录外部门户(如Outlook Web Access)。如果目标组织的员工重复使用了他们用于个人账户的相同密码,那么我们现在就可以访问有效的域账户。
……我们进去了……进入了John Doe先生的电子邮件。
回顾一下,这种收集用户凭证的方法的步骤如下:
- 通过公共数据泄露收集与目标组织相关的个人账户凭证。像Pwnedlist这样的网站提供收集这些信息的服务。
- 将这些个人电子邮件地址提交给Pipl,并grep结果中的公司名称。这有助于定位在互联网上说过他们在目标公司工作的人,并且Pipl能够将个人账户与他们关联起来。
- 在制作潜在员工个人账户列表后,使用从Pipl收集的有关他们的信息来制作潜在的公司电子邮件账户。
- 如果发生凭证重用,你现在可能拥有公司账户的电子邮件地址和密码。
建议
向你的用户介绍密码管理服务。最好的防御方法是让你的用户停止在所有地方使用相同的密码。
在这两部分文章的第二部分中,我将详细说明攻击者如何发现目标组织的用户名架构,并针对外部服务执行密码喷洒攻击。你可以在这里阅读。