Red Teaming Microsoft: Part 1 - 通过Azure导致Active Directory泄漏
字数 1466 2025-08-27 12:33:31
Azure Active Directory 安全渗透测试指南
前言
本指南详细介绍了通过Azure平台可能导致Active Directory信息泄露的各种技术和方法。这些技术对于红队评估微软云环境的安全性至关重要,同时也为蓝队提供了防御这些攻击的参考。
微软云环境概述
微软提供了复杂的混合云环境,包括:
- 本地Active Directory (AD)
- Azure Active Directory (Azure AD)
- Exchange Online/本地Exchange
- Office 365套件
- 其他云服务(SharePoint, OneDrive等)
这些服务的集成通过Azure AD Connect同步服务实现,可能产生安全盲点。
攻击路径与技术
1. 通过Web会话访问Azure AD
步骤:
- 对Webmail门户进行身份验证(如https://webmail.domain.com/)
- 将浏览器URL更改为:https://azure.microsoft.com/
- 从活动会话中选择账户
- 选择"Azure Active Directory"
获取的信息:
- 所有用户和组列表
- 用户所属的权限组(VPN访问、域管理、数据库访问等)
- 用户设备信息(操作系统、版本)
- 业务应用程序及其端点
- 服务主体名称(SPN)
- 其他域名
- 虚拟资源(VM、网络、数据库)
2. 创建后门访客账户
步骤:
- 登录Azure门户
- 单击"Azure Active Directory"
- 选择"用户"
- 单击"新访客用户"并邀请自己
风险:如果Azure AD Connect配置为双向同步,访客账户可能获得内部网络认证权限,包括MFA设备和VPN访问。
自动化工具与技术
1. Azure CLI (AZ CLI)
安装:
AZ_REPO=$(lsb_release -cs)
echo "deb [arch=amd64] https://packages.microsoft.com/repos/azure-cli/ $AZ_REPO main" | sudo tee /etc/apt/sources.list.d/azure-cli.list
curl -L https://packages.microsoft.com/keys/microsoft.asc | sudo apt-key add -
sudo apt-get install apt-transport-https
sudo apt-get update && sudo apt-get install azure-cli
身份验证:
az login
# 或使用设备代码
az login --use-device-code
数据提取命令:
获取所有用户:
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}'
获取特定用户:
az ad user list --output=json --query='[].{Created:createdDateTime,UPN:userPrincipalName,Name:displayName,Title:jobTitle,Department:department,Email:mail,UserId:mailNickname,Phone:telephoneNumber,Mobile:mobile,Enabled:accountEnabled}' --upn='<upn>'
获取所有组:
az ad group list --output=json --query='[].{Group:displayName,Description:description}'
获取特定组成员:
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>'
获取所有应用程序:
az ad app list --output=table --query='[].{Name:displayName,URL:homepage}'
获取特定应用程序:
az ad app list --output=json --identifier-uri='<uri>'
获取所有服务主体:
az ad sp list --output=table --query='[].{Name:displayName,Enabled:accountEnabled,URL:homepage,Publisher:publisherName,MetadataURL:samlMetadataUrl}'
2. Azure PowerShell
基本命令:
Connect-AzureRmAccount
3. Azure .NET SDK
适用于C#开发的自动化工具,提供对Active Directory Graph API的封装。
防御措施
1. 禁用Azure门户访问
步骤:
- 使用全局管理员账户登录https://portal.azure.com
- 选择"Azure Active Directory"
- 选择"用户设置"
- 启用"限制对Azure AD管理门户的访问"
2. 条件访问策略
配置条件访问策略以限制敏感资源的访问:
https://docs.microsoft.com/en-us/azure/active-directory/conditional-access/overview
3. 监控与审计
- 定期审计Azure AD Connect同步配置
- 监控异常访客账户创建
- 审计应用程序和服务主体的权限
高级技巧
JMESPath查询过滤
使用JMESPath进行高级数据过滤:
az ad user list --query="[?contains(userPrincipalName,'@targetdomain.com')].{UPN:userPrincipalName,Name:displayName}"
目标选择策略
优先关注以下组:
- 管理员组
- VPN访问组
- 财务相关组
- DevOps/开发团队
- 云服务访问组(AWS/Azure/Oracle)
总结
通过Azure平台泄露Active Directory信息的技术展示了微软混合云环境中的安全盲点。红队可以利用这些技术进行有效评估,而蓝队则应关注这些攻击路径并实施相应的防御措施。云环境作为常被忽视的攻击面,需要特别的安全关注和持续的监控。