1 Punkte von foundcake21 2026-04-13 | Noch keine Kommentare. | Auf WhatsApp teilen

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.rc codiert — 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.

Noch keine Kommentare.