0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Claude AI と Kali Linux をローカル連携して自然言語でペネトレーションテストツールを操作してみる

0
Last updated at Posted at 2026-03-09

はじめに

最近、Kali Linux と Anthropic の Claude を MCP(Model Context Protocol)経由で連携し、自然言語から Kali の各種ツールを呼び出せるようになったという記事を見かけました。

参考:Kali Linux Introduces Claude AI for Automated Penetration Testing Using Model Context Protocol

実際に調べてみると、Kali 側では mcp-kali-server が公開されており、Claude 側から MCP クライアントとして接続することで、Kali 上のツールを自然言語で操作できる構成になっています。

これにより、Kali 特有の操作スキルや専門知識が無くとも、自然言語を用いて簡易な脆弱性診断ができるようになります。
 
 
そこで、今回は自分の手元環境である Windows 11 + VirtualBox + Kali Linux で、この構成をローカル再現してみました。

免責

本記事は、ローカル検証環境および自身が管理するアセット(WEBサイトを含む)での確認を前提とした記録です。
第三者環境への無断スキャンや不正利用を意図するものではありません。
検証は必ず自分の環境、あるいは明示的に許可を得た対象でのみ実施してください。


結論

Windows 11 上の Claude Code から、VirtualBox 上の Kali Linux に対して SSH 経由で mcp-server を起動し、Kali 側で常駐させた kali-server-mcp と接続することで、自然言語から Kali ツールを呼び出せました。

 
公開サーバーに対して「ポートスキャンして結果を要約して」という単純な指示のみで、実際にポートスキャンを実施してくれます。
image.png
 
 

また、私が管理している試験用の WEB サイトに対しても同様の指示を実施したところ、スキャン結果から必要な対応までを示してくれました。
image.png

 
ということで実際に試した範囲では、

  • server_health による疎通確認
  • nmap によるポートスキャン
  • gobuster / dirb によるディレクトリ列挙
  • curl による robots.txt / sitemap.xml / HTTP/HTTPS 応答確認

まで一連で動作しました。

以下は実際に構築した手順です。


環境

ホスト側

  • OS: Windows 11
  • ターミナル: PowerShell
  • Claude: Claude Code
  • 仮想化: VirtualBox

ゲスト側

  • OS: Kali Linux
  • MCP 関連: mcp-kali-server

想定構成

Windows 11 (Claude Code)
  └─ SSH (127.0.0.1:2222)
      └─ Kali Linux (VirtualBox)
           ├─ kali-server-mcp   ← APIサーバー
           └─ mcp-server        ← Claude から SSH 経由で起動されるクライアント

今回は、Windows から Kali へ 127.0.0.1:2222 で SSH できる前提で進めています。


事前準備

1. Kali 側で必要パッケージを導入

まず Kali 側でアップデートを実施し、必要なパッケージを入れました。

sudo apt update && sudo apt -y full-upgrade
sudo apt install -y openssh-server mcp-kali-server nmap nikto gobuster dirb enum4linux-ng hydra john sqlmap wpscan wordlists
sudo gunzip -v /usr/share/wordlists/rockyou.txt.gz

2.Kali 側で MCP サーバーを起動

別ターミナルで kali-server-mcp を起動して待ち受けておきます。

kali-server-mcp

起動すると以下のように表示されました。

Starting Kali Linux Tools API Server on 127.0.0.1:5000
Running on http://127.0.0.1:5000
Press CTRL+C to quit

3. Windows 側から Kali に SSH できるようにする

Windows PowerShell で鍵を作成します。

ssh-keygen -t ed25519
Get-Content $env:USERPROFILE\.ssh\id_ed25519.pub

上記で表示された公開鍵を、Kali の authorized_keys に入れます。

mkdir -p ~/.ssh
chmod 700 ~/.ssh
echo 'ここにWindowsで表示された公開鍵1行を貼る' >> ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys
cat ~/.ssh/authorized_keys

その後、Windows から疎通確認して通ればOK。

ssh -p 2222 kali@127.0.0.1

4. Windows 側で Claude Code を入れる

Git for Windows を導入したうえで、Claude Code を入れます。
以下のコマンドを実施後にブラウザが起動するので、そこで認証しました。
※今回は Pro プランで登録しています。

