AdityaBhatt3010/Entra-ID-Monitoring

GitHub: AdityaBhatt3010/Entra-ID-Monitoring

基于 Splunk 的 Microsoft Entra ID 身份攻击检测与调查的逐步实战指南,涵盖密码攻击、MFA 绕过、权限提升和 OAuth 滥用等场景的 SPL 查询与分析方法。

Stars: 1 | Forks: 0

# Entra ID 监控 🔐 关于 **Entra ID 监控** 的逐步指南,涵盖针对 Microsoft Entra ID 的常见身份攻击,并演示如何使用 **Splunk** 进行检测。 此仓库记录了调查过程,解释了每个 SPL 查询背后的原理,并将每个解决方案映射到相应的截图,以便于理解和验证。 ## 实验信息 * **房间:** Entra ID 监控 * **难度:** 中等 * **重点领域:** * 基于密码的攻击 * 条件访问策略 * Identity Protection * MFA 绕过技术 * 权限提升与持久化 * OAuth 应用程序滥用 # 仓库结构 ``` . ├── README.md └── Entra ├── 1.png ├── 2.png ├── 3.png ├── ... └── 10.png ``` 本指南中引用的所有截图都存储在 **Entra** 目录中。 # 涵盖技能 🛡️ * Microsoft Entra ID 监控 * Splunk SPL * Azure AD 登录日志 * Azure AD 审计日志 * Identity Protection * 条件访问策略 * 威胁狩猎 * 事件调查 * MFA 攻击检测 * 权限提升分析 * OAuth 滥用检测 # 你将学到什么 * 检测 Password Spraying 攻击 * 检测 Brute Force 尝试 * 调查受损用户 * 分析 Identity Protection 警报 * 调查条件访问失败 * 检测 MFA 疲劳攻击 * 识别权限提升 * 调查通过 MFA 注册进行的持久化 * 检测恶意的 OAuth 同意授权 # 操作指南 ## 任务 1 — 简介 本房间介绍了针对 Microsoft Entra ID 身份的最常见攻击技术,并解释了登录日志、审计日志、条件访问策略和 Identity Protection 如何帮助防御者检测恶意活动。 # 任务 2 — 基于密码的攻击 攻击者通常从违规数据库中获取泄露的凭据开始。他们不利用软件漏洞,而是直接尝试对公开暴露的 Entra ID endpoint 进行身份验证。 涵盖两种常见技术: * Password Spraying * 限速 Brute Force ## 检测 Password Spraying 以下 SPL 查询按 IP 地址对失败的身份验证尝试进行分组。 它有助于识别尝试对多个账户使用相同密码的主机,这是 password spraying 的常见指标。 ### Payload ``` index="task-2" sourcetype="azure:aad:signin" "status.errorCode"!=0 conditionalAccessStatus!=success | stats dc(userPrincipalName) as targeted_accounts, count as failures by ipAddress | sort - failures ``` 查询显示,**94.20.222.248** 针对了多个用户账户并产生了最多的失败次数,使其成为 password spraying 的来源。 答案: ``` 94.20.222.248 ``` ![1](https://static.pigsec.cn/wp-content/uploads/repos/cas/fe/fe0179e0f008a61b4efd61fca22d37781899f1abb2734e9fe83e05f1b764361b.png) ## 检测限速 Brute Force 与 password spraying 不同,brute force 在较长时间内专注于单个账户,以避免触发账户锁定策略。 识别出的可疑 IP 为: ``` 38.165.231.218 ``` ## 识别受损用户 在识别出可疑 IP 后,我们搜索了源自该 IP 的成功身份验证,以确定攻击最终是否成功。 ### Payload ``` index="task-2" sourcetype="azure:aad:signin" "status.errorCode"=0 | where ipAddress="38.165.231.218" | stats count by userPrincipalName, status.errorCode | sort status.errorCode ``` 成功的登录属于: ``` amanda.costa@finegalo ``` ![2](https://static.pigsec.cn/wp-content/uploads/repos/cas/c1/c13b9cfdd57403103514e407986023280d898da992682f80dd5cd92a811d4027.png) # 任务 3 — 条件访问与 Identity Protection 条件访问根据组织策略评估每次登录,而 Identity Protection 则根据可疑的身份验证行为持续分配风险评分。 它们共同为受损身份提供了有效的防御。 ## 识别高风险用户 此查询搜索 Microsoft 标记为 **高风险** 的登录。 ### Payload ``` index="task-3" sourcetype="azure:aad:signin" | where riskLevelDuringSignIn="high" | table _time, userPrincipalName, appDisplayName, ipAddress, location.countryOrRegion, riskLevelDuringSignIn, riskLevelAggregated | sort - _time ``` 识别出的风险用户: ``` allan.senna@finegalo ``` ![3](https://static.pigsec.cn/wp-content/uploads/repos/cas/a4/a4f6beaa0fa7d0387fc7574d8c96da30aad2434d99b38c14ed5a73145bf5b5d8.png) ## 调查风险检测日志 Identity Protection 提供了有关为何登录被视为风险的附加上下文。 ### Payload ``` index="task-3" sourcetype="azure:aad:identity_protection:riskdetection" | where riskEventType="anonymizedIPAddress" | table _time, userPrincipalName, activity, ipAddress, location.countryOrRegion, riskLevel, riskEventType | sort - _time ``` 最近的风险登录: ``` 2026-03-03 13:50:59 ``` 风险类型: ``` anonymizedIPAddress ``` ![4](https://static.pigsec.cn/wp-content/uploads/repos/cas/b6/b69c32d3d41a91f9b6bca1dbec10cef99e6476965320be4579ef2793a3540945.png) ## 调查条件访问策略 接下来,我们检查了失败的条件访问评估,以确定是哪个安全策略阻止了身份验证尝试。 ### Payload ``` index="task-3" sourcetype="azure:aad:signin" conditionalAccessStatus=failure | spath output=policies path=appliedConditionalAccessPolicies{} | mvexpand policies | spath input=policies output=policy_result path=result | spath input=policies output=policy_name path=displayName | where policy_result="failure" | stats values(policy_name) as FailedPolicies by _time, appDisplayName, userDisplayName, ipAddress, conditionalAccessStatus | eval FailedPolicies=mvjoin(FailedPolicies, ", ") | table _time, appDisplayName, userDisplayName, ipAddress, conditionalAccessStatus, FailedPolicies | sort - _time ``` 被阻止的策略: ``` Block Suspicious Countries ``` 被阻止的 IP: ``` 94.20.222.251 ``` ![5](https://static.pigsec.cn/wp-content/uploads/repos/cas/bc/bcca2b996bbbe42f8bfb727530184cd635b96fcd4dde7a1355c5e1426ed6e629.png) ![6](https://static.pigsec.cn/wp-content/uploads/repos/cas/58/58441ce6078d33489cdb8ab73f5c7e385baedbfb2a02ca10cd2feb7a780824ae.png) # 任务 4 — MFA 绕过技术 即使在获得有效凭据后,攻击者也必须绕过多因素身份验证。 此任务侧重于使用身份验证日志识别 MFA 疲劳攻击。 ## 检测 MFA 疲劳 以下查询搜索与重复身份验证提示相关的常见 MFA 失败代码。 ### Payload ``` index="task-4" sourcetype="azure:aad:signin" (status.errorCode=50074 OR status.errorCode=50076 OR status.errorCode=500121) | stats count as mfa_failures values(status.errorCode) as errorCodes values(status.failureReason) as failureReasons by userPrincipalName, ipAddress | sort - mfa_failures ``` 受害者: ``` igor.bicalho@finegalo ``` 错误代码: ``` 500121 ``` ![7](https://static.pigsec.cn/wp-content/uploads/repos/cas/87/87da562d4fbf97067384b2a6f8f395c7e83cf87232116788cbd394338f09e179.png) ## 识别正常登录位置 为了识别可疑行为,我们首先确立了用户的正常登录位置。 ### Payload ``` index="task-4" sourcetype="azure:aad:signin" status.errorCode=0 | table _time, userPrincipalName, ipAddress, location.countryOrRegion, conditionalAccessStatus | sort - _time ``` 正常国家/地区: ``` DK ``` 攻击者的成功身份验证: ``` 2026-03-04 13:26 ``` ![8](https://static.pigsec.cn/wp-content/uploads/repos/cas/e3/e36a344b71812935510072df25110dde84c165d12783042d0a138484496cc291.png) # 任务 5 — 权限提升与持久化 一旦攻击者获得访问权限,他们通常会创建持久化机制并提升权限,以维持对租户的长期控制。 ## 检测角色分配 此查询在 Entra ID 审计日志中搜索特权角色分配。 ### Payload ``` index="task-5" sourcetype="azure:aad:audit" activityDisplayName="Add member to role" | table _time, activityDisplayName, initiatedBy.user.userPrincipalName, targetResources{}.userPrincipalName, targetResources{}.modifiedProperties{}.newValue | sort - _time ``` 新账户: ``` rafael.maciel@finegalo ``` 分配的角色: ``` Global Administrator ``` ![9](https://static.pigsec.cn/wp-content/uploads/repos/cas/c3/c36d9fd82fa81aeae7adb9e9480c796826f3a02be088f9e2a18fafb5c0202c00.png) ## 检测新的 MFA 注册 攻击者通常会注册自己的身份验证器应用程序,以在密码重置后仍能保持访问权限。 ### Payload ``` index="task-5" sourcetype="azure:aad:audit" activityDisplayName="User started security info registration" loggedByService="Authentication Methods" operationType="Add" | eval initiator=coalesce('initiatedBy.user.userPrincipalName','initiatedBy.app.displayName') | table _time, activityDisplayName, initiator, initiatedBy.user.ipAddress, additionalDetails{}.value ``` 注册的新 MFA 设备: ``` 2026-03-04 13:36 ``` ![10](https://static.pigsec.cn/wp-content/uploads/repos/cas/12/12e89986f0482c3df51121ef2d8a3d95508317454d0847cda8f17575d6c239e1.png) # 任务 6 — OAuth 应用程序滥用 即使在密码重置或 MFA 更改后,OAuth 应用程序仍能保留访问权限。 关键指标包括: * 应用程序同意事件 * 高风险委托权限 * 租户范围的应用程序权限 * 可疑的同意授权 讨论的重要权限: * Mail.Read.All * Mail.ReadWrite.All * Files.ReadWrite.All * Directory.ReadWrite.All * RoleManagement.ReadWrite.Directory * offline_access # 关键要点 ✨ * Password spraying 会在多个用户中留下广泛的身份验证失败模式。 * Brute force 攻击通常在较长时间内针对单个账户。 * Identity Protection 提供了有价值的风险信号,但应始终通过登录日志进行验证。 * 如果配置正确,条件访问策略可显著降低账户被入侵的风险。 * MFA 仍然是最强的防御手段之一,尽管攻击者越来越依赖于诸如 MFA 疲劳等社会工程学技术。 * 在初始入侵后,审计日志成为主要的证据来源,可帮助调查人员识别权限提升、持久化和管理变更。 * OAuth 应用程序滥用是一种隐蔽的持久化机制,在事件响应调查中应始终将其纳入考虑范围。 # 免责声明 此仓库仅出于学习 **Entra ID 监控** 的教育目的而创建。所有练习均在官方实验环境中进行。
标签:Microsoft Entra ID, URL发现, 安全检测, 红队行动, 身份安全, 防御加固