collecting-threat-intelligence-with-misp について
MISP を導入し、脅威インテリジェンスを収集、整理、相関、共有するためのセキュリティスキルです。フィード設定、PyMISP API による自動化、IOC のエクスポートを扱います。
主な機能
- 01Docker による MISP の導入
- 02複数の脅威フィードの設定
- 03PyMISP によるイベント検索と管理
- 04IOC の集約と相関分析
- 05STIX 2.1 形式でのデータ出力
活用シーン
- 01コミュニティや商用フィードの収集
- 02IOC の取得と処理の自動化
- 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 を使用した脅威インテリジェンスの収集が必要なセキュリティ運用を管理する場合
- セキュリティプログラムの成熟度と運用プロセスを向上させる場合
- セキュリティチームのワークフローに関する標準化された手順を確立する場合
- 脅威インテリジェンスや脆弱性データを運用に統合する場合
前提条件
pymispライブラリをインストールした Python 3.9+- 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 インスタンス間の同期には、API キー認証を用いた HTTPS 経由のプル/プッシュモデルが使用されます。
フィードの種類
- MISP フィード:MISP コミュニティ(CIRCL OSINT、botvrij.eu)からのネイティブ JSON/CSV フィード
- フリーテキストフィード: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:デフォルトフィードを設定する
ウェブ 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 スケジューラー)