ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

基于 Anthropic-Cybersecurity-Skills 构建企业级威胁情报平台:MISP、OpenCTI、TheHive 与 Cortex 的集成实战指南

基于 Anthropic-Cybersecurity-Skills 构建企业级威胁情报平台:MISP、OpenCTI、TheHive 与 Cortex 的集成实战指南 基于 Anthropic-Cybersecurity-Skills 构建企业级威胁情报平台MISP、OpenCTI、TheHive 与 Cortex 的集成实战指南【免费下载链接】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本篇技术指南围绕仓库中building-threat-intelligence-platform技能SKILL.md展开系统讲解如何基于 Docker Compose 将 MISP、OpenCTI、TheHive、Cortex 四款开源 CTI 工具编排成统一威胁情报平台TIP覆盖情报采集、存储、分析、富化、响应与共享六大层级并给出 Feed 摄取管道、Cortex 富化工作流、STIX/TAXII 互操作与分析师仪表盘的完整可运行示例。读完本文你将具备从零设计 TIP 架构、落地数据管道并接入 SIEM 的完整实操能力。一、什么是威胁情报平台TIP为什么需要它威胁情报平台Threat Intelligence Platform, TIP是将多个 CTICyber Threat Intelligence工具部署并集成到一个统一系统中用于采集、分析、富化、共享威胁情报的集中式基础设施。在 SKILL.md 中这一技能的定位是当安全团队需要构建集中式 CTI 平台来支撑情报运营时提供架构设计与落地方法。在本仓库中该技能被归类到threat-intelligence子域并映射到 NIST CSF 的ID.RA-01、ID.RA-05风险识别与评估以及DE.CM-01、DE.AE-02连续监控与事件分析同时映射到 MITRE ATTCK 的T1071应用层协议通信、T1588.001获取恶意软件与工具的能力与T1591收集受害者组织信息。这对应 mappings/nist-csf/csf-alignment.md 中对 threat-intelligence 子域的定位情报驱动检测支撑安全团队理解威胁态势。适用场景正在部署或配置 TIP 能力需要把多个情报源与工具纳入统一平台需要建立与合规要求对齐的安全控制如 NIST CSF 的 ID/DE 类目正在建设或改进该领域的安全架构开展需要此实现支撑的安全评估。二、前置条件与依赖开始前需要准备以下环境与依赖来自 SKILL.md类别要求容器化Docker 与 Docker Compose用于部署平台各组件Python 环境Python 3.9并安装pymisp、pycti、thehive4py客户端库数据存储Elasticsearch / OpenSearch 集群消息队列Redis 与 RabbitMQ情报标准理解 STIX 2.1 数据模型与 TAXII 2.1 传输协议外部服务用于富化的 API KeyVirusTotal、Shodan、AbuseIPDB 等Python 依赖的安装方式在 process.py 中也有明确说明pip install pymisp pycti requests。该脚本对pymisp、pycti做了可选导入保护缺少某个库时对应组件会以None处理便于分步搭建时先运行部分功能。三、TIP 架构的六大核心组件SKILL.md 定义了标准 TIP 的分层架构从数据流入到情报流出形成完整闭环采集层Collection Layer从 OSINT、商业订阅与内部来源摄取 Feed存储层Storage Layer使用 Elasticsearch/OpenSearch 以 STIX 2.1 模式索引 CTI 数据分析层Analysis LayerOpenCTI 负责知识图谱分析MISP 负责 IOC 关联富化层Enrichment Layer通过 Cortex analyzers 实现 IOC 自动富化响应层Response LayerTheHive 负责案件管理与应急响应集成共享层Sharing LayerTAXII 服务器负责对外情报共享。平台集成点Integration Points各组件之间的数据流动关系来自 SKILL.mdMISP ↔ OpenCTI通过 OpenCTI MISP 连接器实现双向同步OpenCTI → TheHive高置信度指标自动生成告警/案件TheHive ↔ Cortex对案件可观测对象observables自动分析与富化全部组件 → SIEM通过 API 或 Kafka 将 IOC 实时推送到 Splunk / Elastic。对应的协议与数据格式标准可参考 standards.md组件协议数据格式MISPREST APIMISP JSON、STIX 2.1OpenCTIGraphQL APISTIX 2.1TheHiveREST APITheHive JSONCortexREST APICortex Report JSONElasticsearchREST APIJSON集成标准包括MISP 通过 HTTPS API Key 认证的 Push/Pull 同步协议OpenCTI 连接器基于 RabbitMQ 消息队列异步处理Cortex Analyzers 基于 Docker 且具有标准化输入输出SIEM 集成则支持 Syslog、Kafka、REST API 或文件导出等方式。四、Step 1使用 Docker Compose 部署平台SKILL.md 给出了完整的 Docker Compose 编排文件覆盖存储、消息队列、对象存储与四个核心组件。以下是完整配置含关键参数说明version: 3.8 services: # --- 存储层 --- elasticsearch: image: docker.elastic.co/elasticsearch/elasticsearch:8.12.0 environment: - discovery.typesingle-node - xpack.security.enabledfalse - ES_JAVA_OPTS-Xms2g -Xmx2g ports: - 9200:9200 volumes: - es-data:/usr/share/elasticsearch/data redis: image: redis:7 ports: - 6379:6379 rabbitmq: image: rabbitmq:3-management ports: - 5672:5672 - 15672:15672 minio: image: minio/minio command: server /data --console-address :9001 ports: - 9000:9000 - 9001:9001 # --- MISP --- misp: image: ghcr.io/misp/misp-docker/misp-core:latest ports: - 8443:443 environment: - MISP_ADMIN_EMAILadmintip.local - MISP_BASEURLhttps://localhost:8443 volumes: - misp-data:/var/www/MISP/app/files # --- OpenCTI --- opencti: image: opencti/platform:6.4.4 environment: - APP__PORT8080 - APP__ADMIN__EMAILadmintip.local - APP__ADMIN__PASSWORDTIPAdminPassword - APP__ADMIN__TOKENtip-opencti-token-uuid - ELASTICSEARCH__URLhttp://elasticsearch:9200 - MINIO__ENDPOINTminio - RABBITMQ__HOSTNAMErabbitmq - REDIS__HOSTNAMEredis ports: - 8080:8080 depends_on: - elasticsearch - redis - rabbitmq - minio # --- TheHive --- thehive: image: strangebee/thehive:5.3 environment: - TH_CORTEX_URLhttp://cortex:9001 ports: - 9000:9000 depends_on: - elasticsearch # --- Cortex --- cortex: image: thehiveproject/cortex:3.1.8 ports: - 9001:9001 depends_on: - elasticsearch volumes: es-data: misp-data:参数解读Elasticsearch 以single-node单节点模式运行ES_JAVA_OPTS建议按机器内存调整堆大小xpack.security.enabledfalse关闭安全模块以便快速联调生产环境需启用OpenCTI 通过APP__ADMIN__TOKEN设定管理令牌后续 Python SDK 与连接器都会使用该令牌认证ELASTICSEARCH__URL、MINIO__ENDPOINT、RABBITMQ__HOSTNAME、REDIS__HOSTNAME均指向容器网络内的服务名TheHive 通过TH_CORTEX_URL指向 Cortex 服务从而打通案件-分析链路所有组件共享 Docker 网络容器间用服务名互相访问外部通过映射端口访问。五、Step 2配置 Feed 摄取管道SKILL.md 提供了基于pymisp与pycti的 Feed 管理类用于启用 OSINT 订阅源并检查 OpenCTI 连接器状态from pymisp import PyMISP from pycti import OpenCTIApiClient import json class TIPFeedManager: Manage threat intelligence feed ingestion across platform components. def __init__(self, misp_url, misp_key, opencti_url, opencti_token): self.misp PyMISP(misp_url, misp_key, sslFalse) self.opencti OpenCTIApiClient(opencti_url, opencti_token) def configure_osint_feeds(self): Enable default OSINT feeds in MISP. osint_feeds [ {name: CIRCL OSINT, id: 1}, {name: Botvrij.eu, id: 2}, {name: abuse.ch URLhaus, id: 5}, {name: abuse.ch Feodo Tracker, id: 6}, ] for feed in osint_feeds: try: self.misp.enable_feed(feed[id]) self.misp.fetch_feed(feed[id]) print(f[] Enabled feed: {feed[name]}) except Exception as e: print(f[-] Failed: {feed[name]}: {e}) def configure_opencti_connectors(self): List and verify OpenCTI connector status. connectors self.opencti.connector.list() for conn in connectors: print( f Connector: {conn[name]} - fActive: {conn[active]} - fType: {conn[connector_type]} ) def sync_misp_to_opencti(self): Verify MISP-OpenCTI sync is operational. # OpenCTI MISP connector handles this automatically # Check connector status connectors self.opencti.connector.list() misp_connector [ c for c in connectors if misp in c[name].lower() ] if misp_connector: print(f[] MISP connector active: {misp_connector[0][active]}) else: print([-] MISP connector not found - configure in Docker Compose)要点说明MISP 内置的 OSINT FeedCIRCL OSINT、Botvrij.eu、abuse.ch URLhaus / Feodo TrackerID 是固定的enable_feed启用后调用fetch_feed立即拉取一次数据MISP → OpenCTI 的数据同步由 OpenCTI 侧的 MISP 连接器自动完成不需要在代码中手动搬运只需通过connector.list()确认连接器已注册且active状态正常更通用的批量启用逻辑见 process.py 的configure_feeds()方法它遍历self.misp.feeds()中所有enabledFalse的订阅源并逐个启用返回启用列表与总数适合首次部署时一键初始化。六、Step 3构建基于 Cortex 的富化管道Cortex 负责对 IOC 执行自动富化。 SKILL.md 给出了基于 REST API 的富化客户端包含列出分析器、提交可观测对象、获取任务报告三个核心操作import requests class CortexEnrichment: Integrate Cortex analyzers for automated enrichment. def __init__(self, cortex_url, cortex_key): self.url cortex_url self.headers {Authorization: fBearer {cortex_key}} def list_analyzers(self): List available Cortex analyzers. resp requests.get( f{self.url}/api/analyzer, headersself.headers, timeout30, ) if resp.status_code 200: analyzers resp.json() for a in analyzers: print(f {a[name]}: {a.get(description, )[:60]}) return analyzers return [] def analyze_observable(self, observable_type, observable_value, analyzer_id): Submit an observable for analysis. job { data: observable_value, dataType: observable_type, tlp: 2, message: TIP automated enrichment, } resp requests.post( f{self.url}/api/analyzer/{analyzer_id}/run, jsonjob, headersself.headers, timeout30, ) if resp.status_code 200: return resp.json() return None def get_job_report(self, job_id): Get the report for a completed analysis job. resp requests.get( f{self.url}/api/job/{job_id}/report, headersself.headers, timeout60, ) if resp.status_code 200: return resp.json() return None关键参数tlp字段遵循 TLP 数值编码0CLEAR、1GREEN、2AMBER、3AMBERSTRICT、4RED此处tlp: 2表示以 TLP:AMBER 级别提交分析确保敏感指标不外泄dataType为可观测对象类型如ip、domain、url、hash提交后需用返回的job_id轮询get_job_report获取富化结果。仓库 agent.py 中的TLP_DEFINITIONS进一步给出了完整编码表与共享范围说明CLEAR 可无限共享、GREEN 限社区、AMBER 限组织内部、AMBERSTRICT 仅限需知范围、RED 仅限具名接收人与 Cortex 的数值编码严格对应。七、Step 4实现分析师仪表盘指标SKILL.md 提供了跨组件统计类用于向分析师仪表盘输出实时指标class TIPMetrics: Collect platform metrics for analyst dashboards. def __init__(self, misp, opencti): self.misp misp self.opencti opencti def get_platform_stats(self): Collect statistics across all platform components. stats {} # MISP stats misp_stats self.misp.get_server_statistics() stats[misp] { total_events: misp_stats.get(event_count, 0), total_attributes: misp_stats.get(attribute_count, 0), active_feeds: len([ f for f in self.misp.feeds() if f.get(Feed, {}).get(enabled) ]), } # OpenCTI stats via GraphQL stats[opencti] { total_indicators: self.opencti.indicator.list( first0, withPaginationTrue ).get(pagination, {}).get(globalCount, 0), total_reports: self.opencti.report.list( first0, withPaginationTrue ).get(pagination, {}).get(globalCount, 0), } return stats扩展实现见 process.py 的get_platform_stats()它在 MISP 侧补充了organizations组织数、在 OpenCTI 侧统计active_connectors活跃连接器数并统一附上时间戳。TIPManager还内置check_health()对 MISP实例版本、OpenCTIhealth.check()、TheHive/api/status、Cortex/api/status逐一探测并返回健康状态可直接对接 template.md 中的平台状态报告模板。命令行使用方式来自 process.pypython process.py --check-health --misp-url URL --misp-key KEY --opencti-url URL --opencti-token TOKEN python process.py --configure-feeds --misp-url URL --misp-key KEY python process.py --platform-stats --misp-url URL --misp-key KEY --opencti-url URL --opencti-token TOKEN结果以 JSON 输出并落盘到tip_report.json默认文件名可用--output覆盖。状态报告模板template.md 提供了结构化的平台周报骨架建议按以下表格组织指标类别字段平台健康各组件状态、版本、URLFeed 摄取状态Feed 名称、来源、状态、最近拉取时间、生成事件数平台指标事件/报告总数、指标总数、活跃 Feed、24h 富化任务数连接器状态连接器、类型Import/Enrichment/Stream、是否活跃、最近运行时间建议平台维护、Feed 配置改进、集成增强八、STIX/TAXII 互操作与指标全生命周期管理TIPS 的核心价值在于标准化的情报表达与交换。api-reference.md 给出了完整的 STIX 2.1 指标对象示例{ type: indicator, spec_version: 2.1, id: indicator--uuid5, created: 2025-01-15T10:00:00.000Z, modified: 2025-01-15T10:00:00.000Z, name: Malicious IP, pattern: [ipv4-addr:value 198.51.100.42], pattern_type: stix, valid_from: 2025-01-15T10:00:00.000Z, confidence: 85, object_marking_refs: [marking-definition--f88d31f6-486f-44da-b317-01333bde0b82] }TLP 标记定义 ID 对照表STIX 2.1object_marking_refs引用的是标准 TLP 标记定义ID 对照如下TLP 级别STIX Marking Definition IDTLP:CLEARmarking-definition--613f2e26-407d-48c7-9eca-b8e91df99dc9TLP:GREENmarking-definition--34098fce-860f-48ae-8e50-ebd3cc5e41daTLP:AMBERmarking-definition--f88d31f6-486f-44da-b317-01333bde0b82TLP:AMBERSTRICTmarking-definition--826578e1-40a3-4b46-a8d8-b9931fdd750eTLP:REDmarking-definition--5e57c739-391a-4eb3-b6be-7d15ca92d5ed基于 agent.py 的指标生命周期实现仓库 agent.py 提供了完整的指标生命周期处理逻辑1. 指标类型自动分类classify_indicator()通过正则识别 IPipv4-addr、SHA-256 哈希file-sha256、MD5file-md5、域名domain-name、URL、邮箱email-addr等类型并映射为对应的 STIX 模式模板STIX_INDICATOR_TYPES { ipv4-addr: [ipv4-addr:value {}], domain-name: [domain-name:value {}], url: [url:value {}], file-sha256: [file:hashes.SHA-256 {}], file-md5: [file:hashes.MD5 {}], email-addr: [email-addr:value {}], }2. 置信度评分calculate_indicator_score()提供可复用的评分公式——多来源加成每源 15 分上限 40、指标老化惩罚每天 -0.5 分上限 30、已确认观测加成每条 10 分上限 30、误报惩罚每条 -15 分上限 30最终归一化到 0-100source_score min(sources_count * 15, 40) age_penalty min(age_days * 0.5, 30) sighting_score min(confirmed_sightings * 10, 30) fp_penalty min(false_positives * 15, 30) score source_score - age_penalty sighting_score - fp_penalty return max(0, min(100, round(score)))3. STIX Bundle 导出build_stix_bundle()将多个指标封装为标准 STIX 2.1 Bundle可直接用于 TAXII 发布或平台间交换generate_tip_report()输出平台级摘要指标总数、类型分布、平均置信度。脚本可直接运行进行演示python agent.py。TAXII 2.1 共享端点操作对外情报共享通过 TAXII 2.1 完成api-reference.md# 服务发现 curl https://taxii.server.com/taxii2/ # 列出集合 curl https://taxii.server.com/taxii2/collections/ # 按类型拉取集合内对象 curl https://taxii.server.com/taxii2/collections/{id}/objects?typeindicator # 发布对象STIX Bundle curl -X POST https://taxii.server.com/taxii2/collections/{id}/objects \ -H Content-Type: application/stixjson;version2.1 \ -d bundle.jsonOpenCTI GraphQL 与 MISP REST 写入示例OpenCTI 以 GraphQL 为核心 API创建指标mutation { indicatorAdd(input: { name: Malicious IP pattern: [ipv4-addr:value 198.51.100.42] pattern_type: stix x_opencti_score: 80 }) { id standard_id } }MISP 以 REST API 添加属性attributecurl -X POST https://misp/attributes/add/EVENT_ID \ -H Authorization: MISP_KEY \ -H Content-Type: application/json \ -d {type:ip-dst,value:198.51.100.42,category:Network activity,to_ids:true}其中to_ids: true表示该属性用于 IDS 告警匹配会同步进 SIEM 检测规则。九、三类核心工作流workflows.md 定义了 TIP 运营的三种典型工作流可作为架构设计与排障的路线图工作流 1端到端情报管道[External Feeds] -- [MISP] -- [OpenCTI] -- [Enrichment (Cortex)] -- [SIEM/TheHive] | | | | | v v v v v OSINT/Commercial Correlate Knowledge Graph VT/Shodan/AIPDB Alerts/Cases外部 OSINT/商业情报源进入 MISP 完成关联分析同步到 OpenCTI 构建知识图谱经 Cortex 调用 VirusTotal / Shodan / AbuseIPDB 富化最终推送到 SIEM 生成检测规则或进入 TheHive 生成案件。工作流 2事件到情报的反馈闭环[SOC Alert] -- [TheHive Case] -- [Cortex Analysis] -- [IOC Extraction] | v [MISP Event Creation] | v [OpenCTI Knowledge Update] | v [Updated Detections -- SIEM]SOC 告警进入 TheHive 开案Cortex 分析提取 IOC回写 MISP 创建事件同步更新 OpenCTI 知识库最终反哺 SIEM 检测规则——形成检测 → 分析 → 情报沉淀 → 再检测的闭环这也是情报体系自我进化能力的来源。工作流 3平台健康监控[Prometheus/Grafana] -- [Component Health] -- [Feed Status] -- [Alert on Failure] | | v v [ES Cluster Health] [Connector Status]通过 Prometheus/Grafana 采集 Elasticsearch 集群健康、连接器状态、Feed 状态等指标失败时自动告警。这与 process.py 的check_health()能力互补——脚本侧重部署期的连通性验证监控体系负责运行期的持续观测。十、验证标准与上线检查清单部署完成后对照 SKILL.md 的验证标准逐项确认✅ 所有平台组件MISP、OpenCTI、TheHive、Cortex均已部署并可访问✅ MISP ↔ OpenCTI 双向同步正常运作✅ 至少 3 个 OSINT Feed 持续摄取数据✅ Cortex analyzers 已配置并能返回富化结果✅ 平台指标仪表盘显示实时统计✅ STIX/TAXII 导出可用于情报共享。十一、从技能到落地总结构建威胁情报平台并不是简单地把四个开源工具装在一起而是通过分层架构、标准数据模型与自动化管道将它们组织成一条可运转的情报生产线。本文所讲的六层架构采集、存储、分析、富化、响应、共享、三组集成点、四步落地流程与三类运营工作流构成了一个完整的 TIP 建设方法论架构先行明确各组件职责与数据流用 Docker Compose 一键拉起基础设施管道为王Feed 摄取与 Cortex 富化管道决定情报的时效性与质量标准贯穿STIX 2.1 TAXII 2.1 保证跨平台互操作TLP 机制控制情报共享边界闭环进化事件到情报的反馈环让平台随实战不断积累知识。进一步阅读本仓库的延伸材料agent.pySTIX 指标生命周期与评分实现、process.py平台运维管理脚本、standards.md标准与框架对照、workflows.md工作流设计以及 template.md状态报告模板。关于该技能在仓库框架体系中的定位可参考 csf-alignment.md 中 threat-intelligence 子域的 NIST CSF 映射ID.RA、DE.AE与 README.md 的整体框架说明。【免费下载链接】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),仅供参考
返回列表