用途
本技能面向需要收集威胁情报的安全运营场景,围绕开源威胁情报平台 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 密钥。
使用方式(工作流)
- 使用 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
- 配置默认源,通过 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)
- 添加自定义威胁源(示例为 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}")
- 程序化搜索与检索事件:
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})")
- 为下游工具导出 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 调度器)。
限制
资料未提供关于收费、价格、平台兼容性、性能效果或具体使用步骤之外的额外限制说明,相关内容暂未提供。