Skip to content
KitploitKITPLOIT
OutilsBlog
Soumettre
OutilsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
masq — Reconnaissance en direct et audit de posture pour l'infrastructure des agents IA : analyse les configurations MCP, les journaux de session et les API à la recherche de secrets, de catalogues empoisonnés et de fuites CoT. | Kitploit
Outils/GitLabGitLab/wattocyber/masq
ReconnaissanceAnalyse StatiqueAnalyse des VulnérabilitésTests de Sécurité des APIAudit de ConfigurationDétection de SecretsSécurité de la Chaîne LogistiqueSécurité de l'IAAnalyse de Journaux
GitLabwattocyber/masq

masq

Reconnaissance en direct et audit de posture pour l'infrastructure des agents IA : analyse les configurations MCP, les journaux de session et les API à la recherche de secrets, de catalogues empoisonnés et de fuites CoT.

il y a 2 joursPas encore vérifié

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Voir le dépôtSite web
Partager

masq : asseyez-vous dans le siège de l'agent

Mascarade de la Renaissance. Asseyez-vous dans le siège de l'agent.

masq

Asseyez-vous dans le siège de l'agent.

Un CLI qui parle MCP et compatible OpenAI comme le fait le modèle, puis rapporte à la façon de linpeas. Constats plus remédiations. Aucune charge utile d'exploitation. Aucun déchiffrement CoT.

QuoiReconnaissance en direct de l'infra des agents : configurations MCP, écouteurs, journaux de session, écho de chaîne de pensée chiffrée, API non authentifiées, empoisonnement de catalogue, arbres de compétences.
QuiOpérateurs d'Hermes, Grok, Claude, Cursor, VS Code, Codex et de piles de modèles locales qui ont besoin de voir ce que l'agent peut voir.
Ce que ce n'est pasPas un générateur de jailbreak. Pas le décodeur de modèle plus faible arXiv:2608.09867. Pas une passerelle d'exécution.
StatutBêta. Le cargo test hors ligne est la porte publique. Le --lab en direct est pour les hôtes que vous possédez.
LicenceMIT

pipeline license rust

Pourquoi cela existe

Les scanners MCP statiques (Invariant mcp-scan, mcp-security-scan) lintent les schémas et les configurations. Les contrôleurs de santé pingent initialize. Le trou, c'est le siège :

  1. Les blobs de raisonnement chiffrés sont renvoyés au client et stockés dans les journaux de session. Ils sont portables entre sessions, utilisateurs et modèles frères plus faibles (arXiv:2608.09867). Le raclage de 315k blobs publics a récupéré 182 identifiants. masq détecte ces blobs. Il ne les décode pas.
  2. Une grande partie des serveurs MCP publics n'ont pas d'authentification. Si vous pouvez initialize, vous êtes l'agent.
  3. Les ports de modèles locaux (:11434, :8000) se lient souvent à 0.0.0.0 sans bearer.

Des roues que nous enfourchons, pas que nous réécrivons : détecteurs de catalogue existants + pin/check, netstat, ureq en GET uniquement, OWASP MCP Top 10 comme taxonomie des constats. Nous n'avons pas cloné mcp-scan ni mcp-security-scan.

Install

root@kitploit:~
git clone https://gitlab.com/WattoCyber/masq.git
cd masq
cargo install --path .
# binary: masq
cargo test
# expect: exit 0

Suite World (binaire contre des fixtures, mocks locaux, recon de cet hôte) :

root@kitploit:~
python scripts/world_suite.py
# field = ~/.grok/sessions  lab = allowlisted hosts  bench = frozen-corpus wall
python scripts/world_suite.py --lanes all

Boîte distante façon Kali, depuis le poste de travail :

root@kitploit:~
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

Parcours nominal

root@kitploit:~
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

Sortie : 0 propre · 2 constats ≥ --fail-on (défaut high) · 1 erreur.

La TUI est facultative (masq tui ou --tui). Par défaut, sur un tty, un flux en direct façon linpeas, puis le rapport. Cron utilise --plain / --no-color.

Commandes

Alias : doctor / audit → scan. chameleon → mimic. posture → seat.

Modules vs OWASP MCP Top 10

Transports et authentification

