Proyecto personal / laboratorio
Implementando un SOC con Active Directory
Laboratorio de Operaciones de Seguridad (SOC) construido sobre Active Directory. Implementación de infraestructura con máquinas virtuales, Splunk para SIEM y Microsoft Defender para detección de amenazas.
Introducción
Objetivo del Proyecto
El propósito de este proyecto es establecer un laboratorio de Operaciones de Seguridad (SOC) utilizando una infraestructura basada en Active Directory con máquinas virtuales. Este laboratorio está diseñado para simular un entorno de red empresarial realista, permitiendo la implementación y prueba de estrategias de detección de intrusiones y respuestas a incidentes. Específicamente, el laboratorio se enfoca en la detección y creacion de alertas de ataques como RDP bruteforce y creación de nuevos usuarios
La implementación de Splunk Enterprise Server juega un papel crucial, ya que se configura para monitorizar, analizar y generar alertas basadas en patrones de tráfico de red y logs de eventos que indican actividad maliciosa. Esto permite responder de manera rápida y eficaz a las amenazas detectadas
Entorno del laboratorio
Componentes del Laboratorio
Windows Server 2022
Este servidor actúa como el controlador de dominio en nuestro entorno de Active Directory. Se encarga de la autenticación de usuarios, la autorización y la gestión de políticas dentro de la red. Está configurado para simular un entorno corporativo real, administrando roles y características esenciales como DNS, DHCP y otros servicios de red.
Splunk Enterprise Server
Splunk se utiliza como una herramienta centralizada de monitoreo, análisis y alerta. Captura, indexa y correlaciona datos en tiempo real en un repositorio desde el cual puede generar gráficos, informes, alertas, cuadros de mando y visualizaciones.
Configuración: Está configurado para recibir y analizar los logs generados por el Windows Server y el cliente Windows 10, así como los datos de eventos de seguridad simulados por Kali Linux. Las alertas están diseñadas para identificar patrones de ataques y posibles brechas de seguridad, como intentos de acceso no autorizado o anomalías en el tráfico de red.
Cliente Windows 10
Actúa como un típico puesto de trabajo dentro de la organización. Este cliente es el objetivo de varios tipos de ataques simulados.
Configuración: Equipado con el Windows Defender y las configuraciones del firewall por defecto, configurados para reportar todos los eventos sospechosos al servidor Splunk para su análisis, a través del Splunk Universal Forwarder. Por otra parte se instaló Sysmon y Atomic Red Team
Kali Linux
Kali Linux es utilizado como la plataforma de pruebas para realizar ataques contra el entorno de Active Directory. Esta distribución Linux es conocida por su amplia gama de herramientas de pruebas de penetración y auditoría de seguridad.
Configuración : Configurado con herramientas específicas para cada tipo de ataque planeado. Por ejemplo, se utilizan herramientas como Hydra para el bruteforce de RDP, y se emplean scripts personalizados para simular Kerberoasting y ataques de tipo Responder. Este entorno está aislado dentro de la red virtual para evitar cualquier impacto adverso en redes externas o no autorizadas
Diagrama de red

Configurando el laboratorio
Primero instalamos todas las maquinas virtuales necesarias y configuramos una red NAT para poder tener a todas las maquinas en el mismo segmento de red.


Maquina Windows 10 Cliente
Vamos a proceder a instalar el Splunk Universal Forwarder para poder enviar la información a nuestro servidor Splunk.


Ahora vamos con la instalación de Sysmon para que se registren los eventos en nuestra máquina

