关于 collecting-threat-intelligence-with-misp
该技能介绍如何部署和使用 MISP 收集、整理、关联与共享威胁情报,面向安全运营团队。内容涵盖威胁源配置、PyMISP API 自动化及 IOC 导出。
主要功能
- 01通过 Docker 部署 MISP
- 02配置多种威胁情报源
- 03使用 PyMISP 搜索和管理事件
- 04聚合并关联 IOC
- 05导出 STIX 2.1 数据
适用场景
- 01集中收集社区和商业威胁源
- 02自动化获取及处理 IOC
- 03将威胁数据导出供下游工具使用
- 04建立定期情报采集流程
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ mukul975/ anthropic-cybersecurity-skills --skill collecting-threat-intelligence-with-misp安装后在 Claude Code 中输入/collecting-threat-intelligence-with-misp确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
LICENSEassets/template.mdreferences/api-reference.mdstandards.mdworkflows.mdscripts/agent.pyprocess.py详细介绍
使用 MISP 收集威胁情报
概述
MISP(Malware Information Sharing Platform,恶意软件信息共享平台)是一个开源威胁情报平台,用于收集、共享、存储和关联定向攻击的妥协指标(IOC)、威胁情报、金融欺诈信息、漏洞信息或反恐信息。本技能涵盖部署 MISP、配置威胁源、使用 PyMISP API 进行程序化访问,以及构建从多个社区和商业来源聚合 IOC 的自动化收集流水线。
何时使用
- 管理需要使用 misp 收集威胁情报的安全运营时
- 提升安全项目成熟度和运营流程时
- 为安全团队工作流建立标准化流程时
- 将威胁情报或漏洞数据集成到运营中时
前置条件
- Python 3.9+ 并安装
pymisp库 - 用于 MISP 部署的 Docker 和 Docker Compose
- 了解 STIX 2.1 和 TAXII 2.1 协议
- 熟悉 IOC 类型:哈希、IP 地址、域名、URL、电子邮件地址
- 可访问 MISP 社区源(circl.lu、botvrij.eu)的网络
关键概念
MISP 架构
MISP 采用基于事件的模型运行,威胁情报被组织为包含属性(IOC)、对象(属性的结构化分组)、星系(链接到 MITRE ATT&CK 的威胁行为者/恶意软件集群)以及用于分类的标签的事件。MISP 实例之间的同步通过 HTTPS 使用 API 密钥认证,采用拉取/推送模型。
源类型
- MISP 源:来自 MISP 社区的原生 JSON/CSV 源(CIRCL OSINT、botvrij.eu)
- 自由文本源:解析 IOC 的非结构化文本源(abuse.ch、Feodo Tracker)
- TAXII 源:来自商业和政府来源的 STIX/TAXII 2.1 兼容源
- CSV 源:具有可配置列映射的结构化 CSV 源
PyMISP API
PyMISP 是通过 REST API 访问 MISP 平台的官方 Python 库。它支持获取事件、添加/更新事件和属性、上传样本,以及在整个 MISP 数据集中搜索。认证使用在 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
步骤 2:配置默认源
通过 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)
步骤 3:添加自定义威胁源
# 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}")
步骤 4:程序化事件搜索和检索
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})")
步骤 5:为下游工具导出 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
)
验证标准
- MISP 实例已部署并可通过 HTTPS 访问
- 至少启用 3 个社区源并成功获取数据
- PyMISP 脚本可以认证、搜索事件并检索 IOC
- 事件包含正确标记和分类的属性
- 导出为 STIX 2.1 可生成有效的 STIX 捆绑包
- 自动化源获取按计划运行(cron 或 MISP 调度器)
参考资料
评论
支持 Markdown