Ich habe das bestehende kali-mcp in Go neu implementiert.
(github.com/found-cake)Hallo. Ich bin Student der Informationssicherheit.
Für Pentesting / Traffic-Tests / die Automatisierung von CTF-Aufgaben habe ich kali-mcp häufig verwendet. In einer Umgebung, in der mehrere Agenten gleichzeitig angebunden sind, kam es jedoch zu Engpässen, daher habe ich es selbst in Go neu implementiert.
GitHub: https://github.com/found-cake/kali-mcp-go
Aufbau und Grenzen des bisherigen kali-mcp
Das Original ist in Flask + Python implementiert. Die Struktur ist so aufgebaut, dass die Klasse CommandExecutor für jede Anfrage subprocess.Popen erzeugt und dann zusätzlich zwei Daemon-Threads startet, um jeweils stdout/stderr zu lesen.
Für einen einzelnen Agenten reicht das aus, aber wenn in einer Multi-Agent-Umgebung viele gleichzeitige Anfragen eingehen, treten folgende Probleme auf.
- Flask mit standardmäßig nur einem Worker — Agenten blockieren sich gegenseitig
- Overhead durch das Erzeugen von Prozessen + Threads pro Anfrage
- Agenten missverstehen Antwortverzögerungen als Timeout und versuchen dieselbe Aufgabe erneut
Wichtige Änderungen
Server
- Bisher: Flask (standardmäßig ein einzelner Worker)
- Neu: Fiber v3 / fasthttp — vollständige Nebenläufigkeit
Sammeln der Ausgabe
- Bisher: readline-Schleife mit 2 Daemon-Threads
- Neu: 2 Goroutines + WaitGroup zur Synchronisierung; der Zeitpunkt der Erfassung von stdout/stderr wird klar abgestimmt, sodass die Verarbeitung ohne Ausgabeverlust erfolgt
timeout/cancel
- Bisher:
process.wait(timeout=...)+ erzwungenes kill - Neu: context-basiert — auch die Pipes werden sauber geschlossen
Temporäre Metasploit-Datei
- Bisher: fest auf
/tmp/mks_msf_resource.rccodiert — bei gleichzeitigen Anfragen mögliche Race Condition - Neu:
os.CreateTemp— sichere Verarbeitung mit eindeutigem Dateinamen pro Anfrage
tshark-Unterstützung
- Bisher: keine
- Neu: eigener Endpunkt hinzugefügt
Architektur
Die bisherige 2-Tier-Struktur wurde beibehalten, während das Innere ausgetauscht wurde.
[AI Client] →(MCP stdio)→ [mcp-client] →(HTTP + Bearer token)→ [kali-server] →(exec)→ [nmap, tshark, ...]
Noch keine Kommentare.