拓冰建站拓冰建站
首页 / 资讯中心 / 正文

Anthropic-Cybersecurity-Skills 之 IOC 收集代理:从正则提取到 STIX 2.1 分发的 API 参考与实战指南

Anthropic-Cybersecurity-Skills 之 IOC 收集代理从正则提取到 STIX 2.1 分发的 API 参考与实战指南【免费下载链接】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 中collecting-indicators-of-compromise技能的 API 参考文档 展开系统讲解其核心实现agent.pyIOC Collection Agent从非结构化文本/文件中用正则提取 IOCsIP、域名、哈希、URL通过 VirusTotal、MalwareBazaar、AbuseIPDB 三路 API 完成情报增强计算 0–100 置信度评分最终导出 STIX 2.1 Indicator Bundle。读者学完后将掌握该技能配套代理的 CLI 用法、每个函数的行为与边界、三类外部 API 的鉴权与调用细节、正则与 STIX Pattern 的映射规则以及如何把它接入完整的事件响应 IOC 分发流程。1. 技能与代理概览collecting-indicators-of-compromise是仓库中 817 个结构化网络安全技能之一见 index.json定位为incident-response子域覆盖的 ATTCK 战术技术包括 T1071.001/T1071.004应用层与 DNS 协议通信、T1053.005计划任务持久化、T1547.001启动项持久化、T1059.001PowerShell 执行、T1041应用层协议外传并与 NIST CSF 2.0 的RS.MA-01、RS.MA-02、RS.AN-03、RC.RP-01等响应/恢复控制对齐见 SKILL.md 的 front-matter。其配套的 IOC Collection Agentagent.py是一条端到端流水线从文本/文件中用正则提取 IOCs → 调用外部威胁情报 API 增强上下文 → 按检测证据计算置信度 → 以 STIX 2.1 Bundle 形式导出同时打印一份人类可读的 IOC 报告。该脚本的完整流程、函数签名与外部 API 参数正是 API 参考文档 的主体内容下面逐节展开。2. 依赖与环境准备API 参考文档明确列出两项第三方依赖二者均被 agent.py 直接引用包版本要求用途requests2.28发起 VirusTotal / MalwareBazaar / AbuseIPDB 的 API 增强调用源码中requests.get/requests.poststix23.0构建 STIX 2.1Indicator对象与Bundle源码中from stix2 import Indicator, Bundle安装命令pip install requests2.28 stix23.0运行前提与限制外部 API 凭证VirusTotal 与 AbuseIPDB 需要 API KeyMalwareBazaar 公开接口无需鉴权详见第 4 节表格。网络可达性增强阶段需要能访问virustotal.com、mb-api.abuse.ch、api.abuseipdb.com。超时控制源码中三处请求均设置了timeout30agent.py调用方应确保运行环境允许 30 秒内完成单次外部请求否则会抛异常中断。提示脚本模块级调用logging.basicConfig(levellogging.INFO)运行时会输出Extracted %d IOCs from text input、VT enrichment for %s: %d malicious detections等关键日志便于追踪每类 IOC 的提取与增强结果agent.py。3. CLI 用法与参数说明API 参考文档给出的两条典型命令python agent.py --input-file incident_report.txt --vt-key key --output iocs.json python agent.py --input-text C2 at 185.220.101.42 hash a1b2c3... --output iocs.json对照 agent.py 的argparse定义完整参数为参数默认值说明--input-file无从指定文件读取内容并提取 IOCs读取时errorsignore容忍非 UTF-8 字节--input-text无直接从命令行传入的文本中提取 IOCs--vt-key无VirusTotal API Key仅传入时才对 IPv4 做 VT 增强--outputioc_bundle.jsonSTIX Bundle 输出路径执行逻辑agent.py若提供--input-file则调用extract_iocs_from_file否则若提供--input-text则调用extract_iocs_from_text二者优先级为 file 优先对每个提取出的 IOC 构造{type, value, confidence: 50}条目对 IPv4且传入了--vt-key调用 VirusTotal 增强对 SHA-256/MD5 哈希无条件调用 MalwareBazaar 增强公开接口调用score_ioc依增强结果刷新置信度并附加enrichment字段打印报告并导出 STIX Bundle。注意AbuseIPDB 增强函数enrich_domain_abuseipdb虽在 API 参考中列出但当前 agent.py 的main()流程中尚未接线调用若需对域名做 AbuseIPDB 增强可在主流程中按 IPv4 相同的模式扩展。4. 核心函数逐一解析API 参考文档列出 7 个关键函数全部在 agent.py 中有对应实现4.1extract_iocs_from_text(text)用 5 条预编译正则从非结构化文本中提取 IPv4、域名、SHA-256、MD5、URL并去重set()返回形如{ipv4: [...], domain: [...], ...}的字典agent.py。正则定义见第 6 节。提取总数通过sum(len(v) for v in iocs.values())统计并记录日志。4.2extract_iocs_from_file(file_path)以errorsignore方式读取文件全文兼容报告文本、日志文件等agent.py随后委托给extract_iocs_from_text。适用于 SIEM 导出、沙箱报告、邮件头文本等输入。4.3enrich_ip_virustotal(ip_address, api_key)调用 VirusTotal v3GET /api/v3/ip_addresses/{ip}请求头携带x-apikeyagent.py。成功后返回{ ip: ip, malicious: last_analysis_stats.malicious, country: ..., asn: ..., as_owner: ... }失败时返回{ip: ip, error: status_code}此时score_ioc会因取不到malicious而回落到默认分。4.4enrich_hash_malwarebazaar(file_hash)对 MalwareBazaar 公开接口https://mb-api.abuse.ch/api/v1/发起POST数据为{query: get_info, hash: file_hash}无需鉴权agent.py。当query_status ok时返回{ hash: file_hash, family: signature or unknown, file_type: ..., tags: [...], first_seen: ... }未命中时返回{hash: ..., status: not_found}。恶意软件家族签名signature是后续评分的关键证据。4.5enrich_domain_abuseipdb(domain, api_key)对 AbuseIPDBGET /api/v2/check请求头Key: api_key、Accept: application/json参数ipAddress传域名agent.py。返回abuse_confidence滥用置信分、total_reports举报次数、country等。注意该接口本质按 IP 查询传入域名时以域名解析结果为准调用前应确认域名确实可解析。4.6score_ioc(ioc_type, enrichment_data)0–100 置信度评分规则agent.pyIOC 类型条件置信度ipv4VirusTotal 恶意检出数 ≥ 1095ipv4恶意检出数 ≥ 580ipv4恶意检出数 ≥ 160ipv4无恶意检出默认30sha256/md5MalwareBazaar 返回了非unknown的家族签名95sha256/md5未命中或家族未知50其他类型domain/url兜底50从实现看IP 评分完全依赖 VT 检出量哈希评分依赖 MalwareBazaar 家族签名这与 SKILL.md 中「Confidence Score 表示分析者对 IOC 确实恶意的确信程度」的定义一致。4.7export_stix_bundle(iocs_with_scores, output_path)通过pattern_map把每种 IOC 类型映射为 STIX Pattern构造Indicator对象含name、pattern、pattern_typestix、valid_from、confidence、labels[ioc_type]打包成Bundle后以bundle.serialize(prettyTrue)写盘agent.py。valid_from取datetime.utcnow()的 ISO 8601 格式未传入的条目confidence默认 50。4.8 辅助函数generate_ioc_reportAPI 参考未单列但 agent.py 中它在导出前打印格式化报告按类型分组、统计数量、列出每种前 10 条值截断 60 字符并附置信度便于人工快速审阅。5. 外部 API 一览API 参考文档汇总了三路增强 API实现细节见第 4 节APIEndpoint鉴权用途VirusTotal v3/api/v3/ip_addresses/{ip}请求头x-apikeyIP 信誉恶意检出数、ASN、国家MalwareBazaarhttps://mb-api.abuse.ch/api/v1/无哈希元数据家族、类型、标签AbuseIPDB/api/v2/check请求头Key域名/IP 滥用信誉滥用置信分、举报数6. IOC 类型、正则与 STIX Pattern 映射API 参考文档给出的核心映射表在 agent.py 中逐一有实现并用于export_stix_bundle的pattern_mapagent.py类型正则表达式STIX Patternpattern_map生成IPv4\b(?:\d{1,3}\.){3}\d{1,3}\b[ipv4-addr:value ...]Domain\b(?:[a-zA-Z0-9-]\.)[a-zA-Z]{2,}\b[domain-name:value ...]SHA-256\b[a-fA-F0-9]{64}\b[file:hashes.SHA-256 ...]MD5\b[a-fA-F0-9]{32}\b[file:hashes.MD5 ...]URLhttps?://[^\s][url:value ...]值得注意的实现细节IPv4 正则未做 0–255 段范围校验\d{1,3}允许999.999.999.999这类假阳性生产环境可叠加校验逻辑域名正则要求至少两级[a-zA-Z]{2,}结尾不会把裸单词当域名SHA-256 与 MD5 通过长度 64/32 区分且大小写不敏感URL 正则要求http://或https://前缀[^\s]排除空白与常见引号/尖括号。7. 输出产物STIX 2.1 Bundleexport_stix_bundle产出的 Bundle 由多个Indicator组成单个指标的结构与 SKILL.md 中 Step 6 给出的共享示例一致{ type: indicator, spec_version: 2.1, id: indicator--a1b2c3d4-e5f6-7890-abcd-ef1234567890, created: 2025-11-15T18:00:00Z, modified: 2025-11-15T18:00:00Z, name: Qakbot C2 Server IP, indicator_types: [malicious-activity], pattern: [ipv4-addr:value 185.220.101.42], pattern_type: stix, valid_from: 2025-11-15T14:23:00Z, confidence: 95, labels: [c2, qakbot], object_marking_refs: [marking-definition--f88d31f6-486f-44da-b317-01333bde0b82] }代理生成的Indicator与示例的对应关系namef{ioc_type}: {ioc[value]}、pattern由pattern_map生成、valid_from为当前 UTC 时间、confidence来自评分、labels[ioc_type]。该 Bundle 可进一步推送至 MISP、OpenCTI 或 TAXII 服务器完成共享对应 SKILL.md 的 Step 6。8. 端到端接入从事件响应到情报分发API 参考文档聚焦于代理本身而 SKILL.md 给出了它在完整 IOC 生命周期中的定位二者配合使用效果最佳确定 IOC 类别从事件证据中收集网络IP、域名、URL、JA3/JA3S、User-Agent、DNS 查询模式、主机文件哈希、路径、注册表键、计划任务、Mutex、命名管道、邮件发件人、主题、附件、内嵌 URL、SPF/DKIM/DMARC 异常三类指标提取用 SIEM 查询如 Splunkindexfirewall actionblocked | stats count by dest_ip、内存取证Volatilitywindows.netscan与沙箱报告等产出原始素材交给agent.py自动正则化提取增强由本代理调用 VirusTotal / MalwareBazaar / AbuseIPDB 补充检出数、ASN、归属、家族签名、首见时间等上下文评分排序score_ioc输出 0–100 置信度对照 SKILL.md 的五档标准90–100 Confirmed / 70–89 Highly Suspicious / 50–69 Suspicious / 30–49 Unconfirmed / 0–29 Likely Benign人工复核分发把导出的 STIX Bundle 推给防火墙/IPS、DNS sinkhole、EDR、邮件网关、SIEM、Web 代理等防御系统并按共享协议TLP 分级、ISAC 渠道对外分发共享提交 MISP、ISAC 门户与 TAXII 服务器。实战陷阱来自 SKILL.md 的常见场景共享包中误含内网 IP 或主机名信息泄露应限制在 TLP:AMBER 的 IOC 误标为 TLP:WHITE人类可读报告中 URL/域名未做 defang如evil[.]com把合法 CDN 或云厂商 IP 当作恶意 IOC 共享。9. 从源码结构可推断的扩展方向AbuseIPDB 未接线enrich_domain_abuseipdb已实现但main()未调用可仿照 IPv4 分支为domain类型增加 AbuseIPDB 增强评分策略硬编码score_ioc的阈值10/5/1 与 95/80/60/30目前是代码内常量可抽取为配置项以适配不同组织风险偏好正则可加固IPv4 段范围校验、域名 IDN/国际化支持、哈希与域名共现时的歧义消解均可作为后续增强点输出可扩展除 STIX Bundle 外可按generate_ioc_report的输出格式生成供邮件分发的可读报告。10. 相关资源API 参考references/api-reference.md技能说明工作流、评分标准、共享规范SKILL.md源码实现scripts/agent.py许可证LICENSEApache-2.0仓库索引index.json【免费下载链接】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),仅供参考
分享:

看完干货,该让你的企业上线了

免费需求沟通 · 48 小时内出具建站方案 · 河南本地可上门