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
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)
| Camada | Mecanismo | Velocidade | Cobertura |
|---|---|---|---|
| Camada 1 | Rust (memoxide) | Rápida | pslist, psscan, cmdline, dlllist, malfind, netscan, cmdscan, search, readraw, rsds |
| Camada 2 | Analisadores Python | Média | Anomalias de processos, detecção de C2, credenciais, YARA, integração VT |
| Camada 3 | Volatility3 | Mais lenta | Qualquer 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:
readyesession_ready: um mecanismo abriu a imagem e a sessão pode ser reutilizada.raw_ready: operações Rust independentes de SO, comosearchereadraw, 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
| Ferramenta | Camada | Descrição |
|---|---|---|
memory_analyze_image | 1->2 | Inicializar imagem, detectar perfil automaticamente |
memory_run_plugin | 1->3 | Executar 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
| Ferramenta | Camada | Descrição |
|---|---|---|
memory_full_triage | 1+2 | Investigação automatizada completa |
memory_hunt_process_anomalies | 2 | Detecção de DKOM, validação pai-filho |
memory_get_process_tree | 2 | Árvore de processos com destaque de suspeitos |
memory_find_injected_code | 1->2 | Injeção de código + varredura YARA |
memory_find_c2_connections | 1+2 | Detecção de C2 em rede |
memory_get_command_history | 1+2 | Recuperação e classificação de comandos |
memory_extract_credentials | 2 | Extração de hashes/segredos via Vol3 |
Extração
| Ferramenta | Camada | Descrição |
|---|---|---|
memory_dump_process | 2 | Informações do processo e DLLs carregadas |
memory_dump_vad | 2 | Examinar detalhes da região de memória |
memory_list_dumpable_files | 3 | Listar arquivos em cache |
Inteligência de Ameaças
| Ferramenta | Descrição |
|---|---|
vt_lookup_hash | Consulta de hash no VirusTotal |
vt_lookup_ip | Reputação de IP no VirusTotal |
vt_lookup_domain | Reputação de domínio no VirusTotal |
vt_lookup_file | Arquivo 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:
| Categoria | Detalhe |
|---|---|
| Processo suspeito | mmc.exe iniciado a partir de explorer.exe, carregando um arquivo .msc de downloads do navegador |
| Código injetado | 4 regiões de memória privada RWX em mmc.exe, 2 em EXCEL.EXE |
| Processo filho | dllhost.exe gerado por mmc.exe com região RWX executável |
| Rede | Conexões de svchost.exe para IPs externos nas portas 443/80 |
| Correlações | active_implant + active_c2_session sinalizados como críticos |
| IOCs | IPs 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 >)