Azure AD 横向移动 - 1
字数 1627 2025-08-25 22:58:47
Azure AD 横向移动技术详解
0x01 前言
本文探讨了如何将传统的本地域环境横向移动技术应用于Azure AD环境。与本地Active Directory不同,Azure AD环境中的计算机和用户都在云环境中管理,但仍存在横向移动的可能性。
0x02 Mimikatz在Azure AD环境中的作用
Mimikatz 2.2.0-20190720及以上版本支持转存Windows 10(内部版本17763.615+)中lsass.exe进程的内存空间,包括Azure AD环境中的计算机:
- 在已加入Azure AD的计算机中,用户凭证经过RC4加密存储在lsass.exe中
- Mimikatz可以转储这些凭证
- 但需要注意:Azure AD环境不支持Kerberos和NTLM认证,因此NTLM哈希无法直接用于哈希传递攻击
0x03 云环境与本地环境的区别
3.1 认证协议差异
- Azure AD环境:不支持Kerberos和NTLM认证
- 本地AD环境:支持Kerberos和NTLM认证
3.2 用户表达式区别
- Azure AD:
user@directoryname.onmicrosoft.com - 本地AD:
Domain\User
3.3 用户账号标识区别
- 本地AD:使用安全标识(SID)表示
- Azure AD:使用GUID(Azure AD id)表示
GUID转SID方法:
将"S-1-12-1-"与GUID拆分处理后组合:
[base16(a1)]-[base16(a2)]-[base16(a3)]-[base16(a4)]
S-1-12-1-[base10(a1)]-[base10(a2)]-[base10(a3)]-[base10(a4)]
示例:
GUID: 6aa89ecb-1f8f-4d92-810d-b0dce30b6c82
转换后SID: S-1-12-1-1789435595-1301421967-3702525313-2188119011
3.4 本地管理员组
默认情况下,Azure AD的以下角色是本地Administrators组成员:
- Global administrator
- Device administrator
- 执行加入Azure AD过程的账户(计算机所有者)
0x04 计算机间的认证协议
Azure AD环境使用NEGOEX PKU2U(基于公钥密码的User-to-User)进行身份验证:
- 从Azure AD获得用户证书(有效期1小时)
- 使用联机ID提供程序的CA私钥签名
- 计算机在P2P连接过程中获得联机ID证书的公共对
- 远程计算机使用CA配对的公钥验证签名和时间戳
攻击利用点:
- Mimikatz可以转存客户端的证书及私钥
- 获取这些凭证后,可通过NEGOEX PKU2U模拟用户
- 计算机账号的证书有效期长达一年,攻击价值更高
0x05 横向移动技术实现
5.1 凭证获取
- 获取本地管理员权限(通过默认管理员组成员身份)
- 使用Mimikatz转存lsass.exe内存获取凭证
mimikatz.exe "sekurlsa::logonpasswords" "exit"
5.2 证书提取
使用Mimikatz提取证书和私钥:
mimikatz.exe "crypto::certificates /export" "exit"
5.3 横向移动方法
-
证书利用:
- 使用获取的证书和私钥通过PKU2U协议进行认证
- 可模拟用户访问其他Azure AD加入的计算机
-
本地管理员利用:
- 利用默认管理员组成员身份
- 在目标计算机上执行相同的信息收集过程
0x06 防御建议
-
最小权限原则:
- 严格控制Global administrator和Device administrator角色分配
- 定期审查本地管理员组成员
-
证书管理:
- 监控和限制证书颁发
- 实施短期有效的证书策略
-
监控与检测:
- 监控lsass.exe内存转储行为
- 检测异常证书使用情况
-
系统加固:
- 启用Credential Guard防止凭证窃取
- 限制高权限账户的登录范围
0x07 总结
Azure AD环境虽然与本地AD有显著差异,但仍存在横向移动的可能。攻击者可以利用:
- 默认管理员组成员身份
- Mimikatz提取凭证和证书的能力
- PKU2U认证协议的特性
防御方应充分了解这些攻击技术,实施相应的防护措施。