用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地理库。

[!] CONTACT_CHANNELS

如需商务合作、技术咨询或漏洞反馈,请通过以下离岸节点联系作者。

> PING_AUTHOR (@A1RedTeam)