Soc Con Wazuh Como Siem

SOC con Wazuh como SIEM #

Logo

En este proyecto se tratar谩 de montar un SOC en Vmware Workstation, pero toalmente funcional, se ir谩 actualizando poco a poco. Los elementos principales con los que se va a contar son:

  • SIEM (Wazuh)
  • IDS (Suricata)
  • Adversary simulation (Caldera)
  • Honeypots
  • pFsense (Enrutar, NATear y aislar las distintas redes)

脥ndice #

  1. SOC con Wazuh como SIEM 1.1. Elementos principales

  2. Planeamiento 2.1. Redes y conexiones 2.2. IMPORTANTE

  3. 馃搶 Configuraci贸n de M谩quinas Virtuales y Redes 3.1. Tabla de configuraci贸n de redes

  4. 馃搶 Tabla de Credenciales del Laboratorio

  5. Esquema de red

  6. Requisitos previos 6.1. Configuraci贸n en Windows 6.2. Configuraci贸n en Linux (Debian 12)

  7. Instalaci贸n y configuraci贸n pFsense 7.1. Configuraci贸n de interfaces en pFsense 7.2. Reglas de firewall 7.3. Configuraci贸n firewall WAN Interface 7.4. Configuraci贸n firewall SOC Interface 7.5. Configuraci贸n firewall HONEYPOT Interface

  8. Instalaci贸n y configuraci贸n Wazuh 8.1. Instalaci贸n de Wazuh 8.2. Generaci贸n de ficheros de configuraci贸n e instalaci贸n 8.3. Deshabilitar repositorios Wazuh

  9. Instalaci贸n y configuraci贸n Suricata 9.1. Instalaci贸n de Suricata 9.2. Configuraci贸n de Suricata 9.3. Comprobaci贸n de alertas 9.4. Env铆o de logs de Suricata a Wazuh

  10. Instalaci贸n y configuraci贸n Honeypot 10.1. Instalaci贸n de Honeypot 10.2. Lanzar Honeypot 10.3. Lanzar honeypots

  11. Instalaci贸n e inicio Caldera 11.1. Instalaci贸n de Caldera 11.2. Alternativa Docker

  12. File Integrity Monitoring (FIM)

  13. Custom SCA con Wazuh

  14. CONTINUAR脕 EL DESARROLLO CON: 14.1. CDB lists 14.2. VirusTotal integration 14.3. Windows defender logs integration 14.4. Sysmon integration 14.5. TheHive + Cortex 14.6. MISP 14.7. Shuffle SOAR 14.8. Active response scripts 14.9. Threat Hunting

Planeamiento #

Lo primero que se va a planear son las redes y conexiones, tendremos 3 redes:

  • LAN: ser谩 la que de acceso a la WAN
  • SOC: donde tendremos Wazuh, Suricata y Caldera
  • SERVERS: donde tendremos el Honeypot

IMPORTANTE #

Al dise帽ar el laboratorio en vmware workstation (linux), no funciona el modo promiscuo para suricata, o al menos yo no lo consegu铆 hacer funcionar, algo imprescindible para el “sniffing” de paquetes de la red de Honeypot. Para ello se necesitar铆a o:

  • Poner suricata de proxy entre honeypot y pfsense
  • Un switch f铆sico y hacer port-mirroring hacia un interfaz de suricata
  • Realizar el laboratorio en workstation Windows (te贸ricamente funciona)

No obstante, se ha detallado el proyecto para que puedas realizarlo de una de estas 3 maneras. En mi caso, la m谩quina suricata llevar谩 el honeypot integrado, es decir, Suricata + Honeypot en la misma MV.

La gu铆a se puede seguir perfectamente, a la hora de instalar el honeypot, se avisar谩 de lo que hay que hacer (caso de usar Vmware Workstation en Linux)

**馃搶 Configuraci贸n de M谩quinas Virtuales y Redes ** #

