cti-domain-research について
cti-domain-researchは、数百の厳選されたセキュリティドメインを検索する脅威インテリジェンス調査スキルです。クエリに応じて情報源を選び、IOC、TTP、CVEを抽出し、NotebookLMへの取り込みにも対応します。
主な機能
- 01クエリ種別に応じたドメイン選択
- 02新しさと権威性による結果の順位付け
- 03IOC、TTP、CVEの抽出
- 04表、詳細レポート、JSONで出力
- 05NotebookLMへの任意取り込み
活用シーン
- 01CVEやベンダー勧告の調査
- 02脅威アクターやマルウェアの追跡
- 03エクスプロイトやセキュリティニュースの把握
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ security-phoenix-demo/ security-skills-claude-code --skill cti-domain-researchインストール後、Claude Code で/cti-domain-researchを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
references/domains.txttier-map.jsonscripts/cti-search.mdinstall.sh詳細
CTI ドメイン調査
300 以上の厳選されたセキュリティドメインを対象とする、構造化された脅威インテリジェンス検索です。NotebookLM への取り込みにも対応しています。
カスタマイズ
CTI 調査ワークフローをカスタマイズするには、以下の設定を行います。すべて任意です。スキルは適切なデフォルト設定ですぐに利用できます。
| 設定 | 説明 | デフォルト | 設定方法 |
|---|---|---|---|
| 検索プロバイダー | 使用する検索 API | Brave Search | .env で SEARCH_PROVIDER=brave |
| Brave API キー | お使いの Brave Search API キー | —(必須) | .env で BRAVE_SEARCH_API_KEY=... |
| SerpAPI キー | 代替の検索プロバイダー | — | .env で SERPAPI_KEY=... |
| Google CSE キー + ID | 代替の検索プロバイダー | — | .env で GOOGLE_CSE_KEY=... + GOOGLE_CSE_ID=... |
| NotebookLM ノートブック ID | --notebooklm フラグの対象ノートブック | — | .env で NOTEBOOKLM_NOTEBOOK_ID=... または --notebook-id フラグ |
| デフォルトの結果数 | ティアごとの結果数 | 10 | クエリごとに --count N フラグを指定 |
| デフォルトの期間 | 検索対象とする期間 | 90 日 | クエリごとに --since DAYS フラグを指定 |
| カスタムドメイン | 独自のセキュリティ情報源を追加 | 組み込みで 595 件 | data/domains.txt と data/tier-map.json を編集 |
セットアップ手順:
- プラグインディレクトリで
.env.exampleを.envにコピーします - 検索 API キーを追加します(Brave を推奨。月 2,000 件のリクエストが無料です)
- 必要に応じて NotebookLM ノートブック ID を設定します
- Claude Code を再起動します
cd ${CLAUDE_PLUGIN_ROOT}
cp .env.example .env
# Edit .env with your API keys
カスタムドメインの追加:
# Add a domain (one per line)
echo "your-security-blog.com" >> data/domains.txt
# Add tier mapping
# Edit data/tier-map.json and add:
# "your-security-blog.com": { "tier": 3, "authority": 70 }
ワークフロー
1. Parse query + flags
2. Select domain tier(s) based on query type
3. Execute scoped web searches (site: operator per domain batch)
4. Deduplicate + rank results by recency and source authority
5. Extract: title, source, date, summary, key IOCs/TTPs/CVEs mentioned
6. [Optional] Push findings to NotebookLM via connector plugin
7. Return structured CTI brief
クエリの解析
自由形式のクエリを受け付けます。以下の情報を抽出します。
- 対象:CVE ID、アクター名、マルウェアファミリー、手法(MITRE ATT&CK)、製品名
- 期間フィルター:デフォルトは過去 90 日間です。「先週/先月/昨年」と指定された場合はそれに従います
- 深さ:デフォルトは上位 10 件です。
--count Nで上書きできます - 出力形式:デフォルトは簡潔な表 + 箇条書きです。
--fullは詳細なブリーフ、--jsonは未加工の JSON を返します - NotebookLM への送信:
--notebooklmフラグを指定するとコネクターが実行されます(下記の NotebookLM セクションを参照)
ドメインティア
references/domains.txt からドメイン一覧全体を読み込み、以下のティアに振り分けます。
| ティア | 使用する場面 | 例 |
|---|---|---|
| ティア 1 — 権威ある情報源 | CVE、アドバイザリー、政府の警告 | cisa.gov, nvd.nist.gov, msrc.microsoft.com, access.redhat.com, support.apple.com, cert.europa.eu, ncsc.gov.uk |
| ティア 2 — ベンダーの調査情報 | 詳細な技術分析 | unit42.paloaltonetworks.com, blog.talosintelligence.com, securelist.com, research.checkpoint.com, thedfirreport.com, blog.google, mandiant.com, secureworks.com, sentinelone.com, crowdstrike.com |
| ティア 3 — ニュース + コミュニティ | 状況把握 | bleepingcomputer.com, krebsonsecurity.com, therecord.media, thehackernews.com, arstechnica.com, reddit.com/r/cybersecurity, news.ycombinator.com |
| ティア 4 — 専門情報源 | マルウェア、PoC、OSINT | any.run, otx.alienvault.com, vulncheck.com, attackerkb.com, greynoise.io, hunt.io, packetstormsecurity.com |
振り分けロジック:
- CVE クエリ → まずティア 1、次にティア 2
- 脅威アクター/マルウェア → まずティア 2、次にティア 4
- 状況把握/ニュース → まずティア 3、次にティア 2
- PoC/エクスプロイト → ティア 4 + ティア 2
- 一般的なクエリ → すべてのティアを対象に、権威性スコア順に並べます
検索の実行
site: で範囲を指定してウェブ検索ツールを使用します。1 回の検索で網羅できる範囲を最大化するため、ドメインをまとめます。
# Example batch query construction
query = f'"{subject}" site:bleepingcomputer.com OR site:krebsonsecurity.com OR site:therecord.media'
# For CVEs, always include NVD and MSRC
query = f'{cve_id} site:nvd.nist.gov OR site:msrc.microsoft.com OR site:cisa.gov'
--full が指定された場合は、複数の検索を並列で実行します。
- ティア 1 のグループ
- ティア 2 のグループ
- ティア 3 + 4 のグループ
結果スキーマ
各結果から以下を抽出します。
{
"title": "...",
"source": "domain.com",
"url": "https://...",
"published": "YYYY-MM-DD",
"authority_tier": 1,
"summary": "1-2 sentence distillation",
"tags": ["CVE-XXXX", "ransomware", "RCE", "MITRE:T1190"],
"iocs": ["hash", "IP", "domain"],
"severity": "Critical|High|Medium|Low|Info"
}
出力形式
デフォルト — CTI ブリーフ(表 + 箇条書き)
## CTI Brief: <query> — <date>
### Key Findings
- [Critical] <1-line finding> — <source> (<date>)
- [High] ...
### Source Table
| Source | Title | Date | Tags |
|--------|-------|------|------|
| bleepingcomputer.com | ... | ... | ransomware, RCE |
### IOC Summary
IPs: ... Hashes: ... Domains: ...
### Next Steps
- Patch priority: ...
- Detection: MITRE T-IDs to hunt
- Intel gaps: ...
--full — 詳細ブリーフ
追加内容:エグゼクティブサマリー、情報源ごとの分析段落、MITRE ATT&CK 対応表、推奨される検出ルール(Sigma ヘッダースタブ)。
--json
結果オブジェクトの未加工の JSON 配列を返します(上記のスキーマを使用)。
NotebookLM との連携
--notebooklm フラグが設定されている場合、NotebookLM コネクタープラグインを使用して調査結果を取り込みます。
プラグインの場所(Claude Code): ~/.claude/plugins/notebooklm-connector/
プラグインのリポジトリ: https://github.com/Security-Phoenix-demo/security-skills-claude-code/tree/main/plugins/notebooklm-connector
コネクターのフロー:
1. Collect all result URLs from the search phase
2. Format as source list per plugin spec
3. Call connector to add sources to target NotebookLM notebook
4. Report: N sources added, notebook URL
プラグインの呼び出しパターン(Claude Code):
# Check connector is installed
ls ~/.claude/plugins/notebooklm-connector/
# Call connector with source list
node ~/.claude/plugins/notebooklm-connector/index.js \
--notebook-id "$NOTEBOOKLM_NOTEBOOK_ID" \
--sources "$(echo $URLS | jq -R -s 'split("\n")')" \
--title "CTI: $QUERY — $(date +%Y-%m-%d)"
必須の環境変数:
export NOTEBOOKLM_NOTEBOOK_ID="<your-notebook-id>"
# Or pass via --notebook-id flag at query time
フォールバック(Claude.ai — プラグインのランタイムなし):
Claude.ai(bash なし)で実行している場合は、ユーザーが手動で NotebookLM に追加できるよう、書式を整えたソース一覧を提示します。ノートブックの ID がわかっている場合は、直接リンクも提示します。
スラッシュコマンド(Claude Code)
~/.claude/commands/cti-search.md を作成してインストールします:
---
description: "Search 300+ security domains for CTI on any topic, CVE, actor, or malware"
argument-hint: "<query> [--count N] [--full] [--json] [--notebooklm] [--notebook-id ID]"
allowed-tools: WebSearch, Bash
---
Search curated security domains for threat intelligence on: $ARGUMENTS
Follow the CTI Domain Research skill (cti-domain-research) exactly.
Domain list: ~/.claude/commands/cti-domains.txt
Flags:
- --count N : Return N results (default 10)
- --full : Long-form brief with MITRE mapping
- --json : Raw JSON output
- --notebooklm : Push sources to NotebookLM after search
- --notebook-id ID : Target notebook ID (overrides env var)
- --tier 1|2|3|4 : Restrict to specific domain tier
- --since DAYS : Limit to last N days (default 90)
インストールスクリプト
scripts/install.sh を実行して、次の操作を行います:
- スラッシュコマンドを
~/.claude/commands/にコピーする - ドメイン一覧を
~/.claude/commands/cti-domains.txtにコピーする - NotebookLM コネクタープラグインが存在することを確認する
- セットアップ完了を表示する
詳しくは scripts/install.sh を参照してください。
エラー処理
| 条件 | 動作 |
|---|---|
| ドメインのバッチで結果がない | その階層をスキップして次を試す。すべての階層で結果がない場合は警告する |
| NotebookLM コネクタープラグインがインストールされていない | 警告し、手動のソース一覧にフォールバックする |
| 検索でレート制限に達した | 2 秒待機して一度再試行し、部分的な結果を提示する |
| クエリの範囲が広すぎる(潜在的な結果が 1000 件を超える) | 自動的に Tier 1 と Tier 2 のみに絞り込み、条件の絞り込みを提案する |
| CVE がまだ NVD に登録されていない | 「CVE は NVD 登録前の可能性があります。ベンダーのアドバイザリーを直接確認してください」と注記する |
参照ファイル
references/domains.txt— 厳選されたドメインの完全な一覧(300 件以上のソース、1 行につき 1 件)references/tier-map.json— ドメインから階層および信頼性スコアへのマッピングscripts/install.sh— Claude Code のスラッシュコマンドを一括でインストールするスクリプト