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

Memory forensics MCP

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)
NivelMotorVelocidadCobertura
Nivel 1Rust (memoxide)Rápidopslist, psscan, cmdline, dlllist, malfind, netscan, cmdscan, search, readraw, rsds
Nivel 2Analizadores PythonMedioAnomalías de procesos, detección de C2, credenciales, YARA, integración con VT
Nivel 3Volatility3Más lentoCualquier 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:

  • ready y session_ready: un motor abrió la imagen y la sesión se puede reutilizar.
  • raw_ready: operaciones Rust independientes del sistema operativo como search y readraw está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

HerramientaNivelDescripción
memory_analyze_image1->2Inicializar imagen, detectar perfil automáticamente
memory_run_plugin1->3Ejecutar 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

HerramientaNivelDescripción
memory_full_triage1+2Investigación automatizada completa
memory_hunt_process_anomalies2Detección de DKOM, validación padre-hijo
memory_get_process_tree2Árbol de procesos con resaltado de sospechosos
memory_find_injected_code1->2Inyección de código + escaneo YARA
memory_find_c2_connections1+2Detección de C2 en red
memory_get_command_history1+2Recuperación y clasificación de comandos
memory_extract_credentials2Extracción de hashes/secretos mediante Vol3

Extracción

HerramientaNivelDescripción
memory_dump_process2Información del proceso y DLLs cargadas
memory_dump_vad2Examinar detalles de regiones de memoria
memory_list_dumpable_files3Listar archivos en caché

Inteligencia de amenazas

HerramientaDescripción
vt_lookup_hashBúsqueda de hash en VirusTotal
vt_lookup_ipReputación de IP en VirusTotal
vt_lookup_domainReputación de dominio en VirusTotal
vt_lookup_fileArchivo 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íaDetalle
Proceso sospechosommc.exe lanzado desde explorer.exe, cargando un archivo .msc desde descargas del navegador
Código inyectado4 regiones de memoria privada RWX en mmc.exe, 2 en EXCEL.EXE
Proceso hijodllhost.exe generado por mmc.exe con región RWX ejecutable
RedConexiones de svchost.exe a IPs externas en puertos 443/80
Correlacionesactive_implant + active_c2_session marcados como críticos
IOCsIPs 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 >)