M谩quina VirtualInterfazIPVMnetFunci贸n
pfSenseWAN (le0)192.168.1.200VMnet0 (Bridge)Conexi贸n a Internet
LAN1 (le1)10.0.1.200/24VMnet1 (Host-Only)Red SOC (Administraci贸n pf)
LAN2 (le2)20.0.1.200/24VMnet2 (Host-Only)Red Honeypot
Suricataens33 (Gesti贸n)20.0.1.2/24VMnet2 (Host-Only)Red Honeypot (IDS)
Wazuh + Calderaens3310.0.1.2/24VMnet1 (Host-Only)Red SOC
Kali Linuxeth010.0.1.1/24VMnet1 (Host-Only)Red SOC (Atacante pruebas)
Honeypotens3420.0.1.1/24VMnet2 (Host-Only)Red Honeypot (Atacada)

馃搶 Tabla de Credenciales del Laboratorio #

M谩quina/ServicioUsuarioContrase帽aNotas
pfSense Web GUIadmincuTRfyC6OOCui6Acceso a la interfaz web solo en la Red SOC (https://10.0.1.200)
pfSense SSHadmincuTRfyC6OOCui6Acceso remoto por SSH solo desde la Red SOC (ssh root@10.0.1.200)
Honeypot (Cowrie, Dionaea, etc.)roothoneypot123Dependiendo del honeypot instalado
Wazuh Web UIadminkpAGnmrQHiymIWRnO?mPEh*L46NJo6.eAcceso a la consola Wazuh (https://10.0.1.1)
Wazuh SSHadministratorSOCproyecto.2025!Acceso al servidor Wazuh
Suricata SSHadministratorSOCproyecto.2025!Acceso al servidor Suricata (10.0.1.2)
Caldera (Red Team Framework)adminSOCproyecto.2025!Acceso a https://10.0.1.1:8888
Kali linuxkalikali

Esquema de red #

Esquema_Red

Requisitos previos #

Para no extender mucho esta gu铆a, se omitir谩n ciertos pasos pero que son requisito previo e indispensable:

  • Crear Vmnets

  • Asegurarse que el Vmnet0 en modo bridge est谩 en bridge con la interfaz deseada

  • Configurar router de la red de casa para:

    • pFsense (192.168.1.200) tenga todos sus puertos abiertos. Se puede meter en DMZ
    • Reenv铆o de tr谩fico de los servicios que queramos ser atacados hacia el pFsense
  • Configurar el equipo anfitri贸n en la red de SOC para poder acceder a las interfaces de wazuh, caldera, etc.

    #Windows Tan sencillo como editar la interfaz desde el administrador de interfaces

    #Linux (Debian 12) Crear un fichero para el interfaz: sudo nano /etc/systemd/network/10-vmnet1.network (Para otras ocasiones solo cambiar el vmnet, lo del “10-” se mantiene).

    [Match]
    Name=vmnet1
    
    [Network]
    Address=10.0.1.3/24
    Gateway=10.0.1.200
    

sudo systemctl restart systemd-networkd

Instalaci贸n y configuraci贸n pFsense #

Una vez tengamos la MV instalada, le agregaremos 3 interfaces de red conectados a:

  • Vmnet0 ser谩 la WAN
  • Vmnet1 ser谩 SOC
  • Vmnet2 ser谩 Honeypot

Se habilita el interfaz, asignamos un nombre, establecemos IP est谩tica, cambiamos el CIDR y nos aseguramos que la interfaz de WAN, su gateway de “upstream” sea la gw de tu red local de casa. pfsense_interfaces

El siguiente paso es configurar las reglas de firewall, las principal intenci贸n de comunicaci贸n es:

  • Honeypot puede ser accedido dese WAN (para ser atacado)
  • Honeypot puede acceder a SOC (para enviar logs a Wazuh)
  • Honeypot puede ser accedido desde SOC (Para acceder desde Kali, Wazuh, Caldera, etc)
  • Suricata NO puede ser accedido desde WAN (no tiene motivos para ello)
  • Suricata puede acceder a WAN (buscar updates)
  • Suricata puede acceder a SOC (enviar logs a Wazuh)
  • Suricata puede ser accedido desde SOC
  • SOC puede acceder a WAN (updates e internet)
  • SOC NO puede ser accedido desde WAN (no tiene motivos para ello)

firewall_map

Configuraci贸n firewall WAN Interface #

firewall_map

Configuraci贸n firewall SOC Interface #

firewall_map

Configuraci贸n firewall HONEYPOT Interface #

firewall_map

Instalaci贸n y configuraci贸n Wazuh #

Instalamos (En mi caso Ubuntu Server 22.04), asignamos Vmnet1, establecemos direccionamiento IP (10.0.1.2/24 - Gw 10.0.1.200).

apt update && apt upgrade -y

NOTA:Dependiendo de la versi贸n de wazuh, los comandos pueden variar, lo mejor es consultar la documentaci贸n oficial

  1. Descargar el script de instalaci贸n (la URL variar谩)
curl -sO https://packages.wazuh.com/4.10/wazuh-install.sh
curl -sO https://packages.wazuh.com/4.10/config.yml
  1. Editar el config.yml con el hostname de la MV y la IP firewall_map

  2. Generar ficheros de configuraci贸n e instalar

bash wazuh-install.sh --generate-config-files
bash wazuh-install.sh -a
  1. Eliminar repositorios de wazuh, para evitar un upgrade accidental que pueda estropear el servicio. (OPCIONAL)
sed -i "s/^deb /#deb /" /etc/apt/sources.list.d/wazuh.list
apt update

Instalaci贸n y configuraci贸n Suricata #

Instalamos el S.O, asignamos 2 interfaces de red al Vmnet1, y establecemos direccionamiento IP.

apt update && apt upgrade -y
add-apt-repository ppa:oisf/suricata-stable
apt install suricata -y



# Descargar emmerging rules
cd /tmp/ && curl -LO https://rules.emergingthreats.net/open/suricata-6.0.8/emerging.rules.tar.gz  
sudo tar -xvzf emerging.rules.tar.gz && mkdir /etc/suricata/rules && sudo mv rules/*.rules /etc/suricata/rules/  
	sudo chmod 640 /etc/suricata/rules/*.rules
  1. Editar configuraci贸n para especificar la interfaz de red, y la HOME_NET (la red que queremos monitorear), ademas de las nuevas rules descargadas.
e>
  1. Habilitar al inicio e iniciar
systemctl enable suricata
systemctl start suricata
  1. Comprobar alertas
#Ya deberiamos ver los scans de nmap, por ejemplo
tail -f /var/log/suricata/fast.log

Env铆o logs Suricata > Wazuh #

Para ello necesitaremos tener un agente de Wazuh instalado en suricata. En el panel de Wazuh > Deploy Agents. Rellenamos con la IP del servidor, elegimos S.O destino, etc. y nos generar谩 un comando similar al siguiente, que descargar谩 el agente de los servidores de Wazuh (internet) con la configuraci贸n deseada. En caso de ser offilne, se puede descargar e importar el agente de manera offline.

wget https://packages.wazuh.com/4.x/apt/pool/main/w/wazuh-agent/wazuh-agent_4.10.1-1_amd64.deb && sudo WAZUH_MANAGER='10.0.1.2' dpkg -i ./wazuh-agent_4.10.1-1_amd64.deb

Editamos el siguiente fichero para decirle al agente de wazuh donde est谩n los logs: Si no funciona, agregar tambien al fichero ossec.conf del manager, desde la interfaz web

/var/ossec/etc/ossec.conf


# eal final del fichero en el ultimo <ossec_config> (no en el primero)
	
	<localfile>
		<log_format>syslog</log_format>
		<location>/var/log/suricata/eve.json</location>
	</localfile>

Por 煤ltimo habilitamos el servicio y lo iniciamos:

sudo systemctl daemon-reload 
sudo systemctl enable wazuh-agent 
sudo systemctl start wazuh-agent

Instalaci贸n y configuraci贸n Honeypot #

Llegados a este punto, si virtualizas en workstation con linux, debes agregar una regla para permitir el tr谩fico desde WAN hacia suricata. Si tu caso es cualquier otro descrito en esta gu铆a, puedes seguir normalmnete., teniendo en cuenta en que MV instalar el Honeypot.

Instalaci贸n #

apt
apt install python3-pip
pip install honeypots

Lanzar honeypot #

Honeypots tiene una larga lista de servicios que se pueden lanzar, para ver el listado:

Listar honeypots #
honeypots --list
Lanzar honeypot #

# Ejepmplo lanazr SSH
python3 -m honeypots --setup ssh --auto

# Lanzar todos:
python3 -m honeypots --setup all --auto

Instalaci贸n e inicio Caldera #

Caldera es un servicio para la emulaci贸n del adversario, de esta manera podremos lanzar ataques simulados a nuestro honeypot y comprobar la detecci贸n por parte de wazuh.

git clone https://github.com/mitre/caldera.git --recursive
cd caldera
pip3 install -r requirements.txt

#### INICIAR EL SERVICIO
python3 server.py --insecure --build

Instalaci贸n docker (alternativa) #

# Recursively clone the Caldera repository if you have not done so
git clone https://github.com/mitre/caldera.git --recursive

# Build the docker image. Change image tagging as desired.
# WIN_BUILD is set to true to allow Caldera installation to compile windows-based agents.
# Alternatively, you can use the docker compose YML file via "docker-compose build"
cd caldera
docker build . --build-arg WIN_BUILD=true -t caldera:latest

# Run the image. Change port forwarding configuration as desired.
docker run -p 8888:8888 caldera:latest

Tras el despliegue, debemos desplegar un agente en el honeypot, para lanzar los ataques simulados y ver si en wazuh vemos los detalles de esos ataques.

ACCESO #

https://<ip>:8888

File Integrity Monitoring (FIM) #

Trata de monitorizar la integridad de ciertos ficheros y directorios importantes. para ello en el agente de la MV en cuesti贸n (honeypot), debemos agregar los directorios y/o ficheros que queramos monitorizar.

Dependiendo de la maquina, en un entorno real, unos directorios ser谩n importantes y otros no. Debemos conocer nuestro servicio y la criticidad para saber determinar que es importante y que no.

## EQUIPO CLIENTE LINUX CON AGENTE WSUS
/var/ossec/etc/ossec.conf

# Apartado de File integrity monitoring
<syscheck>
聽聽<disabled>no</disabled>
聽聽<frequency>720</frequency>
聽聽<scan_on_start>yes</scan_on_start>
聽聽<directories check_all="yes" report_changes="yes" real_time="yes">/etc,/bin,/sbin</directories>
聽聽<directories check_all="yes" report_changes="yes" real_time="yes">/lib,/lib64,/usr/lib,/usr/lib64</directories>
聽聽<directories check_all="yes" report_changes="yes" real_time="yes">/var/www,/var/log,/var/named</directories>
聽聽<ignore>/etc/mtab</ignore>
聽聽<ignore>/etc/hosts.deny</ignore>
聽聽<ignore>/etc/mail/statistics</ignore>
聽聽<ignore>/etc/random-seed</ignore>
聽聽<ignore>/etc/adjtime</ignore>
聽聽<ignore>/etc/httpd/logs</ignore>
聽聽<ignore>/etc/utmpx</ignore>
聽聽<ignore>/etc/wtmpx</ignore>
聽聽<ignore>/etc/cups/certs</ignore>
聽聽<ignore>/etc/dumpdates</ignore>
聽聽<ignore>/etc/svc/volatile</ignore>
聽聽<ignore>/sys/kernel/security</ignore>
聽聽<ignore>/sys/kernel/debug</ignore>
聽聽<ignore>/sys</ignore>
聽聽<ignore>/dev</ignore>
聽聽<ignore>/tmp</ignore>
聽聽<ignore>/proc</ignore>
聽聽<ignore>/var/run</ignore>
聽聽<ignore>/var/lock</ignore>
聽聽<ignore>/var/run/utmp</ignore>
</syscheck>

Custom SCA con Wazuh #

Cumplimiento CCN-STICS #

El Security Configuration Assessment (SCA) es una herramienta clave para evaluar el cumplimiento de est谩ndares de seguridad como CIS o NIST, verificando configuraciones como el tiempo de desconexi贸n tras inactividad.

En este caso se desarrolla el cumplimiento de las CCN-STICS para cumplir con el marco del ENS (Esquema nacional de seguridad Espa帽ol)

Debido a lo extenso que es este apartado, se ha desarrollado en otro art铆culo, publicado en la siguiente url: Custom SCA con Wazuh

CONTINUAR脕 EL DESARROLLO CON: #

  • CDB lists
  • VirusTotal integration
  • Windows defender logs integration
  • Sysmon integration
  • TheHive + Cortex
  • MISP
  • Shuffle SOAR
  • Active response scripts
  • Threat Hunting