W

WAZUH SIEM LAB

// LABORATORIO INTERACTIVO DE SEGURIDAD // NIVEL: ANALISTA SOC //
WAZUH SERVER: OPERATIVO
AGENTE WINDOWS: CONECTADO
ALERTAS ACTIVAS: 7
CRITICOS: 2
OPENSEARCH: RUNNING
SECURITY OPERATIONS CENTER

WAZUH SIEM
MASTERCLASS

Domina el despliegue, configuración y operación de Wazuh como analista de ciberseguridad. Desde la instalación hasta la detección de intrusiones en tiempo real.

6 MÓDULOS
12+ ESCENARIOS
50+ EVENTOS REALES
⚡ RUTA DE APRENDIZAJE
1
Fundamentos: ¿Qué es un SIEM y Wazuh?

Entender la arquitectura, los componentes y por qué Wazuh es el SIEM open-source más utilizado en entornos empresariales.

2
Catálogo de eventos y alertas

Los 15+ tipos de incidentes que ves a diario como analista: brute force, escalada de privilegios, malware, etc.

3
Instalación completa en Windows

Paso a paso: Wazuh Server (Docker), agente Windows, Kibana/OpenSearch Dashboard. Con comandos exactos.

4
Simulación de intrusión y detección

Ejecuta ataques reales (brute force, netcat, modificación de archivos críticos) y obsérvalos aparecer en el SIEM.

📊 STACK TECNOLÓGICO
🛡️
WAZUH SERVER
Motor de análisis central. Recibe, correlaciona y genera alertas a partir de los logs de todos los agentes.
🤖
WAZUH AGENT
Software ligero instalado en endpoints (Windows/Linux/Mac). Recolecta logs, cambios en ficheros, procesos y más.
🔍
OPENSEARCH
Motor de búsqueda y almacenamiento de logs. Indexa billones de eventos para consultas en tiempo real.
📊
DASHBOARD
Interfaz web (Kibana/OpenSearch). Visualiza alertas, crea dashboards, investiga incidentes.
📡
FILEBEAT
Forwarder de logs. Envía los eventos del agente al servidor de forma segura y cifrada.
⚙️
RULESET
+3500 reglas precargadas. Detectan MITRE ATT&CK TTPs, vulnerabilidades CVE, compliance PCI-DSS, HIPAA.
QUÉ ES UN SIEM Y WAZUH
// CAPA 1: ARQUITECTURA — EL "POR QUÉ" //
🔍 SIEM: SECURITY INFORMATION AND EVENT MANAGEMENT

Un SIEM es el sistema nervioso central de un SOC. Agrega logs de toda la infraestructura (servidores, firewalls, endpoints, aplicaciones), los correlaciona y genera alertas cuando detecta patrones maliciosos.

Insight clave: Un firewall solo ve el tráfico de red. Un antivirus solo ve los archivos. Un SIEM ve todo a la vez y correlaciona eventos que individualmente parecen inofensivos pero juntos revelan un ataque.
FUENTES DE LOG RECOLECCIÓN ANÁLISIS RESPUESTA Windows Events ──┐ Linux Syslog ──┤ Firewall Logs ──┼──→ WAZUH AGENTWAZUH SERVERALERTAS Web Server ──┤ ↓ ↓ ↓ Active DirectoryFILEBEAT OPENSEARCH DASHBOARD

El problema que resuelve el SIEM es el volumen y velocidad de los logs modernos. Una empresa mediana genera millones de eventos diarios. Sin correlación automática, es imposible detectar un ataque.

🛡️ WAZUH: EL SIEM OPEN-SOURCE LÍDER
📊
Dato: Wazuh es utilizado por más de 20 millones de endpoints en todo el mundo. Es el fork open-source de OSSEC y compite directamente con Splunk, IBM QRadar y Microsoft Sentinel, pero completamente gratuito.
CAPACIDAD QUÉ HACE EJEMPLO REAL
Log Analysis Parsea y normaliza logs de 100+ fuentes Lee el Event ID 4625 de Windows y lo convierte en alerta "Login fallido"
Intrusion Detection Detecta exploits, scans y TTPs MITRE ATT&CK 5 logins fallidos seguidos → Alerta Brute Force (Rule 18100)
File Integrity Monitoriza cambios en archivos críticos (FIM) Alguien modifica C:\Windows\System32\hosts → Alerta inmediata
Vulnerability Detection Compara software instalado con base CVE Detecta Apache 2.4.49 vulnerable a CVE-2021-41773
Active Response Responde automáticamente a ataques Bloquea IP en firewall si >10 intentos SSH fallidos
Compliance Mapea alertas a PCI-DSS, HIPAA, GDPR Genera reporte automático de controles de seguridad
🗺️ ARQUITECTURA WAZUH EN DETALLE
A
Wazuh Agent (Endpoint)

