G Suite用户枚举攻击:绕过验证码与自动化探测技术

本文详细分析了利用G Suite登录机制进行用户枚举的技术,包括如何通过响应差异识别有效邮箱、绕过Google验证码防护,以及结合社会工程学数据生成攻击字典的自动化方法。

G Suite是您环境中的软肋

您是否希望在开始渗透测试时就知道目标环境中所有用户的用户名?Gmail、G Suite、Outlook Web Access、Exchange Web Services……电子邮件。这是黑客获得的无时效限制的神圣礼物。在本博客中,我们探索了利用MailSniper工具包新功能的攻击工作流程。

如果您浏览mail.google.com并尝试以matt@blackhillsinfosec.com登录会发生什么? 事实证明,Google会自动尝试将您验证到与blackhillsinfosec.com域关联的G Suite实例。由于BHIS有一个……这可行。如果您尝试以blahblah@blackhillsinfosec.com登录呢?

不行,有趣。从上面的图像中可以看到,Google对存在的电子邮件帐户与不存在的电子邮件帐户的响应不同。它甚至在不尝试身份验证的情况下执行此检查。在我们作为渗透测试人员的角色中,此信息响应异常有用。这意味着我们可以发现有效的用户电子邮件,除了域名之外一无所知。

然而,有一个讨厌的问题。验证码。

几次不成功的尝试后,Google会向我们显示一个验证码以验证我们的人性。幸运的是,人性可以被脚本化。

与信息安全中的所有事情一样,克服障碍只是深入挖掘的问题。在这种情况下,我们转向网络线。

如果错误响应的差异使我们能够确定帐户是否存在,那么当出现验证码时,响应的差异会表明什么?没错,验证码/无验证码。我们可以使用Burp Suite拦截代理来查找这些差异。

在Burp Suite中,我们可以看到对验证码的get请求,但对我们最有用的是对我们POST请求的返回响应。每个电子邮件“查找”请求都会发出一个POST请求。如您所见,在连续第六个“错误”POST请求后请求了验证码。 将此响应与不正确但无验证码的响应进行比较,我们可以关注“gf.alr”JSON名称/值对。此对象的值会更改!对于每个验证码,ALR值为5,而每个错误的电子邮件请求返回7。绕过验证码可能就像检测到ALR为5并重试直到再次收到ALR为7一样简单。

当我们检查跨多种请求/响应类型的许多响应时,我们可以看到这种差异保持恒定但可预测:

1 -> 正确的电子邮件地址 7 -> 错误的电子邮件地址 5 -> 出现验证码

甚至还有其他因素(如2FA)可以使用此机制进行枚举。

太棒了!也就是说,等待验证码消失很无聊。我们还能尝试什么? 当我们检测到验证码时,如果我们从不同的IP地址发送下一个请求会发生什么? 没有验证码。 使用_socat_,我们可以设置socks代理主机来反弹和轮换我们的猜测。

1
socat TCP-LISTEN:9090,fork SOCKS4A:127.0.0.1:accounts.google.com:443,socksport=9999

如果我们将所有这些功能结合起来并创建一个潜在的电子邮件地址列表,我们就可以枚举用户。让我们看一个针对BHIS执行的示例!

如果我们事先不知道电子邮件地址怎么办?通过一些巧妙的脚本和US Census数据,我们可以克服这个限制。 电子邮件通常采用以下几种总体格式之一:

通过获取人口普查数据中前1000个男孩和女孩的名字,并将其与美国最常见的姓氏结合,我们可以生成电子邮件地址排列。接下来,让我们检查一下如何使用PowerShell完成此操作。 首先下载名字和姓氏列表:

1
2
PS C:\> git clone https://github.com/0sm0s1z/email-generator.git
PS C:\> cd email-generator

现在使用PowerShell根据所需格式制作自定义电子邮件列表:

1
Get-Content .\firstnames.txt | % { $fname = $_; Get-Content .\lastnames.txt | % {$fname + '.' + $_ + '@blackhillsinfosec.com'}}

电子邮件是渗透测试人员工具包的关键组成部分。只要基于密码的身份验证仍然是系统或网络安全的守门人,这种情况就会继续下去。这里的根本问题不一定是Gsuite或Outlook Online,尽管它们肯定可以做更多的事情。密码的首要地位解开了网络对手的束缚。作为渗透测试人员,我们需要展示这些问题,为我们所有人创造一个更安全的未来。

comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计