SuperAPI AI 工具集

collecting-threat-intelligence-with-misp

安全与审计

查看项目

更新于 10-15 13:58

技能介绍

用途

本技能面向需要收集威胁情报的安全运营场景,围绕开源威胁情报平台 MISP(Malware Information Sharing Platform)展开。MISP 用于收集、共享、存储和关联针对性攻击的失陷指标(IOC)、威胁情报、金融欺诈信息、漏洞信息或反恐信息。技能目标是部署 MISP、配置威胁源、使用 PyMISP API 进行程序化访问,并构建从多个社区和商业来源聚合 IOC 的自动化收集管道。

主要能力

  • 使用 Docker 与 Docker Compose 部署 MISP 实例。
  • 配置多种威胁源:MISP 原生 JSON/CSV 源(如 CIRCL OSINT、botvrij.eu)、freetext 非结构化文本源(如 abuse.ch、Feodo Tracker)、TAXII 源(STIX/TAXII 2.1 兼容的商业与政府来源)、CSV 结构化源(支持列映射)。
  • 通过 PyMISP 官方 Python 库访问 MISP REST API,支持获取事件、添加/更新事件与属性、上传样本、在整个 MISP 数据集中搜索。
  • 将 IOC 导出为 STIX 2.1 bundle、Suricata 规则、CSV,供下游工具(如 SIEM)使用。
  • 通过 cron 或 MISP 调度器实现定时自动抓取源数据。

关键概念

MISP 采用基于事件的模型:威胁情报组织为事件(event),事件包含属性(attribute,即 IOC)、对象(object,属性的结构化分组)、星系(galaxy,关联到 MITRE ATT&CK 的威胁行为者/恶意软件集群)以及用于分类的标签。MISP 实例之间的同步使用基于 HTTPS 的拉取/推送模型,并通过 API 密钥认证。PyMISP 认证使用在 Authorization 头中传递的 API 密钥。

使用方式(工作流)

  1. 使用 Docker 部署 MISP:

git clone https://github.com/MISP/misp-docker.git cd misp-docker cp template.env .env

Edit .env to set MISP_BASEURL, MISP_ADMIN_EMAIL, MISP_ADMIN_PASSPHRASE

docker compose up -d

  1. 配置默认源,通过 Web UI 或 API 启用内置 MISP 源:

from pymisp import PyMISP

misp = PyMISP('https://misp.local', 'YOUR_API_KEY', ssl=False)

List available feeds

feeds = misp.feeds() for feed in feeds: print(f"{feed['Feed']['id']}: {feed['Feed']['name']} - Enabled: {feed['Feed']['enabled']}")

Enable CIRCL OSINT Feed

misp.enable_feed(feed_id=1) misp.cache_feed(feed_id=1) misp.fetch_feed(feed_id=1)

  1. 添加自定义威胁源(示例为 abuse.ch URLhaus):

Add abuse.ch URLhaus feed

feed_data = { 'name': 'URLhaus Recent URLs', 'provider': 'abuse.ch', 'url': 'https://urlhaus.abuse.ch/downloads/csv_recent/', 'source_format': 'csv', 'input_source': 'network', 'publish': False, 'enabled': True, 'headers': '', 'distribution': 0, 'sharing_group_id': 0, 'tag_id': 0, 'default': False, 'lookup_visible': True } result = misp.add_feed(feed_data) print(f"Feed added: {result}")

  1. 程序化搜索与检索事件:

from pymisp import PyMISP, MISPEvent from datetime import datetime, timedelta

misp = PyMISP('https://misp.local', 'YOUR_API_KEY', ssl=False)

Search for events from the last 7 days

result = misp.search( controller='events', date_from=(datetime.now() - timedelta(days=7)).strftime('%Y-%m-%d'), type_attribute='ip-dst', to_ids=True, pythonify=True )

for event in result: print(f"Event {event.id}: {event.info}") for attr in event.attributes: if attr.type == 'ip-dst' and attr.to_ids: print(f" IOC: {attr.value} (category: {attr.category})")

  1. 为下游工具导出 IOC:

Export as STIX 2.1 bundle

stix_output = misp.search( controller='events', return_format='stix2', tags=['tlp:white'], published=True )

Export IDS-flagged attributes as Suricata rules

suricata_rules = misp.search( controller='attributes', return_format='suricata', to_ids=True, type_attribute=['ip-dst', 'domain', 'url'] )

Export as CSV for SIEM ingestion

csv_output = misp.search( controller='attributes', return_format='csv', type_attribute='ip-dst', to_ids=True )

适用场景

  • 管理需要收集威胁情报的安全运营。
  • 提升安全项目成熟度与运营流程。
  • 为安全团队工作流建立标准化流程。
  • 将威胁情报或漏洞数据集成到运营中。

前置条件

  • Python 3.9+ 并安装 pymisp 库。
  • Docker 与 Docker Compose 用于部署 MISP。
  • 理解 STIX 2.1 与 TAXII 2.1 协议。
  • 熟悉 IOC 类型:哈希、IP 地址、域名、URL、电子邮件地址。
  • 能够访问 MISP 社区源(circl.lu、botvrij.eu)。

验证标准

  • MISP 实例已部署并可通过 HTTPS 访问。
  • 至少启用 3 个社区源并成功抓取数据。
  • PyMISP 脚本能够认证、搜索事件并检索 IOC。
  • 事件包含正确标记和分类的属性。
  • 导出为 STIX 2.1 时生成有效的 STIX bundle。
  • 自动源抓取按计划运行(cron 或 MISP 调度器)。

限制

资料未提供关于收费、价格、平台兼容性、性能效果或具体使用步骤之外的额外限制说明,相关内容暂未提供。