红队视角:通过Azure泄露Active Directory信息的技术分析
随着Microsoft技术的广泛采用,许多组织将服务迁移到云端,但这也带来了新的安全盲点。本文从红队角度,探讨如何利用Azure服务泄露Active Directory(AD)信息,无需内部网络访问即可获取关键数据。
Microsoft环境概览
组织通常使用本地Active Directory和Exchange,但迁移到Office 365后,用户可以通过网络凭据进行身份验证,享受Webmail门户、SharePoint和SSO等功能。这种混合或全云部署通过Azure AD Connect或其他同步服务实现集成,但配置不当可能导致安全风险。
问题核心
在云环境中,攻击者仅需一个有效凭据,即可通过Azure门户泄露整个AD结构。具体步骤如下:
- 通过Webmail门户(如https://webmail.domain.com/)进行身份验证。
- 将浏览器URL更改为https://azure.microsoft.com/。
- 从活动会话中选择账户。
- 访问Azure Active Directory并导出数据。
这允许攻击者获取用户列表、组信息、设备详情(如操作系统版本)、业务应用程序端点,甚至虚拟资源访问权限。此外,攻击者可以创建“来宾”账户,可能同步到内部网络,进一步扩大攻击面。
红队工具:AZ CLI
通过Web浏览器访问Azure门户虽方便,但数据导出受限。AZ CLI(Azure命令行接口)提供自动化方式与Azure交互,支持Linux环境,使用OAuth进行身份验证,并允许通过JMESPath查询过滤数据。
安装与认证
在Linux上安装AZ CLI:
|
|
认证通过现有凭据创建会话:
|
|
此命令生成OAuth令牌,打开浏览器进行账户选择。
数据导出示例
- 导出所有用户:
1
az ad user list --output=table --query='[].{Created:createdDateTime,UPN:userPrincipalName,Name:displayName,Title:jobTitle,Department:department,Email:mail,UserId:mailNickname,Phone:telephoneNumber,Mobile:mobile,Enabled:accountEnabled}'
- 导出特定组成员:
1
az ad group member list --output=json --query='[].{Created:createdDateTime,UPN:userPrincipalName,Name:displayName,Title:jobTitle,Department:department,Email:mail,UserId:mailNickname,Phone:telephoneNumber,Mobile:mobile,Enabled:accountEnabled}' --group='<group name>'
- 导出应用程序和服务主体:
1
az ad app list --output=table --query='[].{Name:displayName,URL:homepage}'
缓解措施
建议禁用普通用户的Azure门户访问:
- 使用全局管理员账户登录https://portal.azure.com。
- 选择“Azure Active Directory” > “用户设置” > “限制访问Azure AD管理门户”。 替代方案是配置条件访问策略。
未来方向
云环境常被忽视,工具如SharpCloud用于捕获云凭据。作者计划发布红队框架CloudBurst,支持与多云提供商交互,实现数据捕获和渗透。
通过本文技术,红队可以高效识别目标,无需内部网络访问,强调云安全配置的重要性。