Memory Forensics MCP Server
Servidor unificado de análisis forense de memoria - Motor multinivel que combina la velocidad de Rust con la cobertura de Vol3.
Documentación
mem-forensics-mcp
Servidor MCP unificado de análisis forense de memoria - Motor de múltiples niveles que combina la velocidad de Rust con la cobertura de Vol3.
Arquitectura
El motor de tres niveles enruta automáticamente cada herramienta al backend más rápido:
LLM <-> [mem-forensics-mcp (Python)] <-> memoxide (Rust child, stdio MCP)
<-> Volatility3 (Python library)
| Nivel | Motor | Velocidad | Cobertura |
|---|---|---|---|
| Nivel 1 | Rust (memoxide) | Rápido | pslist, psscan, cmdline, dlllist, malfind, netscan, cmdscan, search, readraw, rsds |
| Nivel 2 | Analizadores Python | Medio | Anomalías de procesos, detección de C2, credenciales, YARA, integración con VT |
| Nivel 3 | Volatility3 | Más lento | Cualquier plugin de vol3 (filescan, handles, svcscan, driverscan, ...) |
Instalación
Requisitos previos
# Install uv (fast Python package manager)
curl -LsSf https://astral.sh/uv/install.sh | sh
# Ensure Python 3.10+
python3 --version
Instalar desde PyPI
uv venv .venv
uv pip install --python .venv/bin/python3 mem-forensics-mcp
Instalar desde el código fuente
git clone https://github.com/x746b/mem_forensics-mcp.git
cd mem_forensics-mcp
# Full install (recommended)
uv sync --extra full
# Minimal (Vol3 only, no YARA/VT)
uv sync --extra volatility3
Compilar el motor Rust (opcional)
Los binarios precompilados se distribuyen para aarch64-linux y x86_64-linux en engines/memoxide/. El servidor detecta automáticamente la arquitectura del host. Para compilar desde el código fuente:
# Requires Rust toolchain (https://rustup.rs)
cd engines/memoxide-src
cargo build --release
# Binary lands at engines/memoxide-src/target/release/memoxide
# The server auto-detects it (prefers local build over prebuilt)
Configurar Volatility3 (opcional)
Si Vol3 está instalado en /opt/volatility3, se detecta automáticamente. De lo contrario: export VOLATILITY3_PATH="/path/to/volatility3"
Verificar
uv run python -m mem_forensics_mcp.server
# Should show: Rust engine: available, Volatility3: available
Añadir a un cliente MCP
Registre mem-forensics-mcp como servidor local stdio en la configuración de su cliente MCP. El formato y la ubicación de la configuración dependen del cliente. Para clientes que acepten JSON de mcpServers, use:
{
"mcpServers": {
"mem-forensics-mcp": {
"command": "/absolute/path/to/.venv/bin/python3",
"args": ["-m", "mem_forensics_mcp.server"]
}
}
}
Reemplace el comando con la ruta absoluta al intérprete de Python del entorno virtual. Para una copia del código fuente, esta es /path/to/mem_forensics-mcp/.venv/bin/python3 después de uv sync. Para una instalación desde PyPI, use el .venv creado durante la instalación. Si su cliente usa un formato de configuración diferente, ingrese el mismo comando y argumentos a través de su configuración de servidor MCP.
Si Volatility3 está instalado en una ubicación personalizada, establezca VOLATILITY3_PATH a su ruta absoluta en la configuración de entorno del servidor (por ejemplo, "env": {"VOLATILITY3_PATH": "/path/to/volatility3"} en el ejemplo JSON). Use la lista de servidores MCP de su cliente para confirmar que se conecta.
Inicio rápido
# 1. Initialize
memory_analyze_image(image_path="/evidence/memory.raw")
# 2. Full triage
memory_full_triage(image_path="/evidence/memory.raw")
# 3. Drill down
memory_run_plugin(image_path="/evidence/memory.raw", plugin="malfind", pid=1234)
memory_analyze_image informa disponibilidad en dos niveles:
readyysession_ready: un motor abrió la imagen y la sesión se puede reutilizar.raw_ready: operaciones Rust independientes del sistema operativo comosearchyreadrawestán disponibles.structured_ready: los datos de símbolos/perfil son suficientes para plugins que requieren estructura.
ready sigue siendo un alias de compatibilidad para session_ready; no implica que los plugins de procesos, red o comandos de Volatility puedan ejecutarse. Verifique os_type, structured_ready, capabilities y warnings antes de elegir esas herramientas.
Para análisis de Linux con reconocimiento de estructura, proporcione un directorio de símbolos o un archivo ISF explícito. Los ISF de Linux nunca se descargan ni se generan automáticamente:
memory_analyze_image(
image_path="/evidence/memory.lime",
symbols_root="/evidence/symbols",
# or: isf_path="/evidence/symbols/5.10.0-35-amd64.json.xz",
)
Sin un ISF coincidente, las imágenes LiME aún exponen search y readraw sin procesar. La respuesta del análisis incluye el banner exacto del kernel y un nombre de archivo ISF sugerido. Con los símbolos cargados, el árbol de procesos se enruta a linux.pslist.PsList, el historial de comandos se enruta a linux.bash.Bash, y los plugins genéricos de Linux de Volatility están disponibles a través de memory_run_plugin.
Referencia de herramientas
Núcleo
| Herramienta | Nivel | Descripción |
|---|---|---|
memory_analyze_image | 1->2 | Inicializar imagen, detectar perfil automáticamente |
memory_run_plugin | 1->3 | Ejecutar cualquier plugin (Rust o Vol3) |
memory_list_plugins | - | Listar plugins disponibles |
memory_list_sessions | - | Listar sesiones activas |
memory_get_status | - | Mostrar estado del motor |
Análisis
| Herramienta | Nivel | Descripción |
|---|---|---|
memory_full_triage | 1+2 | Investigación automatizada completa |
memory_hunt_process_anomalies | 2 | Detección de DKOM, validación padre-hijo |
memory_get_process_tree | 2 | Árbol de procesos con resaltado de sospechosos |
memory_find_injected_code | 1->2 | Inyección de código + escaneo YARA |
memory_find_c2_connections | 1+2 | Detección de C2 en red |
memory_get_command_history | 1+2 | Recuperación y clasificación de comandos |
memory_extract_credentials | 2 | Extracción de hashes/secretos mediante Vol3 |
Extracción
| Herramienta | Nivel | Descripción |
|---|---|---|
memory_dump_process | 2 | Información del proceso y DLLs cargadas |
memory_dump_vad | 2 | Examinar detalles de regiones de memoria |
memory_list_dumpable_files | 3 | Listar archivos en caché |
Inteligencia de amenazas
| Herramienta | Descripción |
|---|---|
vt_lookup_hash | Búsqueda de hash en VirusTotal |
vt_lookup_ip | Reputación de IP en VirusTotal |
vt_lookup_domain | Reputación de dominio en VirusTotal |
vt_lookup_file | Archivo de hash + búsqueda en VT |
Ejemplo: Salida completa de triaje
Ejecutando memory_full_triage en un volcado de memoria de Windows 10 (Win10 19041, x64, VMware):
{
"threat_level": "critical",
"risk_score": 100,
"summary": "Processes: 115 found. Process Anomalies: 4 info-level. Network: 4 flagged of 79 connections. Commands: 56 memory fragments. Injected Code: 12 RWX regions. Correlations: 2 critical.",
"engine": "rust+python"
}
Hallazgos clave:
| Categoría | Detalle |
|---|---|
| Proceso sospechoso | mmc.exe lanzado desde explorer.exe, cargando un archivo .msc desde descargas del navegador |
| Código inyectado | 4 regiones de memoria privada RWX en mmc.exe, 2 en EXCEL.EXE |
| Proceso hijo | dllhost.exe generado por mmc.exe con región RWX ejecutable |
| Red | Conexiones de svchost.exe a IPs externas en puertos 443/80 |
| Correlaciones | active_implant + active_c2_session marcados como críticos |
| IOCs | IPs externas sospechosas extraídas automáticamente |
Profundización con filescan filtrado:
memory_run_plugin(image_path="memory.raw", plugin="filescan", filter="notepad")
# Returns: 2 of 7612 results matched (server-side grep before truncation)
Proyectos relacionados
- winforensics-mcp — Análisis forense de discos Windows (EVTX, Registro, MFT, Prefetch, YARA, PCAP)
- mac_forensics-mcp — DFIR de macOS (Registros unificados, FSEvents, Spotlight, Plists)
Licencia MIT | xtk | Construido para la comunidad DFIR. No se requiere Windows >)