2026/9/13 22:34:11

邮件安全网关 API 实战:用 Python 与厂商接口检测鱼叉式钓鱼邮件

邮件安全网关 API 实战:用 Python 与厂商接口检测鱼叉式钓鱼邮件 邮件安全网关 API 实战用 Python 与厂商接口检测鱼叉式钓鱼邮件【免费下载链接】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 仓库中detecting-spearphishing-with-email-gateway技能及其api-reference.md参考文档为主体系统讲解如何通过 Pythonemail模块解析 EML 文件、解读 SPF/DKIM/DMARC 认证头并调用 Microsoft Defender for Office 365、Proofpoint TAP、Mimecast 三大邮件安全网关SEG的开放 API 完成威胁评估、消息检索与 URL 解码。读完本文你将掌握一套EML 本地取证 网关 API 自动化的鱼叉式钓鱼检测闭环并能在实战中直接复用本文的命令与代码。一、为什么鱼叉式钓鱼需要邮件网关参与鱼叉式钓鱼Spearphishing针对特定个体使用经过研究的高度个性化内容绕过通用垃圾邮件过滤器。它通常具备以下特征见 SKILL.md定向收件人通常瞄准高管或财务人员研究过的借口引用真实项目、同事或事件身份冒充伪造可信发送者CEO、供应商、合作伙伴低流量邮件数量极少规避基于模式的检测紧迫语气制造压力促使目标快速行动。Microsoft Defender for Office 365、Proofpoint、Mimecast、Barracuda 等邮件安全网关提供行为分析、URL 引爆detonation、附件沙箱和冒充检测等高级能力。本仓库的技能元数据将该场景映射到 MITRE ATTCK 的T1566.001鱼叉式钓鱼附件、T1566.002鱼叉式钓鱼链接、T1204.001/002用户执行以及 MITRE F3 反欺诈框架的T1672邮件欺骗、F1031冒充账户持有人等技法是整个仓库 817 项结构化安全技能中 phishing-defense 领域的代表性一环。二、EML 本地解析Python email 模块实战api-reference.md 首先给出鱼叉式钓鱼取证的第一步——解析邮件原始文件.eml。这是调用任何网关 API 之前的基础因为你需要先理解邮件本身的认证状态与头信息。2.1 解析 EML 文件import email from email import policy with open(message.eml, rb) as f: msg email.message_from_binary_file(f, policypolicy.default)使用policy.default可以正确处理 RFC 2047 编码的主题、非 ASCII 字符集和多部分邮件。仓库配套脚本 scripts/agent.py 在此基础上封装了parse_email_headers()一次性抽取From、To、Subject、Reply-To、Return-Path、Received-SPF、DKIM-Signature、Authentication-Results、X-Mailer、Message-ID等安全相关头字段——这与下表的安全头清单一一对应。2.2 安全头清单HeaderPurpose用途Received-SPFSPF 校验结果Authentication-ResultsSPF、DKIM、DMARC 组合结果DKIM-SignatureDKIM 签名信息ARC-Authentication-ResultsARC 认证链结果用于转发邮件X-Mailer发送所用客户端Return-Path信封发送者envelope sender2.3 Authentication-Results 取值解读Authentication-Results是邮件认证的判决书由收到邮件的接收方如 Gmail、企业网关写入。典型示例如下Authentication-Results: mx.google.com; dkimpass header.dexample.com; spfpass smtp.mailfromexample.com; dmarcpass在 scripts/agent.py 的check_authentication()中正是通过在该头中检索spffail、spfsoftfail、dkimfail、dmarcfail子串来判定认证失败并额外检查DKIM-Signature是否存在、以及 Reply-To 域名是否与 From 域名不一致。注意这些值由发送路径中最后一个信任的 MTA 写入因此分析时应结合 Received 链确认写入者可信。三、发件域名认证核查SPF、DKIM、DMARC鱼叉式钓鱼高度依赖域名伪造与冒充因此对发送域执行 SPF/DKIM/DMARC 三重验证是检测的核心。3.1 SPF 记录查询dig TXT example.com | grep vspf1 # vspf1 include:_spf.google.com ~allSPF 记录声明哪些 IP 被授权代表该域发送邮件。上述示例表示 example.com 委托_spf.google.com中的 IP 段发送~all表示其余发送者软失败。SPF 校验结果的含义ResultMeaningpass授权发送者fail未授权建议拒绝softfail未授权可接收但加标记neutral无明确断言none无 SPF 记录3.2 DKIM 验证opendkim-testkey -d example.com -s selector -vvvDKIM 使用发件方私钥对邮件签名接收方通过 DNS 获取公钥验证。opendkim-testkey用-d指定域名、-s指定选择器selector、-vvv输出详细调试信息用于确认 DNS 中发布的 DKIM 密钥是否正确、签名是否能通过验证。3.3 DMARC 记录dig TXT _dmarc.example.com # vDMARC1; preject; ruamailto:dmarcexample.comDMARC 策略记录在_dmarc子域下preject表示接收方应拒绝 SPF/DKIM 均未对齐的邮件rua指定聚合报告的接收邮箱。DMARC 是唯一允许发件域强制下游拒绝或隔离伪造邮件的机制是网关执行策略的重要依据。可在实战中结合 scripts/process.py 的认证检查逻辑该模块对authentication_results中的spffail/softfail加 20 分、dkimfail加 20 分、dmarcfail加 25 分并标记为critical级别指标。四、网关 API 自动化三大厂商接口调用在完成 EML 本地解析后可以进一步通过网关厂商的开放 API 将检测自动化。api-reference.md 给出了三个核心接口。4.1 Microsoft Defender for Office 365邮件威胁评估通过 Microsoft Graph API 提交邮件威胁评估请求让服务端对指定邮件进行检测并返回评估结果POST https://graph.microsoft.com/v1.0/informationProtection/threatAssessmentRequests Authorization: Bearer {token} { contentType: mail, expectedAssessment: block, category: phishing, mailInfo: { internetMessageId: message-id } }参数说明contentTypemail表示评估对象为邮件expectedAssessment期望评估结果block表示该邮件应被阻止category威胁类别如phishingmailInfo.internetMessageId邮件的 Message-ID即 2.1 节解析出的Message-ID头。该接口适合将邮件头分析引擎如仓库中的 agent.py标记出的可疑 Message-ID 批量提交给 MDO 复核。4.2 Proofpoint TAP API获取被拦截消息Proofpoint Targeted Attack ProtectionTAP的 SIEM API 用于拉取被网关拦截的消息事件GET https://tap-api-v2.proofpoint.com/v2/siem/messages/blocked ?sinceSeconds3600 Authorization: Basic {base64_credentials}sinceSeconds3600表示只拉取过去 1 小时内的 blocked 消息认证使用 Base64 编码的账号凭据。响应中核心字段FieldDescriptionspamScore垃圾邮件置信度0-100phishScore钓鱼置信度0-100threatsInfoMap威胁详情数组含恶意载荷、URL、附件哈希等fromAddress信封发送者实战建议周期拉取该接口将phishScore高、或threatsInfoMap含已知 IOC 的消息与本地 EML 分析结果做关联用于补充漏报。4.3 Mimecast APIURL 防护解码Mimecast 会将其防护的 URL 重写为protect.mimecast.com下的长链接。要还原原始 URL 用于威胁分析调用 URL Protect 的解码接口POST https://api.mimecast.com/api/ttp/url/decode-url Authorization: MC {access-key}:{secret-key} { data: [{url: https://protect.mimecast.com/...}] }认证方式为MC {access-key}:{secret-key}请求体data数组可一次提交多条被重写的 URL。解码后得到真实目的地址再交由信誉查询或沙箱引爆判断是否为钓鱼着陆页。这一步对识别网关重写后的链接是否指向钓鱼站点至关重要。五、网关检测层的完整工作流API 调用不是孤立的它们服务于 workflows.md 描述的完整检测流水线。从源码结构看检测体系分为六个串联检测层每层都有明确职责连接过滤发送 IP 信誉、RBL/DNSBL 黑名单、限速认证校验SPF 对齐、DKIM 签名、DMARC 策略、ARC 头转发邮件冒充检测显示名与 VIP 名单比对、域相似度Levenshtein 距离、发送者信誉、首次发信分析内容分析NLP 紧迫性/社工分析、业务上下文异常、关键词匹配、语言分析URL 分析URL 信誉、域名年龄、实时引爆、重定向链跟踪、与合法站点的视觉相似度附件分析文件类型校验、沙箱引爆、宏分析、嵌入对象检测。最终由决策引擎聚合各层评分并执行策略DELIVER低风险放行/TAG加警告横幅/QUARANTINE中等风险隔离/BLOCK高风险丢弃。第 3 层的域相似度与冒充检测在仓库脚本中有完整实现可视为网关检测逻辑的可复现蓝本process.py 实现了经典的 Levenshtein 编辑距离算法process.py 实现 IDN 同形字homograph检测覆盖西里尔字母、希腊字母与拉丁字母的视觉混淆process.py 的check_domain_similarity()将距离 ≤1 判定为typosquatting拼写错误劫持、距离 ≤2 判定为相似域并区分字符增删、换位transposition等技术手法输出置信度供评分使用process.py 的detect_impersonation()将显示名与DEFAULT_VIP_NAMESCEO、CFO、CTO、CISO、President、Director 等比对。六、配置实操冒充保护、URL 保护与附件沙箱依据 SKILL.md 的 Workflow网关加固包含四个步骤Step 1配置冒充保护Impersonation ProtectionMicrosoft Defender for Office 365: Security Anti-phishing policies Impersonation settings - Enable user impersonation protection for VIPs - Enable domain impersonation protection - Add protected users (CEO, CFO, HR Director) - Set action: Quarantine message Proofpoint: Email Protection Impostor Classifier - Enable display name spoofing detection - Configure lookalike domain detection - Set Impostor threshold sensitivityStep 2配置 URL 保护启用 Safe Links / URL 重写启用点击时time-of-clickURL 引爆阻止新建域名注册时间 30 天启用 URL 重定向链跟踪。Step 3配置附件沙箱启用 Safe Attachments / 附件沙箱配置动态投递先投递正文、暂扣附件沙箱引爆超时设为 60 秒以上阻止外部发送者的宏启用 Office 文档。Step 4创建自定义检测规则——使用 scripts/process.py 分析网关日志生成自定义检测规则详见下一节。Step 5配置告警与响应冒充尝试实时告警高置信检测自动隔离用户安全提示通知与 SIEM 关联。各厂商功能对照可参考 standards.md 的功能矩阵冒充检测在 MDO 为 Anti-phishing policy、Proofpoint 为 Impostor Classifier、Mimecast 为 Brand Exploit Protect、Barracuda 为 Impersonation ProtectionURL 引爆对应 Safe Links / URL Defense / URL Protect / Link Protection附件沙箱对应 Safe Attachments / Targeted Attack Protection / Attachment Protect / Advanced Threat Protection。同时该文档给出了可配置成规则的检测指标及权重例如 VIP 显示名冒充高、相似域高与合法域相差 1-2 字符、Reply-To 与 From 不一致高、认证失败高、首次向 VIP 发信中、紧迫性关键词中。七、用仓库脚本生成与验证检测规则7.1 单邮件分析脚本 agent.pyscripts/agent.py 可对单个.eml文件或整个目录批量分析python3 agent.py suspicious.eml --output report.json python3 agent.py ./mailbox_dump/ --verbose其检测维度包括认证失败SPF/DKIM/DMARC、Reply-To 域名不匹配、正文紧迫性关键词urgent、wire transfer、invoice attached等见 agent.py、URL 使用裸 IP、超长 URL、可疑附件扩展名.exe、.scr、.bat、.ps1、.vbs、.iso、.lnk、.msi等见 agent.py以及双扩展名文件。每个指标计 15 分最终按阈值划分LOW/MEDIUM/HIGH/CRITICAL风险等级并输出 JSON 报告。7.2 网关日志检测引擎 process.pyscripts/process.py 提供四个子命令覆盖日志分析 → 单邮件检测 → 域名核查 → 规则生成的完整链路python3 process.py analyze --log-file gateway_log.json python3 process.py detect --from attackermicr0soft.com \ --from-name Microsoft Support --subject Urgent: verify your account \ --auth-results spffail; dkimfail; dmarcfail python3 process.py check-domain micr0soft.com python3 process.py rules --log-file gateway_log.json --output detection_rules.yamldetect子命令会执行六项检查并输出加权评分相似域距离 1 加 30 分、距离 2 加 15 分乘以置信度、VIP 冒充25 分、主题紧迫性最多 20 分、正文紧迫性最多 15 分、SPF/DKIM 失败各 20 分、DMARC 失败 25 分、Reply-To 不匹配 20 分check-domain子命令直接演示第 3 层的域相似度与同形字检测例如对micr0soft.com会识别出与microsoft.com的编辑距离与typosquatting手法rules子命令从历史日志中聚合指标自动生成 YAML 格式的检测规则SPEAR-0001起编号并按high/critical严重度默认关联quarantine动作——这正是 SKILL.md Step 4 中分析网关日志并生成自定义检测规则的落地点。7.3 配置模板与验证仓库还提供一份可直接套用的 配置模板包含 VIP 保护名单、冒充检测规则表、URL 保护设置如阻止 30 天内新建域名、重定向最多跟 5 跳、附件保护设置阻止.exe/.scr/.bat/.cmd/.ps1/.vbs/.js等可执行类型、告警配置以及季度复查清单。验证环节则参照 SKILL.md 的 Validation 列表冒充保护能正确识别伪造的 VIP 显示名URL 引爆能捕获测试钓鱼邮件中的恶意链接附件沙箱能检出武器化文档自定义规则能命中已知鱼叉式钓鱼模式SIEM 集成能收到网关告警。八、标准与框架对齐本技能在仓库中被系统化地映射到多个安全框架见 standards.md 与技能元数据MITRE ATTCKT1566.001鱼叉式钓鱼附件、T1566.002鱼叉式钓鱼链接、T1566.003通过服务钓鱼、T1598.002/003钓鱼获取信息、T1534内部鱼叉式钓鱼——仓库的 mappings/mitre-attack/README.md 将T1566归入 phishing-defense 技能群NISTSP 800-177 Rev.1可信邮件、SP 800-53 Rev.5 的 SI-8垃圾邮件防护、SI-3恶意代码防护以及 CSF 的 PR.AT意识与培训、DE.CM安全持续监控CIS Controls v8Control 9邮件与浏览器防护覆盖 9.1/9.2/9.3/9.6/9.7 等子项MITRE F3 v1.1T1672邮件欺骗、F1031冒充账户持有人、F1032冒充官方等反欺诈技法。这种本地脚本 网关 API 框架映射的组合使安全团队既能用开放 API 自动化取证与联动又能将检测结果对齐到行业标准形成可审计、可度量的检测覆盖。九、小结本文围绕邮件网关的鱼叉式钓鱼检测打通了三条技术链路本地 EML 解析Pythonemail模块 SPF/DKIM/DMARC 核查、网关 API 自动化MDO 威胁评估、Proofpoint TAP 拉取、Mimecast URL 解码、规则生成与验证agent.py 单邮件评分、process.py 六项加权检测与规则产出。结合仓库中的 api-reference.md、workflows.md、SKILL.md 与两份可运行脚本你可以直接在目标环境中复现这套检测逻辑并将网关配置、检测规则与 MITRE/NIST/CIS 框架对齐形成可持续迭代的防钓鱼防线。【免费下载链接】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),仅供参考