用PowerShell调Microsoft Graph:快速排查风险登录的实用指南
本文讲解如何利用Microsoft Graph和PowerShell检测Entra ID风险登录事件。通过Get-MgRiskDetection命令获取风险记录,解析additionalinfo提取风险原因,并自动关联IP地理位置。学习如何构建一键式风险排查脚本,快速发现异常设备或异地登录行为。适用于安全分析师和身份管理运维人员。
🔍 Medium 其他
本文介绍如何使用Microsoft Graph和PowerShell检测Entra ID中的风险登录事件。通过Get-MgRiskDetection命令,安全分析师可以在基础许可证下获取异常登录记录,并解析additionalinfo字段提取风险原因(如陌生设备、异常地理IP等)。文中还演示了如何用计算字段和ConvertFrom-Json构建含国家/地区和风险原因的摘要报告,帮助快速定位潜在威胁。
来源:SANS ISC | 2026-08-20 | 原文链接
🔍 关键发现
- Get-MgRiskDetection命令在基础Entra ID许可证下即可使用,无需高级版即可获取风险登录事件。
- 风险登录的additionalinfo字段为JSON格式,可解析出riskReasons,如UnfamiliarDevice、UnfamiliarEASId、UnfamiliarTenantIPsubnet等。
- 通过PowerShell计算字段和ConvertFrom-Json,可将风险原因和地理位置(国家/地区)整合到同一报表,提升排查效率。
⚔️ 攻击链分析
攻击者使用非惯用设备或从异常IP/子网/国家发起登录(如马来西亚、哥伦比亚、韩国),触发Entra ID风险检测。防御方通过Graph API拉取风险事件,分析additionalinfo中的风险原因和位置,确认后标记为已修复或已驳回。
🚩 失陷指标 (IOC)
马来西亚、哥伦比亚、韩国的可疑登录IP(原文示例,未提供具体地址)风险登录中的userAgent字符串,如包含AnyConnect等异常组合
🛡️ 缓解建议
- ✅ 定期运行Get-MgRiskDetection并过滤已处理事件,重点关注风险State为active的登录记录。
- ✅ 结合条件访问策略自动阻断高风险登录,或要求MFA/密码重置。
- ✅ 将风险检测结果与IP情报(如ipinfo)联动,增强地理异常判断能力。
涉及漏洞:[]
⚠️ 本文仅供安全研究与学习,IOC 信息请勿用于非法目的。
🤖 常见问题解答(FAQ)
❓ 如何过滤掉已处理的风险检测事件?
使用 -Filter 参数,设置 riskState ne 'dismissed' and riskState ne 'remediated',即可排除已驳回和已修复的事件。
❓ additionalinfo字段里怎么提取风险原因?
先用 ConvertFrom-Json 解析additionalinfo,然后筛选Key为riskReasons的项,取其value属性即可得到原因列表,可用 -join 拼接。
❓ 能否直接从风险检测结果中获取IP地理位置?
可以。每个风险登录对象都有location属性,包含CountryOrRegion等信息,无需额外调用IP地理库。