SOC con Wazuh como SIEM #
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 #
Planeamiento 2.1. Redes y conexiones 2.2. IMPORTANTE
馃搶 Configuraci贸n de M谩quinas Virtuales y Redes 3.1. Tabla de configuraci贸n de redes
Requisitos previos 6.1. Configuraci贸n en Windows 6.2. Configuraci贸n en Linux (Debian 12)
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
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
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
Instalaci贸n y configuraci贸n Honeypot 10.1. Instalaci贸n de Honeypot 10.2. Lanzar Honeypot 10.3. Lanzar honeypots
Instalaci贸n e inicio Caldera 11.1. Instalaci贸n de Caldera 11.2. Alternativa Docker
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 Virtual | Interfaz | IP | VMnet | Funci贸n |
---|---|---|---|---|
pfSense | WAN (le0) | 192.168.1.200 | VMnet0 (Bridge) | Conexi贸n a Internet |
LAN1 (le1) | 10.0.1.200/24 | VMnet1 (Host-Only) | Red SOC (Administraci贸n pf) | |
LAN2 (le2) | 20.0.1.200/24 | VMnet2 (Host-Only) | Red Honeypot | |
Suricata | ens33 (Gesti贸n) | 20.0.1.2/24 | VMnet2 (Host-Only) | Red Honeypot (IDS) |
Wazuh + Caldera | ens33 | 10.0.1.2/24 | VMnet1 (Host-Only) | Red SOC |
Kali Linux | eth0 | 10.0.1.1/24 | VMnet1 (Host-Only) | Red SOC (Atacante pruebas) |
Honeypot | ens34 | 20.0.1.1/24 | VMnet2 (Host-Only) | Red Honeypot (Atacada) |
馃搶 Tabla de Credenciales del Laboratorio #
M谩quina/Servicio | Usuario | Contrase帽a | Notas |
---|---|---|---|
pfSense Web GUI | admin | cuTRfyC6OOCui6 | Acceso a la interfaz web solo en la Red SOC (https://10.0.1.200 ) |
pfSense SSH | admin | cuTRfyC6OOCui6 | Acceso remoto por SSH solo desde la Red SOC (ssh root@10.0.1.200 ) |
Honeypot (Cowrie, Dionaea, etc.) | root | honeypot123 | Dependiendo del honeypot instalado |
Wazuh Web UI | admin | kpAGnmrQHiymIWRnO?mPEh*L46NJo6.e | Acceso a la consola Wazuh (https://10.0.1.1 ) |
Wazuh SSH | administrator | SOCproyecto.2025! | Acceso al servidor Wazuh |
Suricata SSH | administrator | SOCproyecto.2025! | Acceso al servidor Suricata (10.0.1.2 ) |
Caldera (Red Team Framework) | admin | SOCproyecto.2025! | Acceso a https://10.0.1.1:8888 |
Kali linux | kali | kali |
Esquema de 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.
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)
Configuraci贸n firewall WAN Interface #
Configuraci贸n firewall SOC Interface #
Configuraci贸n firewall HONEYPOT Interface #
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
- 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
Editar el config.yml con el hostname de la MV y la IP
Generar ficheros de configuraci贸n e instalar
bash wazuh-install.sh --generate-config-files
bash wazuh-install.sh -a
- 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
- Editar configuraci贸n para especificar la interfaz de red, y la HOME_NET (la red que queremos monitorear), ademas de las nuevas rules descargadas.
- Habilitar al inicio e iniciar
systemctl enable suricata
systemctl start suricata
- 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