Nuestro laboratorio de introducción se enfoca en identificar un incidente relacionado con obtener acceso al panel de administración de un servidor web.
Caso
Durante las vacaciones de ISA, se contrató a desarrolladores externos para crear una aplicación web que estaba planificada para ser alojada en el servidor web Tomcat. Para mayor comodidad, los desarrolladores pusieron la consola web para administrar las aplicaciones del servidor a disposición del mundo exterior y crearon una cuenta de administrador "no trivial": admin.
La amenaza
El atacante, mientras escanea los hosts externos de la organización, se encuentra con el puerto 8080 del servidor web en cuestión, se asegura de que la consola administrativa esté disponible y, después de algunos intentos, logra la contraseña de la cuenta de administrador.
Tarea
Es necesario determinar cómo el administrador de seguridad de la información podría configurar SIEM antes de sus vacaciones para registrar oportunamente un incidente relacionado con la amenaza en cuestión. Después de eso, debe implementar este escenario de ataque y asegurarse de que las directivas de correlación funcionen correctamente.
Infraestructura virtual
La situación se está desarrollando en la siguiente infraestructura de TI implementada en VirtualBox:
- Máquina del atacante (Kali Linux, IP: 8.8.8.10, 4GB RAM, kali: kali);
- Cortafuegos con sistema de detección de intrusos (pfSense, IP externa: 8.8.8.1, IP de red interna: 192.168.1.1, IP DMZ: 192.168.2.1, 1GB RAM, admin: pfsense);
- Servidor web (Ubuntu Server 18.04 con Tomcat, IP 192.168.2.15, 2GB RAM, usuario: usuario);
- Servidor SIEM-sistema "KOMRAD" (Ubuntu 20.04, IP 192.168.1.99, 4GB RAM, usuario: usuario).
Si está interesado en implementar esta infraestructura por su cuenta, puede usar las instrucciones , pero si desea ahorrar tiempo, publicamos las máquinas virtuales configuradas en formato OVA . El sistema SIEM deberá obtenerse adicionalmente, pero esto se describirá a continuación.
Solución: configurar un sistema SIEM
Para solucionar el problema, realizaremos secuencialmente las acciones del atacante, analizaremos cómo se reflejan en los registros del firewall y del servidor web, configuraremos la recopilación, el análisis y el filtrado de eventos, y también crearemos las directivas de correlación necesarias en el sistema SIEM.
La guía de nuestro laboratorio proporciona pasos detallados para resolver este problema, en el artículo, nos concentraremos solo en los puntos clave.
1. Envío de eventos desde el firewall
El firewall pfSense te permite enviar tus logs a través del protocolo Syslog a un servidor remoto, para esto solo necesitas configurar la dirección IP y el puerto del recolector syslog SIEM "KOMRAD", y además agregar una regla que permita enviar logs desde la red 192.168.2.0/24 a la red interna 192.168 .1.0 / 24.
El sistema SIEM recibirá eventos del siguiente tipo:
<134> 1 2020-10-18T02: 33: 40.684089 + 00: 00 pfSense.localdomain filterlog 9761 - - 4 ,,, 1000000103, em0, match, block , in, 4, 0x0 ,, 64,25904,0, DF, 6, tcp, 60, 8.8.8.10 , 8.8.8.1 , 35818,1721,0, S, 1017288379 ,, 64240 ,, mss; sackOK; TS; nop; wscale
Como puede ver, esta entrada contiene información tan importante como la dirección IP del host que inició la conexión, la dirección IP del host al que se está intentando la conexión y una indicación de que el intento de conexión fue bloqueado.
2. Envío de eventos desde un servidor web
El servidor web Tomcat registra las solicitudes http en registros locales, que pueden redirigirse a través de rsyslog al sistema SIEM. Para resolver este problema, también puede utilizar el recopilador de archivos, que forma parte del sistema SIEM "KOMRAD". En los registros, puede ver que se registra la dirección IP del host desde el cual se recibió la solicitud, así como la cuenta de usuario en caso de autorización exitosa:
3. Recibir un flujo de eventos por el sistema SIEM "KOMRAD"
Los eventos considerados son registrados automáticamente por el sistema SIEM "KOMRAD":
Los dos tipos de eventos mencionados son suficientes para detectar las siguientes situaciones:
- Bloqueo de conexión: basado en bloque;
- Escaneo de puertos: en caso de bloqueo múltiple de intentos de conexión iniciados por el mismo host;
- Sospecha de acceso no autorizado: escaneo de puertos con posterior acceso administrativo.
Las tres situaciones pueden ser incidentes de seguridad de la información, pero por supuesto con diferentes niveles de gravedad.
Antes de registrar incidentes, debemos aprender a extraer la información útil anterior de los eventos.
4. Análisis de eventos por el sistema SIEM "KOMRAD" (análisis)
Para analizar los eventos de origen en un sistema SIEM, debe crear un complemento que incluya un conjunto de expresiones regulares. Para las fuentes más populares, COMRAD ya tiene complementos listos para usar. En ausencia de un complemento, el usuario puede crear uno.
A continuación se muestra un ejemplo del diseño de una expresión regular para extraer campos del evento de firewall anterior. Como herramienta de depuración, utilizamos el portal https://regex101.com/
Después de crear el complemento, los datos de los eventos se extraen en campos separados, como puede ver en la siguiente tarjeta de eventos:
5. Configurar filtros para extraer eventos de interés de seguridad de la información de la transmisión
Para identificar los eventos que nos interesan en el flujo de eventos que ingresan al sistema SIEM, necesitamos configurar filtros. En el sistema SIEM, los filtros "KOMRAD" se forman utilizando el popular lenguaje de secuencias de comandos Lua (los especialistas en seguridad de la información ya lo conocen de Nmap y Suricata).
Para seleccionar eventos de firewall relacionados con el bloqueo de la conexión, crearemos el siguiente filtro:
-- filter
function filter(event)
-- , IP- ,
action = event:getString ('Action')
ip = event:getString ('IpSrc')
-- IP-,
if action == 'block' then
return {IP=ip}
end
end
El filtro para el evento Tomcat parece un poco más complicado, en el que verificamos si la cuenta recuperada del evento coincide con el valor "admin". En este caso, también devolvemos la dirección IP.
function filter(event)
journal = event:getString ('Journal')
login = event:getString ('Username')
ip = event:getString ('IpSrc')
if journal == 'tomcat-access' and login == 'admin' then
return {IP=ip}
end
end
Cuando se utiliza en un entorno de producción, para mejorar el rendimiento del sistema, es posible que deba comprobar un ID de recopilador específico al comienzo de cada filtro para limitar el alcance del filtro.
6. Creación de directivas de correlación
Creemos directivas de correlación para las situaciones consideradas con los siguientes niveles de gravedad:
- Bloqueo de conexión - "insignificante";
- Escaneo de puertos: bajo;
- El envío de solicitudes http mediante la cuenta de administrador es "alto".
Para crear una incidencia si se bloquea una conexión, basta con indicar en la directiva de correlación el único filtro aplicado:
filter 5
La segunda directiva, que debería crear un incidente en caso de que se bloquee tres veces una conexión iniciada por el mismo host, se verá así:
/* ip, , .*/
var ip
filter 5 export ip = ep.IP
/* IP.
notforking, .*/
filter 5 +1m where ep.IP==ip notforking
// .
filter 5 +1m where ep.IP==ip notforking
En la tercera directiva, agregamos otra línea, en la que usamos el filtro con ID 6, creado para seleccionar solicitudes al servidor web con la cuenta de administrador.
var ip
filter 5 export ip = ep.IP
filter 5 +1m where ep.IP==ip notforking
filter 5 +1m where ep.IP==ip notforking
filter 6 +1m where ep.IP==ip notforking
En el ejemplo del tutorial, la ventana de tiempo se dejó igual a 1 minuto; en la vida real, tiene sentido aumentarla a varios minutos.
Solución: realizar un ataque e identificarlo
Después de configurar las fuentes de eventos y el sistema SIEM, es hora de realizar un ataque simulado. Primero, escaneemos los puertos:
Luego vamos al puerto 8080 y revisamos la autorización con la cuenta admin: admin:
Estas acciones son registradas por el sistema SIEM "KOMRAD": se activan las tres directivas de correlación:
Conclusión
Así, en este trabajo de laboratorio, vimos la secuencia de acciones para la recolección y análisis de eventos de seguridad de la información en caso de obtener acceso administrativo al servidor web. En el próximo laboratorio, el atacante desarrollará el ataque y utilizará el acceso administrativo obtenido para recopilar información sobre la infraestructura de destino.
Cómo obtener una versión de demostración del sistema SIEM "KOMRAD"
Actualmente estamos en una prueba beta de nuestro producto, en la que cualquiera puede participar. Para ello, proporcionamos la versión actual del sistema SIEM en forma de contenedor Docker. Solo hay dos limitaciones en la versión de demostración: la tasa de procesamiento de eventos se reduce a 1000 EPS y no hay un sistema de autorización y control de acceso.
Para recibir un archivo con una versión de demostración, escríbanos a la dirección de correo electrónico getkomrad@npo-echelon.ru del buzón de su organización (estamos interesados en quién participará). También lo invitamos a nuestro grupo de Telegram, donde puede obtener ayuda en caso de cualquier dificultad: https://t.me/komrad4
Enlaces
- Máquinas virtuales para organizar la infraestructura de formación en VirtualBox: https://yadi.sk/d/GQ4BFn_soDJj0A
- , : https://yadi.sk/i/tD8nxckjYwr_6Q
- №1: https://yadi.sk/i/ffztj2XQMPD-xw