密码喷洒攻防实战:Microsoft Entra SSO功能的滥用与防御

admin 2025年4月19日00:32:37评论12 views字数 6770阅读22分34秒阅读模式

Microsoft Entra 无缝单一登录(Seamless Single Sign-On)是微软推出的一种高级身份验证和访问管理功能。通过无缝单一登录,用户在受支持的企业网络环境中登录过一次后,无须再次输入相关凭据,即可自动访问相关的云应用、SaaS 应用,并且无需任何其他本地组件。

Microsoft Entra 无缝单一登录使用 Windows 网络标准 Kerberos 协议来实现。在配置 Microsoft Entra Connect 以将本地 AD 与 Microsoft Entra ID 同步的过程中,可勾选启用单一登录来开启该功能,如图 1 所示。

密码喷洒攻防实战:Microsoft Entra SSO功能的滥用与防御

图 1 勾选“启用单一登录”

在此配置过程中,Microsoft Entra Connect 会在本地 Active Directory 中创建一个名为 AZUREADSSOACC 的机器账户,如图 2 所示。

密码喷洒攻防实战:Microsoft Entra SSO功能的滥用与防御

图 2 查看本地 AZUREADSSOACC 机器账户

并且,为该 AZUREADSSOACC 账户创建多个 Kerberos SPN,以在 Microsoft Entra ID 登录过程中使用,如图 3 所示。

密码喷洒攻防实战:Microsoft Entra SSO功能的滥用与防御

图 3 AZUREADSSOACC 账户 SPN

在默认情况下,会通过 usernamemixe 终结点 CURL 为 https://autologon.microsoftazuread-sso.com/<Primarydomain>/winauth/trust/2005/usernamemixed,对开启无缝单一登录功能的计算机进行单因素身份验证,如图 4 所示。

密码喷洒攻防实战:Microsoft Entra SSO功能的滥用与防御

图 4 usernamemixed 终结点

如图 5 所示,如果用户输入的登录凭据无效,那么 Autologon 终结点将使用包含身份验证尝试的特定错误代码的 XML 文件来直接进行响应。

密码喷洒攻防实战:Microsoft Entra SSO功能的滥用与防御

图 5 包含特定错误代码的 XML 文件

常见的错误代码如表 1 所示。

表 1 常见错误代码

错误代码
错误代码描述
AADSTS50126
用户存在,但输入了错误的密码
AADSTS50056
用户存在,但在 Azure AD 中没有密码
AADSTS50076
用户凭据正确,开启 MFA
AADSTS50014
用户不存在
AADSTS50053
用户存在且输入了正确的用户名和密码,但账户被锁定

由于 Autologon 终结点会针对用户输入的无效登录凭据直接返回特定的错误代码,这也就导致通过 Autologon 终结点进行的身份登录验证并不会被 Microsoft Entra ID 登录日志所记录。

攻击者可以利用此特性绕过安全措施,对 Microsoft Entra ID 账户实施密码喷洒攻击,而不会触发任何检测告警。

利用步骤

如果目标 Microsoft Entra ID 开启了无缝单一登录功能,则可以通过如下两种方式滥用 Microsoft Entra 的无缝单一登录功能,以对 Microsoft Entra ID 上的用户密码进行密码喷洒。

通过 azuread_autologon_brute.py 滥用 Microsoft Entra ID 的无缝单一登录功能执行密码喷洒

1)首先,需要在本地安装并配置好相关 Python 环境,并通过如下命令来安装 requests 依赖:

  pip install requests

命令执行结果如图 6 所示。

密码喷洒攻防实战:Microsoft Entra SSO功能的滥用与防御

图 6 安装 requests 依赖

2)随后执行如下命令来查看可用的参数,具体执行结果如图 7 所示。

密码喷洒攻防实战:Microsoft Entra SSO功能的滥用与防御

图 7 查看可用参数

参数含义如表 2 所示。

  python .azuread_autologon_brute.py -h

表 2 azuread_autologon_brute.py 脚本参数含义

