密码喷洒Outlook Web Access——如何在不进入目标网络的情况下获取域凭据:第二部分
这是系列文章的第二部分(第一部分见此),我将详细介绍多种在不进入目标组织网络的情况下获取域用户凭据的方法。第一种方法涉及利用密码重用问题,即用户可能在外部服务中重复使用其企业域账户的相同密码。第二种方法是我认为更有趣的收集用户凭据的方式,包括发现目标组织的用户名架构,然后针对目标组织托管的外部服务(例如Outlook Web Access门户)进行密码喷洒用户账户。其他方法将在后续文章中介绍。
在第二部分中,我将详细说明攻击者如何发现目标组织的用户名架构,并针对外部服务执行密码喷洒攻击。
元数据和公开认证服务的危险
在评估中,我们通常会寻找目标组织托管且可公开下载的文档。我们这样做是因为我们发现组织在清理附加到公开项目的元数据方面做得很差。文件的元数据中可以发现一些非常有趣的信息。
例如,如果您用手机拍照并启用了GPS,很多时候GPS位置信息会附加到图片本身。从操作安全的角度来看,如果您拍摄了安全位置的照片并启用了GPS,那么将该图片发布到网上可能会揭示您拍摄照片的实际坐标。
当我们分析组织公开发布的Word文档、Excel文件、PDF、PowerPoint演示文稿等的元数据时,我们经常发现可以实际获取计算机名称、文件夹结构以及文件创建者的用户名。一个用于快速查找和分析目标组织公开文件中元数据的优秀工具叫做FOCA。
您可以从这里下载FOCA:https://www.elevenpaths.com/labstools/foca/index.html
FOCA简单地使用“filetype”参数执行Google和Bing搜索。您可以向Google提供如下搜索,以搜索与“targetorganization.net”域关联的所有PDF文件:“site:targetorganization.net filetype:doc”。如果您向FOCA提供目标域,它将从顶级域开始,随后找到可能存放文件的其他子域。FOCA然后将下载这些文件并分析附加到文件的元数据。
在最近的一次任务中,我对目标组织的域运行了FOCA。当我查看FOCA从公开托管的文件中收集的元数据时,我发现了大量似乎是用户名的内容。实际上,我能够发现它们实际的命名约定。这个命名约定似乎并不随机或难以猜测。我的意思是,我能够非常轻松地制作出它们用户名架构所有可能组合的列表。
例如,想象一个用户名架构,每个用户名以“emp”开头,然后简单地附加员工的三字母首字母(abc)。因此,一个可能的完整用户名是“empabc”。字母“a”到“z”的三字符排列总数是17,576。因此,从“empaaa”到“empzzz”的所有可能用户名组合是17,576。我生成了一个包含每个可能排列的列表。
密码喷洒Outlook Web Access
现在,我有了目标组织所有可能用户名组合的列表,作为外部攻击者,我接下来可以做什么?接下来,外部攻击者必须找到某种执行基于域认证的外部服务。我们经常发现的一种这样的服务是Microsoft的Outlook Web Access(OWA)。组织通过OWA等服务为员工提供远程访问电子邮件的功能。用户登录OWA时发生的认证通常是基于域的,意味着用于认证的凭据会根据域进行有效性检查。
在找到外部OWA门户后,攻击者可以暴力破解密码,但如果存在锁定阈值,账户会很快被锁定。执行密码攻击的一种更优越的方式称为密码喷洒。密码喷洒涉及仅使用一个(非常策略性选择的)密码尝试登录所有域账户。这允许攻击者尝试更多认证尝试而不会锁定用户。例如,如果我尝试用密码“Winter2016”登录每个账户,很可能目标组织的某人使用了该密码,我现在将可以访问他们的账户。
执行外部密码喷洒攻击时需要考虑的一些事项:
- 极其注意锁定阈值!如果您在给定时间内提交太多错误密码,您将锁定账户。不在目标网络上,无法确切知道域账户策略强制执行什么。
- 话虽如此,默认情况下Windows默认域账户策略不强制执行任何类型的锁定。这意味着从技术上讲,您可以在不锁定用户的情况下暴力破解任何用户的密码。我还没有遇到没有某种锁定策略的环境。通常我发现环境将锁定策略设置为在30分钟观察窗口内五次(5)失败登录。
- 只需每两小时使用一个密码进行喷洒。这是一个合理的窗口,可能不会让您陷入锁定账户的情况。
- 与公司的联系人密切沟通,以验证您没有锁定任何人。
我再次使用Burp Suite的Intruder功能,为每个可能用户名提交一个登录尝试,使用一个密码。以这种方式执行密码攻击限制了锁定账户的风险,因为每个账户只执行一次登录尝试。例如,BHIS提交了用户ID“targetorg\empaaa”,密码为“Winter2015”。在此尝试之后,相同的密码将尝试用于“targetorg\empaab”,并一直继续到“targetorg\empzzz”。
为此,我首先设置Burp Suite拦截所有离开浏览器的请求。我尝试使用用户ID“targetorg\test”和密码“Testing123”登录OWA门户。到OWA门户的POST请求如下所示:
然后我将此请求发送到Intruder。对于第一个示例,我们将攻击类型保留为“Sniper”。在Burp Intruder中,我仅指定了一个有效载荷位置。用户名是攻击期间唯一会更改的内容,因此这是我们添加有效载荷位置的地方。密码将保持为“Testing123”或您设置的任何内容(我强烈推荐季节和年份,如“Winter2015”)。
在有效载荷选项卡上,我现在导入了我生成的可能用户名列表。
我注意到的一件事是,Outlook Web Access通过简单地在浏览器中设置cookie并重定向到根“/”页面来响应POST请求。OWA对每个登录尝试都这样做,无论登录是否有效。因此,为了让Burp完成认证过程,我们需要在启动攻击之前再设置一个设置。在Burp Intruder的选项选项卡底部,选择“仅现场”的“跟随重定向”选项。此外,单击复选框以“在重定向中处理cookie”。
现在启动攻击,可以看到Burp Intruder在认证过程中跟随每个重定向。剩下要做的唯一事情是按响应长度排序,因为有效的认证尝试响应长度较短。在下面的屏幕截图中,OWA重定向四次,然后到达指示成功登录的页面。
我最终能够通过这种技术访问大量账户。如下面的屏幕截图所示,生成响应长度约为4371和1630的请求是有效的用户凭据。生成响应长度12944的请求是失败的登录尝试。
在我上面演示的场景中,我使用了Burp的“Sniper”功能。这主要是为了避免账户锁定,并且只更改用户ID字段。与我的目标组织密切沟通,我知道实际的锁定阈值以及观察窗口。为了最大化密码喷洒的效果,我利用了Burp Intruder的“Cluster Bomb”攻击。使用Cluster Bomb攻击,您可以指定两个有效载荷位置。我选择了用户名和密码字段作为我的有效载荷位置。
Cluster Bomb还允许您为每个有效载荷位置指定两个列表。因此,我将用户名位置保持与之前相同,使用我的潜在用户列表。然后我制作了一个大约10个密码的列表,我认为这些密码可以很好地用于密码喷洒。
Cluster Bomb攻击现在将一次使用这些密码之一迭代所有用户名。一个密码的喷洒完成后,它将移动到下一个。例如,喷洒将使用密码Winter15遍历整个用户名列表,然后在该喷洒完成后,它将移动到Winter16。对于我的17575个用户名列表,用一个密码喷洒整个列表所需的时间远远超出了锁定观察窗口,因此我无需担心那里。
在我上面给出的示例中,我当时被分配执行目标组织的外部网络评估和内部透视评估。在周末外部密码喷洒后,在我计划开始内部透视评估之前,我总共获得了130个有效的用户凭据。目标组织没有通过其外部门户检测到任何密码喷洒活动。很可能安全地说,攻击者可以连续数周进行密码喷洒,通过这种技术获得更多账户的访问权限。
在这篇文章中,我专注于针对OWA的密码喷洒。这种相同类型的攻击可以应用于许多其他服务。例如,攻击者可以对Microsoft RDP服务器、SMTP服务器、SSL VPN等执行密码喷洒攻击。一个用于对大多数这些服务执行此操作的优秀工具叫做Patator,可以在这里找到:https://github.com/lanjelot/patator
总结一下,这种收集用户凭据的方法的步骤如下:
- 使用FOCA在目标组织的网站上定位公开可用的文件。
- 分析这些文件的元数据以发现用户名并找出它们的用户名约定。
- 制作它们整个可能用户名空间的列表。
- 使用您生成的用户名列表,针对执行域认证的外部系统(如Outlook Web Access)进行密码喷洒。
- 获利?
建议:
- 分析组织公开托管的所有文档,检查元数据的信息泄漏。
- 实施策略和程序,清理将要公开发布的任何内容的元数据。
- 监视您的OWA和任何其他外部认证门户,查找多次失败登录尝试和密码喷洒活动。
- 创建比默认8字符更强的密码策略(我们通常推荐15或更多)。
- 强制用户使用双因素认证。如果有人确实密码喷洒了用户,如果启用了双因素认证,他们将无法获得太多访问权限。