Business Email Compromise 检测实战:基于 Anthropic-Cybersecurity-Skills 的 BEC 邮件欺诈识别方案
【免费下载链接】Anthropic-Cybersecurity-Skills817 structured cybersecurity skills for AI agents · Mapped to 6 frameworks: MITRE ATT&CK, 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
导读
Business Email Compromise(BEC,商业电子邮件欺诈)是一种不依赖恶意链接或附件、纯靠社会工程学完成的资金欺诈攻击,攻击者冒充高管、供应商或可信伙伴,诱导员工汇款、泄露敏感数据或篡改付款信息。本文以仓库中的 detecting-business-email-compromise/SKILL.md 为核心,结合其脚本实现与参考资料,系统讲解从邮件网关规则、行为分析到财务流程控制的全链路 BEC 检测方案,并给出可直接运行的检测引擎与评分模型,帮助你为 SOC 分析师与 AI Agent 构建可落地的 BEC 检测能力。
认识 BEC:为什么它比传统钓鱼更难检测
传统钓鱼攻击依赖恶意链接或附件投递载荷,而 BEC 攻击恰恰相反——邮件中通常没有任何可被沙箱捕获的恶意元素,攻击者仅靠"伪造身份 + 制造紧迫感 + 引导变更付款路径"三件套完成欺诈。这一特性决定了 BEC 检测不能只靠邮件网关的静态信誉库,必须叠加行为分析(Behavioral Analytics)与财务流程控制(Financial Process Controls)才能形成有效防御。
按照 FBI IC3 的分类,BEC 攻击可归纳为五类,SKILL.md 中均有对应说明:
| 类型 | 攻击模式 | 典型场景 |
|---|---|---|
| CEO Fraud(CEO 欺诈) | 冒充 CEO 要求紧急汇款 | "我在开会,立即向某账户转账 $50,000" |
| Account Compromise(账户盗用) | 员工邮箱被控,向供应商发付款请求 | 使用真实员工邮箱索要账款 |
| False Invoice Scheme(虚假发票) | 假"供应商"发来变更银行信息的发票 | 发票上的收款账户被替换 |
| Attorney Impersonation(律师冒充) | 冒充法务顾问处理机密转账 | "机密法律事务,勿与他人讨论" |
| Data Theft(数据窃取) | 向 HR 索要 W-2、税务表单或 PII | 冒充 CFO 索要全员薪资数据 |
与这些攻击类型对应的 MITRE ATT&CK 技术映射见 SKILL.md 的元数据与 references/standards.md,涵盖 T1566.002(Spearphishing Link)、T1534(Internal Spearphishing)、T1114.003(Email Forwarding Rule)与 T1098.002(Additional Email Delegate Access)等。
核心检测指标:什么特征说明这封邮件可疑
SKILL.md 给出了 BEC 邮件的关键检测指标,这些指标在脚本实现中大多有对应的正则模式与评分逻辑:
- 紧迫与保密话术:"confidential"、"do not discuss with others"、"act now"、"deadline today";
- 新增或变更的付款指令:出现新的银行账户、路由号、收款方式;
- 高管沟通模式异常:与收件人日常沟通模式不符;
- 显示名与邮箱域不一致:显示名是 CEO,但发件域是外部域名;
- Reply-To 与 From 地址不一致:回复目标域与发件域不同;
- 首次通信模式:发件人与收件人此前从未通信;
- 礼品卡或加密货币请求:要求购买礼品卡或转移 BTC。
在 scripts/agent.py 中,这些指标被固化为可执行的检测模式,例如BEC_URGENCY_PATTERNS将话术分为紧迫类、保密类、金融类、礼品卡类、高管指令类与账户变更类;EXECUTIVE_TITLES列出 ceo、cfo、president、director 等高管头衔,用于显示名欺骗检测。
四步检测工作流:从邮件网关到财务控制
SKILL.md 给出完整的 BEC 检测工作流,分为四个步骤:
Step 1:配置 BEC 专属邮件规则
- 标记来自外部域名但使用 VIP 显示名的邮件;
- 检测金融关键词与紧迫话术的组合;
- 对首次联系财务/会计人员的发件人告警;
- 检查 Reply-To 域不匹配。
Step 2:部署行为分析
- 为每位用户建立正常通信模式基线;
- 检测异常请求(异常收件人、异常时间、异常请求类型);
- 监控邮件转发规则变更(对应 T1114.003)。
Step 3:实施财务控制
- 超过阈值的电汇需双人授权(Dual-authorization);
- 付款信息变更必须走带外验证(Out-of-band verification,如电话回拨);
- 建立供应商付款变更验证流程;
- 对财务团队进行 BEC 警示标识培训。
Step 4:监控账户盗用
- 检测邮箱登录位置的"不可能旅行"(Impossible Travel);
- 对转发规则创建行为告警;
- 监控邮箱委派(Delegation)变更;
- 检查是否有收件箱规则隐藏 BEC 相关邮件。
检测流水线落地:一个可执行的 BEC 判定流程
references/workflows.md 给出了 BEC 检测流水线的完整判定流程,它既是编写检测规则的蓝图,也直接映射了脚本引擎的判定逻辑:
入站邮件 → 显示名是否匹配 VIP? ├─ 是 + 外部域名 → 高危告警(疑似 CEO 欺诈) ├─ 否 → 继续常规检查 金融关键词(wire transfer / payment / invoice)? ├─ 叠加紧迫话术(urgent / confidential / today)→ 升级标记,交由财务复核 Reply-To 域与 From 域不一致?→ 高危,疑似 BEC 通信模式异常?(首次联系财务/HR、非常规时段)→ 中危,需人工验证 最终处置: ├─ BLOCK:高置信度 BEC ├─ QUARANTINE:中等置信度 ├─ TAG:为收件人添加警示横幅 └─ DELIVER:低风险这个流程同时体现在 scripts/agent.py 的analyze_email()函数中:先解析 .eml 文件,再依次执行 SPF/DKIM/DMARC 认证检查、显示名欺骗检查、Reply-To 不匹配检查与紧迫话术检测,最后汇总为 0-100 的 BEC 评分。
源码级实现:agent.py 与 process.py 双引擎
仓库为 BEC 检测提供了两套可运行的 Python 实现,分别对应"轻量单文件分析"与"完整检测引擎"两个场景。
agent.py:邮件头解析与评分
agent.py 基于 Python 标准库email模块解析 .eml 文件,核心能力包括:
check_spf_dkim_dmarc():解析Authentication-Results头,输出 spf/dkim/dmarc 三者的 pass/fail/none 状态;check_display_name_spoofing():从 From 头分离显示名与邮箱地址,与 VIP 名单比对,判断是否出现"显示名匹配高管但来自外部域"的迹象;check_reply_to_mismatch():比对 From 与 Reply-To 的域名是否一致;detect_urgency_language():用多组正则匹配紧迫与保密话术;calculate_bec_score():加权评分模型——spf=fail 加 25 分、dkim=fail 加 20 分、dmarc=fail 加 30 分、显示名欺骗加 35 分、Reply-To 不匹配加 25 分、紧迫话术每命中加 10 分(上限 40 分),总分封顶 100。
评分结果映射为四级风险等级:CRITICAL(≥70)/ HIGH(≥50)/ MEDIUM(≥30)/ LOW。
命令行用法如下(见 references/api-reference.md):
python agent.py --email-file suspicious.eml --vip-names "John Smith" "Jane CEO" python agent.py --scan-dir /var/mail/quarantine/ --vip-names "CFO Name"其中--vip-names可接收多个高管显示名,--scan-dir支持批量扫描目录下所有 .eml 文件。
process.py:企业级检测引擎
process.py 提供了更完整的检测引擎,采用detect_bec()主函数对邮件执行 7 项检查:
- VIP 显示名冒充:显示名命中 VIP 名单但发件域为外部域,置信度 0.9,判为 ceo_fraud,加 35 分;
- 金融关键词:命中 wire transfer、invoice、routing number、W-2 等 18 类词,加 5-20 分;
- 紧迫关键词:命中 urgent、confidential、do not share 等,加 5-15 分;
- 金融+紧迫组合:两类同时命中即为强 BEC 信号,加 20 分;
- 权威指令话术:"I need you to"、"I'm in a meeting"、"don't call me" 等与金融或紧迫内容叠加时,加 15 分;
- Reply-To 不匹配:回复域与发件域不一致,置信度 0.85,判为 account_compromise,加 20 分;
- 外部发件人联系财务/HR:外部域发件人发给 finance/accounting/payroll/hr 角色,判为 vendor_fraud,加 10 分。
评分结果自动给出处置建议:
| BEC 评分 | 处置动作 |
|---|---|
| ≥ 60 | BLOCK and alert SOC |
| 40-59 | QUARANTINE for manual review |
| 20-39 | TAG with warning banner |
| < 20 | DELIVER normally |
引擎还通过置信度加权投票判定最可能的 BEC 类型(ceo_fraud / payment_fraud / vendor_fraud / account_compromise),并用format_bec_report()输出结构化文本报告。支持detect(单封邮件,可传 --email-json 或逐字段参数)与analyze-log(批量分析邮件日志,--json输出结构化结果)两个子命令。
邮件头 API 参考:解析认证信息的底层机制
BEC 检测的底层是邮件头的正确解析。references/api-reference.md 总结了 Pythonemail库的用法:
import email from email import policy with open("message.eml") as f: msg = email.message_from_file(f, policy=policy.default) msg.get("From") # 发件人头 msg.get("Reply-To") # 回复头 msg.get("Authentication-Results") # SPF/DKIM/DMARC 结果 body = msg.get_body(preferencelist=("plain", "html")) body.get_content() # 解码后的正文Authentication-Results头是判断邮件是否被伪造的关键证据,其取值含义如下:
| 结果 | 含义 |
|---|---|
spf=pass | 发件 IP 获得域 SPF 记录授权 |
spf=fail | 发件 IP 不在 SPF 记录中 |
dkim=pass | DKIM 签名有效 |
dkim=fail | DKIM 签名无效或缺失 |
dmarc=pass | SPF 或 DKIM 与 From 域对齐 |
dmarc=fail | SPF 与 DKIM 均未对齐 |
当一封"高管邮件"出现dmarc=fail时,基本可以判定显示名与真实发送者不一致。若需在 Microsoft 365 环境中以 Graph API 拉取邮件认证头,可参考仓库中给出的internetMessageHeaders过滤查询方式。
规则落地:检测规则表与配置模板
references/standards.md 汇总了可直接落到邮件网关或 SIEM 的检测规则优先级:
| 规则 | 描述 | 优先级 |
|---|---|---|
| VIP impersonation | 内部 VIP 显示名 + 外部发件域 | Critical |
| Payment language | 电汇/付款关键词 + 紧迫话术 | High |
| Reply-to mismatch | Reply-to 域与 From 域不同 | High |
| First-time sender | 与收件人此前无通信记录 | Medium |
| Forwarding rule | 新建指向外部地址的自动转发规则 | Critical |
| Gift card request | 请求购买礼品卡 | High |
| Vendor change | 付款信息变更通知 | High |
部署时可参考 assets/template.md 中的 BEC 检测与响应模板,填写 VIP 保护名单(姓名/职位/邮箱域)、已部署规则(条件/动作/状态)、财务控制清单与事件响应联系人表。模板中预设的规则动作组合(如 VIP 冒充 → 隔离 + 告警、金融+紧迫 → 打标 + 告警、Reply-To 不匹配 → 打标 + 记录)与 process.py 的评分处置建议一一对应,可直接用作上线配置底稿。
BEC 事件响应:30 分钟黄金处置流程
检测到或收到举报后,references/workflows.md 给出了分阶段的响应流程:
- 立即动作(前 30 分钟):隔离邮件;搜索是否还有类似邮件发给了其他收件人;通知受影响用户切勿执行请求。
- 调查(接下来 2 小时):解析邮件头追溯真实来源;检查用户是否已合规(查已发送文件夹);若已付款立即启动银行撤回;排查账户盗用(转发规则、登录异常)。
- 遏制:封禁发件域/IP;若账户被盗用则强制改密、吊销会话;移除恶意转发规则;通知财务暂停待付款项。
- 恢复:与银行协作追回资金;向 FBI IC3(ic3.gov)报案;通知相关方;更新检测规则;对受影响员工开展针对性培训。
对供应商付款信息变更,务必遵守"三不原则":不使用邮件中提供的联系方式,不在电话确认前处理变更,不跳过双人授权。正确做法是:从既有记录中查找供应商联系人 → 拨打已知号码核实 → 确认后走双授权流程;无法联系则暂缓付款并上报。
技术映射:Skill 与六大框架的对应关系
作为结构化安全技能,本 Skill 在元数据中声明了与多个框架的映射(见 SKILL.md 头部),并在 mappings/attack-navigator-layer.json 的检测覆盖层中登记了该技能。其中 MITRE ATT&CK 侧覆盖 T1566.002(Spearphishing Link)、T1534(Internal Spearphishing)、T1114.002(Email Collection: Exchange Email)、T1657(Financial Theft)与 T1078.004(Valid Accounts: Cloud Accounts);MITRE F3(Fight Fraud)侧覆盖 F1032(Impersonate Official)、F1036(New Vendor Setup)、F1005.006(Change of Payment Details)与 F1025.003(Wire Transfer);NIST CSF 侧对应 PR.AT-01(培训)、DE.CM-09(通信监控)、DE.AE-02(异常事件分析)与 RS.CO-02(沟通协调)。这套映射既可用于检测覆盖度审计,也可用于向管理层说明 BEC 防御在合规框架中的位置。
小结
BEC 防御的本质是"身份信任 + 资金指令"双重校验:技术上用 SPF/DKIM/DMARC 与显示名比对戳穿伪造身份,用行为分析识别异常通信模式,用财务流程控制(双人授权、带外验证、供应商变更回调)守住资金出口。本仓库的 SKILL.md 与配套脚本将这套方法论沉淀为可执行的规则、评分引擎与响应流程,既可直接在邮件网关上落地,也可作为 AI Agent 处理疑似 BEC 邮件的决策依据。
【免费下载链接】Anthropic-Cybersecurity-Skills817 structured cybersecurity skills for AI agents · Mapped to 6 frameworks: MITRE ATT&CK, 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),仅供参考