One Drive 用户名无限无声爆破

渗透技巧 1年前 (2023) admin
312 0 0

HVV将至,正好说下通过 OneDrive 进行用户枚举的主题。简而言之,OneDrive 可能是进行用户枚举的最优解之一,因为:

  • 不需要尝试登录

  • 完全静音(公司端看不到请求)

  • 没有速率限制


如果hvv有发现目标使用了 OneDrive ,那么这是一个完美的枚举方法。

ONEDRIVE 枚举概述

OneDrive 是 SharePoint 的一部分。它专为个人文件存储而设计,并直接链接到 Azure/M365 帐户。每当用户登录各种 Microsoft 服务(例如 Excel 或 Word)时,OneDrive 就会被激活,并创建一个包含用户电子邮件地址的个人 URL。更准确地说,这个个人 URL 实际上是帐户的 UPN,即用户主体名称

One Drive 用户名无限无声爆破

由于此个人 URL 直接与用户的帐户相关联,因此只需查找特定格式的 Web 目录即可枚举用户,类似于使用 DirBuster/dirb。

下图显示了各种服务以及每个服务是否会激活 OneDrive。

One Drive 用户名无限无声爆破

实际上,由 有大量触发器会创建 OneDrive URL,所以任何实际使用过 Azure/M365 帐户的人都会有一个 OneDrive URL。

激活 OneDrive 后,将创建与该用户关联的唯一 URL。URL 的格式如下:

https://<tenant>-my.sharepoint.com/personal/<UserPrincipalName>/_layouts/15/onedrive.aspx

如下图,可以在其中看到租户名称是“acmecomputercompany”,用户主体名称是“ [email protected] ”的变形,因为当 UPN 转换为 OneDrive URL 时,句点和符号将被删除并替换为下划线 “_” 字符。

One Drive 用户名无限无声爆破

因此,通过这种方式,发出 Web 请求并识别用户名是否有效(或者更确切地说,是否存在至少登录过其帐户一次的用户)是很简单的。

而且此枚举无法检测到,因为它是对 Microsoft 服务器的简单 HTTP HEAD 请求。从未尝试过任何身份验证。

注意:由于 OneDrive 枚举只能枚举具有许可证的帐户,因此某些组织的结果可能会低于标准。如果他们将 Microsoft 365 许可证限制给特定部门或不提供这些许可证,枚举覆盖范围将受到影响。例如百货商店销售人员和收银员或员工不使用计算机的非技术工作。但是,这也意味着您正在使用 OneDrive Enum 识别实时的实际用户 – 可能有权访问 Azure 资源的用户。

识别 AZURE 租户名称

为了成功进行 OneDrive 枚举,您需要知道 Azure 租户名称。Azure 租户名称是与 Azure 租户关联的简称。

很多时候,组织的租户名称会与域名匹配。例如,“microsoft.com”有一个关联租户“microsoft”。但事实往往并非如此。有时它是一个替代名称,或者是组织的法定全名的缩写。

长期以来,我一直在寻找一种直接识别Azure租户名称的方法。如果不知道租户名称或无法查找它,您很容易陷入 OneDrive 枚举的死胡同。

我搜索后发现,@DrAzureAD已经发现了这样一种方法,并编写了工具 AADInternals。随着 TREVORspray 工具的发布,更优质的方式出现了(@blacklanternsecurity)。

https://github.com/Gerenios/AADInternals

https://github.com/blacklanternsecurity/TREVORspray

One Drive 用户名无限无声爆破

编写ONEDRIVE_ENUM 工具 

我发布了 ondrive_enum.py 脚本的更新版本,github地址如下:

https://github.com/nyxgeek/onedrive_user_enum

功能:

  • 本地数据库 – 记录有效帐户、之前的枚举运行记录

  • 自动查找 – 自动租户查找,感谢 Dr. Nestori (@DrAzureAD) 和 TREVORspray (@thetechr0mancer)

  • 读取目录——读入目录下的所有文件;对于多个相似的文件很有用(例如,“john.smith”或“jsmith”格式的用户列表)

  • 附加 – 轻松将数字或单词附加到用户名(“jsmith1”、“jsmith2”等)

  • Skip-Tried – 重复数据删除:检查运行日志并确保您仅针对特定域/租户组合运行新用户名

  • Kill-After – 如果没有用户名被识别为“x”次尝试,则取消用户列表


One Drive 用户名无限无声爆破

注意,要创建 OneDrive URL,我们需要知道租户名称和域名。如果仅向该工具提供了一个域,那么默认尝试使用 AADInternals/TREVORspray 中的查找方法自动查找关联的租户。

以下是针对 Microsoft.com 的测试例子:

One Drive 用户名无限无声爆破

所有枚举会话都记录在本地 SQLite 数据库的 onedrive_log 表中。这使 OneDrive_Enum 能够识别已枚举过哪些用户列表(和用户名)。它对于统计也很有用,因为它将记录每个单词列表“找到”的用户名数量。这可以让您随着时间的推移识别出表现最好的单词列表。
除了使用 SQLite 数据库记录会话之外,还存储所有有效的用户名以及与其关联的租户和域。
有效的用户名也会在每个会话结束时写入本地文件,以便于 grep 。
技巧和窍门
大多数组只会定义一 (1) 个租户,并且该工具在识别它时不会出现任何问题。但是,在多租户设置的情况下,您必须做出选择(选择一个或所有租户/域组合)。
在 OneDrive 枚举中,租户名称和域的精确组合非常重要。如果“AcmeComputerCompany.com”有 3 个租户:“acmecomputercompany”、“acmeEurope”和“acmeAPC”,则用户可以存在于其中任何一个租户中。
可能的 OneDrive URL 组合包括:
acmecomputercompany – [email protected]
acmeEurope – [email protected]
acmeAPC – [email protected]
如果组还使用特定于国家/地区的电子邮件域,情况可能会变得更加复杂。虽然这种用户划分可能会增加枚举时间投入,但它也可以针对特定地理区域的用户。如果遇到这种情况,我建议针对域和租户的所有组合运行小型单词列表。
如果你在任何地方都没有收到任何点击,请尝试使用“tenant.onmicrosoft.com”地址作为域。在用户创建过程中,管理员可以选择租户“onmicrosoft 域”,例如“acmecomputercompany.onmicrosoft.com”,而不是“acmecomputercompany.com”等自定义域。

One Drive 用户名无限无声爆破

防御方式

据我所知,暂时无解,甚至没有办法检测到这种攻击。Microsoft 不认为用户枚举是漏洞。唯一的选择是禁用 OneDrive 个人网站。

One Drive 用户名无限无声爆破


原文始发于微信公众号(军机故阁):One Drive 用户名无限无声爆破

版权声明:admin 发表于 2023年6月27日 下午1:27。
转载请注明:One Drive 用户名无限无声爆破 | CTF导航

相关文章

暂无评论

您必须登录才能参与评论!
立即登录
暂无评论...