获取Microsoft Defender笔记本指定registry key值的高级狩猎查询
Microsoft Defender 高级狩猎查询纳管笔记本指定注册表键值方案
核心实现逻辑
通过KQL语句关联设备信息表和注册表快照表,先筛选出平台纳管的所有笔记本设备,再匹配对应设备上上报的目标注册表键值数据,不需要额外在设备端部署脚本。
可直接复用的查询语句
替换语句里标注的目标注册表路径即可使用:
// 筛选已纳管的活跃笔记本设备集合 let ManagedLaptops = DeviceInfo | where OnboardingStatus == "Onboarded" | where DeviceType == "Laptop" | where LastSeen > ago(7d) // 仅保留近7天有上报的活跃设备,可按需调整时间范围 | project DeviceId, DeviceName, OSPlatform, LastSeen; // 查询目标注册表键对应取值 DeviceRegistryEvidence // 👇 替换下方引号内的路径为你要查询的目标注册表键全路径 | where RegistryKey == @"HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced" | join kind=inner ManagedLaptops on DeviceId | project ReportTime = Timestamp, DeviceName, DeviceOS = OSPlatform, DeviceLastOnline = LastSeen, RegistryKey, ValueName = RegistryValueName, ValueData = RegistryValueData, ValueType = RegistryValueType | sort by DeviceLastOnline desc
常见场景调整说明
- 若需要查询注册表值的修改历史而非当前快照:将语句中的
DeviceRegistryEvidence替换为DeviceRegistryEvents,可额外增加| where ActionType == "RegistryValueSet"筛选修改/创建值的操作,还能关联查到执行修改操作的进程、账号信息。 - 若需要覆盖32位程序重定向的注册表路径:修改RegistryKey的筛选条件为
| where RegistryKey in (@"你的64位注册表路径", @"HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\对应的32位路径")即可同时查询两个节点下的值。 - 若需要批量查询多个注册表键:直接将RegistryKey筛选条件改为
| where RegistryKey in (@"路径1", @"路径2", @"路径3"),填入所有目标路径即可。
异常排查参考
如果查询无返回结果,优先检查两点:
- 填写的注册表键全路径是否正确,注意不要遗漏根键前缀(比如
HKEY_LOCAL_MACHINE不要简写为HKLM) - 确认Defender for Endpoint的设备扫描配置已覆盖目标注册表所在的根键,默认配置下系统配置、启动项、软件安装相关的注册表路径均会被自动扫描上报。
内容的提问来源于stack exchange,提问作者Ellliot911
相关产品推荐
相关产品推荐

