TerrCyber/microsoft-sentinel-impossible-travel-lab
GitHub: TerrCyber/microsoft-sentinel-impossible-travel-lab
基于 Microsoft Sentinel 的不可能旅行检测与事件响应实验环境,演示如何通过 KQL 分析 Azure AD 认证日志并识别可疑登录行为。
Stars: 0 | Forks: 0
# Microsoft Sentinel 事件响应实验:不可能的旅行检测
## 概述
本实验演示了 Microsoft Sentinel 如何使用 Azure Active Directory 日志检测和调查可疑的身份验证活动。
## 实验环境
| 组件 | 技术 |
| -------------------- | --------------------------------------- |
| SIEM | Microsoft Sentinel |
| 日志来源 | Azure AD Sign-in Logs |
| 日志表 | `SigninLogs` |
| 查询语言 | Kusto Query Language (KQL) |
| 调查方法 | NIST 800-61 Incident Response Lifecycle |
## 检测规则
该检测规则分析 Azure 身份验证日志,并识别在定义的时间窗口内从多个地理位置登录的账户。
## 检测查询
```
let TimePeriodThreshold = timespan(7d);
let NumberOfDifferentLocationsAllowed = 2;
SigninLogs
| where TimeGenerated > ago(TimePeriodThreshold)
| summarize Count = count() by UserPrincipalName, UserId,
City = tostring(parse_json(LocationDetails).city),
State = tostring(parse_json(LocationDetails).state),
Country = tostring(parse_json(LocationDetails).countryOrRegion)
| project UserPrincipalName, UserId, City, State, Country
| summarize PotentialImpossibleTravelInstances = count() by UserPrincipalName, UserId
| where PotentialImpossibleTravelInstances > NumberOfDifferentLocationsAllowed
```
检测逻辑
此查询:
1. 审查 7 天的身份验证日志。
2. 从 LocationDetails 字段中提取地理位置数据。
3. 统计每个用户的唯一登录位置。
4. 当用户从超过两个位置登录时触发。
此行为可能表明凭据被盗或存在可疑的身份验证活动。
## MITRE ATT&CK 映射
| Technique | Name |
| --------- | -------------------- |
| T1078 | Valid Accounts |
| T1098 | Account Manipulation |
## 事件调查
在分析规则触发后,Microsoft Sentinel 生成了一个标题为:
Potential Impossible Travel
的事件。该事件包含与警报相关的多个用户实体。
每个账户都使用身份验证日志进行了单独调查。
```
let TimePeriodThreshold = timespan(7d);
let InvestigatedUser = "user_account@tenant-domain.com";
SigninLogs
| where UserPrincipalName == InvestigatedUser
| where TimeGenerated > ago(TimePeriodThreshold)
| project TimeGenerated, UserPrincipalName, IPAddress,
City = tostring(parse_json(LocationDetails).city),
State = tostring(parse_json(LocationDetails).state),
Country = tostring(parse_json(LocationDetails).countryOrRegion)
| order by TimeGenerated desc
```
此查询提供了被调查用户的身份验证活动时间线。
## 观察到的登录活动
| 时间 | 城市 | 州/省 | 国家 |
| ------------ | ----------------- | ----- | ------- |
| 5:28 PM | Atlanta | GA | US |
| 1:41 PM | Dallas–Fort Worth | TX | US |
| 12:38 PM | San Jose | CA | US |
| 12:37 PM | Atlanta | GA | US |
| 11:39 AM | Atlanta | GA | US |
| 前一天 | Columbus | GA | US |
## 调查结果
尽管检测规则识别出了多个地理位置,但进一步分析确定该活动是合法的。
主要发现:
1. 身份验证发生在家庭和工作场所网络
2. 所有登录均源自美国
3. 某些登录位置对应于 Microsoft 云身份验证基础设施
云身份验证端点可能导致登录事件看起来来自 San Jose 或 Dallas 等城市,即使用户并未亲自前往这些地点。
由于登录行为符合正常用户活动且未发现入侵指标,该警报被判定为良性。
## 遏制与响应
如果活动是恶意的,标准的遏制行动将包括:
1. 在 Microsoft Entra ID 中临时禁用受影响的账户
2. 联系用户或其经理
3. 调查与该账户相关的其他活动
4. 审查 Azure 资源活动日志
示例 Pivot 查询:
```
AzureActivity
| where tostring(parse_json(Claims)["http://schemas.microsoft.com/identity/claims/objectidentifier"]) == "user-object-id"
```
在这种情况下,由于身份验证活动是合法的,因此不需要采取遏制行动。
## 事件后改进
虽然该活动是良性的,但组织可以通过实施额外的安全控制来减少类似的警报:
1. Conditional Access Policies
2. Multi-Factor Authentication (MFA)
3. 地理登录限制(Geo-fencing)
4. 基于风险的登录策略
这些控制措施有助于防止凭据被盗和未经授权的访问尝试。
## 事件关闭
在完成调查并确认身份验证活动代表合法用户行为后,该事件在 Microsoft Sentinel 中被关闭。
最终分类
Benign Positive
未发现恶意活动,且不需要采取补救措施。
## 展示的技能
本实验演示了实用的安全运营中心 (SOC) 分析师技能,包括:
1. Microsoft Sentinel 检测工程
2. KQL 日志分析
3. Azure 身份验证调查
4. MITRE ATT&CK 映射
5. 云安全监控
6. 使用 NIST 800-61 进行事件响应
## 关键要点
本实验演示了安全分析师如何在云环境中检测和调查可疑的身份验证行为。
主要经验教训包括:
• 不可能旅行警报需要调查 —— 多个地理登录位置并不总是表明存在恶意活动。云身份验证基础设施和合法的用户出行可能会触发误报。
• KQL 对于安全调查至关重要 —— 分析师必须使用 Kusto Query Language 审查身份验证日志,分析登录时间线,并确定可疑活动是代表合法行为还是入侵。
• 上下文在事件响应中至关重要 —— 在确定事件是否具有恶意之前,调查必须考虑用户行为、网络位置和身份验证模式等因素。
• 云身份验证日志可能具有误导性 —— 登录位置可能反映的是 Microsoft 云身份验证端点,而不是用户的物理位置。
• 检测规则应平衡敏感性和噪音 —— 虽然不可能旅行规则对于检测潜在的凭据被盗很有用,但调整检测阈值和实施条件访问策略可以减少误报。
• 事件响应遵循结构化流程 —— 使用 NIST 800-61 Incident Response Lifecycle 可确保警报得到一致的调查和适当的记录。
检测工程说明
本实验中使用的检测规则通过分析存储在 SigninLogs 表中的 Azure Active Directory 身份验证日志,识别潜在的不可能旅行场景。该规则统计与用户账户在 7 天时间内关联的地理位置数量,并在位置数量超过配置的阈值时触发警报。
虽然这种方法成功检测了可疑的身份验证行为,但它也突显了检测工程的几个重要注意事项。
检测优势
• 早期检测凭据滥用
当登录行为出现异常时,监控身份验证日志可让安全团队快速检测到潜在的账户被盗。
• 简单高效的查询逻辑
该规则使用直接的 KQL 逻辑来识别从多个地理位置登录的用户,而无需复杂的计算。
• 在云环境中运行良好
Azure 身份验证日志提供丰富的元数据,例如 IP 地址和位置信息,从而便于识别可疑的登录活动。
## 检测局限性
• 云基础设施导致的误报
身份验证事件可能看起来源自不同的城市,这是由于 Microsoft 云身份验证端点,而不是用户的实际移动。
• VPN 使用
通过 VPN 服务连接的用户可能看起来是从不同的地理区域进行身份验证。
• 合法旅行
经常旅行的用户可能会触发不可能旅行警报,即使他们的活动是合法的。
## 潜在改进
在生产环境中,安全团队通常通过实施额外的上下文和控制来改进不可能旅行检测:
基于风险的登录检测
Microsoft Entra ID Identity Protection 可以根据行为分析自动检测有风险的登录。
条件访问策略
组织可以要求用户从不熟悉的位置登录时提供额外的身份验证因素。
地理围栏策略
可以将访问限制在特定的地理区域,以减少未经授权的身份验证尝试。
移动速度计算
更高级的检测规则会计算登录位置之间的物理距离,并确定在该时间窗口内这些位置之间的移动在物理上是否可能。
## 高级检测概念示例
更高级的不可能旅行检测可能会比较登录时间戳和登录位置之间的地理距离,以确定移动速度是否超过了物理上可能的速度。
这种类型的检测减少了误报,并在识别被盗账户时提高了准确性。
标签:AMSI绕过, Azure Active Directory, Azure 监控, Entra ID, KQL, Kusto Query Language, Microsoft Sentinel, NIST 800-61, SigninLogs, 不可能的旅行, 凭证泄露, 威胁检测, 安全运营中心, 实验环境, 异地登录检测, 网络安全实验, 网络映射, 身份安全