You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何基于MCAS告警关联SigninLogs排查特定User-Agent登录行为?

解决MCAS告警关联SigninLogs查询特定User-Agent的问题

你原查询失效的原因

用union合并SecurityAlert和SigninLogs是错误的思路——这两张表的字段结构差异极大,CompromisedEntity仅存在于MCAS告警数据中,UserPrincipalName仅存在于登录日志里。合并后大部分数据行里要么user(你从CompromisedEntity转换的字段)为null,要么UserPrincipalName为null,where user == UserPrincipalName自然过滤不到任何有效结果。

正确的嵌套/关联查询实现

可以通过join关联两张表,或者先提取MCAS告警涉及的用户再过滤登录日志,以下是两种可行写法:

写法1:用Join关联(最直观)

SecurityAlert
| where ProviderName contains "MCAS"
| extend UserPrincipalName = CompromisedEntity  // 统一用户字段名称,方便关联
| join kind=inner (
    SigninLogs
    | where UserAgent contains "你要检测的特定User-Agent"  // 替换为实际目标UA字符串
) on UserPrincipalName
| project 
    用户=UserPrincipalName,
    告警名称=AlertName,
    登录时间=CreatedDateTime,
    登录UA=UserAgent

写法2:先提取用户再过滤登录日志

// 先提取MCAS告警涉及的所有用户
let mcas_affected_users = SecurityAlert
| where ProviderName contains "MCAS"
| distinct CompromisedEntity;

// 用提取到的用户筛选登录日志,再关联回告警信息
SigninLogs
| where UserPrincipalName in (mcas_affected_users)
| where UserAgent contains "你要检测的特定User-Agent"
| join kind=inner (
    SecurityAlert
    | where ProviderName contains "MCAS"
) on $left.UserPrincipalName == $right.CompromisedEntity
| project 
    用户=UserPrincipalName,
    告警名称=AlertName,
    登录时间=CreatedDateTime,
    登录UA=UserAgent

检测规则创建步骤

把上述任意一段查询复制到Microsoft Sentinel的自定义检测规则配置页面,填写规则名称、描述、严重级别等基础信息即可。注意替换查询中的"你要检测的特定User-Agent"为实际需要监控的UA内容(比如某款恶意工具的专属UA字符串)。

内容的提问来源于stack exchange,提问作者bernardo15sousa

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.06 15:35:13