Will-B615/Technical-Write-ups
GitHub: Will-B615/Technical-Write-ups
该仓库是一套聚焦 Entra ID 身份攻击与防御的技术写作集,通过实验室场景记录身份安全攻防实践、日志分析方法及修复策略。
Stars: 0 | Forks: 0
# Entra ID 登录日志:网络安全技术报告
## 目的
本报告旨在说明 Microsoft Entra ID 登录日志如何支持对可疑身份验证活动的调查,特别是暴力破解、密码喷洒和帐户被盗场景。它旨在帮助分析师了解日志显示了什么、哪些字段最重要,以及如何将原始身份验证遥测数据转化为实用的调查决策。
## 执行概述
Entra ID 登录日志是最有价值的身份遥测数据源之一,因为它们记录了每次身份验证尝试,以及用户、应用程序、IP、设备、位置、结果和策略上下文。对于分析师而言,主要优势在于同一个日志流可以同时揭示攻击模式(例如重复失败)和后果(例如随后从同一来源成功登录)。结合 Entra 更广泛的身份保护堆栈中的 MFA、Conditional Access 和身份风险概念来解读这些日志时,它们的作用会变得更加显著。
## 技术背景
云身份是高价值目标,因为有效的登录可以让攻击者无需首先攻破传统端点,即可直接访问 Microsoft 365、Azure 连接的应用程序和其他租户资源。Entra ID 充当用户、设备、应用程序和服务的身份验证和授权层,因此其登录记录通常成为验证可疑警报是否反映真实帐户滥用的首要切入点。
从攻击链的角度来看,登录日志在初始访问、凭据访问验证和防御规避分析期间最为有用。大量失败后出现一次成功的模式可能表明发生了密码喷洒、暴力破解或成功使用了被盗凭据,而与 MFA 相关的重复失败可能表明攻击者掌握了密码但被第二重身份验证拦截。Conditional Access 和 Identity Protection 通过显示登录是基于位置、设备、风险还是必需的授权控制(如 MFA)被允许、阻止或受到质询,提供了额外的上下文。
## 技术细节
登录日志记录了谁尝试了访问、他们针对哪个应用程序、请求来自何处、登录是否为交互式以及身份验证结果。实验室中显示的关键字段包括 `userPrincipalName`、`appDisplayName`、`ipAddress`、`clientAppUsed`、`createdDateTime`、`conditionalAccessStatus`、`status.errorCode`、位置详细信息以及 `appliedConditionalAccessPolicies`。这些字段共同让分析师能够重塑事件本身以及影响其结果的安全控制措施。
`status.errorCode` 字段尤为重要,因为它告诉分析师尝试是否成功,如果失败,原因是什么。在示例数据中,错误代码 `0` 表示登录成功。其他突出显示的代码包括:`50126` 表示用户名或密码无效,`50053` 表示因多次失败导致帐户锁定,`50074` 表示需要 MFA 但未完成,以及 `50055` 表示密码已过期。这些值有助于区分简单的密码输入错误、被阻止的凭据攻击,或者可能已部分失陷但仍受 MFA 保护的帐户。
实验室还展示了如何使用 `azure:aad:signin` sourcetype 在 Splunk 中查询这些数据。对所有事件进行广泛查询可以建立基线活动,而通过 `status.errorCode!=0` 进行过滤则可调出失败的身份验证,以便按用户、源 IP 和应用程序进行聚合。按 `userPrincipalName` 对失败进行分组,并收集 `ipAddress`、`appDisplayName` 和错误代码,有助于识别受到攻击的帐户,以及判断是单个来源在测试多个身份还是重复针对单个用户。
随后过滤来自可疑 IP 地址的成功登录的查询有助于确定攻击者最终是否获得了访问权限以及访问了哪些应用程序。这就是登录日志从检测转向确认的地方:如果产生大量失败尝试的同一个 IP 随后生成了 `status.errorCode=0`,分析师就获得了一条用于确认帐户是否失陷的有力线索。应用程序字段也很重要,因为对 `OfficeHome` 或其他 Microsoft 365 资源的访问可能表明电子邮件、文件、协作工具或下游 token 面临直接暴露风险。
## 指标和观察结果
Entra ID 登录调查中的重要观察结果包括:
- 单个帐户或来自一个 IP 的多个帐户出现大量失败的身份验证。
- 从重复失败转变为从同一来源成功登录。
- 诸如 `50126`、`50053`、`50074` 和 `50055` 之类的错误代码模式。
- 重复针对同一个应用程序,例如 `OfficeHome`。
- 已知用户的可疑地理位置或意外的 `location` 值。
- Conditional Access 结果显示策略是成功、被阻止还是未应用。
- MFA 结果显示用户是否收到提示、是否通过了质询或未能完成质询。
## 盲区和局限性
登录日志虽然功能强大,但它们并不能说明全部情况。它们显示的是身份验证尝试和策略结果,而不一定是用户在获得访问权限后做了什么,因此分析师通常需要应用程序活动日志、审计日志、端点遥测数据或邮箱调查数据来评估影响。它们还依赖于准确的扩充信息(例如 IP 地理定位和策略日志记录),而这些信息在某些环境中可能是不完善或不完整的。
来自异常 IP 的成功登录并不一定就是恶意的。使用 VPN、漫游用户、云代理、安全测试以及联合或混合身份行为都可能产生类似于攻击流量的模式,但实际上并不代表帐户已遭入侵。
## 误报和良性触发因素
几种合法场景可能类似于可疑的身份验证行为:
- 用户在最近更改密码后重复输入旧密码,从而产生多次 `50126` 失败。
- 帐户锁定 (`50053`) 是由过期的移动客户端或缓存的凭据触发的,而不是主动的攻击活动。
- MFA 提示未完成 (`50074`),因为用户忽略或错过了通知。
- 出差、远程工作或使用企业 VPN 导致不熟悉的 IP 或位置值。
- Conditional Access 标记为 `notApplied` 是由于策略范围、排除项或应用程序不匹配,而不是控制失效。
## 响应措施
当检测到可疑的登录活动时,结构化的响应应包括:
1. 通过审查受影响的用户和源 IP 的所有失败和成功登录来确认该模式。
2. 确定是否需要、已完成、绕过还是失败了 MFA,并审查已应用的 Conditional Access 策略。
3. 验证用户和位置是否符合业务逻辑;如果不符合,请将此活动视为潜在的帐户失陷。
4. 如果很可能发生失陷,请撤销会话、重置密码,并要求使用更强的身份验证方法,例如 Authenticator、Windows Hello for Business 或 FIDO2。
5. 通过检查已访问的应用程序、组成员身份、特权角色和相关的审计活动来审查下游暴露情况。
6. 通过使用 MFA、Conditional Access、密码保护和基于风险的策略来加强预防,以减少未来凭据被滥用的机会。
## 分析师要点
Entra ID 登录日志的实用价值在于,它们以一种可立即采取行动的方式将身份遥测数据与攻击者行为联系起来。对于 Security 或 IAM 分析师而言,目标不仅仅是阅读日志,而是要解释该事件反映的是访问失败、被阻止的入侵还是成功的帐户接管,然后迅速转向遏制和强化措施。
标签:Entra ID, Ruby, 实验笔记, 知识库, 网络安全, 身份安全, 防御加固, 隐私保护