资讯动态

Anthropic-Cybersecurity-Skills 实战:基于 Microsoft Graph 解析 Office 365 统一审计日志检测账户入侵

发布时间:2026/9/11 6:23:18 来源:尧图企业网站定制
Anthropic-Cybersecurity-Skills 实战基于 Microsoft Graph 解析 Office 365 统一审计日志检测账户入侵【免费下载链接】Anthropic-Cybersecurity-Skills817 structured cybersecurity skills for AI agents · Mapped to 6 frameworks: MITRE ATTCK, NIST CSF 2.0, MITRE ATLAS, D3FEND, NIST AI RMF MITRE F3 (Fight Fraud) · agentskills.io standard · Works with Claude Code, GitHub Copilot, Codex CLI, Cursor, Gemini CLI 20 platforms · 29 security domains · Apache 2.0项目地址: https://gitcode.com/GitHub_Trending/an/Anthropic-Cybersecurity-Skills本指南围绕 Anthropic-Cybersecurity-Skills 仓库中的analyzing-office365-audit-logs-for-compromise技能展开完整讲解如何通过 Microsoft Graph API 与 MSAL 客户端凭据流解析 Office 365 Unified Audit Log从收件箱规则创建、邮件转发、邮箱委派变更与可疑 OAuth 应用授权等维度识别企业邮件遭入侵BEC的攻击痕迹。读完本文你将掌握一套可落地的检测流程、底层 Graph 端点清单与评分逻辑并可直接运行仓库提供的 agent.py 生成带时间线的入侵指标报告。一、技能定位与适用场景BECBusiness Email Compromise企业邮件诈骗攻击的典型生命周期中攻击者拿到邮箱凭据后往往不会立刻暴露而是先做“静默改造”创建自动转发规则把往来邮件外泄给中继邮箱、添加邮箱委派权限实现二次访问、为恶意 OAuth 应用授予 Mail.Read/Mail.Send 等高危权限再伪装成 CEO/财务向内部或合作伙伴发起汇款诈骗。本技能正是面向这类“以审计日志发现入侵痕迹”的云安全分析任务它覆盖四类核心指标可疑收件箱规则的创建与修改New-InboxRule、Set-InboxRule、UpdateInboxRules邮箱级与规则级的邮件转发配置Set-Mailbox、Set-MailboxAutoReplyConfiguration邮箱委派权限变更Add-MailboxPermission、Add-RecipientPermission可疑 OAuth 应用授权OAuth consent grant 中携带 Mail/邮箱高危险 scope根据技能元数据该技能映射到 MITRE ATTCK 的 T1114.002邮箱转发规则、T1098.002账户操控、T1556.006修改认证机制与 T1078.004云账户有效账号滥用等攻击手法并对应 NIST CSF 2.0 的PR.IR-01响应计划、ID.AM-08资产清单、GV.SC-06供应链风险治理与DE.CM-01持续监控控制项。因此在以下场景中优先使用本技能调查安全事件需要解析 Office 365 审计日志定位入侵指标为该领域编写检测规则或威胁狩猎查询语句SOC 分析师需要一套结构化的分析流程模板验证针对上述攻击手法的安全监控覆盖度可与仓库的 ATTACK_COVERAGE.md 联动核对覆盖缺口。二、环境准备与权限前置条件技能要求的最低运行环境与权限如下类别要求说明Azure AD 应用注册应用权限application permissions需在 Azure 门户注册应用并授权Graph 权限AuditLog.Read.All读取/auditLogs/directoryAudits目录审计Graph 权限MailboxSettings.Read读取收件箱规则与邮箱设置Graph 权限Mail.Read读取邮箱相关数据身份角色Global Reader 或 Security Reader用于在租户内执行审计查询运行时Python 3.9脚本基于现代 Python 语法编写依赖库msal、requests认证与 HTTP 客户端认证材料Client secret 或证书MSAL 客户端凭据流使用依赖版本建议参考 references/api-reference.mdmsal 1.24.0、requests 2.28.0。安装方式pip install msal1.24.0 requests2.28.0注意该脚本通过客户端凭据流client credentials flow以应用身份访问租户数据不涉及用户交互登录适合在 SOC 自动化管道中作为定时任务运行。三、总体流程七步完成租户级入侵分析技能定义的标准分析流程如下使用 MSAL 客户端凭据流向 Microsoft Graph 完成认证查询 Unified Audit Log检索可疑运维操作如Set-Mailbox、New-InboxRule跨邮箱枚举收件箱规则标记所有转发类规则检测邮箱委派变更Add-MailboxPermission识别授予可疑应用的 OAuth 同意授权从审计日志中检查异常登录模式生成带时间线的入侵指标报告。其中第 17 步在仓库的 agent.py 中被完整实现为可执行命令下面逐一深入讲解其底层实现。四、MSAL 认证客户端凭据流的实现细节认证入口是get_access_token(tenant_id, client_id, client_secret)核心代码位于 scripts/agent.pyauthority fhttps://login.microsoftonline.com/{tenant_id} app msal.ConfidentialClientApplication( client_id, authorityauthority, client_credentialclient_secret ) result app.acquire_token_for_client(scopes[https://graph.microsoft.com/.default])要点authority指向租户专属的 Microsoft 登录端点https://login.microsoftonline.com/{tenant_id}其中tenant_id是 Azure AD 租户 IDmsal.ConfidentialClientApplication以client_idclient_secret构造机密客户端若使用证书则传入证书路径/指纹替换 secretacquire_token_for_client使用客户端凭据流获取应用级令牌scope 固定为https://graph.microsoft.com/.default即申请应用注册时预先授予的全部 Graph 应用权限若结果中不含access_token脚本抛出RuntimeError并携带error_description便于在 CI/CD 日志中定位授权失败原因。配套的分页请求封装graph_get(token, endpoint, paramsNone)agent.py实现了一个通用的 Graph 分页循环每页请求通过odata.nextLink自动翻页直到没有下一页为止从而保证即使结果超过单页 100 条也能完整拉取。所有请求统一携带Authorization: Bearer {token}头并设置 30 秒超时。五、统一审计日志查询11 个可疑操作监控清单query_audit_logs(token, days7)agent.py向/auditLogs/directoryAudits发起查询并对以下 11 个高风险 Exchange/邮箱运维操作逐一过滤定义于SUSPICIOUS_OPERATIONS常量操作名称攻击含义New-InboxRule新建收件箱规则经典转发外泄手法Set-InboxRule修改已有收件箱规则Set-Mailbox修改邮箱属性含 SMTP 转发配置Add-MailboxPermission添加邮箱访问委派Set-MailboxJunkEmailConfiguration篡改垃圾邮件配置可能用于屏蔽安全告警Set-OwaMailboxPolicy修改 OWA 邮箱策略New-TransportRule新建传输规则组织级邮件重定向Add-RecipientPermission添加收件人权限Set-TransportRule修改传输规则UpdateInboxRules更新收件箱规则集合Set-MailboxAutoReplyConfiguration修改自动答复攻击者常借此伪装身份实现中针对每个操作构造 Graph OData 过滤器filter_str ( factivityDisplayName eq {operation} fand activityDateTime ge {since} ) logs graph_get(token, /auditLogs/directoryAudits, params{$filter: filter_str, $top: 100})其中since基于datetime.utcnow() - timedelta(daysdays)计算默认回看 7 天可通过--days参数调整。每条命中事件被归一化为统一结构包含operation、timestamp、result、user由initiatedBy.user.userPrincipalName提取、ip_address、target目标资源显示名列表与additionalDetails并按时间戳倒序排列为后续时间线重建提供素材。六、收件箱规则审计转发检测与风险评分check_inbox_rules(token, user_id)agent.py是本文技能中信息密度最高的函数。它调用GET /users/{user_id}/mailFolders/inbox/messageRules枚举指定邮箱的全部收件箱规则然后逐一检查actions字段中的三类转发行为forwardTo转发给指定收件人forwardAsAttachmentTo作为附件转发redirectTo重定向给指定收件人。只要命中任意一类即判定为转发规则同时提取delete转发后删除原件与markAsRead转发后标记为已读两个隐蔽性标志——攻击者常用“转发删除标记已读”组合实现邮件外泄且不留痕迹。6.1 风险评分模型技能定义了四因子加权评分见 references/api-reference.md评分因子分值存在转发规则40转发后删除原件25转发目标为外部地址20标记已读且配合转发15此外代码中对外部转发做了精确判定将转发目标地址的域名与当前用户邮箱域名user_id.split()[-1]比对不一致即视为外部转发额外加分。最终风险分min(risk, 100)封顶为 100并按阈值分级CRITICAL风险分 ≥ 70HIGH风险分 ≥ 50MEDIUM风险分 ≥ 25LOW其余。例如一条“转发到外部域名 转发后删除 标记已读”的规则得分 40 25 20 15 100直接判为 CRITICAL属于需要立即处置的强信号。每条规则的输出包含rule_id、displayName、isEnabled、conditions、forward_to、external_forwards等完整字段可直接落库用于证据固定。6.2 邮箱级转发与自动答复检查check_mailbox_forwarding(token, user_id)agent.py调用GET /users/{user_id}/mailboxSettings检查automaticRepliesSetting的status是否为disabled之外的值即自动答复被启用、externalAudience指向的外部受众以及语言/时区设置。该函数用于发现邮箱层面的长期转发或异常自动答复——攻击者可能利用自动答复向外部泄露信息或维持受害者身份的“在线假象”。七、OAuth 授权审计识别高危险权限应用check_oauth_grants(token)agent.py调用GET /oauth2PermissionGrants枚举租户内全部 OAuth 授权consent grants并针对以下高危险 scope 进行命中检测Mail.Read/Mail.ReadWrite读取/读写邮箱邮件外泄的直接通道Mail.Send以用户身份发送邮件BEC 钓鱼转发的必备权限Files.ReadWrite.All读写全部文件MailboxSettings.ReadWrite读写邮箱设置可反向用于篡改转发规则。每个命中项输出client_id、consent_type、principal_id、high_risk_scopes、all_scopes风险分 min(命中高危险 scope 数 × 20, 100)并按风险分降序排列。该功能可直接用于发现“某个从未见过的新应用突然被授予 Mail.Send”——这是 OAuth 钓鱼与内部恶意应用授权的经典痕迹。八、汇总审计一键生成带时间线的 JSON 报告full_audit(token, users, days)agent.py将上述所有检查整合为一次租户级综合审计产出结构化 JSON 报告{ audit_type: Office 365 Compromise Analysis, timestamp: ..., lookback_days: 7, summary: { suspicious_audit_events: 0, oauth_high_risk_grants: 0, forwarding_rules_found: 0, external_forwarding_rules: 0, mailboxes_scanned: 0 }, audit_events: [], oauth_findings: [], forwarding_rules: [], mailbox_settings: [] }报告结构设计要点summary提供一屏可读的威胁概览可疑审计事件数、高危险 OAuth 授权数、转发规则数、外部转发规则数、扫描邮箱数audit_events截取前 25 条、oauth_findings截取前 15 条、forwarding_rules截取前 20 条避免报告体积过大mailbox_settings汇总各邮箱的转发/自动答复配置所有事件均带timestamp可直接按时间轴拼接成入侵时间线timeline。九、CLI 实战五类命令的完整用法脚本通过 argparse 提供 5 个子命令agent.py完整的命令行接口如下与 references/api-reference.md 一致# 1. 查询可疑审计事件默认回看 7 天可指定 --days python agent.py --tenant-id T --client-id C --client-secret S audit-logs --days 7 # 2. 检查单个邮箱的收件箱转发规则 python agent.py --tenant-id T --client-id C --client-secret S inbox-rules --user userdomain.com # 3. 检查邮箱级转发/自动答复设置 python agent.py --tenant-id T --client-id C --client-secret S forwarding --user userdomain.com # 4. 审计租户内 OAuth 同意授权 python agent.py --tenant-id T --client-id C --client-secret S oauth # 5. 对多个用户执行综合入侵审计 python agent.py --tenant-id T --client-id C --client-secret S full --users user1d.com user2d.com --days 7参数说明--tenant-id、--client-id、--client-secret必选认证参数对应 Azure AD 应用注册信息--user目标用户主体名UPN如victimcontoso.com--usersfull子命令专属可传入多个 UPN逐邮箱扫描--days审计回看窗口天默认 7不带任何子命令时默认执行full审计args.command is None分支方便快速上手。运行示例full模式对两个邮箱做 14 天综合分析python agent.py --tenant-id 11111111-2222-3333-4444-555555555555 \ --client-id aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee \ --client-secret S3cret! \ full --users alicecontoso.com bobcontoso.com --days 14所有子命令均以print(json.dumps(result, indent2, defaultstr))输出格式化 JSONdefaultstr保证 datetime 等对象可被安全序列化。十、Graph 端点与权限对照速查下表汇总了本技能使用的全部 Microsoft Graph 端点及其所需权限来源references/api-reference.md端点方法所需权限用途/auditLogs/directoryAuditsGETAuditLog.Read.All查询目录/运维审计事件/users/{id}/mailFolders/inbox/messageRulesGETMailboxSettings.Read枚举收件箱规则/users/{id}/mailboxSettingsGETMailboxSettings.Read检查邮箱级设置/自动答复/oauth2PermissionGrantsGETDirectory.Read.All枚举 OAuth 授权结合 api-reference.md 的依赖说明应用注册至少需要AuditLog.Read.All、MailboxSettings.Read、Mail.Read三项权限若需要运行oauth子命令还需授予Directory.Read.All。建议遵循最小权限原则仅按需授权。十一、输出解读与研判要点技能定义的预期输出是一份 JSON 报告列出转发规则、委派变更、OAuth 授权与带风险评分的可疑审计事件以及按受影响邮箱组织的入侵指标时间线。实际研判时可参考以下优先级CRITICAL 级转发规则风险分 ≥ 70外部转发 删除/已读组合是确定的邮件外泄信号应立即禁用规则并重置凭据新增邮箱委派Add-MailboxPermission、Add-RecipientPermission对照变更发起者是否为正常管理员非工作时间或来自非管理 IP 的变更高度可疑OAuth 高危险授权新出现的client_id持有Mail.Send/Mail.ReadWrite时需核对是否为正规应用否则视为已遭攻陷时间线串联将audit_events中的时间戳与转发规则创建时间、OAuth 授权时间对齐往往能还原攻击者“初始访问 → 建立持久化 → 外泄”的完整链条。十二、局限性与注意事项审计日志延迟Office 365 统一审计日志存在事件投递延迟实时性有限回看窗口建议不小于 7 天审计日志保留策略目录审计的可查询范围受租户订阅与保留策略限制长周期取证需配合归档应用权限边界脚本以应用身份运行需要预先在 Azure AD 注册并授予足够的应用权限且角色需为 Global Reader / Security Reader 级别误报处理企业内部合法的邮件归档、团队共享邮箱同样会产生转发类规则建议结合additionalDetails与发起者身份做二次研判安全使用边界本技能定位为授权环境下的安全审计/威胁狩猎工具应仅在获得授权的租户中运行。十三、相关资源导航技能主文档SKILL.md可执行实现scripts/agent.pyAPI 与命令参考references/api-reference.mdMITRE ATTCK 覆盖清单ATTACK_COVERAGE.md其中 T1114.002 邮箱转发规则与 T1098.002 账户操控由本技能及同类技能覆盖MITRE ATTCK Navigator 层文件mappings/attack-navigator-layer.json含 T1098.002、T1114.002 等技术的映射记录仓库将该技能置于 29 个安全领域之一的云安全子域subdomain: cloud-security遵循 Apache-2.0 许可可直接作为 SOC 威胁狩猎工具链的组成部分使用。【免费下载链接】Anthropic-Cybersecurity-Skills817 structured cybersecurity skills for AI agents · Mapped to 6 frameworks: MITRE ATTCK, NIST CSF 2.0, MITRE ATLAS, D3FEND, NIST AI RMF MITRE F3 (Fight Fraud) · agentskills.io standard · Works with Claude Code, GitHub Copilot, Codex CLI, Cursor, Gemini CLI 20 platforms · 29 security domains · Apache 2.0项目地址: https://gitcode.com/GitHub_Trending/an/Anthropic-Cybersecurity-Skills创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价