
Herramienta de análisis estático y dinámico para detectar código malicioso, binarios sospechosos y violaciones de privacidad
Instalación - Uso - Análisis Dinámico - Reglas YARA - CI/CD
Documentación: Inglés | Tiếng Việt
Herramienta de análisis estático y dinámico para detectar código malicioso, binarios sospechosos y violaciones de privacidad. Analiza código fuente, ejecutables compilados (.exe, .dll, .elf), paquetes macOS (.app, .dmg, .pkg), aplicaciones móviles (.apk, .ipa) y paquetes de aplicación con reglas YARA, sandboxing conductual con Docker, análisis móvil MobSF, desofuscación de payloads e informes en múltiples formatos (JSON, HTML, SARIF).
pip install malware-check
pipx install malware-check
git clone https://github.com/momenbasel/malware-check.git
cd malware-check
pip install -e ".[dev]"
Esto instala el CLI principal. El análisis de binarios mediante pefile/lief, la detección de archivos con IA mediante magika y el escaneo YARA mediante yara-python son extras opcionales.
# Núcleo + análisis de binarios + detección de archivos con IA + YARA
pip install malware-check[full]
# O instalar solo lo necesario
pip install malware-check[binary]
pip install malware-check[detect]
pip install malware-check[yara]
# O instalar extras manualmente
pip install pefile lief magika yara-python
pip install malware-check[detect]
Cuando está instalado, malware-check utiliza Magika para mejorar la identificación de archivos multiplataforma, enriquecer los metadatos de file_type y dirigir archivos sin extensión o disfrazados al analizador correcto basándose en el contenido en lugar del nombre del archivo.
# Requiere Docker - https://docs.docker.com/get-docker/
# Construir la imagen del sandbox (configuración única)
malware-check build-sandbox
malware-check info
El comando info mostrará si la detección de archivos potenciada por Magika está disponible.
Instálalo como una skill de Claude Code para que Claude pueda analizar archivos por ti:
# Instalar la skill desde GitHub
npx skills install momenbasel/malware-check --skill malware-check
# O manualmente: copiar skill/SKILL.md a tu directorio de skills
cp -r skill/ ~/.claude/skills/malware-check/
Luego en Claude Code, di: "escanear este archivo en busca de malware" o "¿este binario es seguro?" y Claude usará malware-check automáticamente.
También necesitas la herramienta CLI instalada:
pip install malware-check pefile lief yara-python
Instala la herramienta y agrégala a las instrucciones de tu agente Codex:
# 1. Instalar el CLI
pip install malware-check pefile lief yara-python
# 2. Agregar a tus instrucciones de Codex (codex.md o prompt del sistema)
echo 'Usa `malware-check scan <ruta> --verbose` para analizar archivos en busca de malware.' >> AGENTS.md
# 3. O instalar como una skill de Codex
cp -r skill/ .codex/skills/malware-check/
Para cualquier agente de codificación de IA que soporte uso de herramientas o instrucciones personalizadas:
# 1. Instalar
pip install malware-check
# 2. Agregar a las instrucciones del agente:
# "Cuando te pidan revisar código/binarios en busca de malware, usa: malware-check scan <objetivo> --verbose"
# "Para informes: malware-check scan <objetivo> --format html -o report.html"
# "Para CI/CD: malware-check scan <objetivo> --format sarif -o report.sarif --exit-code"
malware-check scan suspicious_file.py
# Mejores resultados cuando malware-check[detect] está instalado
malware-check scan suspicious_payload --verbose
malware-check scan /path/to/project --verbose
# Construir sandbox primero (única vez)
malware-check build-sandbox
# Escanear con análisis conductual
malware-check scan malware.exe --dynamic
malware-check scan /Applications/SuspiciousApp.app --dynamic --verbose
# Informe JSON
malware-check scan target/ --format json -o report.json
# Panel HTML
malware-check scan target/ --format html -o report.html
# SARIF para CI/CD
malware-check scan target/ --format sarif -o results.sarif
# Salir con código distinto de cero si hay hallazgos (para puertas CI)
malware-check scan . --format sarif -o results.sarif --exit-code
malware-check info
name: Security Scan
on: [push, pull_request]
jobs:
malware-check:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: "3.12"
- name: Install malware-check
run: pip install malware-check
- name: Run scan
run: malware-check scan . --format sarif -o results.sarif --exit-code
- name: Upload SARIF
if: always()
uses: github/codeql-action/upload-sarif@v3
with:
sarif_file: results.sarif
malware-check/
├── src/malware_check/
│ ├── cli.py # Punto de entrada CLI con Click
│ ├── scanner.py # Orquestador + detección de archivos opcional con Magika
│ ├── models.py # Modelos de datos: Finding, FileAnalysis, ScanResult
│ ├── analyzers/
│ │ ├── code.py # Coincidencia de patrones en código fuente (más de 40 reglas)
│ │ ├── binary.py # Análisis PE/Mach-O/ELF
│ │ ├── privacy.py # PII, seguimiento, permisos
│ │ ├── yara_engine.py # Compilación y escaneo de reglas YARA
│ │ └── dynamic.py # Análisis conductual en sandbox Docker
│ └── reporters/
│ ├── console_reporter.py # Salida de terminal enriquecida
│ ├── json_reporter.py # Exportación JSON
│ ├── html_reporter.py # Panel HTML (Jinja2)
│ └── sarif_reporter.py # SARIF 2.1.0 para CI/CD
├── rules/yara/ # Reglas YARA incluidas
├── tests/ # Suite de pruebas pytest
└── pyproject.toml # Metadatos del proyecto
Añade reglas personalizadas a cualquier directorio y pásalas mediante --yara-rules:
malware-check scan target/ --yara-rules /path/to/my/rules/
Las reglas admiten campos de metadatos para severidad, categoría, confianza, CWE y mapeo MITRE ATT&CK:
rule My_Custom_Rule {
meta:
description = "Detectar patrón de malware personalizado"
severity = "critical"
category = "backdoor"
confidence = "0.90"
mitre = "T1059"
cwe = "CWE-94"
recommendation = "Eliminar código malicioso"
strings:
$pattern = "suspicious_string"
condition:
$pattern
}
El sandbox Docker proporciona análisis conductual con aislamiento completo:
Comportamientos monitoreados:
# Clonar e instalar dependencias de desarrollo
git clone https://github.com/momenbasel/malware-check.git
cd malware-check
pip install -e ".[dev]"
# Opcional: incluir Magika, YARA y extras de binarios durante el desarrollo
pip install -e ".[dev,full]"
# Ejecutar pruebas
pytest
# Lint
ruff check src/ tests/
Licencia MIT - consulta LICENSE para más detalles.
| Categoría | Ejemplos de Detección |
|---|
| Shells Inversos | Python socket+subprocess, bash /dev/tcp, netcat, PowerShell TCPClient, socat |
| Puertas Traseras | Webshells (PHP/JSP/ASP.NET), inyección de comandos (Python/JS/Java/Ruby/Go/C), bind shells, rutas ocultas, carga remota de código, creación de usuarios, SSTI, deserialización insegura |
| Ofuscación | Cadenas Base64+eval, construcción con códigos de caracteres, payloads hexadecimales, importaciones dinámicas |
| Mineros de Criptomonedas | Conexiones a pools Stratum, APIs de minería, direcciones de billetera (BTC/ETH/XMR) |
| Ransomware | Recorridos de cifrado de archivos, mensajes de rescate, patrones de cifrado+renombrado |
| Robo de Credenciales | Secretos hardcodeados, robo del portapapeles, recolección de variables de entorno, archivos de credenciales del navegador |
| Cadena de Suministro | Hooks sospechosos de instalación npm/pip, confusión de dependencias, registros personalizados |
| Persistencia | Creación de cron/schtasks, claves Registry Run, LaunchAgent/Daemon, manipulación de SUID |
| Escalada de Privilegios | Manipulación del bit SUID, setuid(0), chown root |
| Anti-Análisis | Detección de depurador, detección de VM, callbacks TLS, uso de ptrace |
| Keyloggers | GetAsyncKeyState, SetWindowsHookEx, pynput, CGEventTapCreate |
| Privacidad | SDKs de seguimiento (40+), campos PII (SSN, tarjetas de crédito, datos biométricos, salud), permisos invasivos, huellas digitales de dispositivo |
| Indicadores de Binarios | Binarios empaquetados (UPX, alta entropía), secciones RWX, importaciones sospechosas, código sin firmar/alterado |
| Protección | Implementación |
|---|
| Aislamiento de Red | --network none (por defecto) |
| Límite de Memoria | 512MB |
| Límite de CPU | 1 núcleo |
| Límite de Procesos | 100 PIDs |
| Sistema de Archivos de Solo Lectura | --read-only con tmpfs para /tmp y /evidence |
| Capacidades | Todas eliminadas (--cap-drop=ALL) |
| Escalada de Privilegios | Bloqueada (--security-opt=no-new-privileges) |
| Timeout | Configurable (por defecto 30s) |
| Técnica | ID | Detección |
|---|
| Intérprete de Comandos y Scripts | T1059 | Shells inversos, patrones eval/exec |
| Componente de Software de Servidor: Webshell | T1505.003 | Webshells PHP/JSP/ASP |
| Archivos o Información Ofuscados | T1027 | Base64, códigos de caracteres, codificación hexadecimal |
| Secuestro de Recursos | T1496 | Pools y herramientas de minería de criptomonedas |
| Datos Cifrados para Impacto | T1486 | Cifrado de archivos por ransomware |
| Captura de Entrada: Keylogging | T1056.001 | Hooks de teclado y keyloggers |
| Tarea/Programación | T1053 | Cron, schtasks, LaunchAgent |
| Inicio Automático al Arranque/Inicio de Sesión | T1547 | Claves Registry Run |
| Inyección de Procesos | T1055 | VirtualAllocEx + WriteProcessMemory |
| Credenciales de Almacenes de Contraseñas | T1555 | Acceso a archivos de credenciales del navegador |
| Abuso de Control de Elevación | T1548 | Manipulación del bit SUID |
| Evasión de Depurador | T1622 | Llamadas a API anti-depuración |
| Compromiso de la Cadena de Suministro | T1195 | Hooks de instalación maliciosos |