
Volatility-3-Plugin, das MCP/JSON-RPC-Nachrichtenkandidaten aus Windows- und Linux-Speicherabbildern extrahiert und dabei Rohbytes, Adressen und SHA-256 zur Verifizierung beibehält.
MCPTrace ist ein Volatility-3-Plugin zum Extrahieren von MCP/JSON-RPC-Nachrichtenkandidaten aus Windows- und Linux-Speicherabbildern. Es untersucht den Prozessspeicher auf Anfragen, Antworten, Benachrichtigungen, Tool-Namen und Aufrufargumente und zeichnet die wiedergefundenen Inhalte zusammen mit ihrer Position im Speicher auf.
Das Projekt konzentriert sich auf Belege, die ein Analyst prüfen und verifizieren kann. Jedes Artefakt behält seine ursprünglichen Bytes, Prozess-ID, virtuelle Adresse, Kodierung, Länge und seinen SHA-256- Hash. Ergebnisse können als JSONL exportiert werden, um sie weiter zu analysieren oder mit anderen Protokollen zu vergleichen. MCPTrace arbeitet auf einem erfassten Speicherabbild und benötigt weder ein LLM noch eine externe KI-API.
tools/call-Namen und -Argumenten.Die aktuellen Analyseziele sind Windows x64 und Linux x86-64. Der Plugin- Name bezieht sich auf das Betriebssystem im Speicherabbild, unabhängig vom Betriebssystem, das zum Ausführen von Volatility verwendet wird.
MCPTrace nutzt die Prozessaufzählung und Adressübersetzung von Volatility. Unter Windows durchläuft es die Virtual Address Descriptors (VADs) der Prozesse; unter Linux durchläuft es die Virtual Memory Areas (VMAs). Diese Zuordnungen definieren, welche Prozessadressbereiche untersucht werden. Die beiden Adapter teilen denselben Code für Message-Carving, Korrelation, Policy und Export.
Innerhalb lesbarer Bereiche sucht der Scanner nach literalen JSON-RPC-Versionsmarkern und lokalisiert Kandidaten für JSON-Objekte in deren Umgebung. Er verarbeitet verschachtelte Objekte, maskierte Zeichen, geschweifte Klammern innerhalb von Zeichenketten und Nachrichten, die sich über zusammenhängende Leseblöcke erstrecken. JSON mit doppelten Schlüsseln oder nicht unterstützten Bezeichnern wird verworfen, statt stillschweigend neu interpretiert zu werden. Die MCP-Relevanz wird anhand bekannter Methodennamen, Antwortformen und zugehöriger Anfrage-IDs bestimmt; es handelt sich nicht um eine vollständige MCP-Schema-Validierung.
Fehlender Speicher bleibt fehlend. Der Reader füllt Lücken nicht mit Nullen auf und verbindet
keine Bytes über separate VADs/VMAs hinweg. Mit --include-partial können nicht geparste Fragmente
separat angezeigt werden, ohne fehlende IDs oder Argumente zu erfinden. Große nicht zugeordnete Bereiche
können anhand von Seitentabelleninformationen übersprungen werden, und unlesbare Adressbereiche bleiben
in den Scan-Statistiken sichtbar.
Die Korrelation ist bewusst konservativ. Eine numerische ID wie 1 unterscheidet sich von
der String-ID "1", und Nachrichten in verschiedenen Prozessen werden nicht automatisch verknüpft.
Mehrere unterschiedliche Darstellungen, die einer ID zugeordnet sind, werden als mehrdeutig markiert.
Kandidatenbeziehungen rekonstruieren für sich genommen weder eine Sitzung, eine Nachrichtenrichtung noch eine
Ausführungszeitleiste.
Erfordert Python 3.10+. Die Installation umfasst die festgelegte Framework-Abhängigkeit,
volatility3==2.28.2. Halten Sie das Verzeichnis plugins/ des Repositorys verfügbar: Das Python-
Paket wird mit pip installiert, während -p plugins die Volatility-Adapter lädt.
git clone https://github.com/Kowntaewook/MCPTrace.git
cd MCPTrace
python -m venv .venv
Aktivieren Sie die Umgebung für Ihre Shell:
.\.venv\Scripts\Activate.ps1source .venv/bin/activateInstallieren Sie dann MCPTrace:
python -m pip install .
Führen Sie die folgenden Beispiele aus dem Repository-Stammverzeichnis mit aktivierter virtueller Umgebung aus. Ersetzen Sie die Bildpfade und PIDs durch Ihre Beweismittel und Zielprozesse. MCP-Clients und -Server können in separaten Prozessen laufen, daher sollten Sie beide bei Bedarf untersuchen.
Windows
Prüfen Sie, ob Volatility das Image interpretieren und seine Prozesse auflisten kann, bevor Sie MCPTrace ausführen. Die Vorbereitung von Windows-Symbolen kann Netzwerkzugriff erfordern.
vol -f windows.raw windows.info.Info
vol -f windows.raw windows.pslist.PsList
mkdir output-windows
vol -p plugins -f windows.raw -o output-windows windows.mcptrace.MCPTrace --pid 4242 5252 --dump
Linux
Legen Sie ISF-Symbole, die zum exakten Kernel-Build des Dumps passen, in symbols/linux/ ab.
Wenn linux.pslist.PsList seine Kernel- oder Layer-Anforderungen nicht auflösen kann, lösen Sie
das Image-/Symbol-Setup, bevor Sie die MCPTrace-Ausgabe interpretieren.
vol -s symbols -f linux.lime linux.pslist.PsList
mkdir output-linux
vol -p plugins -s symbols -f linux.lime -o output-linux linux.mcptrace.MCPTrace --pid 4242 --dump
--pid weg, um alle Prozesse zu scannen, oder übergeben Sie mehrere PIDs: --pid 4242 5252.--dump exportiert JSONL-Dateien pro Prozess in das durch -o angegebene Verzeichnis.vol -p plugins windows.mcptrace.MCPTrace -h (oder das Linux-Äquivalent) für alle Optionen.Für eine JSON-Darstellung der vollständigen Ergebnistabelle setzen Sie die globale Option -r json vor
den Plugin-Namen. Dies ist getrennt von den JSONL-Exporten pro Prozess, die durch --dump erzeugt werden.
vol -p plugins -f windows.raw -r json windows.mcptrace.MCPTrace --pid 4242 > findings.json
| Option | Zweck |
|---|---|
--pid 4242 5252 | Prozess-IDs auswählen; weglassen, um alle vom Adapter aufgezählten Prozesse zu untersuchen. |
--dump | Angezeigte Artefakte und Scan-Zusammenfassungen als JSONL im globalen -o-Verzeichnis exportieren. |
--include-partial | Rohe, nicht geparste Fragmente einbeziehen, ohne fehlende Felder zu rekonstruieren. |
--include-rpc | Zusätzlich generische JSON-RPC-Kandidaten ohne bestätigten MCP-Bezug anzeigen. |
--policy PATH | Lokale Regeln auf Tool-Argumente anwenden; siehe die Beispiele für Windows und Linux. |
--suspicious-only | Richtlinientreffer und Zusammenfassungen anzeigen; erfordert eine nicht leere Richtlinie. |
--max-records N | Kandidatendatensätze pro Prozess vor der Filterung begrenzen; Standard: 10000. |
--max-object-bytes N | Die Größe eines vollständigen JSON-Objekts begrenzen; Standard: 65536 Bytes. |
--max-bytes N | Die pro Prozess untersuchten Bytes des Adressbereichs begrenzen; 0 bedeutet unbegrenzt. |
Richtlinienbefunde beschreiben Übereinstimmungen mit den vom Analysten bereitgestellten Regeln. Eine Übereinstimmung belegt keine bösartige Aktivität. Prüfen Sie die Beispielpfade, Hosts und Toolnamen, bevor Sie sie auf einen anderen Fall anwenden.
Eine Datei wie mcptrace.pid-4242.jsonl enthält einen Metadatensatz, Artefaktdatensätze
und eine abschließende Scan-Zusammenfassung. Die Metadaten identifizieren den Prozess, das Zielbetriebssystem und den
Adressraum. Artefaktdatensätze bewahren sowohl die geparste Nachricht als auch die exakt wiederhergestellten Bytes auf.