Uso de SIEM para capacitar a piratas informáticos éticos: apertura del laboratorio práctico

¿Cómo formamos a los hackers éticos en nuestras universidades y centros de formación? Como regla, les proporcionamos Kali Linux o Scanner-VSque incluye un conjunto de herramientas de prueba de seguridad y una máquina con muchas vulnerabilidades. Como resultado, los oyentes pueden obtener una comprensión bastante superficial de cómo se realizan realmente las pruebas de penetración, ya que en proyectos reales, los pentesters se ocupan de infraestructuras que incluyen herramientas de seguridad de la información y sistemas de monitoreo de eventos de seguridad de la información (SIEM). Para remediar la situación y brindar a los especialistas novatos la oportunidad de estudiar métodos de prueba de seguridad y herramientas para monitorear eventos de seguridad de la información en un complejo, comenzamos con este artículo la publicación de trabajos prácticos de laboratorio.







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:







  1. Máquina del atacante (Kali Linux, IP: 8.8.8.10, 4GB RAM, kali: kali);
  2. 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);
  3. Servidor web (Ubuntu Server 18.04 con Tomcat, IP 192.168.2.15, 2GB RAM, usuario: usuario);
  4. 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:



  1. Bloqueo de conexión - "insignificante";
  2. Escaneo de puertos: bajo;
  3. 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



  1. Máquinas virtuales para organizar la infraestructura de formación en VirtualBox: https://yadi.sk/d/GQ4BFn_soDJj0A
  2. , : https://yadi.sk/i/tD8nxckjYwr_6Q
  3. №1: https://yadi.sk/i/ffztj2XQMPD-xw



All Articles