Zenn
💡

MCP×サイバーセキュリティ 脅威インテリジェンスラボを作ってみた

2025/03/24に公開

1.はじめに

この記事では、MCPを活用して、Windows11に脅威インテリジェンスラボを構築する方法を紹介します。サイバーセキュリティにおける最新の脅威インテリジェンスを対話的に取得・分析するための実践的な手順を、ステップバイステップで解説します。
具体的には、MCPとVirusTotal・ORKLを組み合わせ、IoCレポート・最新の脅威レポートを扱うシステムを作成します。この記事を読み終える頃には、読者の皆さんも独自の脅威インテリジェンスラボを構築できるようになります。

2.MCPの概要

2-1.MCPとは

MCP(Model Context Protocol)は、LLMを外部データソースやツールと接続するための標準化されたフレームワークです。LLMが持つ自然言語処理能力を活用しつつ、外部の情報や機能を動的に取り込むことで、コンテキストに応じた応答やアクションを実現します。これにより、単なるチャットボットを超えた、業務支援ツールとしての可能性が広がります

2-2.MCPのコアコンポーネント

MCPは以下の5つの要素で構成されています:

  • リソース:MCPサーバーがLLMに公開するデータ要素またはコンテンツであり、正確で関連性のある応答を生成するために必要なコンテキストを提供します。
  • プロンプト:LLMが特定の出力を生成するためのガイドとなる再利用可能なテンプレートまたはワークフロー。
  • ツール:コマンドの実行や特定の情報の取得など、LLMがMCPサーバーを介してアクションを実行できるようにする機能(例:API呼び出し)。
  • サンプリング:MCPサーバーがLLMから補完を要求し、動的でコンテキストに応じた応答を容易にできるようにするメカニズム。
  • トランスポート:クライアント、サーバー、LLM間の通信手段。

MCPとコンポーネントの構成図

構築する脅威インテリジェンスラボの構成図

2-3.MCPの利点

MCPの強みは、外部ツールとの統合を標準化し、セキュリティを強化することです。たとえば、ツール実行前にユーザーの承認を求める保護レイヤーを備えており、誤用や悪用を防止します。

3.VirusTotalの紹介

3-1,VirusTotalとは

VirusTotalは、70を超えるウイルス対策スキャナとURL/ドメインブロックリストサービスを使用してアイテムを検査するほか、調査対象のコンテンツからシグナルを抽出するためのさまざまなツールを備えています。
ユーザーは誰でも、ブラウザを使用してコンピュータからファイルを選択し、それをVirusTotalに送信できます。VirusTotal は、主要なパブリックWebインターフェイス、デスクトップアップローダ、ブラウザ拡張機能、プログラムAPIなど、さまざまなファイル送信方法を提供しています。Webインターフェイスは、公開されている送信方法の中で最もスキャンの優先度が高いです。

4.ORKLの紹介

4-1.ORKLとは

ORKLOpen Reconnaissance Knowledge Library)は、公開されている脅威レポートやIOCsを集約した、コミュニティ主導のCTIリポジトリです。脅威の実行者や攻撃手法に関する情報を一元的に提供します。
これは、脅威の実行者、攻撃方法、および関連データに関する情報を検索および分析するためにデータを集約する、完全に無料の集中型リポジトリです。

5.MCPサーバーの構築

ここからは、Windows11を使ったMCPサーバーの構築手順を詳しく説明します。

5-1.Python3のインストール

公式サイトから最新バージョンをダウンロードし、インストール。
cmd.exeで以下のコマンドを入力しバージョンを確認。

C:\Users\user>python --version
Python 3.13.2

5-2.Node.jsのインストール

公式サイトから最新バージョンをダウンロードし、インストール。
cmd.exeで以下のコマンドを入力しバージョンを確認。

C:\Users\user>node --version
v22.14.0

5-3.Claude Desktopのインストール

Claude Desktopは、MCPサーバーと対話するためのクライアントアプリです。
(1)公式サイトからWindows版をダウンロード

(2)インストーラーを実行し、指示に従ってインストール

5-4.MCPのインストール

MCPをインストールするには、Pythonパッケージマネージャーuvを使用します。
(1)管理者権限でターミナルを開き、以下を実行してuvをインストール

PS C:\Users\user> Invoke-WebRequest -Uri "https://astral.sh/uv/install.ps1" -OutFile "install.ps1"
PS C:\Users\user> .\install.ps1
Downloading uv 0.6.7 (x86_64-pc-windows-msvc)
Installing to C:\Users\user\.local\bin
  uv.exe
  uvx.exe
everything's installed!

To add C:\Users\user\.local\bin to your PATH, either restart your shell or run:

    set Path=C:\Users\user\.local\bin;%Path%   (cmd)
    $env:Path = "C:\Users\user\.local\bin;$env:Path"   (powershell)

※注 以下のエラーが出力された場合

