
Plugin Volatility 3 che estrae candidati di messaggi MCP/JSON-RPC dai dump di memoria Windows e Linux, preservando i byte grezzi, gli indirizzi e lo SHA-256 per la verifica.
MCPTrace è un plugin di Volatility 3 per estrarre candidati messaggi MCP/JSON-RPC da dump di memoria Windows e Linux. Esamina la memoria dei processi alla ricerca di richieste, risposte, notifiche, nomi di tool e argomenti delle chiamate, quindi registra il contenuto recuperato insieme alla sua posizione in memoria.
Il progetto si concentra su evidenze che un analista può ispezionare e verificare. Ogni artefatto conserva i byte originali, il process ID, l'indirizzo virtuale, la codifica, la lunghezza e l'hash SHA-256. I risultati possono essere esportati come JSONL per ulteriori analisi o per il confronto con altri log. MCPTrace opera su un'immagine di memoria acquisita e non richiede un LLM o un'API AI esterna.
tools/call.I target di analisi attuali sono Windows x64 e Linux x86-64. Il nome del plugin si riferisce al sistema operativo presente nell'immagine di memoria, indipendentemente dal sistema operativo utilizzato per eseguire Volatility.
MCPTrace utilizza l'enumerazione dei processi e la traduzione degli indirizzi di Volatility. Su Windows, attraversa i Virtual Address Descriptor (VAD) dei processi; su Linux, attraversa le Virtual Memory Area (VMA). Queste mappature definiscono quali intervalli di indirizzi dei processi vengono esaminati. I due adattatori condividono lo stesso codice di carving dei messaggi, correlazione, policy ed esportazione.
All'interno degli intervalli leggibili, lo scanner cerca i marcatori letterali della versione JSON-RPC e individua i candidati oggetti JSON attorno ad essi. Gestisce oggetti annidati, caratteri di escape, parentesi graffe all'interno delle stringhe e messaggi che si estendono su chunk di lettura contigui. Il JSON con chiavi duplicate o identificatori non supportati viene rifiutato anziché essere reinterpretato silenziosamente. La rilevanza MCP è determinata da nomi di metodi noti, forme di risposta e request ID associati; non si tratta di una validazione completa dello schema MCP.
La memoria mancante rimane mancante. Il lettore non riempie le lacune con zeri né unisce
byte attraverso VAD/VMA separati. Con --include-partial, i frammenti non analizzati possono essere
mostrati separatamente, senza inventare ID o argomenti mancanti. Gli intervalli non mappati di grandi dimensioni
possono essere saltati utilizzando le informazioni della page table, e gli intervalli di indirizzi non leggibili rimangono
visibili nelle statistiche di scansione.
La correlazione è volutamente conservativa. Un ID numerico come 1 è distinto dall'ID
stringa "1", e i messaggi in processi diversi non vengono collegati automaticamente.
Le molteplici rappresentazioni distinte associate a un ID vengono contrassegnate come ambigue.
Le relazioni candidate non ricostruiscono da sole una sessione, una direzione dei messaggi o una
cronologia di esecuzione.
Richiede Python 3.10+. L'installazione include la dipendenza del framework con versione fissata,
volatility3==2.28.2. Mantieni disponibile la directory plugins/ del repository: il pacchetto
Python viene installato con pip, mentre -p plugins carica gli adattatori di Volatility.
git clone https://github.com/Kowntaewook/MCPTrace.git
cd MCPTrace
python -m venv .venv
Attiva l'ambiente per la tua shell:
.\.venv\Scripts\Activate.ps1source .venv/bin/activatePoi installa MCPTrace:
python -m pip install .
Esegui i seguenti esempi dalla radice del repository con l'ambiente virtuale attivo. Sostituisci i percorsi delle immagini e i PID con le tue evidenze e i processi target. I client e i server MCP possono essere eseguiti in processi separati, quindi ispeziona entrambi dove pertinente.
Windows
Verifica che Volatility sia in grado di interpretare l'immagine ed enumerarne i processi prima di eseguire MCPTrace. La preparazione dei simboli di Windows potrebbe richiedere accesso alla rete.
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
Posiziona i simboli ISF corrispondenti alla build esatta del kernel del dump in symbols/linux/.
Se linux.pslist.PsList non riesce a risolvere il proprio kernel o i requisiti del layer, risolvi
la configurazione di immagine/simboli prima di interpretare l'output di MCPTrace.
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 per analizzare tutti i processi, oppure passa più PID: --pid 4242 5252.--dump esporta file JSONL per processo nella directory specificata da -o.vol -p plugins windows.mcptrace.MCPTrace -h (o l'equivalente Linux) per tutte le opzioni.Per una resa JSON della tabella completa dei risultati, inserisci l'opzione globale -r json prima
del nome del plugin. Questo è separato dalle esportazioni JSONL per processo prodotte da --dump.
vol -p plugins -f windows.raw -r json windows.mcptrace.MCPTrace --pid 4242 > findings.json
| Opzione | Scopo |
|---|---|
--pid 4242 5252 | Seleziona gli ID di processo; ometti per esaminare tutti i processi enumerati dall'adattatore. |
--dump | Esporta gli artefatti visualizzati e i riepiloghi delle scansioni come JSONL usando la directory globale -o. |
--include-partial | Include frammenti grezzi non analizzati senza ricostruire i campi mancanti. |
--include-rpc | Visualizza anche candidati JSON-RPC generici senza pertinenza MCP confermata. |
--policy PATH | Applica regole locali agli argomenti degli strumenti; vedi gli esempi per Windows e Linux. |
--suspicious-only | Mostra le corrispondenze delle policy e i riepiloghi; richiede una policy non vuota. |
--max-records N | Limita i record candidati per processo prima del filtraggio; predefinito: 10000. |
--max-object-bytes N | Limita la dimensione di un singolo oggetto JSON completo; predefinito: 65536 byte. |
--max-bytes N | Limita i byte dell'intervallo di indirizzi tentato per processo; 0 significa illimitato. |
I risultati delle policy descrivono le corrispondenze con le regole fornite dall'analista. Una corrispondenza non stabilisce un'attività malevola. Esamina i percorsi, gli host e i nomi degli strumenti di esempio prima di applicarli a un caso diverso.
Un file come mcptrace.pid-4242.jsonl contiene un record di metadati, record di artefatti
e un riepilogo finale della scansione. I metadati identificano il processo, il sistema operativo di destinazione e lo spazio
di indirizzamento. I record degli artefatti conservano sia il messaggio analizzato sia i byte esatti recuperati.