
Detecta inyección de procesos y manipulación de memoria utilizada por malware. Encuentra regiones RWX, patrones de shellcode, enganches de API, secuestro de hilos y vaciado de procesos. Construido en Rust para velocidad. Incluye interfaces CLI y TUI.
Fantasma es una herramienta de detección de inyección de procesos escrita en Rust. Vigila los procesos en ejecución e intenta detectar cosas sospechosas como inyección de código, manipulación de memoria y otros trucos que el malware utiliza para ocultarse.
La idea principal es simple: escanear procesos y buscar patrones de memoria extraños, funciones enganchadas, shellcode y otros signos de que algo ha sido manipulado. Funciona en Windows, Linux y macOS (aunque el soporte para Windows es el más completo por ahora).
Algunas de las cosas que puede detectar:
También mapea los comportamientos detectados al marco MITRE ATT&CK, lo cual es útil si estás documentando amenazas o escribiendo informes.



Necesitarás tener Rust instalado (1.70 o más reciente). Luego:
cargo build --release
En Windows, también necesitarás las herramientas de compilación de MSVC. Linux necesita herramientas de desarrollo básicas (gcc, etc.). macOS necesita las herramientas de línea de comandos de Xcode.
Hay dos interfaces: una herramienta de línea de comandos y una interfaz de terminal interactiva.
CLI:
# Escanear todos los procesos
cargo run --bin ghost-cli --release
# Apuntar a un proceso
cargo run --bin ghost-cli --release -- --pid 1234
# Mostrar resultados como JSON
cargo run --bin ghost-cli --release -- --format json
# Usar un archivo de configuración
cargo run --bin ghost-cli --release -- --config ghost.toml
# Modo de monitoreo continuo
cargo run --bin ghost-cli --release -- --watch
# Monitorear con intervalo personalizado (10 segundos)
cargo run --bin ghost-cli --release -- --watch --interval 10
TUI:
cargo run --bin ghost-tui --release
La TUI te ofrece un panel con estadísticas en vivo, historial de detección, y puedes navegar con atajos de teclado (Tab para cambiar vistas, Q para salir).
Fantasma soporta completado con tabulador para Bash, Zsh, Fish, PowerShell y Elvish.
# Generar completados para tu shell
ghost completions bash > /etc/bash_completion.d/ghost
ghost completions zsh > ~/.zfunc/_ghost
ghost completions fish > ~/.config/fish/completions/ghost.fish
# O usar el script de instalación
./completions/install.sh
Consulta completions/README.md para instrucciones detalladas de instalación.
Fantasma soporta características opcionales que se pueden habilitar durante la compilación:
# Escaneo de reglas YARA (requiere libyara)
cargo build --features yara-scanning
# Integración ML neuronal (requiere Python y modelos entrenados)
cargo build --features neural-ml
# Detección eBPF (solo Linux, implementación actualmente esqueleto)
cargo build --features ebpf-detection
Nota: Las características ML requieren modelos entrenados para funcionar. Consulta ghost_ml/README.md para instrucciones de entrenamiento.
Puedes ajustar el comportamiento con un archivo de configuración TOML. Revisa examples/ghost.toml como punto de partida. Puedes habilitar/deshabilitar métodos de detección específicos, establecer umbrales de confianza, omitir procesos del sistema y controlar la frecuencia de escaneo.
Ejemplo de fragmento de configuración:
shellcode_detection = true
hollowing_detection = true
hook_detection = true
confidence_threshold = 0.3
skip_system_processes = true
scan_interval_ms = 2000
Por defecto, Fantasma limita la salida a 10 indicadores por detección y elimina duplicados de hallazgos similares. Para escaneos grandes, puedes reducir aún más la salida:
Opciones de línea de comandos:
# Modo resumen - muestra estadísticas en lugar de detalles completos
ghost-cli --summary
# Limitar indicadores por detección
ghost-cli --max-indicators 5
# Solo informar detecciones maliciosas
ghost-cli --min-threat-level malicious
# Combinar para salida mínima
ghost-cli --summary --quiet
Archivo de configuración:
[output]
verbosity = "minimal" # minimal, normal o verbose
max_indicators_per_detection = 5
min_threat_level = "suspicious"
deduplicate_indicators = true
summary_mode = true
Esto es útil al escanear muchos procesos o al ejecutar monitoreo continuo donde los archivos de salida crecerían demasiado.
El modo de vigilancia te permite monitorear tu sistema continuamente sin tener que ejecutar escaneos manualmente. Es útil para detectar intentos de inyección en el momento en que ocurren.
# Empezar a vigilar (por defecto: intervalo de 5 segundos)
ghost-cli --watch
# Intervalo personalizado
ghost-cli --watch --interval 10
# Vigilar un proceso específico
ghost-cli --watch --pid 1234
# Modo silencioso - solo alerta sobre nuevas detecciones
ghost-cli --watch --quiet
Cuando se ejecuta en modo vigilancia, Fantasma:
Ejemplo de salida:
[14:32:15] Escaneo #1: limpio (142 procesos, 89ms)
[14:32:20] Escaneo #2: ¡2 NUEVAS detecciones! (2 totales, 142 procesos, 91ms)
[MALICIOSO] suspicious.exe (PID: 4521) - 87% de confianza
[SOSPECHOSO] helper.dll (PID: 2201) - 54% de confianza
[14:32:25] Escaneo #3: 2 amenazas conocidas (142 procesos, 88ms)
El modo de línea base captura una instantánea del estado actual de tu sistema. Escaneos posteriores pueden compararse contra esta línea base para detectar cambios - útil para encontrar nuevas amenazas sin tener que revisar problemas conocidos.
# Guardar el estado actual como línea base
ghost-cli --save-baseline baseline.json
# Después: comparar contra la línea base
ghost-cli --baseline baseline.json
# Combinar con modo vigilancia
ghost-cli --watch --baseline baseline.json
Al comparar contra una línea base, Fantasma informa:
Ejemplo de salida:
3 cambios desde la línea base:
Nuevas amenazas (1):
injector.exe (PID: 8821) - Malicioso
Amenazas escaladas (1):
helper.dll (PID: 2201): Sospechoso -> Malicioso
Nuevos indicadores (1):
svchost.exe (PID: 1024):
- Región de memoria RWX detectada
- Coincidencia de patrón de shellcode
El código de salida es 1 si se detectan cambios, 0 si está limpio.
Fantasma puede enviar alertas en tiempo real a Slack, Discord o cualquier punto final HTTP cuando se detectan amenazas. Perfecto para integración con SOC o para recibir notificaciones en tu teléfono.
# Webhook de Slack
ghost-cli --watch --webhook "https://hooks.slack.com/services/XXX/YYY/ZZZ"
# Webhook de Discord
ghost-cli --watch --webhook "https://discord.com/api/webhooks/123/abc"
# HTTP POST genérico (carga útil JSON)
ghost-cli --watch --webhook "https://your-siem.example.com/api/alerts"
# Sobrescribir el tipo auto-detectado
ghost-cli --webhook "https://custom.url" --webhook-type slack
Fantasma detecta automáticamente el tipo de webhook desde la URL:
hooks.slack.com → Formato Slack con adjuntosdiscord.com/api/webhooks → Formato Discord con incrustacionesAlertas de Slack incluyen adjuntos codificados por colores con nivel de amenaza, puntuación de confianza e indicadores principales:
🚨 Fantasma detectó actividad sospechosa en *prod-server-01*
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
🚨 suspicious.exe (PID: 4521)
• Región de memoria RWX detectada en 0x7ff...
• Patrón de shellcode: NOP sled
Nivel de amenaza: Malicioso | Confianza: 87%
Alertas de Discord usan incrustaciones enriquecidas con la misma información en un formato limpio.
Webhooks genéricos envían una carga útil JSON:
{
"event": "ghost.detection",
"timestamp": "2024-12-06T14:32:15Z",
"hostname": "prod-server-01",
"process_name": "suspicious.exe",
"pid": 4521,
"threat_level": "Malicious",
"confidence": 0.87,
"indicators": ["RWX memory region detected", "..."]
}
Cuando Fantasma encuentra algo sospechoso, asigna un nivel de amenaza: Limpio, Bajo, Medio, Alto o Crítico. Esto se basa en cuántos indicadores encontró y qué tan serios son.
Una confianza alta no siempre significa malware - algún software legítimo también hace cosas raras con la memoria. Usa tu criterio e investiga más si es necesario.
Windows: Totalmente funcional. Enumeración de procesos, lectura de memoria, detección de enganches, detección de vaciado de procesos, validación de PE y análisis de hilos funcionan.
Linux: Características principales funcionales. Enumeración de procesos mediante procfs (/proc), lectura de memoria, detección de LD_PRELOAD y detección de inyección basada en ptrace funcionan. El soporte eBPF requiere la bandera de característica ebpf-detection y actualmente es una implementación esqueleto.
macOS: Soporte parcial. Enumeración de procesos, enumeración de regiones de memoria, lectura de memoria y enumeración de hilos funcionan usando las APIs de mach VM. La detección de enganches incluye detección de DYLD_INSERT_LIBRARIES y un marco de detección de enganches en línea.
Está diseñado para ser lo suficientemente rápido para monitoreo continuo. Un escaneo completo del sistema (200 procesos) normalmente toma menos de 5 segundos. La enumeración de memoria por proceso está alrededor de 50-100ms. El motor de detección en sí añade unos 5-10ms por análisis.
La herramienta incluye integración de reglas YARA. Las reglas se almacenan en el directorio rules/ y cubren familias comunes de malware como Metasploit, Cobalt Strike, patrones genéricos de shellcode y técnicas de evasión. Puedes agregar tus propias reglas - solo coloca archivos .yar en esa carpeta.
Esta es una herramienta de espacio de usuario con las siguientes limitaciones:
Hay más detalles en la carpeta docs/:
DETECTION_METHODS.md - Explica cómo funciona cada técnica de detecciónMITRE_ATTACK_COVERAGE.md - Enumera qué técnicas de ATT&CK están cubiertasPERFORMANCE_GUIDE.md - Consejos para ajustar el rendimientoTambién consulta CONTRIBUTING.md si quieres contribuir, y SECURITY.md para la política de seguridad.
MIT. Consulta el archivo LICENSE.
Esta herramienta es para investigación de seguridad, probar tus propios sistemas y detectar amenazas reales. No la uses en sistemas que no te pertenezcan o para los que no tengas permiso de prueba. Sé responsable.
Además, si estás investigando un incidente real, recuerda que el malware puede detectar que está siendo analizado y podría comportarse de manera diferente o apagarse. Fantasma intenta ser sigiloso pero no hay garantía de que el malware avanzado no lo note.