Para ello usaremos la siguiente configuración para Sysmon
[https://github.com/olafhartong/sysmon-modular/blob/master/sysmonconfig.xml](https://github.com/olafhartong/sysmon-modular/blob/master/sysmonconfig.xml)

Una vez instalado, procedemos a configurar el archivo inputs.conf, para indicarle al Splunk Universal Forwarder, que información tiene que mandar para ser analizada, para ello utilizé la siguiente configuración
[WinEventLog://Application]
index = endpoint
disabled = false
[WinEventLog://Security]
index = endpoint
disabled = false
[WinEventLog://System]
index = endpoint
disabled = false
[WinEventLog://Microsoft-Windows-Sysmon/Operational]
index = endpoint
disabled = false
renderXml = true
source = XmlWinEventLog:Microsoft-Windows-Sysmon/Operational
Básicamente lo que se configura es que se manden los eventos de registros de aplicaciones, seguridad y sistema al índice "endpoint" de nuestro Splunk server.
Ahora nos logeamos en el servidor Splunk y procedemos a crear un nuevo indice llamado "endpoint".

Procedemos a crearlo

Ahora vemos que figura el índice

Por ultimo queda configurar el servidor para que reciba los datos a través de un puerto determinado, en este caso el default, como configuramos en nuestra maquina cliente.

Una vez configurado todo lo anterior, al realizar una nueva búsqueda utilizando el indice "endpoint" vemos que los datos llegan correctamente y el host en cuestión es nuestra maquina cliente.

Ahora para nuestro Windows Server, procedemos con los mismos pasos que el Windows Cliente para conectarlo a Splunk
Configurando Active Directory
Procedemos a instalar Active Directory Domain Services

Luego procedemos a crear un nuevo dominio, como también una contraseña para el Domain Controller

Ahora procedemos a crear una nueva unidad organizacional , que llame "Test" y creamos un nuevo usuario, en mi caso de nombre "user1" y contraseña "SuperPass123"

Procedemos a conectarnos desde nuestro Windows Cliente

Por ultimo, vamos a instalar Atomic Red Team para poder automatizar algunos ataques que generen telemetría y crear casos de uso para estos
Implementación de casos de usos y alertas
Caso 1: RDP Bruteforce
Una vez todo listo, nos dirijimos al Splunk y comenzamos a configurar el caso de uso para detectar un intento de fuerza bruta por RDP
Para ello creé el siguiente caso de uso Básicamente estamos filtrando por el evento con código 4625, el cual representa que hubo un intento fallido de login por RDP. Después renombré y ordené algunas variables para luego poder representarlas en una tabla, para poder ver la información sobre los intentos de login.

Ahora vamos a crear una nueva alerta, la cual cada un minuto va a estar analizando si el count de intentos supera a 15, se dispara la alerta.


Pruebas de ataque bruteforce RDP
Para ello preparé mi Kali Linux con un diccionario en el cual hay 20 contaseñas, ninguna es correcta para mi usuario pero con el fin de poder simular un ataque fallido vamos a usar este diccionario

Ahora con la herramienta hydra, procedemos a realizar el ataque, especificando el usuario como fijo y las contraseñas dentro del diccionario

Vemos que en Splunk nos llegan los logs indicando la IP y nombre del atacante, como asi tambien el usuario que está siendo atacado junto al horario

Por último vemos que la detección del ataque fue exitosa, puesto a que logramos que se realize una alerta indicando que este ataque se esta llevando a cabo.

Caso 2: Creación de un nuevo usuario
Para detectar cuando se crea un nuevo usuario en base a nuestros logs, vamos a crear el siguiente caso de uso basdo en el codigo de evento 4720, el cual indica la creación de una nueva cuenta, luego utilizé expresiones regulares para poder determinar los nombres de la cuenta creada y de quien creo dicha cuenta. Por ultimo mostramos todo en una tabla

Ahora vamos con la creación de la alerta, para ello como en el caso anterior la establecí cada un minuto para evitar consumir excesivamente recursos y le establecí la condición de que cada vez que se cree un nuevo usuario me de la alerta.


Prueba de creación de un nuevo usuario
Para crear un nuevo usuario decidí usar la herramienta de Atomic Red Team el cual nos va a permitir en base al MITRE ATT&CK Techniques recrear distintos tipos de ataques sin tener que necesariamente realizarlos manualmente. Para ello usamos el siguiente comando en PowerShell especificando el ID de la técnica en cuestión.

Una vez ejecutado exitosamente, podemos ver que los logs llegan indicando que un nuevo usuario ha sido creado por Administrator, puesto a que ejecuté PowerShell con estos permisos.

Por último vemos que se creo exitosamente la alerta que previamente establecimos, por lo tanto la detección de este evento fue exitosa.

Conclusiones
La realización de este proyecto me ayudó a fortalecer y ganar más confianza a través de la configuración y administración de Active Directory y la utilización de Splunk para el monitoreo y la creación de alertas.
También la implementación de dos casos de uso me ayudó a comprender la granularidad que se utiliza para cada caso, como así también sus posibles variantes y tantos factores a tener en cuenta
Por último agregar que mi intención es seguir agregándole más cosas a este proyecto como más casos de uso y próximamente una automatización en base a esas alertas generadas, para de esta manera prevenir o mitigar los ataques.
Gracias por leer :)
¿Te interesa colaborar en seguridad defensiva?
Estoy abierto a conversaciones sobre roles y proyectos en SOC, incident response y mejora de detección.
Contactar