参数
参数含义
-d DOMAIN
指定要进行操作的目标的主要域,如 abc.
onmicrosoft.com
-u USERNAME
指定特定的用户名
-U USERFILE
指定一个存在的用户名字典,也就是通过用户枚举攻击获取 Azure AD 租户
-p PASSWORD
指定用于喷洒的 Azure AD 租户密码
-o OUTPUT
指定结果输出的文件,如不指定,则默认文件名为“BRUTE_OUTPUT.txt”
-v
在脚本运行时提供更详尽的信息
-t THREADS
指定线程数

3)通过执行如下命令来对 Microsoft Entra ID 租户进行喷洒密码攻击:

  python azuread_autologon_brute.py -d Domain -U users.txt -p S3U9t6n7

从执行结果可以看到,admin、mem、jason 用户的密码均为S3U9t6n7,如图 8 所示,且每个通过 azuread_autologon_brute.py  脚本成功喷洒出密码的用户,在当前命令行都会获取其账户所使用的 DesktopSsoToken。

密码喷洒攻防实战:Microsoft Entra SSO功能的滥用与防御

图 8 密码喷洒结果

4)访问 Azure 门户地址—portal.azure.com,如图 9 所示,使用已喷洒出的密码,即可成功登录 Azure 管理控制台。

密码喷洒攻防实战:Microsoft Entra SSO功能的滥用与防御

图 9 通过已喷洒出的账号密码登录 Azure 管理控制台

通过 aad-sso-enum-brute-spray.ps1 滥用 Microsoft Entra ID 的无缝单一登录功能执行密码喷洒

使用 aad-sso-enum-brute-spray.ps1 脚本也可以滥用 Microsoft Entra ID 的无缝单一登录功能执行密码喷洒,使用命令如下:

  fore ach($linein Get-Content .users.txt) {.aad-sso-enum-brute-spray.ps1 $lineS3U9t6n7 |Out-File -FilePath .results.txt -Append }

aad-sso-enum-brute-spray.ps1 脚本的执行结果如图 10 所示,可以看到已喷洒出的有效 Microsoft Entra ID 用户为 admin、adtest 和 mec。

密码喷洒攻防实战:Microsoft Entra SSO功能的滥用与防御

图 10 执行 aad-sso-enum-brute-spray.ps1 脚本的密码喷洒结果

如果在前期信息枚举阶段查询出目标 Microsoft Entra ID 没有配置身份验证以及密码保护的策略,则可通过如下 PowerShell 命令来对单个用户进行密码字典爆破:

  fore ach($linein Get-Content .passwd.txt) {.aad-sso-enum-brute-spray.ps1 [email protected] $line }

如图 11 所示,可以看到已成功爆破出名为[email protected]的用户密码。

密码喷洒攻防实战:Microsoft Entra SSO功能的滥用与防御

图 11 利用 aad-sso-enum-brute-spray 脚本进行密码爆破

若想将上述爆破的输出结果导出成一个文件,则可执行如下命令来将爆破输出结果追加到当前目录下的 passwd-results.txt 中:

  fore ach($linein Get-Content .passwd.txt) {.aad-sso-enum-brute-spray.ps1 [email protected] $line |Out-File -FilePath .passwd-results.txt -Append}

执行结果如图 12 所示。

密码喷洒攻防实战:Microsoft Entra SSO功能的滥用与防御

图 12 将密码爆破结果导出到 passwd-results.txt

防御方法

Microsoft Entra ID 无缝单一登录的使用的协议存在一定的缺陷,可使恶意攻击者不断地暴力破解密码,且在 Microsoft Entra ID 默认目录下的租户日志上不会生成任何事件记录。

那么,对于防守方或者蓝队来讲,如何检测和防御基于 Microsoft Entra ID 无缝单一登录功能的密码喷洒攻击呢?

对此,有如下方法可以解决:

  1. 通过设置强密码策略来确保 Microsoft Entra ID 租户使用强密码。
  2. 在所有可能使用 Microsoft Entra ID 凭据的服务应用上启动 MFA,如图 13 所示。
  3. 监控 Microsoft Entra ID 登录日志,以监控异常用户的登录,如图 14 所示。
密码喷洒攻防实战:Microsoft Entra SSO功能的滥用与防御

图 13 启用 MFA

密码喷洒攻防实战:Microsoft Entra SSO功能的滥用与防御

