# Collecting Threat Intelligence With Misp

> MISP（恶意软件信息共享平台）是一个开源威胁情报平台，用于收集、共享、存储和关联定向攻击的失陷指标（IOC）、威胁情报、金融欺诈信息、漏洞信息或反恐信息。

- Skill: `killvxk/collecting-threat-intelligence-with-misp` (Agent Skill, multi-file: 8 files)
- Install (CLI): `npx skillmds@latest add killvxk/collecting-threat-intelligence-with-misp`
- Raw SKILL.md: https://api.skillmd.com/api/skills/killvxk/collecting-threat-intelligence-with-misp/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Security
- License: Apache-2.0
- Author: killvxk (https://skillmd.com/u/killvxk)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/killvxk/collecting-threat-intelligence-with-misp

---

# 使用 MISP 收集威胁情报

## 概述

MISP（恶意软件信息共享平台）是一个开源威胁情报平台，用于收集、共享、存储和关联定向攻击的失陷指标（IOC）、威胁情报、金融欺诈信息、漏洞信息或反恐信息。本技能涵盖部署 MISP、配置威胁推送、使用 PyMISP API 进行编程访问，以及构建自动化收集流水线，从多个社区和商业来源聚合 IOC。

## 前置条件

- Python 3.9+，已安装 `pymisp` 库
- Docker 和 Docker Compose，用于 MISP 部署
- 了解 STIX 2.1 和 TAXII 2.1 协议
- 熟悉 IOC 类型：哈希值、IP 地址、域名、URL、电子邮件地址
- 能够访问 MISP 社区推送的网络（circl.lu、botvrij.eu）

## 核心概念

### MISP 架构

MISP 采用基于事件的模型，将威胁情报组织为包含属性（IOC）、对象（属性的结构化分组）、Galaxy（链接到 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

```bash
git clone https://github.com/MISP/misp-docker.git
cd misp-docker
cp template.env .env
# 编辑 .env 设置 MISP_BASEURL、MISP_ADMIN_EMAIL、MISP_ADMIN_PASSPHRASE
docker compose up -d
```

### 步骤 2：配置默认推送

通过 Web 界面或 API 启用内置 MISP 推送：

```python
from pymisp import PyMISP

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

# 列出可用推送
feeds = misp.feeds()
for feed in feeds:
    print(f"{feed['Feed']['id']}: {feed['Feed']['name']} - 已启用: {feed['Feed']['enabled']}")

# 启用 CIRCL OSINT 推送
misp.enable_feed(feed_id=1)
misp.cache_feed(feed_id=1)
misp.fetch_feed(feed_id=1)
```

### 步骤 3：添加自定义威胁推送

```python
# 添加 abuse.ch URLhaus 推送
feed_data = {
    'name': 'URLhaus 近期 URL',
    '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"推送已添加: {result}")
```

### 步骤 4：以编程方式搜索和检索事件

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

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

# 搜索过去 7 天的事件
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.id}: {event.info}")
    for attr in event.attributes:
        if attr.type == 'ip-dst' and attr.to_ids:
            print(f"  IOC: {attr.value} (类别: {attr.category})")
```

### 步骤 5：导出 IOC 到下游工具

```python
# 导出为 STIX 2.1 bundle
stix_output = misp.search(
    controller='events',
    return_format='stix2',
    tags=['tlp:white'],
    published=True
)

# 将 IDS 标记的属性导出为 Suricata 规则
suricata_rules = misp.search(
    controller='attributes',
    return_format='suricata',
    to_ids=True,
    type_attribute=['ip-dst', 'domain', 'url']
)

# 导出为 CSV 以供 SIEM 摄取
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 bundle
- 自动推送获取按计划运行（cron 或 MISP 调度器）

## 参考资料

- [MISP 项目官网](https://www.misp-project.org/)
- [PyMISP 文档](https://pymisp.readthedocs.io/)
- [MISP GitHub 仓库](https://github.com/MISP/MISP)
- [MISP OpenAPI 规范](https://www.misp-project.org/openapi/)
- [CIRCL OSINT 推送](https://www.circl.lu/doc/misp/feed-osint/)