winget install Anthropic.ClaudeCode
claude

5. Windows 側で Claude Code に Kali を MCP として登録する

Anthropic の公式ドキュメントでは、ローカル stdio MCP は claude mcp add --transport stdio -- [args...] で登録します。
※NAT の 2222→22 を使います。

claude mcp add --transport stdio kali-tools -- ssh -p 2222 kali@127.0.0.1 mcp-server

6. Kali 側で動作確認

以下のコマンドを実施すると、正常なら Successfully connected to Kali API server at http://localhost:5000 や Server health status: healthy が見えます。

mcp-server

実際に使ってみる

1. ヘルスチェック

最初に server_health を実行して疎通確認を行いました。
と言ってもこれも自然言語で、「MCPサーバーは接続されている?」と聞いただけです。
ついでに John や Hydra 等のツールも利用できるか確認しましたが、その用途も踏まえて返してくれます。
image.png


2. 自分が管理するドメインに対して低負荷スキャン

次に、自分が管理するドメインに対して、低負荷で早く終わる条件に絞って実行しました。

<自分が管理するドメイン> に対してサービス検出つきのポートスキャンを実行して。低負荷ですぐ終わるもので良い。

Claude 側は最初に

  • 本当に自分のドメインか
  • 正式に許可を受けた対象か

を確認してきたうえで、以下のオプションで nmap が実行されました。

-sV --top-ports 100 -T4 --open

このあたりは実務的にも使いやすく、広く深いスキャンではなく、まず公開面をざっと把握する用途に向いていると感じました。


3. gobuster / dirb / curl の流れ

ポートスキャンの後は、そのまま自然言語で公開ディレクトリや周辺情報の確認を続けました。
「公開しているディレクトリはどんなものがあるか」と聞くと、裏では Kali 上で gobuster や dirb、curl が順に使われていました。

gobuster dir -u https://<domain> -w /usr/share/wordlists/dirb/common.txt -t 20 -q --no-error -x php,html
gobuster dir -u https://www.<domain> -w /usr/share/wordlists/dirb/small.txt -t 10 -q --no-error
dirb https://www.<domain> /usr/share/wordlists/dirb/small.txt -S -r -z 100
curl -s -L --max-time 15 https://www.<domain>/robots.txt
curl -s -L --max-time 15 https://www.<domain>/sitemap.xml | head -100
curl -v --max-time 15 -k https://www.<domain>/ 2>&1 | head -50
curl -v --max-time 15 http://www.<domain>/ 2>&1 | head -60

この体験はかなり面白かったです。
はじめて TryHackMe に挑戦した時に、ググりまくって必死に探していたコマンドが、今や自然言語によって数秒で生成できるとは感慨深いです。


使ってみて感じたこと

当初は「どうせ使えるのは nmap や gobuster くらいかな」と思っていましたが、実際には導入パッケージ次第で、hydra、john、sqlmap、wpscan、enum4linux-ng なども同じ系統で扱えるようでした。

また、少し水を差すようですが恐怖も覚えました。
 
LLMがオーケストレーターとして機能し、これほど低いハードルで Kali を扱えるようになると、より高頻度で偵察フェーズの攻撃に転用されてしまうのではないか、ということです。(※そもそも Kali を悪用するなという大前提のお話です)
 
規模の大きな企業では、自社の公開サーバーをすべて把握しきれていないというケースもあるかと思うので、今後も防御側として、まずは EASM 等で自社のアセットを網羅 → 脆弱性管理ソリューションを用いて公開アセットのセキュリティホールを継続的にケアしていく…という考え方がより一層重要になってきそうです。たぶん。


最後に

Windows 11 + VirtualBox + Kali Linux という手元環境でも、Claude Code と Kali の MCP 連携は十分再現できました。

今回の流れを短くまとめると以下の通りです。

  1. Kali に mcp-kali-server と必要ツールを入れる
  2. SSH を有効化し、公開鍵認証を整える
  3. Kali 側で kali-server-mcp を起動する
  4. Windows 側の Claude Code から ssh ... mcp-server を MCP として登録する
  5. 自然言語で nmap / gobuster / dirb / curl を呼び出す

参考

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?