
Volatility 3 प्लगइन जो Windows और Linux मेमोरी डंप से MCP/JSON-RPC संदेश उम्मीदवारों को निकालता है, सत्यापन के लिए रॉ बाइट्स, पते और SHA-256 को संरक्षित रखता है।
MCPTrace एक Volatility 3 प्लगइन है जो Windows और Linux मेमोरी डंप से MCP/JSON-RPC संदेश उम्मीदवारों को निकालने के लिए है। यह अनुरोधों, प्रतिक्रियाओं, सूचनाओं, टूल नामों और कॉल आर्ग्युमेंट्स के लिए प्रक्रिया मेमोरी की जाँच करता है, फिर पुनर्प्राप्त सामग्री को मेमोरी में उसके स्थान के साथ रिकॉर्ड करता है।
यह परियोजना उन साक्ष्यों पर केंद्रित है जिन्हें एक विश्लेषक निरीक्षण और सत्यापित कर सके। प्रत्येक आर्टिफैक्ट अपने मूल बाइट्स, प्रक्रिया ID, वर्चुअल एड्रेस, एन्कोडिंग, लंबाई और SHA-256 हैश को बनाए रखता है। परिणामों को आगे के विश्लेषण या अन्य लॉग के साथ तुलना के लिए JSONL के रूप में निर्यात किया जा सकता है। MCPTrace एक अधिग्रहीत मेमोरी इमेज पर काम करता है और इसके लिए किसी LLM या बाहरी AI API की आवश्यकता नहीं होती।
tools/call नाम और आर्ग्युमेंट्स शामिल हैं।वर्तमान विश्लेषण लक्ष्य Windows x64 और Linux x86-64 हैं। प्लगइन का नाम मेमोरी इमेज में मौजूद ऑपरेटिंग सिस्टम को संदर्भित करता है, Volatility चलाने के लिए उपयोग किए गए OS से स्वतंत्र रूप से।
MCPTrace Volatility की प्रक्रिया गणना और एड्रेस अनुवाद का उपयोग करता है। Windows पर, यह प्रक्रिया Virtual Address Descriptors (VADs) को ट्रेस करता है; Linux पर, यह Virtual Memory Areas (VMAs) को ट्रेस करता है। ये मैपिंग परिभाषित करती हैं कि कौन-सी प्रक्रिया एड्रेस श्रेणियों की जाँच की जाएगी। दोनों एडाप्टर समान संदेश-कर्विंग, सहसंबंध, नीति और निर्यात कोड साझा करते हैं।
पठनीय श्रेणियों के भीतर, स्कैनर शाब्दिक JSON-RPC संस्करण मार्करों की खोज करता है और उनके आसपास उम्मीदवार JSON ऑब्जेक्ट्स का पता लगाता है। यह नेस्टेड ऑब्जेक्ट्स, एस्केप किए गए अक्षरों, स्ट्रिंग्स के भीतर ब्रेसिज़, और सन्निहित रीड चंक्स में फैले संदेशों को संभालता है। डुप्लिकेट कुंजियों या असमर्थित पहचानकर्ताओं वाले JSON को चुपचाप पुनर्व्याख्यायित करने के बजाय अस्वीकार कर दिया जाता है। MCP प्रासंगिकता ज्ञात विधि नामों, प्रतिक्रिया आकारों और संबंधित अनुरोध ID से निर्धारित होती है; यह पूर्ण MCP स्कीमा सत्यापन नहीं है।
अनुपस्थित मेमोरी अनुपस्थित ही रहती है। रीडर अंतरालों को शून्य से नहीं भरता और न ही अलग-अलग VADs/VMAs में बाइट्स को जोड़ता है। --include-partial के साथ, अपार्स किए गए अंशों को अलग से दिखाया जा सकता है, बिना अनुपस्थित ID या आर्ग्युमेंट्स का आविष्कार किए। पेज-टेबल जानकारी का उपयोग करके बड़ी अनमैप्ड श्रेणियों को छोड़ा जा सकता है, और अपठनीय एड्रेस श्रेणियाँ स्कैन आँकड़ों में दिखाई देती रहती हैं।
सहसंबंध जानबूझकर रूढ़िवादी है। 1 जैसा संख्यात्मक ID स्ट्रिंग ID "1" से भिन्न है, और विभिन्न प्रक्रियाओं में संदेश स्वचालित रूप से जुड़े नहीं होते। किसी ID से जुड़े कई भिन्न प्रतिनिधित्वों को अस्पष्ट के रूप में चिह्नित किया जाता है। उम्मीदवार संबंध अपने आप में किसी सत्र, संदेश दिशा या निष्पादन समयरेखा का पुनर्निर्माण नहीं करते।
Python 3.10+ आवश्यक है। स्थापना में पिन किया गया फ्रेमवर्क निर्भरता, volatility3==2.28.2, शामिल है। रिपॉज़िटरी की plugins/ निर्देशिका उपलब्ध रखें: Python पैकेज pip के साथ स्थापित होता है, जबकि -p plugins Volatility एडाप्टर लोड करता है।
git clone https://github.com/Kowntaewook/MCPTrace.git
cd MCPTrace
python -m venv .venv
अपने शेल के लिए वातावरण सक्रिय करें:
.\.venv\Scripts\Activate.ps1source .venv/bin/activateफिर MCPTrace इंस्टॉल करें:
python -m pip install .
वर्चुअल एनवायरनमेंट सक्रिय रखते हुए रिपॉज़िटरी रूट से निम्नलिखित उदाहरण चलाएँ। इमेज पथ और PID को अपने एविडेंस और लक्षित प्रोसेस से बदलें। MCP क्लाइंट और सर्वर अलग-अलग प्रोसेस में चल सकते हैं, इसलिए जहाँ प्रासंगिक हो वहाँ दोनों का निरीक्षण करें।
Windows
MCPTrace चलाने से पहले जाँच लें कि Volatility इमेज की व्याख्या कर सकता है और उसकी प्रोसेस की गणना कर सकता है। Windows सिंबल तैयार करने के लिए नेटवर्क एक्सेस की आवश्यकता हो सकती है।
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
डंप के सटीक कर्नेल बिल्ड से मेल खाने वाले ISF प्रतीकों को symbols/linux/ में रखें।
यदि linux.pslist.PsList अपने कर्नेल या लेयर आवश्यकताओं को हल नहीं कर पाता है, तो 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 छोड़ दें, या कई PID पास करें: --pid 4242 5252।--dump प्रति-प्रक्रिया JSONL फ़ाइलों को -o द्वारा निर्दिष्ट निर्देशिका में निर्यात करता है।vol -p plugins windows.mcptrace.MCPTrace -h (या Linux समकक्ष) का उपयोग करें।पूर्ण परिणाम तालिका के JSON रेंडरिंग के लिए, वैश्विक -r json विकल्प को
प्लगइन नाम से पहले रखें। यह --dump द्वारा उत्पादित प्रति-प्रक्रिया JSONL निर्यातों से अलग है।
vol -p plugins -f windows.raw -r json windows.mcptrace.MCPTrace --pid 4242 > findings.json
| विकल्प | उद्देश्य |
|---|---|
--pid 4242 5252 | प्रक्रिया ID चुनें; एडाप्टर द्वारा सूचीबद्ध सभी प्रक्रियाओं की जाँच के लिए इसे छोड़ दें। |
--dump | प्रदर्शित आर्टिफ़ैक्ट और स्कैन सारांश को वैश्विक -o निर्देशिका का उपयोग करते हुए JSONL के रूप में निर्यात करें। |
--include-partial | अनुपलब्ध फ़ील्ड को पुनर्निर्मित किए बिना कच्चे, अपार्सित अंशों को शामिल करें। |
--include-rpc | पुष्ट MCP प्रासंगिकता के बिना सामान्य JSON-RPC उम्मीदवारों को भी प्रदर्शित करें। |
--policy PATH | टूल आर्ग्युमेंट पर स्थानीय नियम लागू करें; Windows और Linux उदाहरण देखें। |
--suspicious-only | नीति मिलान और सारांश दिखाएँ; इसके लिए रिक्त न होने वाली नीति आवश्यक है। |
--max-records N | फ़िल्टरिंग से पहले प्रति प्रक्रिया उम्मीदवार रिकॉर्ड की सीमा तय करें; डिफ़ॉल्ट: 10000। |
--max-object-bytes N | एक पूर्ण JSON ऑब्जेक्ट के आकार की सीमा तय करें; डिफ़ॉल्ट: 65536 बाइट्स। |
--max-bytes N | प्रति प्रक्रिया प्रयास किए गए पता-रेंज बाइट्स की सीमा तय करें; 0 का अर्थ असीमित है। |
नीति निष्कर्ष विश्लेषक द्वारा दिए गए नियमों के विरुद्ध मिलानों का वर्णन करते हैं। कोई मिलान दुर्भावनापूर्ण गतिविधि सिद्ध नहीं करता। उदाहरण पथों, होस्टों और टूल नामों की किसी भिन्न मामले पर लागू करने से पहले समीक्षा करें।
mcptrace.pid-4242.jsonl जैसी फ़ाइल में एक मेटाडेटा रिकॉर्ड, आर्टिफ़ैक्ट रिकॉर्ड,
और एक अंतिम स्कैन सारांश होता है। मेटाडेटा प्रक्रिया, लक्ष्य OS, और पता
स्थान की पहचान करता है। आर्टिफ़ैक्ट रिकॉर्ड पार्स किए गए संदेश और ठीक-ठीक पुनर्प्राप्त बाइट्स दोनों को सुरक्षित रखते हैं।
| फ़ील्ड | अर्थ |
|---|---|
pid, virtual_address, region_start | साक्ष्य की प्रक्रिया और स्थान। पते प्रक्रिया के वर्चुअल पते हैं, इमेज फ़ाइल ऑफ़सेट नहीं। |
message, method, tool, request_id | पार्स किया गया संदेश सामग्री और चयनित फ़ील्ड, जब उपलब्ध हों। |
raw_base64, byte_length, raw_sha256 | मूल बाइट्स, उनकी लंबाई, और सत्यापन के लिए SHA-256। |
state, encoding | रिकॉर्ड पूर्ण है या अंश, और इसकी बाइट्स कैसे एन्कोड की गई हैं। |
relation, candidate_virtual_addresses | उम्मीदवार समकक्ष स्थान और क्या संबंध अस्पष्ट है। |
findings | वैकल्पिक आर्ग्युमेंट-नीति जाँचों के परिणाम। |