图 14 通过 Microsoft Entra ID 登录日志来监控异常用户的登录行为

更多攻防实战请参考——

全面开展“本地+云”域攻防

构建坚不可摧的企业级安全防线

密码喷洒攻防实战:Microsoft Entra SSO功能的滥用与防御

作者:党超辉 贾晓璐 何佳欢

l微软全球MVP & 360安全专家强强联合撰写

l国家广播电视总局教授级高级工程师、360数字安全集团副总裁作序

l20余位安全技术专家/团队负责人/安全厂商创始人联袂推荐

密码喷洒攻防实战:Microsoft Entra SSO功能的滥用与防御

目录

上拉下滑查看目录 ↓

Contents目  录

序一

序二

赞誉

前言

第1章 AD域及Microsoft Entra ID1

1.1 AD域基础1

1.1.1 核心概念1

1.1.2 组策略4

1.1.3 LDAP11

1.1.4 SPN15

1.1.5 Kerberos 22

1.2 Microsoft Entra ID基础25

1.2.1 核心概念25

1.2.2 Microsoft Entra内置角色28

第2章 AD域及Microsoft Entra ID分析29

2.1 AD域配置管理工具SCCM详解29

2.1.1 SCCM介绍29

2.1.2 利用SCCM进行信息枚举32

2.1.3 利用SCCM进行横向移动39

2.1.4 利用SCCM进行凭据窃取47

2.1.5 利用SCCMHunter进行SCCM分析61

2.1.6 利用MalSCCM进行SCCM分析65

2.1.7 利用SharpSCCM进行SCCM分析75

2.2 本地AD域分析91

2.2.1 利用BloodHound进行AD域分析91

2.2.2 利用AdFind进行AD域分析113

2.2.3 利用AD Explorer进行AD域分析125

2.2.4 利用SharpADWS进行AD域分析131

2.2.5 利用SOAPHound进行AD域分析140

2.3 Microsoft Entra ID分析146

2.3.1 Microsoft Entra ID分析工具AzureHound详解146

2.3.2 使用Azure AD PowerShell进行信息枚举167

2.3.3 使用Azure PowerShell进行信息枚举186

2.3.4 使用Azure CLI进行信息枚举195

第3章 获取AD域权限202

3.1 域用户密码策略202

3.1.1 常见密码策略202

3.1.2 获取密码策略的手段202

3.1.3 域用户密码策略解析204

3.1.4 查找被禁用用户204

3.2 利用Kerberos协议进行密码喷洒205

3.2.1 使用ADPwdSpray.py进行域密码喷洒205

3.2.2 利用dsacls进行密码喷洒206

3.2.3 检测利用Kerberos协议实施的密码喷洒206

3.3 Microsoft Entra ID密码喷洒207

3.3.1 Microsoft Entra ID密码策略207

3.3.2 通过MSOnline PowerShell获取密码策略207

3.3.3 使用MSOLSpray对Azure AD租户进行密码喷洒209

3.3.4 使用Go365对Microsoft 365用户进行密码喷洒210

3.3.5 防御Microsoft Entra ID密码喷洒212

3.4 利用LDAP破解账户密码215

3.4.1 使用DomainPasswordSpray通过LDAP进行密码喷洒215

3.4.2 域外Linux环境中通过LDAP爆破用户密码216

3.4.3 检测利用LDAP实施的密码爆破217

3.5 AS-REP Roasting离线密码破解218

3.5.1 错误配置导致AS-REP Roasting攻击218

3.5.2 检测AS-REP Roasting攻击221

3.5.3 防御AS-REP Roasting攻击221

3.6 Kerberoasting离线密码破解221

3.6.1 Kerberoasting攻击原理221

3.6.2 Kerberoasting攻击流程222

3.6.3 实验环境配置222

3.6.4 获取访问指定服务的票据223

3.6.5 转换不同格式的票据224

3.6.6 离线破解本地票据225

3.6.7 Kerberoasting后门226

3.6.8 Kerberoasting攻击的检测及防御227

3.7 FAST227

3.7.1 FAST配置227

3.7.2 绕过FAST保护230

3.7.3 未经预身份验证的Kerberoasting232

3.8 域环境中控制指定用户236

