Memory Forensics MCP Server

Servidor MCP de Análise Forense de Memória Unificado - Mecanismo multicamadas combinando a velocidade do Rust com a cobertura do Vol3.

Documentação

Memory forensics MCP

mem-forensics-mcp

Servidor MCP Unificado de Forense de Memória - Mecanismo em múltiplas camadas que combina a velocidade do Rust com a cobertura do Vol3.


Arquitetura

Mecanismo de três camadas que roteia automaticamente cada ferramenta para o backend mais rápido:

LLM <-> [mem-forensics-mcp (Python)] <-> memoxide (Rust child, stdio MCP)
                                     <-> Volatility3 (Python library)
CamadaMecanismoVelocidadeCobertura
Camada 1Rust (memoxide)Rápidapslist, psscan, cmdline, dlllist, malfind, netscan, cmdscan, search, readraw, rsds
Camada 2Analisadores PythonMédiaAnomalias de processos, detecção de C2, credenciais, YARA, integração VT
Camada 3Volatility3Mais lentaQualquer plugin vol3 (filescan, handles, svcscan, driverscan, ...)

Instalação

Pré-requisitos

# Install uv (fast Python package manager)
curl -LsSf https://astral.sh/uv/install.sh | sh

# Ensure Python 3.10+
python3 --version

Instalar a partir do PyPI

uv venv .venv
uv pip install --python .venv/bin/python3 mem-forensics-mcp

Instalar a partir do código-fonte

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 o mecanismo Rust (opcional)

Binários pré-compilados são fornecidos para aarch64-linux e x86_64-linux em engines/memoxide/. O servidor detecta automaticamente a arquitetura do host. Para compilar a partir do código-fonte:

# 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 o Volatility3 (opcional)

Se o Vol3 estiver instalado em /opt/volatility3, ele é detectado automaticamente. Caso contrário: export VOLATILITY3_PATH="/path/to/volatility3"

Verificar

uv run python -m mem_forensics_mcp.server
# Should show: Rust engine: available, Volatility3: available

Adicionar a um cliente MCP

Registre mem-forensics-mcp como um servidor stdio local nas configurações do seu cliente MCP. O formato e o local da configuração dependem do cliente. Para clientes que aceitam JSON mcpServers, use:

{
  "mcpServers": {
    "mem-forensics-mcp": {
      "command": "/absolute/path/to/.venv/bin/python3",
      "args": ["-m", "mem_forensics_mcp.server"]
    }
  }
}

Substitua o comando pelo caminho absoluto para o interpretador Python do ambiente virtual. Para uma cópia do código-fonte, este é /path/to/mem_forensics-mcp/.venv/bin/python3 após uv sync. Para uma instalação via PyPI, use o .venv criado durante a instalação. Se o seu cliente usar um formato de configuração diferente, insira o mesmo comando e argumentos através das configurações do servidor MCP.

Se o Volatility3 estiver instalado em um local personalizado, defina VOLATILITY3_PATH para o seu caminho absoluto nas configurações de ambiente do servidor (por exemplo, "env": {"VOLATILITY3_PATH": "/path/to/volatility3"} no exemplo JSON). Use a lista de servidores MCP do cliente para confirmar que ele se conecta.


Início 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 relata prontidão em dois níveis:

  • ready e session_ready: um mecanismo abriu a imagem e a sessão pode ser reutilizada.
  • raw_ready: operações Rust independentes de SO, como search e readraw, estão disponíveis.
  • structured_ready: dados de símbolos/perfil são suficientes para plugins cientes de estrutura.

ready permanece como um alias de compatibilidade para session_ready; isso não implica que os plugins de processo, rede ou comando do Volatility possam ser executados. Verifique os_type, structured_ready, capabilities e warnings antes de escolher essas ferramentas.

Para análise Linux ciente de estrutura, forneça um diretório de símbolos ou um arquivo ISF explícito. ISFs Linux nunca são baixados ou gerados automaticamente:

memory_analyze_image(
    image_path="/evidence/memory.lime",
    symbols_root="/evidence/symbols",
    # or: isf_path="/evidence/symbols/5.10.0-35-amd64.json.xz",
)

Sem um ISF correspondente, imagens LiME ainda expõem search e readraw brutos. A resposta da análise inclui o banner exato do kernel e um nome de arquivo ISF sugerido. Com símbolos carregados, a árvore de processos roteia para linux.pslist.PsList, o histórico de comandos roteia para linux.bash.Bash, e plugins Linux genéricos do Volatility estão disponíveis através de memory_run_plugin.


Referência de Ferramentas

Núcleo

FerramentaCamadaDescrição
memory_analyze_image1->2Inicializar imagem, detectar perfil automaticamente
memory_run_plugin1->3Executar qualquer plugin (Rust ou Vol3)
memory_list_plugins-Listar plugins disponíveis
memory_list_sessions-Listar sessões ativas
memory_get_status-Mostrar status do mecanismo

Análise

FerramentaCamadaDescrição
memory_full_triage1+2Investigação automatizada completa
memory_hunt_process_anomalies2Detecção de DKOM, validação pai-filho
memory_get_process_tree2Árvore de processos com destaque de suspeitos
memory_find_injected_code1->2Injeção de código + varredura YARA
memory_find_c2_connections1+2Detecção de C2 em rede
memory_get_command_history1+2Recuperação e classificação de comandos
memory_extract_credentials2Extração de hashes/segredos via Vol3

Extração

FerramentaCamadaDescrição
memory_dump_process2Informações do processo e DLLs carregadas
memory_dump_vad2Examinar detalhes da região de memória
memory_list_dumpable_files3Listar arquivos em cache

Inteligência de Ameaças

FerramentaDescrição
vt_lookup_hashConsulta de hash no VirusTotal
vt_lookup_ipReputação de IP no VirusTotal
vt_lookup_domainReputação de domínio no VirusTotal
vt_lookup_fileArquivo de hash + consulta VT

Exemplo: Saída Completa de Triagem

Executando memory_full_triage em um despejo de memória do 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"
}

Principais descobertas:

CategoriaDetalhe
Processo suspeitommc.exe iniciado a partir de explorer.exe, carregando um arquivo .msc de downloads do navegador
Código injetado4 regiões de memória privada RWX em mmc.exe, 2 em EXCEL.EXE
Processo filhodllhost.exe gerado por mmc.exe com região RWX executável
RedeConexões de svchost.exe para IPs externos nas portas 443/80
Correlaçõesactive_implant + active_c2_session sinalizados como críticos
IOCsIPs externos suspeitos extraídos automaticamente

Aprofundamento com filescan filtrado:

memory_run_plugin(image_path="memory.raw", plugin="filescan", filter="notepad")
# Returns: 2 of 7612 results matched (server-side grep before truncation)

Projetos Relacionados

  • winforensics-mcp — Forense de disco Windows (EVTX, Registro, MFT, Prefetch, YARA, PCAP)
  • mac_forensics-mcp — DFIR macOS (Logs Unificados, FSEvents, Spotlight, Plists)

Licença MIT | xtk | Construído para a comunidade DFIR. Nenhum Windows necessário >)