
लाइव रिकॉन और AI एजेंट इंफ्रास्ट्रक्चर के लिए पोस्चर ऑडिटिंग: सीक्रेट्स, पॉइज़न्ड कैटलॉग और CoT लीक्स के लिए MCP कॉन्फ़िग्स, सेशन लॉग्स और APIs स्कैन करता है।
पुनर्जागरण मास्करेड। एजेंट की सीट पर बैठें।
एजेंट की सीट पर बैठें।
एक CLI जो मॉडल की तरह MCP और OpenAI-संगत बोलता है, फिर linpeas की तरह रिपोर्ट करता है। निष्कर्ष और सुधार। कोई exploit पेलोड नहीं। कोई CoT डिक्रिप्ट नहीं।
| क्या | एजेंट इंफ्रा की लाइव recon: MCP कॉन्फ़िग, लिसनर, सत्र लॉग, एन्क्रिप्टेड chain-of-thought इको, बिना-प्रमाणीकरण API, कैटलॉग पॉइज़न, स्किल ट्री। |
| किसके लिए | Hermes, Grok, Claude, Cursor, VS Code, Codex और स्थानीय मॉडल स्टैक के ऑपरेटर, जिन्हें यह देखना है कि एजेंट क्या देख सकता है। |
| यह क्या नहीं है | जेलब्रेक जनरेटर नहीं। arXiv:2608.09867 कमज़ोर-मॉडल डिकोडर नहीं। रनटाइम गेटवे नहीं। |
| स्थिति | बीटा। ऑफ़लाइन cargo test सार्वजनिक गेट है। लाइव --lab आपके अपने होस्ट के लिए है। |
| लाइसेंस | MIT |
स्टैटिक MCP स्कैनर (Invariant mcp-scan, mcp-security-scan) स्कीमा और कॉन्फ़िग को lint करते हैं। हेल्थ डॉक्टर initialize को ping करते हैं। कमी सीट (seat) है:
initialize कर सकते हैं, तो आप ही एजेंट हैं।:11434, :8000) अक्सर बिना बियरर के 0.0.0.0 पर बाइंड होते हैं।हम जिन पहियों पर सवार हैं, उन्हें दोबारा नहीं लिखते: मौजूदा कैटलॉग डिटेक्टर + pin/check, netstat, ureq GET-ओनली, OWASP MCP Top 10 निष्कर्ष-वर्गीकरण के रूप में। हमने mcp-scan या mcp-security-scan की क्लोनिंग नहीं की।
git clone https://gitlab.com/WattoCyber/masq.git
cd masq
cargo install --path .
# binary: masq
cargo test
# expect: exit 0
वर्ल्ड सूट (फिक्स्चर के विरुद्ध बाइनरी, स्थानीय मॉक्स, इस-होस्ट recon):
python scripts/world_suite.py
# field = ~/.grok/sessions lab = allowlisted hosts bench = frozen-corpus wall
python scripts/world_suite.py --lanes all
Kali-शैली रिमोट बॉक्स, डेस्कटॉप से:
MASQ_REMOTE_HOST=user@host bash scripts/deploy_kali.sh
# on the box:
~/.local/bin/masq --plain
MASQ_LAB_HOSTS=... ~/.local/bin/masq --lab --plain
masq # live stream + posture report (includes skills)
masq --lab # same, plus allowlisted homelab hosts
masq tui # boxed TUI, stays until Ctrl+C
masq --plain # report only, no live stream
masq --json # machine report
masq recon # same dump, recon only
masq sniff ~/.grok/sessions # CoT / secrets in session logs
masq sniff --timeline PATH # file-order blob/secret/reason lines (no decrypt)
masq api # GET /v1/models on local (and --lab) ports
masq sit --url http://127.0.0.1:4443/mcp
masq chameleon --url http://127.0.0.1:4443/mcp -o /tmp/chameleon
masq chameleon --url ws://127.0.0.1:9000/mcp -o /tmp/chameleon
masq chameleon --url unix:///tmp/mcp.sock -o /tmp/chameleon
masq chameleon --token-file ~/.secrets/mcp.txt --url http://127.0.0.1:9/mcp -o /tmp/chameleon
masq chameleon -- python -m their_mcp -o /tmp/chameleon
# then: npx -y @copilotkit/aimock --config /tmp/chameleon/aimock.json
masq discover # find VS Code / Cursor / Claude / Grok / Hermes MCP configs
masq proxy --upstream http://127.0.0.1:4443/mcp --block
masq sast ./server # local sinks (semgrep if present)
masq classify --url http://127.0.0.1:4443/mcp --lab
masq overnight --lab --hours 6
masq map --from reports/overnight-YYYYMMDD/latest.json
# catalog
masq fixtures/t3_line_jump.json
masq fixtures/clean_calculator.json --trusted
masq pin fixtures/clean_calculator.json -k calc
masq check fixtures/clean_calculator.json -k calc
masq detectors
एग्ज़िट: 0 स्वच्छ · 2 निष्कर्ष ≥ --fail-on (डिफ़ॉल्ट high) · 1 त्रुटि।
TUI ऑप्ट-इन है (masq tui या --tui)। tty पर डिफ़ॉल्ट एक linpeas लाइव स्ट्रीम है, फिर रिपोर्ट। क्रॉन --plain / --no-color का उपयोग करता है।
उपनाम: doctor / audit → scan। chameleon → mimic। posture → seat।
sit / chameleon ये बोलते हैं:
http://)ws://unix: और npipe:--framing auto पहले NDJSON आज़माता है, फिर Content-Length)प्रमाणीकरण (रिपोर्ट में कभी डंप नहीं किया जाता):
--token-file PATH (पहली पंक्ति Authorization: Bearer … बन जाती है)--token-env VAR--header "Name: value" (दोहराने योग्य)wss:// बिल्ट-इन नहीं है। ws:// के लिए Stunnel करें या HTTP उपयोग करें। HTTP शून्य रीडायरेक्ट का अनुसरण करता है।
Stdio initialize sampling का विज्ञापन नहीं करता। सर्वर sampling / elicitation को फ़्लैग करें। डॉक्स URL (model-catalog.json, /docs/) जानबूझकर अनदेखा किए जाते हैं।
$HOME / %USERPROFILE% के अंतर्गत कॉन्फ़िग + स्किल रूट्स:
VS Code, Cursor, Windsurf, Claude Desktop, Claude Code, Grok, Hermes, Codex, Continue, Gemini CLI, Amp, Kiro, OpenCode, Amazon Q, Antigravity, OpenClaw.
साथ ही cwd .mcp.json और MASQ_EXTRA_CONFIG (OS पथ सूची)।
--lab)--lab एक एलाउलिस्ट है, /24 स्कैन नहीं। यह ऑपरेटर-कॉन्फ़िगर्ड है। लूपबैक के अलावा कुछ भी कंपाइल-इन नहीं है।
MASQ_LAB_HOSTS env वेरिएबल: कॉमा-, स्पेस- या न्यूलाइन-सेपरेटेड host:port या होस्ट।.masq/lab-hosts फ़ाइल: प्रति पंक्ति एक होस्ट, # टिप्पणियाँ।उदाहरण:
export MASQ_LAB_HOSTS="192.0.2.10,192.0.2.11"
masq --lab
API प्रोब्स और TUI फ्लीट रोलअप के लिए MASQ_LAB_HOSTS पढ़ा जाता है। MASQ_SIT_URLS (या --mcp-url) --lab के साथ sit करने के लिए MCP URL प्रदान करता है।
ऑफ-लूपबैक sit --url के लिए --lab और एक एलाउलिस्टेड होस्ट चाहिए। लूपबैक पर बिना-प्रमाणीकरण initialize हाई (High) है। ऑफ-बॉक्स क्रिटिकल (Critical) है।
proxy को ऐसे होस्ट पर न लगाएँ जिस पर आप sit नहीं करेंगे।
Sniff प्राथमिकता: पहले chat_history.jsonl, फिर Hermes request_dump_*, फिर अन्य jsonl। वॉक पूरा होता है। यह पहले 300 WalkDir हिट्स को नहीं रखता। गहराई तक जाने के लिए masq sniff <one-session-dir> पर इंगित करें।
masq overnight --lab --hours 6 --interval-mins 20
# writes <cwd>/reports/overnight-YYYYMMDD/{latest.json,latest.md,latest.txt,delta.txt}
कॉन्फ़िग को म्यूटेट नहीं करता। लाइव सर्वर पर tools/call नहीं करता। delta.txt में baseline / no_change / CHANGE के साथ-साथ + severity title और - severity title होते हैं।
classify --llm और TUI ट्राइएज ऐड-ऑन ही एकमात्र completions POST हैं (Grok /v1/chat/completions, ऑपरेटर पुष्टि)। कुंजी न होने पर: केवल स्थानीय सुधार। कुंजी XAI_API_KEY या ~/.secrets/xai.txt से। कभी डंप नहीं होती।
CLI (clap) masq
→ seat | recon | sniff | api | sit | chameleon
→ discover | proxy | sast | classify | overnight | map
→ scan | multi | pin | check | detectors | tui
→ client (HTTP / SSE / ws / unix / npipe / stdio)
→ normalize (full-schema walk, caps)
→ detectors + sniff + recon + sit findings
→ report (text / JSON / Markdown) + optional TUI
लाइब्रेरी क्रेट: masq (scan_from_tools_list, scan_stdio, run_seat, PostureReport)।
~/.secrets को डंप न करें। Recon फ़ाइलें गिनता है। पथ + "loaded"।
cargo test
cargo clippy --all-targets -- -D warnings
एग्ज़िट 0 की अपेक्षा करें।
फिक्स्चर: T1 डिस्क्रिप्शन पॉइज़न, T3 लाइन-जंप, T6 पैराम नाम, T8 ANSI, T13 डुप्लीकेट नाम, pin रग-पुल, मल्टी-लिस्ट, tests/mock_mcp_server.py के अंतर्गत लाइव NDJSON मॉक।
सीक्रेट्स git से बाहर रहते हैं (reports/, data/, .env, *.key, secrets/, .masq/)।
MIT। कॉपीराइट 2026 SamsonCyber।
| कमांड | यह क्या करता है |
|---|
seat (डिफ़ॉल्ट) | पूर्ण पोस्चर: recon + sniff + api + skills + वैकल्पिक sit। |
recon | कॉन्फ़िग फ़ाइलें, लिसनर, शैडो URL, sudo argv, अनपिन किए गए npx/uvx। |
sniff | सीक्रेट्स, प्लेनटेक्स्ट रीज़निंग, एन्क्रिप्टेड CoT इको के लिए सत्र लॉग। |
sniff --timeline | फ़ाइल-क्रम T0001 लाइनें। कोई डिक्रिप्ट नहीं। प्रति फ़ाइल 200 इवेंट्स की सीमा। |
api | लूपबैक पर GET-ओनली /v1/models (और इसी तरह के एंडपॉइंट); --lab एलाउलिस्टेड पीयर्स जोड़ता है। |
sit | MCP बोलता है: initialize, notifications/initialized, tools/list, prompts/list, resources/list। कभी भी tools/call की शुरुआत नहीं करता। |
chameleon / mimic | लाइव या फ़ाइल कैटलॉग पर sit करता है, catalog.json + aimock.json + calls.json लिखता है। उदाहरण tools/call एनवलप्स केवल aimock के लिए हैं। |
discover | ज्ञात एजेंट MCP कॉन्फ़िग पथ प्रिंट करता है। कोई स्पॉन नहीं। |
proxy | एजेंट के JSON-RPC को फॉरवर्ड करता है। --block सीक्रेट-आकार के tools/call पैराम्स/रिज़ल्ट्स को अस्वीकार करता है। डिफ़ॉल्ट लिसन 127.0.0.1:9877। |
sast | स्थानीय सोर्स सिंक। इंस्टॉल होने पर semgrep का उपयोग करता है। |
classify | लाइव tools/list की स्थानीय IPI / पॉइज़न समीक्षा। --llm Grok से पूछता है (ऑपरेटर कुंजी)। |
overnight | --hours बीतने तक seat दोहराता है। रिपोर्ट लिखता है। कॉन्फ़िग को म्यूटेट नहीं करता। |
map | सहेजी गई पोस्चर JSON पर टेक्स्ट अटैक-पाथ क्वेरी। कोई डायग्राम नहीं। |
scan / multi | स्टैटिक कैटलॉग lint (बेयर .json पथ इस पर रीराइट होते हैं)। |
pin / check | रग-पुल CI के लिए कंटेंट-हैश पिन स्टोर (.masq/pins.json)। |
detectors | कैटलॉग रूल पैक प्रिंट करता है। |
tui | बॉक्स्ड सीट। Ctrl+C तक बनी रहती है। |
| मॉड्यूल | कवरेज |
|---|
| recon | MCP01 secrets पथ, MCP04 अनपिन किए गए npx/uvx, MCP07/09 लिसनर और शैडो URL, MCP05 sudo argv |
| catalog | MCP03 स्कीमा पॉइज़न / शैडोइंग / रग-पुल |
| skills | SKILL.md पर समान कैटलॉग डिटेक्टर (Hermes, Grok, Claude, Cursor, Codex, Gemini, Amp, Kiro, OpenCode, OpenClaw)। कोई Snyk क्लाउड नहीं। |
| sit | MCP02 स्कोप क्रीप, MCP03 लाइव tools/list, MCP07 बिना-प्रमाणीकरण initialize, सर्वर sampling/elicitation विज्ञापन, Streamable HTTP (2025-06-18) फिर HTTP+SSE (2024-11-05), Origin DNS-rebinding |
| sniff | MCP01 + MCP10 + arXiv:2608.09867 एन्क्रिप्टेड CoT इको (thinkingSignature सहित) |
| api | MCP07 बिना-प्रमाणीकरण /v1/models, MCP09 LAN बाइंड |
| watch | .masq/pins.json + skills पर pin-diff। Overnight इसे सेट करता है। प्रॉक्सी नहीं। |
| fleet | एक FLEET सेक्शन में lab एलाउलिस्ट रोलअप |
| map | पोस्चर रिपोर्ट पर टेक्स्ट पाथ क्वेरी |
| सीमा | मान |
|---|
| tools/list फ़ाइल | 8 MiB |
| sniff फ़ाइल | 8 MiB (बड़ी होने पर पहले 2 MiB सैंपल किए जाते हैं) |
| sniff फ़ाइलें / रूट | 300 (प्राथमिकता के भीतर नवीनतम mtime) |
| टाइमलाइन इवेंट्स / फ़ाइल | 200, फिर timeline truncated |
| टाइमलाइन T-लाइनें | 500 (inspect और collapse फिर भी चलते हैं) |
| स्कीमा वॉक गहराई | 64 |
| टूल्स प्रति इन्वेंटरी | 5_000 |
| HTTP प्रोब | केवल GET, 2s API / 5s sit |
| sit हैंडशेक | timeout + kill |
| यह टूल | यह टूल नहीं |
|---|
| एजेंट क्लाइंट के रूप में sit करना (initialize + list) | लाइव सर्वर पर tools/call की शुरुआत करना |
| लॉग में एन्क्रिप्टेड CoT इको का पता लगाना | CoT को डिक्रिप्ट करना या कमज़ोर मॉडल में रीप्ले करना |
GET /v1/models | POST completions (ऑप्ट-इन TUI ट्राइएज / classify --llm को छोड़कर) |
| कैटलॉग पर pin-हैश रग-पुल | साइन्ड PKI / एंटरप्राइज़ पिन वॉल्ट |
proxy --block में एजेंट के tools/call को फॉरवर्ड करना | पूर्ण रनटाइम DLP गेटवे / SaaS कंट्रोल प्लेन |
| स्थानीय स्किल-ट्री lint | Snyk / क्लाउड SCA |
| जाँच | अपेक्षा |
|---|
masq fixtures/clean_calculator.json --trusted | एग्ज़िट 0 |
masq fixtures/t3_line_jump.json | एग्ज़िट 2 |
masq fixtures/t13_duplicate_names.json | एग्ज़िट 2 (टूल शैडोइंग) |
masq sniff --timeline fixtures/ (non-TTY / --json) | केवल फ़्लैग के साथ T0001 |
masq chameleon fixtures/clean_calculator.json -o <tmpdir> | catalog.json, aimock.json, calls.json |
लाइव masq --no-color | टोकन रिडैक्टेड (…, पूर्ण sk- नहीं) |