3.9 特殊机器账户:Windows 2000之前的计算机240

3.10 CVE-2020-1472(ZeroLogon)漏洞利用243

3.10.1 检测目标域控ZeroLogon漏洞244

3.10.2 域内Windows环境中使用Mimikatz执行ZeroLogon攻击244

3.10.3 域外执行ZeroLogon攻击245

3.10.4 恢复域控机器账户密码247

3.10.5 检测ZeroLogon攻击248

3.10.6 防御ZeroLogon攻击250

第4章 域信任 251

4.1 域信任基础251

4.1.1 域信任原理251

4.1.2 TDO252

4.1.3 GC252

4.2 多域与单域Kerberos认证的区别253

4.3 林内域信任中的Kerberos通信253

4.4 林间域信任中的Kerberos通信253

4.5 信任技术255

4.5.1 域信任类型256

4.5.2 域信任路径261

4.5.3 林内域信任攻击263

4.5.4 林间域信任攻击269

第5章 Kerberos域委派280

5.1 无约束委派281

5.1.1 无约束委派原理282

5.1.2 查询无约束委派283

5.1.3 配置无约束委派账户285

5.1.4 利用无约束委派和Spooler打印机服务获取域控权限287

5.1.5 防御无约束委派攻击291

5.2 约束委派291

5.3 基于资源的约束委派302

5.4 绕过委派限制325

5.4.1 手动添加SPN绕过委派限制325

5.4.2 CVE-2020-17049(Kerberos Bronze Bit)漏洞利用328

第6章 ACL后门332

6.1 在AD中滥用ACL/ACE332

6.2 利用GenericAll权限添加后门335

6.3 利用WriteProperty权限添加后门337

6.4 利用WriteDacl权限添加后门339

6.5 利用WriteOwner权限添加后门340

6.6 利用GenericWrite权限添加后门341

6.7 通过强制更改密码设置后门343

6.8 通过GPO错配设置后门344

6.9 SPN后门346

6.10 利用Exchange的ACL设置后门348

6.11 利用Shadow Admin账户设置后门349

第7章 AD CS攻防351

7.1 AD CS基础351

7.1.1 证书服务的应用场景和分类352

7.1.2 证书模板和注册352

7.1.3 获取CA信息357

7.2 AD CS的常用攻击与防御手法358

7.2.1 ESC1:配置错误的证书模板358

7.2.2 ESC2:配置错误的证书模板362

7.2.3 ESC3:错配证书请求代理模板363

7.2.4 ESC4:证书模板访问控制错配365

7.2.5 ESC6:利用EDITF_ATTRIB-UTESUBJECTALTNAME2获取权限371

7.2.6 ESC7:CA访问控制错配374

7.2.7 ESC8:利用PetitPotam触发NTLM Relay380

7.2.8 AD域权限提升387

7.2.9 利用CA机器证书申请伪造证书390

7.2.10 影子凭据攻击395

7.2.11 ESC9:无安全扩展406

7.2.12 ESC10:弱证书映射410

7.2.13 ESC11:RPC中继到AD CS416

第8章 Microsoft Entra ID攻防420

8.1 AD用户同步到Microsoft Entra ID420

8.1.1 创建Windows Server Active Directory环境420

8.1.2 在Microsoft Entra管理中心 创建混合标识管理员账户427

8.1.3 安装配置Microsoft Entra Connect430

8.2 防御Microsoft Entra无缝单一登录功能的滥用436

8.2.1 防御滥用Microsoft Entra无缝单一登录实施的密码喷洒436

8.2.2 防御滥用AZUREADSSOACC$账户实施的横向移动442

8.3 防御滥用AD DS连接器账户实施的DCSync攻击454

8.4 防御滥用Microsoft Entra连接器账户来重置密码466

8.5 防御滥用Microsoft Intune管理中心实施的横向移动473

8.6 防御滥用Azure内置Contributor角色实施的横向移动486

原文始发于微信公众号(Z2O安全攻防):密码喷洒攻防实战:Microsoft Entra SSO功能的滥用与防御

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2025年4月19日00:32:37
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   密码喷洒攻防实战:Microsoft Entra SSO功能的滥用与防御https://cn-sec.com/archives/3975468.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息