| name | detecting-email-account-compromise |
| description | 通过分析收件箱规则创建、可疑登录位置、邮件转发规则和异常 API 访问模式,检测受攻陷的 O365 和 Google Workspace 邮件账号。 |
| domain | cybersecurity |
| subdomain | incident-response |
| tags | ["email-compromise","office365","microsoft-graph","bec","inbox-rules","sign-in-analysis","account-takeover"] |
| version | 1.0 |
| author | mahipal |
| license | Apache-2.0 |
检测邮件账号攻陷(Detecting Email Account Compromise)
概述
邮件账号攻陷(Email Account Compromise,EAC)是一种常见攻击手法,攻击者通过未授权访问邮箱来窃取敏感数据、实施商业邮件欺诈(Business Email Compromise,BEC)或通过收件箱规则操纵建立持久化。攻击者通常会创建转发规则来截取邮件、创建删除规则以掩盖痕迹,或使用 OAuth 令牌维持持久访问。检测方法包括:分析 Microsoft 365 统一审计日志(Unified Audit Logs)、Azure AD 登录日志中的不可能旅行(Impossible Travel)或可疑位置、收件箱规则创建事件(Set-InboxRule、New-InboxRule)以及 Microsoft Graph API 访问模式。关键指标包括:转发规则指向外部地址、匹配"invoice"或"payment"等关键词的删除/移动规则,以及来自 python-requests 等异常 User-Agent 的登录行为。
前置条件
- Microsoft 365 并已启用统一审计日志记录(Unified Audit Logging)
- Azure AD P1/P2(用于风险检测 API)
- Python 3.9+,安装
requests、msal 库
- Microsoft Graph API 应用注册,具备 Mail.Read、AuditLog.Read.All 权限
- 了解 OAuth2 客户端凭据流程
步骤
- 导出审计日志或使用 MSAL 认证连接 Microsoft Graph API
- 通过
/users/{id}/mailFolders/inbox/messageRules 查询所有受监控邮箱的收件箱规则
- 分析规则是否存在外部转发行为(ForwardTo、RedirectTo 指向外部地址)
- 检测可疑规则模式:删除规则、针对财务关键词的过滤规则
- 通过
/auditLogs/signIns 查询登录日志,检查异常位置和不可能旅行
- 检查可疑 User-Agent 字符串(python-requests、PowerShell、curl)
- 识别可疑第三方应用的 OAuth 应用授权同意(Consent Grant)
- 跨用户关联发现,检测活动级别的攻陷行为
- 生成包含严重级别评分的攻陷指标报告
预期输出
JSON 格式报告,列出受攻陷或可疑账号、检测到的恶意收件箱规则、不可能旅行事件、可疑 OAuth 授权,以及带严重级别评级的建议遏制措施。