Instalado en cada servidor/PC. Recolecta: Windows Event Logs (Security, System, Application), cambios de archivos (FIM), estado de procesos, puertos abiertos, usuarios, y ejecuta comandos para auditoría. Envía todo cifrado al server por puerto 1514 UDP/TCP.

B
Wazuh Manager (Servidor)

Cerebro del sistema. Recibe los eventos, aplica el ruleset (más de 3500 reglas), genera alertas, y las envía a OpenSearch. Gestiona la configuración de todos los agentes centralmente.

C
OpenSearch (Indexer)

Base de datos de tiempo-serie. Almacena TODOS los eventos en índices diarios (wazuh-alerts-YYYY.MM.DD). Permite búsquedas en millones de eventos en milisegundos usando DSL queries.

D
Wazuh Dashboard

Interfaz web donde el analista SOC trabaja. Incluye módulos de Security Events, Integrity Monitoring, Vulnerability Detection, MITRE ATT&CK, Compliance, y permite crear dashboards personalizados.

TIPOS DE EVENTOS Y ALERTAS
// CATÁLOGO DE INCIDENTES DEL DÍA A DÍA EN UN SOC //
📋 EVENTOS REALES EN WAZUH — HAZ CLIC PARA EXPANDIR

Cada evento muestra: severidad, rule ID, log raw tal como llega a Wazuh, y guía de análisis para el analista SOC.

INSTALACIÓN COMPLETA
// CAPA 2: IMPLEMENTACIÓN — PASO A PASO //
🖥️ ARQUITECTURA DEL LAB

Usaremos Docker para desplegar Wazuh Server en Windows (o en una VM Linux/WSL2). El agente Wazuh se instala directamente sobre Windows nativo.

Insight: Wazuh Server corre sobre Linux. En Windows, la forma más limpia es usar Docker Desktop + WSL2. El agente sí es nativo Windows (.msi). Esta separación agent/server refleja un entorno empresarial real.
COMPONENTE REQUISITOS NOTAS
Docker Desktop Windows 10/11 Pro, 8GB RAM min, 16GB rec. Requiere WSL2 habilitado (Hyper-V opcional)
Wazuh Server (Docker) 4GB RAM asignados a Docker, 50GB disco Incluye: Manager + Indexer + Dashboard
Wazuh Agent Windows 7+ / Server 2008+, 512MB RAM Se instala como servicio de Windows
Puertos abiertos 1514, 1515, 55000, 9200, 443 En el firewall local de Windows
⚙️ PASO PREVIO: HABILITAR WSL2 Y DOCKER
1
Habilitar WSL2 (PowerShell como Admin)
POWERSHELL (ADMIN)
# Habilitar WSL y la plataforma de VM
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart

# Reiniciar Windows, luego:
wsl --set-default-version 2
wsl --install -d Ubuntu

# Verificar WSL2 activo
wsl --list --verbose
# NAME      STATE    VERSION
# Ubuntu    Running  2
2
Instalar Docker Desktop

Descarga desde https://www.docker.com/products/docker-desktop/

[!]
CRÍTICO: Durante la instalación activa "Use WSL 2 instead of Hyper-V". Tras instalar, en Settings → Resources → WSL Integration, activa Ubuntu. Sin esto, Docker no puede comunicarse con la red del agente Windows.
3
Ajustar RAM para Docker
ARCHIVO: C:\Users\TU_USUARIO\.wslconfig
# Crea este archivo con Notepad
[wsl2]
memory=6GB
processors=4
swap=2GB

Reinicia WSL después: wsl --shutdown

🐳 DESPLIEGUE WAZUH CON DOCKER COMPOSE
1
Clonar el repositorio oficial de Wazuh Docker
POWERSHELL o WSL/UBUNTU TERMINAL
# Clonar el repo oficial de Wazuh
git clone https://github.com/wazuh/wazuh-docker.git -b v4.9.0
cd wazuh-docker/single-node