PS C:\Users\user> .\install.ps1
.\install.ps1 : このシステムではスクリプトの実行が無効になっているため、ファイル C:\Users\user\install.ps1 を読み込むこ
とができません。詳細については、「about_Execution_Policies」(https://go.microsoft.com/fwlink/?LinkID=135170) を参照して
ください。
発生場所 行:1 文字:1
+ .\install.ps1
+ ~~~~~~~~~~~~~
    + CategoryInfo          : セキュリティ エラー: (: ) []、PSSecurityException
    + FullyQualifiedErrorId : UnauthorizedAccess

以下を実行してから再度試してください。

Set-ExecutionPolicy RemoteSigned

5-5.VirusTotal MCPサーバーの作成

(1)npm経由でサーバーをグローバルにインストール

PS C:\Users\user> npm install -g @burtthecoder/mcp-virustotal
changed 40 packages in 5s
8 packages are looking for funding
  run `npm fund` for details

(2)VirusTotal APIキーの取得
VirusTotalのサイトにアクセスし、アカウントを作成後、右上のアカウントメニューから[API Key]を押下し、API Keyを取得します。

5-6.ORKL MCPサーバーの作成

(1)管理者権限でターミナルを開き、以下を実行

uvx create-mcp-server

(2)いくつか質問されるので以下のように回答

PS C:\Users\user> uvx create-mcp-server
Creating a new MCP server project using uv.
This will set up a Python project with MCP dependency.

Let's begin!

Project name (required): orkl
Project description [A MCP server project]: ORKL API Interact
Project version [0.1.0]: 0.1
Project will be created at: C:\Users\user\orkl
Is this correct? [Y/n]: Y
Using CPython 3.13.2 interpreter at: C:\Users\user\AppData\Local\Microsoft\WindowsApps\PythonSoftwareFoundation.Python.3.13_qbz5n2kfra8p0\python.exe
Creating virtual environment at: .venv
Resolved 21 packages in 320ms
      Built orkl @ file:///C:/Users/user/orkl
Prepared 1 package in 1.61s
Installed 21 packages in 125ms
 + annotated-types==0.7.0
 + anyio==4.9.0
 + certifi==2025.1.31
 + click==8.1.8
 + colorama==0.4.6
 + h11==0.14.0
 + httpcore==1.0.7
 + httpx==0.28.1
 + httpx-sse==0.4.0
 + idna==3.10
 + mcp==1.4.1
 + orkl==0.1.0 (from file:///C:/Users/user/orkl)
 + pydantic==2.10.6
 + pydantic-core==2.27.2
 + pydantic-settings==2.8.1
 + python-dotenv==1.0.1
 + sniffio==1.3.1
 + sse-starlette==2.2.1
 + starlette==0.46.1
 + typing-extensions==4.12.2
 + uvicorn==0.34.0

Claude.app detected. Would you like to install the server into Claude.app now? [Y/n]: Y
✅ Added orkl to Claude.app configuration
Settings file location: C:\Users\user\AppData\Roaming\Claude\claude_desktop_config.json
✅ Created project orkl in orkl
ℹ️ To install dependencies run:
   cd orkl
   uv sync --dev --all-extras

(3)プロジェクトが生成されるので、依存関係をインストール

PS C:\Users\user> cd orkl
PS C:\Users\user\orkl> uv sync --dev --all-extras

(4)MCPサーバーがORKL APIと対話するよう、ソースコードを編集
主要なデコレータは以下の通り:

  • list_resources:サーバーによって提供される利用可能なリソース (データ、ファイル、エンドポイントなど) のリストを取得します。
  • read_resource:特定のリソースのコンテンツまたは詳細にアクセスします。
  • list_tools:サーバー上で対話に使用できるツールまたは機能を一覧表示します。
  • call_tool:サーバー上で特定のツールまたはアクションを実行します。

GitHubを参照に、以下の2つのPythonファイルをorklプロジェクトフォルダ直下のsrcフォルダに保存(ダウンロード)してください。

    ディレクトリ: C:\Users\user\orkl\src
Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
-a----        2025/03/19      0:05           9598 server.py
-a----        2025/03/19      0:05            212 __init__.py

5-7.claude_desktop_config.jsonの設定

Claude Desktop(MCPクライアント)がMCPサーバーを認識するよう設定します。
(1)Claude Desktopを起動し、アカウントにログイン
  (アカウントを持っていない場合は、アカウントを作成しログインしてください。)

(2)左上の三本線の[ハンバーガーメニュー] > [ファイル] > [設定] > [開発者] > [構成を編集]を順に押下

(3)以下のjsonファイルをテキストエディターで開く

C:\Users\user\AppData\Roaming\Claude\claude_desktop_config.json

(4)以下を追加して更新

{
  "mcpServers": {
    "orkl": {
      "command": "uv",
      "args": [
      "--directory",
      "C:\\Users\\user\\orkl",
      "run",
      "orkl"
      ]
    },
    "virustotal": {
      "command": "mcp-virustotal",
      "env": {
        "VIRUSTOTAL_API_KEY": "あなたのAPI Keyを入力"
      }
    }
  }
}

5-8.MCPサーバーの認識確認

(1)Claude Desktopを終了
タスクマネージャーからClaudeを右クリックし[タスクの終了]を押下して停止します。
(2)Claude Desktopを起動
以下の画像のように、右側に、利用可能なツールの数を示す新しいアイコンが表示されれば、成功です。

 ※私の場合、他のMCPサーバーも設定しているため、あなたの画面と表示は異なります。

6.脅威インテリジェンスレポートの取得

すべてが正しく構成されているはずなので、Claude Desktopを使用してVirusTotal・ORKLにリクエストを送信できます。

6-1.テストプロンプトの入力

VirusTotal

”0bc63fbe7843ff41fc6f933af3a459b9b8057599e28366e9b60f2e346ecf2de8のレポートを表示してください”と送信してください。

ORKL

"最新の脅威レポートを表示してください"と送信してください。

7.まとめ

Windows 11上でMCPとVirusTotal・ORKLを活用し、脅威インテリジェンスラボを構築しました。MCPの標準化された統合とVirusTotal・ORKLの豊富なCTIにより、脅威インテリジェンスの取得を効率化し、セキュリティオペレーションを強化できます。
MaigretやShodanのMCPサーバーもコミュニティで公開されている為、OSINTラボも興味深いです。
将来的には、SIEMソリューションを統合した、脅威ハンティングラボを構築したいと考えています。

参考文献

Discussion

ログインするとコメントできます