2. 身份基础设施盘点
身份攻击面发现的第一步不是扫描漏洞,而是把“谁在管身份、身份存在哪里、谁能改身份”这三件事摸清楚。身份基础设施盘点要回答的核心问题是:组织内有哪些身份系统、它们之间如何信任、哪些对象是高价值目标、哪些接口暴露在攻击路径上。盘点的产出不是一份资产清单,而是一张可追溯的身份信任拓扑图。
一、先划分身份系统的角色层次
身份基础设施通常分为四层:权威源(如 AD、HR 系统)、身份提供者(如 Entra ID、Okta)、依赖方(如 SaaS、自研应用)、特权通道(如 PAM、跳板机、SSH 证书)。盘点时必须先确定每个系统的角色,否则会把 IdP 和 SP 混为一谈,导致后续信任关系画错。
以典型混合架构为例:本地 AD 是员工账号的权威源,Entra ID Connect 将用户同步到 Entra ID,Entra ID 作为 IdP 为 Microsoft 365 和 SaaS 提供 SSO,Okta 可能作为另一条 IdP 链路服务特定业务,PAM 则托管 AD 域管和云平台高权限账号。这四条链路各自有独立的认证策略、MFA 覆盖率和日志源,盘点时要分别记录。
二、AD 盘点:从域结构到高价值对象
AD 盘点的第一层是域和 OU 结构。用 Get-ADDomain 和 Get-ADOrganizationalUnit -Filter * 可以导出域列表和 OU 树,重点关注是否存在多个域、林信任关系以及外部信任。第二层是账号对象:域管组、企业管理员组、受保护用户组、服务账号(尤其是 PasswordNeverExpires 且 SPN 非空的服务账号)。第三层是权限关系:ACL 委派、AdminSDHolder、GPO 链接范围。
实际盘点时,建议先跑一条组合命令导出关键对象:
# 导出域管成员与受保护账号
Get-ADGroupMember "Domain Admins" -Recursive |
Select-Object SamAccountName, objectClass, distinguishedName |
Export-Csv "domain_admins.csv" -Encoding UTF8
# 查找密码永不过期的服务账号
Get-ADUser -Filter {PasswordNeverExpires -eq $true -and ServicePrincipalName -like "*"} `
-Properties ServicePrincipalName, PasswordLastSet |
Select-Object SamAccountName, ServicePrincipalName, PasswordLastSet
导出后要人工判断:哪些服务账号仍在使用、哪些 SPN 对应已下线应用、哪些账号密码超过 365 天未轮换。这些是 Kerberoasting 和黄金票据攻击的典型入口。BloodHound 的 SharpHound 采集器可以进一步把 ACL 和会话关系可视化,但采集前必须获得授权并控制采集范围,避免触发安全告警。
三、Entra ID 与 Okta 盘点:应用、策略与 MFA 覆盖
Entra ID 盘点的核心对象是应用注册和企业应用。应用注册中的 client secret 和 certificate 是长期凭证,过期未轮换或权限过大(如 Mail.ReadWrite、Directory.ReadWrite.All)都是高风险点。用 Microsoft Graph 可以批量导出:
GET https://graph.microsoft.com/v1.0/applications
?$select=displayName,appId,passwordCredentials,requiredResourceAccess
GET https://graph.microsoft.com/v1.0/servicePrincipals
?$select=displayName,appId,servicePrincipalType,signInAudience
Okta 侧重点在 /api/v1/apps 和 /api/v1/policies。要清点每个应用的 SSO 模式(SAML、OIDC、SWA)、分配的用户组、以及是否强制 MFA。Okta 的 System Log API 可以拉取认证事件,用于统计 MFA 覆盖率。MFA 盘点不能只看“是否启用”,还要看因子类型:短信和语音因子存在 SIM 交换风险,应标记为弱因子;FIDO2 和 Windows Hello 属于强因子。
四、LDAP 与 SSO 盘点:目录绑定与信任证书
LDAP 盘点要关注三件事:目录树结构、绑定账号权限、以及哪些应用通过 LDAP 直连认证。用 ldapsearch 可以匿名或绑定查询根 DSE:
ldapsearch -x -H ldaps://dc01.example.com:636 \
-D "cn=svc_ldap,ou=ServiceAccounts,dc=example,dc=com" \
-W -b "dc=example,dc=com" "(objectClass=person)" cn mail
如果绑定账号拥有过大读权限,攻击者一旦拿到该账号即可批量导出用户信息用于钓鱼。SSO 盘点则要收集每个 SP 的 SAML 元数据,检查签名证书有效期、断言加密配置、以及是否存在 NameID 可预测问题。证书过期是 SSO 中断的常见原因,盘点时应把 90 天内到期的证书单独列出。
五、PAM 与 MFA 盘点:特权账号与因子分布
PAM 盘点要回答:哪些特权账号已纳入保险库、哪些仍散落在个人手中、会话录制是否覆盖所有特权操作。导出 PAM 中的账号清单后,与 AD 域管组、云平台管理员角色做交叉比对,差集就是“未托管特权账号”。MFA 盘点则按用户组统计注册率,重点关注管理员组是否 100% 覆盖强因子。
六、盘点工具选型与数据合并
工具选择取决于环境规模。中小规模可以用 PowerShell + Graph API + Okta API 脚本化导出;大规模混合环境建议用 BloodHound(AD)、AzureHound(Entra ID)、Okta 的 Terraform Provider 或官方 SIEM 集成。关键不是工具本身,而是把各系统导出的对象按统一标识(如 UPN、objectGUID、appId)合并,形成跨系统的身份关联视图。
盘点完成后,应至少输出三份可交付物:身份系统拓扑图、高价值对象清单(域管、服务账号、高权限应用、未托管特权账号)、以及 MFA 与凭证有效期风险列表。这三份产出直接决定后续攻击面分析的起点是否准确。