# Ver los archivos disponibles
ls
# config/  docker-compose.yml  generate-indexer-certs.yml  README.md
2
Generar certificados SSL para OpenSearch
TERMINAL (EN CARPETA single-node)
# Generar certificados TLS/SSL necesarios
docker compose -f generate-indexer-certs.yml run --rm generator

# Output esperado:
[✓] Creating certificates...
[✓] Certificates generated successfully
[!]
CRÍTICO: Si no se generan los certificados primero, el indexer (OpenSearch) no arrancará. Es el error #1 de los principiantes.
3
Levantar el stack completo de Wazuh
TERMINAL
# Levantar todos los servicios en background
docker compose up -d

# Monitorizar el arranque (tarda 2-5 min la primera vez)
docker compose logs -f

# Verificar que todos los contenedores están UP
docker compose ps
NAME                          STATUS          PORTS
single-node-wazuh.manager-1   Up              0.0.0.0:1514->1514/tcp
single-node-wazuh.indexer-1   Up              0.0.0.0:9200->9200/tcp
single-node-wazuh.dashboard-1 Up              0.0.0.0:443->5601/tcp
4
Acceder al Dashboard de Wazuh

Abre el navegador y ve a: https://localhost

CREDENCIALES POR DEFECTO
Usuario:   admin
Password:  SecretPassword

# Cambia el password en producción:
docker exec -it single-node-wazuh.indexer-1 bash
/usr/share/opensearch/plugins/opensearch-security/tools/securityadmin.sh \
  -cd /etc/opensearch/opensearch-security \
  -icl -nhnv -cacert /etc/opensearch/certs/root-ca.pem \
  -cert /etc/opensearch/certs/admin.pem \
  -key /etc/opensearch/certs/admin-key.pem
El navegador mostrará un aviso de certificado no confiable (es autofirmado). Acepta la excepción. En producción usarías un certificado de Let's Encrypt o corporativo.
5
Obtener la IP del contenedor Wazuh (para el agente)
POWERSHELL
# Obtener IP del host Windows (la que usará el agente)
ipconfig | findstr "IPv4"
   IPv4 Address. . .: 192.168.1.100

# En WSL/Docker, el agente se conecta a esta IP
# Anotala: la necesitarás en la instalación del agente
🖥️ INSTALACIÓN DEL AGENTE WAZUH EN WINDOWS
📊
Contexto: El agente es el "sensor" que corre en la máquina que quieres monitorizar. Se instala como servicio de Windows (WazuhSvc) y se ejecuta con privilegios de SYSTEM para poder leer todos los event logs.
1
Descargar el instalador MSI
POWERSHELL (ADMIN) — DESCARGA DIRECTA
# Descargar agente Wazuh v4.9.0 para Windows x64
Invoke-WebRequest -Uri https://packages.wazuh.com/4.x/windows/wazuh-agent-4.9.0-1.msi `
  -OutFile "C:\wazuh-agent.msi"

