Servidor MCP de Forense de Windows
DFIR de Windows desde Linux - Un kit de herramientas forense integral diseñado para entornos Linux sin dependencias de runtime de Windows. Analiza artefactos de Windows de forma nativa, con un sidecar opcional SIDR en Rust para la búsqueda de Windows.
Proyectos Relacionados
- mem_forensics-mcp - Servidor MCP unificado de forense de memoria - Motor de múltiples niveles que combina la velocidad de Rust con la cobertura de Vol3
- mac_forensics-mcp - DFIR de macOS - Registros unificados, FSEvents, Spotlight, Plists, bases de datos SQLite, atributos extendidos
Características
Forense Principal
| Categoría | Capacidades |
|---|
| Registros EVTX | Consultas estructuradas compactas, filtros de campos, correlación de inicios de sesión, resúmenes NTLM y exportación JSONL |
| NTDS sin conexión | Consulta cuentas SAM exactas, SIDs de dominio y metadatos de confianza sin descifrado de credenciales |
| Registro | Analiza SAM, SYSTEM, SOFTWARE, SECURITY y NTUSER.DAT; consultas paginadas, FILETIMEs normalizados y correlación USBSTOR/WPD |
| Recopilación remota | Recopila artefactos mediante WinRM (contraseña o pass-the-hash) |
Artefactos de Ejecución
| Categoría | Capacidades |
|---|
| Análisis PE | Análisis estático con hashes (MD5/SHA1/SHA256/imphash), importaciones, exportaciones, detección de empaquetadores |
| Prefetch | Evidencia de ejecución con recuentos de ejecución, marcas de tiempo, archivos cargados |
| Amcache | Hashes SHA1 y marcas de tiempo de primera aparición de Amcache.hve |
| SRUM | Filtrado exacto de aplicación/tiempo, contadores de recursos sin procesar, totales de red MB/MiB y agregación opcional de SRUDB.dat |
Artefactos del Sistema de Archivos
| Categoría | Capacidades |
|---|
| MFT | Análisis de la Tabla de Archivos Maestra con metadatos ADS y detección de manipulación de marcas de tiempo |
| Diario USN | Diario de cambios para operaciones de archivos y recuperación de archivos eliminados |
| Línea de tiempo | Línea de tiempo unificada de MFT, USN, Prefetch, Amcache, EVTX |
Actividad del Usuario
| Categoría | Capacidades |
|---|
| Navegador | Historial y descargas de Edge, Chrome, Firefox |
| Archivos LNK | Análisis de accesos directos de Windows para archivos de acceso reciente |
| ShellBags | Historial de navegación de carpetas de UsrClass.dat y NTUSER.DAT, incl. recursos compartidos UNC e interiores de archivos explorados (libfwsi) |
| RecentDocs | Seguimiento de documentos recientes basado en el registro |
| Búsqueda de Windows | Archivo respaldado por SIDR Windows.edb, historial de internet, historial de actividad y recuperación de System.Search.AutoSummary |
Forense de Red
| Categoría | Capacidades |
|---|
| Análisis PCAP | Analiza archivos PCAP/PCAPNG - conversaciones, consultas DNS, solicitudes HTTP, conexiones sospechosas |
Análisis de Capturas del Monitor de API
| Categoría | Capacidades |
|---|
| Análisis APMX | Analiza capturas de API Monitor (.apmx64/.apmx86) - metadatos de proceso, extracción de llamadas de API, valores de parámetros |
| Detección de patrones | Detecta inyección, hollowing, volcado de credenciales y otros patrones de ataque de secuencias de llamadas de API capturadas con mapeo MITRE ATT&CK |
| Correlación de identificadores | Rastrea valores de identificadores entre llamadas para reconstruir cadenas de ataque (OpenProcess -> VirtualAllocEx -> WriteProcessMemory -> CreateRemoteThread) |
| Análisis de inyección | Extrae detalles enriquecidos de cadenas de inyección: PID/proceso objetivo, tamaño del shellcode, direcciones de asignación, clasificación de técnica |
| Base de conocimiento de API | 26,944 definiciones de API de Windows con firmas de parámetros, asignaciones DLL y navegación por categorías |
Detección de Malware
| Categoría | Capacidades |
|---|
| Escaneo YARA | 718 reglas de signature-base - APT, ransomware, webshells, herramientas de hacking |
| Paquetes IoC | Paquetes de IoC conductuales para la búsqueda en registros exportados, nombres de archivo y cargas útiles PCAP; incluye paquete opcional GPL-2.0 impacket-iocs con 65 reglas |
| VirusTotal | Consultas de reputación de hash/IP/dominio con almacenamiento en caché y limitación de velocidad (nivel gratuito compatible) |
| Integración DiE | Detecta empaquetadores (UPX, Themida, VMProtect), compiladores, .NET, instaladores mediante Detect It Easy |
Orquestadores
| Herramienta | Qué Hace |
|---|
investigate_execution | Correlaciona Prefetch + Amcache + SRUM para responder "¿Se ejecutó este binario?" |
investigate_user_activity | Correlaciona Navegador + ShellBags + LNK + RecentDocs para la línea de tiempo de actividad del usuario |
hunt_ioc | Busca IoC (hash/nombre de archivo/IP/dominio) en TODAS las fuentes de artefactos + escaneo YARA opcional |
hunt_ioc_pack | Busca IoC conductuales de paquetes de metadatos incluidos/externos como impacket-iocs |
build_timeline | Construye una línea de tiempo forense unificada de múltiples fuentes |
Utilidades
| Herramienta | Qué Hace |
|---|
ingest_parsed_csv | Importa salida CSV de la herramienta Eric Zimmerman (MFTECmd, PECmd, AmcacheParser) |
Instalación
Requisitos previos
# Install uv (fast Python package manager)
curl -LsSf https://astral.sh/uv/install.sh | sh
source ~/.bashrc
# Ensure Python 3.10+
python3 --version
Instalar desde PyPI
uv tool install winforensics-mcp
Instalar desde el código fuente
git clone https://github.com/x746b/winforensics-mcp.git
cd winforensics-mcp
# Install with uv (recommended)
uv sync
# Or install with all optional extras
uv venv && source .venv/bin/activate
uv pip install -e ".[all]"
El análisis de la búsqueda de Windows utiliza SIDR 0.9.2. El repositorio fuente incluye versiones Linux reducidas para ARM64 (.tools/sidr) y x86_64 (.tools/sidr_x86), compiladas desde la confirmación fijada registrada en sus manifiestos adyacentes. Cualquiera de las arquitecturas puede reconstruir esa revisión exacta con:
bash scripts/build_sidr.sh
El servidor descubre SIDR desde un argumento de herramienta explícito, WINFORENSICS_SIDR_PATH, el binario incluido que coincide con la arquitectura, o PATH, en ese orden. Nunca descarga ni compila ejecutables en tiempo de ejecución. Compila o proporciona SIDR 0.9.2 por separado en plataformas no compatibles. Sin SIDR, windows_search_parse utiliza un respaldo parcial pyesedb claramente marcado que no puede recuperar cada valor largo comprimido.
Verificar
uv run python -m winforensics_mcp.server
# Should start without errors (Ctrl+C to exit)
Añadir a un cliente MCP
Registra winforensics-mcp como un servidor local stdio en la configuración de tu cliente MCP. El formato y la ubicación de la configuración dependen del cliente. Para clientes que aceptan JSON mcpServers, una instalación desde PyPI (uv tool install winforensics-mcp) se ve así:
{
"mcpServers": {
"winforensics-mcp": {
"command": "winforensics-mcp"
}
}
}
Para una copia del código fuente (uv sync), usa:
{
"mcpServers": {
"winforensics-mcp": {
"command": "uv",
"args": ["run", "--directory", "/path/to/winforensics-mcp", "python", "-m", "winforensics_mcp.server"]
}
}
}
Reemplaza la ruta de ejemplo con la ruta absoluta a tu copia. Si tu cliente usa un formato de configuración diferente, ingresa el mismo comando y argumentos a través de su configuración de servidor MCP. Asegúrate de que winforensics-mcp o uv, respectivamente, esté en el PATH del cliente, luego usa la lista de servidores MCP del cliente para confirmar que se conecta.
Ejemplos de Inicio Rápido
¿Se Ejecutó Este Binario?
Investigate if mimikatz.exe was executed on the system at /mnt/evidence
El orquestador investigate_execution verifica Prefetch, Amcache y SRUM:
{
"target": "mimikatz.exe",
"execution_confirmed": true,
"confidence": "HIGH",
"evidence": [
{"source": "Prefetch", "finding": "Executed 3 times, last at 2024-03-15T14:23:45Z"},
{"source": "Amcache", "finding": "SHA1: abc123..., First seen: 2024-03-14T09:00:00Z"},
{"source": "SRUM", "finding": "Network: 15.2 MB sent; Foreground: 47 seconds"}
]
}
Buscar IoC en Todos los Artefactos
Hunt for the hash 204bc44c651e17f65c95314e0b6dfee586b72089 in /mnt/evidence
La herramienta hunt_ioc busca en Prefetch, Amcache, SRUM, MFT, USN, Navegador, EVTX y opcionalmente YARA:
{
"ioc": "204bc44c651e17f65c95314e0b6dfee586b72089",
"ioc_type": "sha1",
"found": true,
"sources_with_hits": ["Amcache", "MFT"],
"findings": [
{"source": "Amcache", "matches": 1, "details": "bloodhound.exe"},
{"source": "MFT", "matches": 1, "details": "Users\\Admin\\Downloads\\bloodhound.exe"}
]
}
Consultas Compactas de EVTX y AD sin Conexión
Usa compact, fields, where y max_chars para mantener los resultados de EVTX enfocados:
{
"evtx_path": "/evidence/Security.evtx",
"event_ids": [4724],
"where": {"EventData.SubjectUserName": {"neq": "Administrator"}},
"compact": true,
"fields": ["EventID", "TimeCreated", "EventData.TargetUserName"],
"max_chars": 12000
}
Sigue next_cursor con la misma consulta; evtx_get_event abre un registro completo.
Usa los ayudantes a continuación para la correlación de inicios de sesión, resúmenes NTLM de primero-raro y exportaciones JSONL.
Las herramientas de descriptores decodifican hex/base64 explícitos e informan valores no disponibles
honestamente. Las herramientas NTDS consultan metadatos de cuenta, dominio y confianza sin
descifrado de credenciales o SYSTEM.
Consulta la referencia de consultas para ejemplos, límites y
semántica de completitud.
Referencia de Herramientas
Orquestadores (Investigación de Alto Nivel)
| Herramienta | Descripción |
|---|
investigate_execution | Correlaciona Prefetch/Amcache/SRUM para probar la ejecución de binarios |
investigate_user_activity | Correlaciona Navegador/ShellBags/LNK/RecentDocs para la actividad del usuario |
hunt_ioc | Busca IoC (hash/nombre de archivo/IP/dominio) en todos los artefactos; yara_scan=True añade inteligencia de amenazas YARA |
build_timeline | Construye una línea de tiempo unificada de múltiples fuentes de artefactos |
Artefactos de Ejecución
| Herramienta | Descripción |
|---|
file_analyze_pe | Análisis PE estático - hashes, importaciones, exportaciones, nombre de programa Authenticode, detección de empaquetadores |
disk_parse_prefetch | Analiza Prefetch para evidencia de ejecución |
disk_parse_amcache | Analiza Amcache.hve para hashes SHA1 y marcas de tiempo |
disk_parse_srum | Analiza SRUDB.dat con filtros de aplicación exactos/regex, rangos UTC, unidades de red derivadas y agregación opcional |
Detección de Malware (YARA)
| Herramienta | Descripción |
|---|
yara_scan_file | Escanea archivo con 718 reglas YARA (Mimikatz, CobaltStrike, webshells, APT, ransomware) |
yara_scan_directory | Escaneo por lotes de directorio para malware |
yara_list_rules | Lista reglas YARA disponibles/incluidas |
Paquetes de IoC Conductuales
| Herramienta | Descripción |
|---|
ioc_pack_list | Lista paquetes de IoC incluidos y externos con metadatos de licencia |
hunt_ioc_pack | Busca IoC conductuales en exportaciones de texto, nombres de archivo y cargas útiles PCAP |
Inteligencia de Amenazas (VirusTotal)
| Herramienta | Descripción |
|---|
vt_lookup_hash | Consulta hash de archivo (MD5/SHA1/SHA256) en VirusTotal |
vt_lookup_behavior | Dominios de sandbox limitados, URLs, comandos, escrituras de registro/archivos; persistencia opcional de resultados completos |
vt_lookup_ip | Obtiene reputación de dirección IP y geolocalización |
vt_lookup_domain | Obtiene reputación de dominio y categorización |
vt_lookup_file | Calcula hashes de archivo y consulta en VirusTotal |
Forense de Red (PCAP)
| Herramienta | Descripción |
|---|
pcap_get_stats | Obtiene estadísticas de PCAP - recuentos de paquetes, protocolos, principales interlocutores |
pcap_get_conversations | Extrae conversaciones TCP/UDP con recuentos de bytes |
pcap_get_dns | Extrae consultas y respuestas DNS |
pcap_get_http | Extrae solicitudes HTTP con URLs, métodos, user-agents |
pcap_search | Busca cadenas o patrones regex en cargas útiles de paquetes |
pcap_find_suspicious | Detecta indicadores C2, beaconing, túnel DNS |
Análisis de Capturas del Monitor de API (APMX)
| Herramienta | Descripción |
|---|
apmx_parse | Analiza captura .apmx64/.apmx86 - información de proceso, módulos, recuentos de llamadas |
apmx_get_calls | Extrae llamadas de API con filtrado, paginación y soporte de rango de tiempo |
apmx_get_call_details | Registros detallados con valores de parámetros, valores de retorno, marcas de tiempo |
apmx_detect_patterns | Detecta patrones de ataque (inyección, hollowing, volcado de credenciales) con IDs MITRE ATT&CK |
apmx_correlate_handles | Rastrea cadenas de productor/consumidor de identificadores entre llamadas de API |
apmx_get_injection_info | Extracción enriquecida de cadenas de inyección (PID objetivo, tamaño del shellcode, técnica) |
apmx_get_calls_around | Ventana de contexto de llamadas alrededor de un registro específico |
apmx_search_params | Busca en todos los registros un valor de parámetro específico |
api_analyze_imports | Análisis completo de importaciones PE con detección de patrones y mapeo MITRE ATT&CK |
api_detect_patterns | Detecta patrones de ataque de tablas de importación PE |
api_lookup | Consulta firma de API de Windows (26,944 APIs con parámetros, DLL, categoría) |
api_search_category | Navega APIs por categoría (p. ej., "Inyección de Procesos", "Gestión de Archivos") |
Detección de Empaquetadores (DiE)
| Herramienta | Descripción |
|---|
die_analyze_file | Analiza archivo para empaquetadores, compiladores, protectores, .NET |
die_scan_directory | Escaneo por lotes de directorio para ejecutables empaquetados |
die_get_packer_info | Obtiene información sobre el empaquetador (dificultad, herramientas de desempaquetado) |
Sistema de Archivos
| Herramienta | Descripción |
|---|
disk_parse_mft | Analiza $MFT con metadatos ADS y detección de manipulación de marcas de tiempo |
disk_parse_usn_journal | Analiza $J para operaciones de archivos y archivos eliminados |
Actividad del Usuario
| Herramienta | Descripción |
|---|
browser_get_history | Analiza historial y descargas de Edge/Chrome/Firefox |
user_parse_lnk_files | Analiza accesos directos de Windows para rutas de destino |
user_parse_shellbags | Analiza ShellBags (UsrClass.dat + NTUSER.DAT) para navegación de carpetas, recursos compartidos de red y navegación de archivos |
windows_search_parse | Analiza un Windows.edb explícito con SIDR; filtra y pagina registros de archivos, internet, actividad y contenido indexado |
Active Directory sin Conexión
| Herramienta | Descripción |
|---|
ntds_get_object_by_sam | Leer metadatos permitidos para un selector exacto de cuenta SAM offline |
ntds_get_object_sid | Devolver metadatos SID con estado explícito de ambigüedad/completitud |
ntds_get_domain_info | Leer metadatos de dominio y atribución de raíz de bosque respaldada por evidencia |
ntds_get_trusts | Leer metadatos de confianza paginados sin secretos de autenticación |
Registros de eventos
| Herramienta | Descripción |
|---|
evtx_list_files | Listar archivos EVTX en un directorio |
evtx_get_stats | Obtener conteos de eventos, rango de tiempo, distribución de ID de evento |
evtx_search | Buscar con filtros, proyección de campos compacta, presupuestos de respuesta y continuación estable |
evtx_get_event | Recuperar un evento normalizado completo usando su referencia vinculada a la fuente |
evtx_correlate_logon_id | Unir ocurrencias de LUID de sujeto/objetivo dentro de una ventana de tiempo explícita |
evtx_export | Persistir JSONL filtrado con hash, diagnósticos de finalización y vista previa limitada |
evtx_ntlm_operational_summary | Agrupar eventos NTLM 4021/4022/4023 y resaltar combinaciones raras de proceso/usuario |
security_descriptor_decode | Decodificar bytes de descriptor auto-relativo limitados desde hex/base64 explícito |
evtx_describe_security_descriptor | Describir un descriptor de atributo EVTX o informar su marcador de posición de origen |
evtx_security_search | Búsquedas de eventos de seguridad predefinidas (inicio de sesión, creación de procesos, etc.) |
evtx_attack_summary | Resumen TSV compacto para triaje rápido: una línea por evento, solo columnas relevantes para ataques |
evtx_explain_event_id | Obtener descripción de ID de evento |
Registro
| Herramienta | Descripción |
|---|
registry_get_key | Obtener clave y valores específicos |
registry_search | Buscar valores por patrón |
registry_query | Consulta de registro paginada exacta/subcadena/regex con alcance de subárbol, proyección de campos y diagnósticos |
registry_get_persistence | Obtener claves Run y servicios |
registry_get_users | Obtener cuentas de usuario de SAM |
registry_get_usb_history | Correlacionar identidad USBSTOR, número de serie físico, nombres de dispositivos WPD y etiquetas de volumen secundarias |
registry_get_system_info | Obtener versión del SO, nombre de host, zona horaria |
registry_get_network | Obtener configuración de red |
Utilidades
| Herramienta | Descripción |
|---|
ingest_parsed_csv | Importar salida CSV de Eric Zimmerman (MFTECmd, PECmd, AmcacheParser, SrumECmd) |
forensics_list_important_events | Listar ID de eventos importantes por canal |
forensics_list_registry_keys | Listar claves de registro forenses por categoría |
Recopilación remota
| Herramienta | Descripción |
|---|
remote_collect_artifacts | Recopilar artefactos mediante WinRM (contraseña o pass-the-hash) |
remote_get_system_info | Obtener información del sistema remoto |
Configuración
Clave API de VirusTotal
# Option 1: Environment variable
export VIRUSTOTAL_API_KEY="your-api-key-here"
# Option 2: Config file
mkdir -p ~/.config/winforensics-mcp
echo "your-api-key-here" > ~/.config/winforensics-mcp/vt_api_key
Obtén tu clave API gratuita en virustotal.com. El nivel gratuito está limitado a 4 solicitudes/minuto; el cliente maneja la limitación de velocidad y almacena en caché los resultados durante 24 horas.
Solución de problemas
DiE (Detect It Easy) no encontrado
# Debian/Ubuntu
sudo apt install detect-it-easy
# Or download from https://github.com/horsicq/DIE-engine/releases
SIDR no encontrado
Los checkouts de la fuente incluyen versiones SIDR reducidas para Linux ARM64 y x86_64. Para reconstruir la revisión fijada para el objetivo Rust actual, ejecuta:
bash scripts/build_sidr.sh
Para otra instalación, establece WINFORENSICS_SIDR_PATH a un ejecutable SIDR 0.9.2. El analizador informa la ruta del ejecutable, versión, SHA-256, estado de la base de datos, completitud de extracción y hashes de evidencia en cada respuesta. Consulta .tools/SIDR-LICENSE para la licencia Apache-2.0 del sidecar incluido.
Eliminar servidor MCP
Elimina la entrada winforensics-mcp de la configuración de servidores de tu cliente MCP.
Licencia
Créditos: omerbenamram/evtx (analizador EVTX en Rust), strozfriedberg/sidr (Búsqueda de Windows), Rohitab Batra (API Monitor), Neo23x0/signature-base (reglas YARA), horsicq/DIE-engine (Detect It Easy)
El código central de winforensics-mcp tiene licencia MIT. Consulta LICENSE.
Los paquetes de IoC opcionales incluidos pueden usar licencias diferentes:
winforensics_mcp/ioc_packs/impacket-iocs contiene material derivado de ThatTotallyRealMyth/Impacket-IoCs y está licenciado bajo GPL-2.0. Consulta winforensics_mcp/ioc_packs/impacket-iocs/LICENSE.
Construido para la comunidad DFIR. No se requiere Windows >)