sit / chameleon parlent :

  • Streamable HTTP (http://)
  • HTTP+SSE (événement de point de terminaison GET, puis POST)
  • ws://
  • unix: et npipe:
  • stdio (--framing auto essaie NDJSON puis Content-Length)

Authentification (jamais déversée dans le rapport) :

  • --token-file PATH (la première ligne devient Authorization: Bearer …)
  • --token-env VAR
  • --header "Name: value" (répétable)

wss:// n'est pas intégré. Stunnel vers ws:// ou utilisez HTTP. HTTP ne suit aucune redirection.

L'initialize stdio n'annonce pas sampling. Signalez sampling / elicitation du serveur. Les URL de documentation (model-catalog.json, /docs/) sont ignorées à dessein.

Hôtes découverts par masq

Racines de configuration + skills sous $HOME / %USERPROFILE% :

VS Code, Cursor, Windsurf, Claude Desktop, Claude Code, Grok, Hermes, Codex, Continue, Gemini CLI, Amp, Kiro, OpenCode, Amazon Q, Antigravity, OpenClaw.

Plus le .mcp.json du répertoire courant et MASQ_EXTRA_CONFIG (liste de chemins OS).

Liste autorisée lab (--lab)

--lab est une liste autorisée, pas un scan /24. Elle est configurée par l'opérateur. Rien n'est compilé au-delà du loopback.

  • Variable d'environnement MASQ_LAB_HOSTS : hôte:port ou hôtes séparés par des virgules, des espaces ou des retours à la ligne.
  • Fichier .masq/lab-hosts : un hôte par ligne, commentaires #.

Exemple :

root@kitploit:~
export MASQ_LAB_HOSTS="192.0.2.10,192.0.2.11"
masq --lab

MASQ_LAB_HOSTS est lu pour les sondes API et le regroupement de flotte TUI. MASQ_SIT_URLS (ou un --mcp-url) fournit les URL MCP sur lesquelles s'asseoir avec --lab.

sit --url hors loopback nécessite --lab et un hôte en liste autorisée. Un initialize non authentifié sur loopback est High. Hors de la machine est Critical.

Ne pointez pas proxy vers un hôte sur lequel vous ne vous assiériez pas.

Limites strictes

Priorité de sniff : chat_history.jsonl d'abord, puis Hermes request_dump_*, puis les autres jsonl. Le parcours va jusqu'au bout. Il ne conserve pas les 300 premières occurrences WalkDir. Pointez masq sniff <un-dossier-de-session> pour aller plus loin.

Overnight

root@kitploit:~
masq overnight --lab --hours 6 --interval-mins 20
# writes <cwd>/reports/overnight-YYYYMMDD/{latest.json,latest.md,latest.txt,delta.txt}

Ne modifie pas les configurations. N'émet pas de tools/call vers le serveur en direct. delta.txt est baseline / no_change / CHANGE, plus + titre de sévérité et - titre de sévérité.

classify --llm et le module complémentaire de triage TUI sont les seuls POST de complétions (Grok /v1/chat/completions, confirmation de l'opérateur). Sans clé : remédiations locales uniquement. Clé depuis XAI_API_KEY ou ~/.secrets/xai.txt. Jamais déversée.

Architecture

root@kitploit:~
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

Crate de bibliothèque : masq (scan_from_tools_list, scan_stdio, run_seat, PostureReport).

Périmètre honnête

Ne déversez pas ~/.secrets. Recon compte les fichiers. Chemin + « loaded ».

Tests hors ligne

root@kitploit:~
cargo test
cargo clippy --all-targets -- -D warnings

Sortie attendue : 0.

Fixtures : T1 empoisonnement de description, T3 saut de ligne, T6 noms de paramètres, T8 ANSI, T13 noms dupliqués, rugpull d'épingles, multi-liste, mock NDJSON en direct sous tests/mock_mcp_server.py.

Les secrets restent hors de git (reports/, data/, .env, *.key, secrets/, .masq/).

Licence

MIT. Copyright 2026 SamsonCyber.

Télécharger l’outil
CommandeCe qu'elle fait
seat (défaut)Posture complète : recon + sniff + api + skills + sit facultatif.
reconFichiers de configuration, écouteurs, URL fantômes, argv sudo, npx/uvx non épinglés.
sniffJournaux de session pour secrets, raisonnement en clair, écho CoT chiffré.
sniff --timelineLignes T0001 dans l'ordre des fichiers. Pas de déchiffrement. Plafonne à 200 événements/fichier.
api/v1/models (et apparentés) en GET uniquement sur loopback ; --lab ajoute les pairs en liste autorisée.
sitParle MCP : initialize, notifications/initialized, tools/list, prompts/list, resources/list. N'émet jamais tools/call.
chameleon / mimicS'assoit sur un catalogue en direct ou depuis fichier, écrit catalog.json + aimock.json + calls.json. Les enveloppes d'exemple tools/call sont pour aimock uniquement.
discoverAffiche les chemins de configuration MCP connus des agents. Aucun lancement.
proxyTransfère le JSON-RPC de l'agent. --block refuse les paramètres/résultats tools/call en forme de secret. Écoute par défaut sur 127.0.0.1:9877.
sastPuits de code source locaux. Utilise semgrep s'il est installé.
classifyRevue locale IPI / empoisonnement d'un tools/list en direct. --llm demande à Grok (clé de l'opérateur).
overnightRépète seat jusqu'à épuisement de --hours. Écrit des rapports. Ne modifie pas les configurations.
mapRequêtes textuelles de chemins d'attaque sur un JSON de posture enregistré. Pas de diagramme.
scan / multiLint statique de catalogue (les chemins .json nus y sont réécrits).
pin / checkMagasin d'épingles à empreinte de contenu (.masq/pins.json) pour une CI anti-rugpull.
detectorsAffiche le pack de règles du catalogue.
tuiSeat en boîte. Reste jusqu'à Ctrl+C.
ModuleCouvre
reconMCP01 chemin des secrets, MCP04 npx/uvx non épinglés, MCP07/09 écouteurs et URL fantômes, MCP05 argv sudo
catalogMCP03 empoisonnement de schéma / shadowing / rugpull
skillsMêmes détecteurs de catalogue sur SKILL.md (Hermes, Grok, Claude, Cursor, Codex, Gemini, Amp, Kiro, OpenCode, OpenClaw). Pas de Snyk cloud.
sitMCP02 dérive du périmètre, MCP03 tools/list en direct, MCP07 initialize non authentifié, annonce de sampling/elicitation par le serveur, Streamable HTTP (2025-06-18) puis HTTP+SSE (2024-11-05), rebinding DNS d'origine
sniffMCP01 + MCP10 + écho CoT chiffré arXiv:2608.09867 (y compris thinkingSignature)
apiMCP07 /v1/models non authentifié, MCP09 liaison LAN
watchdiff d'épingles sur .masq/pins.json + skills. Overnight le configure. Pas un proxy.
fleetregroupement de la liste autorisée lab dans une section FLEET
mapRequêtes textuelles de chemins sur un rapport de posture
LimiteValeur
fichier tools/list8 MiB
fichier sniff8 MiB (2 premiers MiB échantillonnés si plus grand)
fichiers sniff / racine300 (mtime le plus récent dans la priorité)
événements de timeline / fichier200, puis timeline truncated
lignes T de timeline500 (inspect et collapse s'exécutent quand même)
profondeur de parcours de schéma64
outils par inventaire5_000
sonde HTTPGET uniquement, 2 s API / 5 s sit
poignée de main sitdélai d'attente + arrêt
Cet outilPas cet outil
S'asseoir en client de l'agent (initialize + list)Émettre tools/call vers un serveur en direct
Détecter l'écho CoT chiffré dans les journauxDéchiffrer CoT ou le rejouer dans un modèle plus faible
GET /v1/modelsPOST de complétions (sauf triage TUI facultatif / classify --llm)
Rugpull à empreinte épinglée sur un cataloguePKI signée / coffre d'épingles d'entreprise
Transférer le tools/call de l'agent dans proxy --blockPasserelle DLP complète à l'exécution / plan de contrôle SaaS
Lint local d'arbre de compétencesSnyk / SCA cloud
VérificationAttendu
masq fixtures/clean_calculator.json --trustedsortie 0
masq fixtures/t3_line_jump.jsonsortie 2
masq fixtures/t13_duplicate_names.jsonsortie 2 (shadowing d'outils)
masq sniff --timeline fixtures/ (non-TTY / --json)T0001 uniquement avec le drapeau
masq chameleon fixtures/clean_calculator.json -o <tmpdir>catalog.json, aimock.json, calls.json
masq --no-color en directjetons masqués (…, pas le sk- complet)