# Alternativa: descarga manual desde
# https://documentation.wazuh.com/current/installation-guide/wazuh-agent/wazuh-agent-package-windows.html
2
Instalar el agente con parámetros de configuración
POWERSHELL (ADMIN)
# Instalación silenciosa con IP del servidor Wazuh
# Sustituye 192.168.1.100 por la IP de tu servidor
msiexec.exe /i "C:\wazuh-agent.msi" /q `
  WAZUH_MANAGER="192.168.1.100" `
  WAZUH_REGISTRATION_SERVER="192.168.1.100" `
  WAZUH_AGENT_NAME="WINDOWS-LAB-01" `
  WAZUH_REGISTRATION_PASSWORD="please123" `
  WAZUH_AGENT_GROUP="windows"

# Si Docker corre localmente, usa 127.0.0.1 o la IP WSL
[!]
CRÍTICO: El WAZUH_REGISTRATION_PASSWORD debe coincidir con el configurado en el servidor (/var/ossec/etc/authd.pass dentro del contenedor). Por defecto está vacío; si usas contraseña configúrala primero en el server.
3
Iniciar el servicio del agente
POWERSHELL (ADMIN)
# Iniciar el servicio Wazuh
NET START WazuhSvc
# El servicio Wazuh se está iniciando.
# El servicio Wazuh se ha iniciado correctamente.

# Verificar estado
Get-Service WazuhSvc
Status   Name               DisplayName
------   ----               -----------
Running  WazuhSvc           Wazuh

# Ver logs del agente en tiempo real
Get-Content "C:\Program Files (x86)\ossec-agent\ossec.log" -Tail 30 -Wait
4
Configurar qué logs monitorizar (ossec.conf)
C:\Program Files (x86)\ossec-agent\ossec.conf
<!-- Logs de Windows a monitorizar -->
<localfile>
  <location>Security</location>
  <log_format>eventchannel</log_format>
</localfile>

<localfile>
  <location>System</location>
  <log_format>eventchannel</log_format>
</localfile>

<localfile>
  <location>Application</location>
  <log_format>eventchannel</log_format>
</localfile>

<!-- File Integrity Monitoring -->
<syscheck>
  <frequency>300</frequency>
  <directories check_all="yes">C:\Windows\System32</directories>
  <directories check_all="yes" report_changes="yes">C:\Users</directories>
</syscheck>
✅ VERIFICAR QUE TODO FUNCIONA
Capa 3 — Validación: Si estos pasos funcionan, tienes un SIEM completamente operativo con un endpoint Windows monitorizado en tiempo real.
1
Verificar agente conectado desde el server
DENTRO DEL CONTENEDOR WAZUH MANAGER
# Entrar al contenedor
docker exec -it single-node-wazuh.manager-1 bash

# Listar agentes conectados
/var/ossec/bin/agent_control -la
Wazuh agent_control. List of available agents:
   ID: 000, Name: wazuh-manager (server)
   ID: 001, Name: WINDOWS-LAB-01, IP: 192.168.1.100, Active

# Ver estado detallado del agente 001
/var/ossec/bin/agent_control -i 001
2
Verificar en el Dashboard (UI)

En https://localhost → Wazuh → Agents. Deberías ver tu agente Windows con estado Active.

1
AGENTES ACTIVOS
0
DESCONECTADOS
0
NEVER CONNECTED
1
TOTAL AGENTES
3
Generar un evento de prueba manual
POWERSHELL EN WINDOWS AGENTE
# Intentar login fallido (genera Event ID 4625)
# Abre CMD y ejecuta:
runas /user:usuarioficticio cmd
# Introduce cualquier contraseña incorrecta y pulsa Enter
# Esto genera un Windows Security Event 4625 (login fallido)

# En el Dashboard, ir a:
# Security Events → buscar "authentication failure"
# Deberías ver la alerta en <30 segundos
Si ves el evento en Wazuh Dashboard en menos de 30 segundos, la cadena completa funciona: Windows Event Log → Wazuh Agent → Wazuh Manager → OpenSearch → Dashboard.
WAZUH DASHBOARD
// CÓMO TRABAJA UN ANALISTA SOC EN EL DÍA A DÍA //
📊 MÉTRICAS DEL SISTEMA (SIMULADAS)
2
CRÍTICOS
5
HIGH
23
MEDIUM
147
LOW/INFO
EVENTS/HOUR1,247
OPENSEARCH STORAGE34.2 GB / 50 GB
AGENT HEALTH1/1 ACTIVE
🗺️ MÓDULOS PRINCIPALES DEL DASHBOARD
🚨
SECURITY EVENTS
Vista principal. Muestra todas las alertas con severidad, rule ID, agente origen y descripción. Aquí es donde el analista empieza su triaje.
Principal Triaje
🔒
INTEGRITY MONITORING
Muestra archivos creados, modificados o eliminados. Imprescindible para detectar malware que modifica archivos del sistema o persiste en startup.
FIM Forense
🧬
MITRE ATT&CK
Mapea automáticamente cada alerta a las tácticas y técnicas del framework MITRE. Visualiza qué fases del kill chain están siendo ejecutadas.
T1078 T1110
🕳️
VULNERABILITY DETECTION
Escanea el software instalado en cada agente y lo compara con la NVD. Identifica CVEs activos con CVSS score y exploits conocidos.
CVE CRITICAL CVSS 9.8
📋
COMPLIANCE
Dashboards de PCI-DSS, HIPAA, GDPR, NIST 800-53. Genera el porcentaje de cumplimiento automáticamente basado en los controles detectados.
PCI-DSS NIST
🌍
THREAT INTELLIGENCE
Cruza IPs detectadas con feeds de IOCs (VirusTotal, AlienVault OTX). Identifica comunicaciones con IPs de C2 conocidas.
IOC C2
🔍 CÓMO INVESTIGAR UNA ALERTA — FLUJO SOC
1
Triaje inicial: Security Events → Filtrar por Severity

Empieza siempre por los Critical y High. En el dashboard usa: rule.level: [12 TO 15]

2
Expandir el evento → Ver datos raw

Haz clic en el evento. Wazuh muestra el JSON completo con: timestamp, IP origen, usuario, proceso, rule ID y la descripción de la regla disparada.

3
Correlacionar con otros eventos del mismo origen

En Discovery, filtra por agent.name: "WINDOWS-LAB-01" y el rango de tiempo del incidente. Busca patrones.

4
Determinar: Falso Positivo vs Incidente Real

Pregúntate: ¿Está ese usuario autorizado a realizar esa acción? ¿A esa hora? ¿Desde esa IP? Si algo no cuadra → escala al Tier 2.

LABORATORIO DE INTRUSIÓN
// SIMULA ATAQUES Y OBSERVA LAS ALERTAS EN TIEMPO REAL //
⚠️ INSTRUCCIONES DEL LABORATORIO
[!]
DISCLAIMER: Estos comandos son para ejecutar en tu propio laboratorio con permiso explícito. Nunca los uses en sistemas de producción o sin autorización. El objetivo es aprender a detectar ataques, no a perpetrarlos.

El panel izquierdo simula lo que haría un atacante. El panel derecho muestra en tiempo real cómo lo detecta Wazuh. Haz clic en los botones de ataque para ver la detección.

💀 ATACANTE — COMANDOS DE PRUEBA

EJECUTA ESTOS EN TU WINDOWS AGENTE:

CMD (×5 VECES)
runas /user:Administrator cmd
# Introduce password incorrecto
# Repite 5 veces seguidas
# → Genera Event ID 4625 ×5
POWERSHELL (ADMIN)
echo "# test" >> C:\Windows\System32\drivers\etc\hosts
# Modifica el archivo hosts
# → Wazuh FIM detecta el cambio
POWERSHELL
Test-NetConnection -ComputerName 10.0.0.1 -Port 4444
# Simula conexión saliente sospechosa
# → Detectado por regla de red
POWERSHELL (ADMIN)
net localgroup administrators hacker /add
# Añade usuario al grupo admin
# → Event ID 4732, Rule 60002
POWERSHELL
1..100 | % { Test-NetConnection `
  -ComputerName localhost -Port $_ `
  -WarningAction SilentlyContinue }
# Escanea puertos locales
POWERSHELL (SIMULADO — SIN DAÑO REAL)
$files = Get-ChildItem C:\TestFolder -Recurse
$files | % { Rename-Item $_ "$($_.Name).encrypted" }
# Crea carpeta TestFolder con archivos .txt
# → FIM detecta modificaciones masivas
🛡️ WAZUH SIEM — ALERT FEED EN VIVO
ALERTAS DETECTADAS
🛡️
Sin alertas aún.
Haz clic en un botón de ataque →
QUERY OPENSEARCH (KIBANA DSL)
{
  "query": {
    "bool": {
      "must": [
        {"match": {"agent.name": "WINDOWS-LAB-01"}},
        {"range": {"@timestamp": {"gte": "now-1h"}}}
      ]
    }
  },
  "sort": [{"@timestamp": {"order": "desc"}}],
  "size": 50
}
🔧 ACTIVE RESPONSE — RESPUESTA AUTOMÁTICA

Wazuh puede responder automáticamente a ataques. Configura Active Response en el servidor:

WAZUH MANAGER: /var/ossec/etc/ossec.conf
<!-- Bloquear IP tras brute force -->
<active-response>
  <command>firewall-drop</command>
  <location>local</location>
  <rules_id>18100</rules_id>  <!-- Rule de Brute Force -->
  <timeout>3600</timeout>    <!-- Bloqueo 1 hora -->
</active-response>

<!-- Resultado: cuando se detectan 5 logins fallidos,
     Wazuh ejecuta iptables -A INPUT -s <IP> -j DROP
     automáticamente en el endpoint afectado -->
Implicación empresarial: Con Active Response configurado, Wazuh actúa como un IPS (Intrusion Prevention System) además de IDS. Reduce el tiempo de respuesta de horas (detección manual) a segundos (automático).