TG客服:@SSjiejie — 官方频道:@SSwangluo
三生网络 © 2009-2023 超15年出海经验,跨境项目专家
一、 什么Azure AD
Azure AD(Azure Active Directory )是微软基于云的身份和访问管理服务,它可以帮助员工登录以及访问以下位置的资源:
● 外部资源,如 Microsoft 365、Azure 门户及其他 SaaS 应用程序。
● 内部资源,如公司网络和 Internet 上的应用,以及由自己组织开发的云应用。
下图显示了 Azure AD 与应用程序之间的交互。
二、 Azure的安全功能
Azure AD 实现了基本的安全功能。如,具有密码锁定策略,若密码输错10次,帐户将锁定 60 秒。还具备更高级的安全功能,但具体取决于订阅的许可证。
1、条件访问策略
Azure AD 使用条件访问作为一种工具来统合信号、做出决策,以及实施组织策略。条件访问是新的标识驱动控制平面的核心。
最简单地讲,条件访问策略是一些 if-then 语句:如果用户想要访问某个资源,则必须完成某个操作。下图表述的应该更明确:
使用条件访问策略需要 Azure AD Premium P1 许可证,以下是常见信号:
用户或组成员身份
策略可以针对特定的用户和组,并为管理员提供精细的访问控制。
IP 定位信息
组织可以创建在做出策略决策时使用的受信任 IP 地址范围。
管理员可以指定要阻止或允许的整个流量来源国家/地区的 IP 范围。
设备
实施条件访问策略时,用户可以使用的装有特定平台或标有特定状态的设备。
应用程序
尝试访问特定应用程序的用户可以触发不同的条件访问策略。
实时风险和计算风险检测
将信号与 Azure AD 标识保护相集成可让条件访问策略识别有风险的登录行为。然后,策略可以强制用户执行密码更改或多重身份验证,以降低其风险级别,或者在管理员采取手动措施之前阻止其访问。
Microsoft Defender for Cloud Apps
实时监视和控制用户应用程序的访问和会话,提高云环境中执行的访问和活动的透明度与控制度。
以下是常见决策:
阻止访问
严格的决策
授予访问权限
不严格的决策仍可要求以下一个或多个选项:
● 需要多重身份验证
● 要求将设备标记为合规
● 要求使用加入混合 Azure AD 的设备
● 需要批准的客户端应用
● 需要应用保护策略(预览版)
以下是常用的策略:
● 要求对具有管理角色的用户进行多重身份验证。
● 需要对 Azure 管理任务进行多重身份验证。
● 阻止尝试使用旧身份验证协议的用户登录。
● 需要用于 Azure 多重身份验证注册的受信任位置。
● 阻止或授予来自特定位置的访问权限。
● 阻止有风险的登录行为。
● 需要针对特定应用程序的组织管理设备。
2、标识保护
● 标识保护功能为 P2 高级许可证的所有者提供了一个补充保护。
● 依靠他们在拥有 Azure AD 的组织中的职位获得的数据,Microsoft 能够检测到有风险的用户行为。然后,条件访问策略可以区别对待这些用户。例如,如果用户使用存在于泄露数据库中的密码,则可以将其识别为有风险。
● 检测标准可以在Microsoft 文档中找到。
3、安全默认值
Azure AD 的安全默认值,可防止密码喷洒、重播和网络钓鱼等常见攻击。
事实上,使用安全默认值,Azure 租户的所有用户都必须在 14 天内注册多重身份验证服务。
14 天后,用户在完成注册之前无法登录。以下敏感管理组的成员每次登录时都需要执行额外的身份验证:
● 全局管理员
● SharePoint 管理员
● 交易所管理员
● 条件访问管理员
● 安全管理员
● 服务台管理员或密码管理员
● 计费管理员
● 用户管理员
● 认证管理员
在租户中启用安全默认值后,旧协议发出的所有身份验证请求都将被阻止,这意味着使用 IMAP、SMTP 或 POP3 的客户端将被拒绝。
特权操作(例如管理 Azure 资源管理器)将需要额外的身份验证,即使通过 Azure PowerShell 或 Azure CLI 完成也是如此。
租户是在 2019 年 10 月 22 日当天或之后创建的,该租户会启用安全默认值。
4、Azure AD的密码保护
Azure AD 密码保护可以检测并阻止已知的弱密码及其变种,还可以阻止特定于你的组织的其他弱口令。
Azure AD 密码保护的设计遵循以下原则:
● 域控制器 (DC) 不与 Internet 直接通信。
● DC 上未启动任何新网络端口。
● 不需要 AD DS 架构更改。该软件使用现有的 AD DS 容器和 serviceConnectionPoint 架构对象。
●不要求最低 AD DS 域或林功能级别 (DFL/FFL)。
● 该软件不会在它保护的 AD DS 域中创建或要求帐户。
● 用户明文密码永远不会离开域控制器(无论是在密码验证操作期间,还是在其他任何时间)。
● 该软件不依赖于其他 Azure AD 功能。例如,Azure AD 密码哈希同步 (PHS) 与 Azure AD 密码保护无关或后者不需要前者。
● 支持增量部署,但仅在安装了域控制器代理(DC 代理)的情况下才会强制执行。
本地 Azure AD 密码保护组件的工作原理如下所示:
● 每个 Azure AD 密码保护代理服务实例通过在 Active Directory 中创建 serviceConnectionPoint 对象,将自身播发到林中的 DC。
● Azure AD 密码保护的每个 DC 代理服务还在 Active Directory 中创建一个 serviceConnectionPoint 对象。此对象主要用于报告和诊断。
● DC 代理服务负责发起从 Azure AD 下载新密码策略的操作。第一步是通过在林中查询代理 serviceConnectionPoint 对象,找到 Azure AD 密码保护代理服务。
● 当找到可用的代理服务时,DC 代理向代理服务发送密码策略下载请求。代理服务会将请求发送到 Azure AD,然后将响应返回到 DC 代理服务。
● DC 代理服务从 Azure AD 收到新的密码策略后,该服务将该策略存储在其域 sysvol 文件夹共享的根目录中的专用文件夹内。DC 代理服务还会监视此文件夹,以确定是否从域中的其他 DC 代理服务复制了更新的策略。
● DC 代理服务始终在服务启动时请求新策略。DC 代理服务启动后,会每小时检查一次当前本地可用策略的存在时间。如果策略存在时间超过一小时,DC 代理会通过代理服务从 Azure AD 请求新策略,如前所述。如果当前策略的存在时间不超过一小时,DC 代理将继续使用该策略。
● 当 DC 收到接收密码更改事件时,缓存的策略用于确定是接受还是拒绝新密码。
5、日志记录
Azure AD 有一个监听功能,可跟踪登录和配置更改。并将会将日志发送到 Azure Logs Analytics,以便进行进一步处理,且无需订阅高级许可证。
三、浅谈Azure AD渗透测试
1、探测
首先,输入如下URL来探测公司是否使用Azure AD
如果NameSpaceType指示“托管”,则该公司正在使用 Azure AD。
2、邮箱枚举
确定存在Azure AD后,便可构造email列表,可使用o365creeper进行枚举。
o365creeper是一个验证属于Office 365租户的邮件帐户的脚本。此脚本可使用邮件地址或列表进行枚举,原理是发送一个空密码的请求到Office 365,并通过判断“IfExistsResult”参数设置值来确定结果,有效帐户返回0,无效的帐户将返回1。
下载:
使用:
这个操作不会在Azure AD 日志中留下任何痕迹
3、密码喷洒
获取有效电子邮箱列表后,可用密码喷洒方式获取账户凭证。
MailSniper
MailSniper 是一种渗透测试工具,可用于在 Microsoft Exchange 中搜索电子邮件并获取密码、内部信息、网络架构等信息。
MailSniper 还可用于密码喷洒、枚举用户和域等相关信息。
MSOLSpray
MSOLSpray也可匹配有效密码,并且还会通过 Azure AD 的错误代码来回显更详细的信息。如回显帐户上是否启用 MFA、租户/用户存活、帐户锁定、帐户禁用、密码过期等相关信息。
4、信息收集
已获取有效Azure AD凭证后,便可进行信息收集阶段。
与Azure AD 交互的信息收集工具有很多,如o365recon、Stormspotter、Azucar、SkyArk、PowerZure、MSOline、MailSniper、ROADtools等
o365recon
o365recon是使用有效凭证检索AzureAD 信息的脚本
使用:
可获取有关 Azure AD 租户的大量信息,还可确认与本地 Active Directory 的同步以及相关服务器的主机名。
MSOnline
MSOnline可检索租户中当前角色和关联角色成员的列表。
MailSniper
MailSniper可以收集邮箱地址
显示电子邮件地址对应的用户名
显示具有多重身份验证的用户
5、密码提取
adconnectdump
adconnectdump提供了多种从 Azure AD Connect 服务器中提取和解密存储的 Azure AD 和 Active Directory 凭证的方法。这些凭证在本地目录和云中都具有高权限。
AD Sync中凭据地址:
访问地址:
6、DCSync攻击
使用 MSOL 帐户可以执行DCSync攻击并复制所有域用户密码hash。
使用azuread_decrypt_msol.ps1可以恢复 MSOL 帐户的密码:
● azuread_decrypt_msol.ps1: AD Connect 同步凭据提取 POC https://gist.github.com/xpn/0dc393e944d8733e3c63023968583545
● azuread_decrypt_msol_v2.ps1:更新转储 Azure AD Connect Sync 的 MSOL 服务帐户(允许 DCSync)的方法 https://gist.github.com/xpn/f12b145dba16c2eebdd1c6829267b90c
此时便可以使用检索到的 MSOL 帐户凭据来发起 DCSync 攻击。
7、无缝单点登录(SSO)银票
具备编辑AZUREADSSOACCS$ 帐户属性的账户均可使用 Kerberos 模拟 Azure AD 中的任何用户(不存在MFA情况下)
PHS 和 PTA 均支持 SSO。如果启用SSO,则会在本地 AD 中创建一个计算机帐户AZUREADSSOC,这里注意的是AZUREADSSOACC 帐户的密码永远不会更改。
当用户想要连接 Azure AD 时,域控制器会提供 Azure AD 的服务票据,服务票据使用AZUREADSSOACC$计算机帐户的密码进行加密。
无缝单点登录 (SSO)
为 Active Directory 用户配置连接 Azure AD的单点登录的措施,不需重新输入密码。
SSO 依赖于 Kerberos,因此具有相同的缺陷。当AZUREADSSOACC$遭到入侵,可以创建银票。
创建银票所需条件
● 用户名
● 域名
● AZUREADSSOACC$帐户的NTLM Hash
● SID
● 目标服务
例:
五、总结
Azure AD 其实是微软对传统AD的演进,引进了很多新的思想理念。同时具备多种安全功能,启动这些功能后,会减少很多安全风险,云环境目前成为攻击者的首选目标,因此企业更需要关注其安全性。
TG客服:@SSjiejie — 官方频道:@SSwangluo
三生网络 © 2009-2023 超15年出海经验,跨境项目专家