9.3 IDS IPS v2.1.pdf

Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...

Full Transcript

9.3 Detección y Prevención (IDS/IPS) Índice de Contenidos 1. Introducción y Conceptos 2. Prácticas Snort como IDS 3. Snort como IPS Detección y Prevención – Introducción y Conceptos • IDS – Intrusion Detection System. Sistema de Detección de Intrusiones. Este sistema permite analizar y superv...

9.3 Detección y Prevención (IDS/IPS) Índice de Contenidos 1. Introducción y Conceptos 2. Prácticas Snort como IDS 3. Snort como IPS Detección y Prevención – Introducción y Conceptos • IDS – Intrusion Detection System. Sistema de Detección de Intrusiones. Este sistema permite analizar y supervisar el tráfico de una red, en busca de señales que indiquen que los atacantes están utilizando una amenaza conocida para infiltrarse o robar datos de su red. Por lo general, además de instalar un IDS las empresas suelen instalar y mantener una base de datos de amenazas conocidas y comparar la actividad actual de la red con dichas amenazas para detectar diferentes tipos de comportamientos, tales como violaciones de políticas de seguridad, malware y escaneo de puertos. • IPS – Intrusion Prevention System. Sistema de Prevención de Intrusiones. La ubicación habitual de este sistema es la misma área de red en la que está situado el cortafuegos, esto es, entre la red externa y la red interna. A diferencia del IDS, que sólo es un monitor, el IPS bloquea proactivamente el tráfico en función de las reglas establecidas en el perfil de seguridad, siempre y cuando el paquete en cuestión pueda suponer una amenaza conocida para la seguridad del entorno. 3 Detección y Prevención – Snort - IDS & IPS de Código Abierto • Snort es el sistema de Detección y Prevención de intrusiones de código abierto más utilizado, tanto en el ámbito privado como en el empresarial. • Contiene un motor de reglas que permite definir las actividades a detectar, sean maliciosas o no, para después identificar posibles paquetes que cualifiquen con dichas reglas, generando a continuación alertas para los usuarios de la red. • Snort tiene pues tres funciones principales: • Rastreo de paquetes • Registro de paquetes para notificación online y análisis offline • Prevención de intrusiones en la red con base en las amenazas conocidas 4 Escenario de la Práctica Snort - IDS Máquina Atacante Se generan diccionarios con base en la información obtenida con Ingeniería Social Para efectuar la práctica IDS se dispondrá de dos máquinas: • La máquina atacante, que será un Kali Linux en el que se utilizarán Ping e Hydra. Snort detecta y registra el ataque Máquina IDS • La máquina objetivo, que será un Raspbian en el que configuraremos Snort para detectar y registrar los ataques. Se lanza una batería de ataques con diferentes herramientas y con todos los diccionarios HYDRA 5 Preparación de la Máquina Atacante Máquina Atacante • Para la máquina atacante se preparará un escenario sencillo basado en Kali Linux. • Pistas de ingeniería social. Se sabe que el usuario está compuesto por dos letras minúsculas, y su clave por una letra minúscula y un número. • Con base en las pistas de ingeniería social, se generarán dos diccionarios de usuarios y claves necesarios para el ataque. En caso de no aportar diccionarios, el ataque se efectuaría por Fuerza Bruta y se podría eternizar. • Se conoce la dirección de la máquina a atacar, por lo que primero se comprobará con ping (ICMP) si la máquina está operativa. • Hecho esto, se atacará mediante Hydra y con protocolo ssh. 6 HYDRA Generación de Diccionario de Usuarios • Hydra necesita un diccionario de usuarios y otro de claves. Si se invoca con estos dos diccionarios por separado, efectuará el ataque combinando cada uno de los usuarios del primer fichero con todas las claves del segundo fichero, por lo que el número de ataques se multiplicará considerablemente. • Tomando como base la primera pista de ingeniería social, generaremos con crunch un diccionario que contendrá todas las combinaciones posibles de dos letras minúsculas (676). 7 Generación de Diccionario de Claves • A continuación, tomando la segunda pista de ingeniería social, generaremos con crunch un diccionario que contendrá todas las combinaciones posibles de una letra minúscula y un número (260). • En caso de no querer utilizar diccionarios de usuarios y claves por separado, también se puede utilizar un diccionario combinado con el formato usuario:clave, no obstante, esto reduce muchísimo el número de combinaciones y sólo se debe utilizar cuando se tenga mucha precisión en las pistas de ingeniería social. 8 Comprobación Objetivo Up & Running • Comprobamos si la máquina objetivo está operativa mediante un ping. • Acto seguido, vemos qué puertos tiene activos mediante nmap, y en qué puerto está a la escucha el protocolo ssh, que será el que utilizaremos para atacar con hydra (normalmente será el puerto 22, pero puede haberse modificado). 9 Ejecución del Ataque con Hydra • Lanzamos el ataque con hydra, que tendrá las siguientes características: • 676 usuarios • 260 claves • 175.760 combinaciones • 4 tareas en paralelo, con 43.940 intentos por tarea • Para efectuar esta prueba hemos dado de alta un usuario y una clave muy cortos que además están casi al principio de ambos diccionarios, por lo que la práctica finalizará en un tiempo razonable. Si el usuario y la clave estuvieran en la parte final de ambos diccionarios, el tiempo de la prueba superaría las 100 horas. • La longitud de las claves y la complejidad de las mismas (números, símbolos, mayúsculas) multiplicará enormemente el número de combinaciones a probar y complicará muchísimo el proceso, de ahí que resulte crucial usar claves fuertes en el día a día para nuestras aplicaciones importantes. 10 11 Ejecución del Ataque con Hydra • Al haber finalizado pronto el ataque, hemos cortado el proceso con CTRL-C, no obstante, si hubiera que reanudarlo en un momento dado, bastaría con volver a lanzar el comando de hydra en el mismo directorio, pues el proceso abortado ha dejado un fichero que indica hasta dónde ha avanzado la tarea, para continuarla en caso de necesidad. • Los resultados de la tarea se van almacenando en el fichero resultados.txt. 12 Preparación de la Máquina Objetivo • Una vez preparadas las herramientas de ataque y comprobada su efectividad y funcionalidad, pasamos a configurar el IDS del entorno objetivo. Máquina IDS • En primer lugar, instalamos Snort sobre Raspbian ejecutando la secuencia clásica de comandos: sudo apt-get update sudo apt-get upgrade sudo apt install snort 13 Configuración de Inicio, Arranque y Parada de Snort Al finalizar el proceso anterior, Snort quedará instalado como un servicio del sistema, por lo que se podrá controlar su funcionamiento con el comando systemctl con las opciones siguientes: • enable. Habilita el arranque de Snort en el inicio de la máquina. • disable. Inhabilita el arranque de Snort en el inicio de la máquina. • start. Arranca Snort en cualquier momento. • stop. Detiene Snort en cualquier momento. • status. Muestra el estado de ejecución de Snort. sudo systemctl [opción] snort 14 Configuración de Inicio, Arranque y Parada de Snort • En la captura adjunta se puede observar que Snort estaba parado. • Procedemos a arrancarlo con start. • Chequeamos su estado con status y vemos que ya está arrancando. • En caso de que hubiera problemas de arranque desde el comando de servicio, también se puede arrancar Snort con el comando siguiente: sudo snort -i eth0 -c /etc/snort/snort.conf & 15 Configuración de Snort para Detección de Tráfico ICMP (Ping) • Desde el momento en el que arranca, Snort empieza a grabar alertas en su fichero de log /var/log/snort_alerts.log puesto que, aunque hayamos programado una regla local para nuestra práctica, el programa arrancará además con todas las reglas recomendadas por la Comunidad Snort, para detectar todos los ataques conocidos hasta el momento. Es conveniente borrar o salvaguardar este fichero antes de rearrancar la aplicación. • Los ficheros que contienen dichas reglas adicionales se encuentran en el mismo directorio que nuestro fichero, como se puede ver en la captura adjunta. 16 Torre de Protocolos ISO-OSI Se trata de un modelo que define una torre o pila de protocolos (Protocol Stack) multicapa, que se estructura en siete niveles: • Capa Física. Define el HW de conexión física. • Capa de Enlace de Datos. Controla la transferencia de datos en la red, mediante protocolos de bajo nivel. • Capa de Red. Introduce el direccionamiento y la comunicación entre diferentes redes. • Capa de Transporte. Introduce el concepto de Integridad, asegurando que los datos no se deterioran durante la transferencia. • Capa de Sesión. Incorpora el concepto de sesión, esto es inicio, desarrollo y fin de la transmisión. • Capa de Presentación. En esta capa se asegura que la información se transfiera de forma comprensible para el sistema. • Capa de Aplicación. Se compone de los servicios y aplicaciones de comunicación estándar a disposición de cualquier usuario. 17 Configuración de Snort para Detección de Tráfico ICMP (Ping) SSH: Protocolo Cifrado de Aplicación, Presentación y Sesión TCP: Transport Control Protocol, CONS (orientado a conexión) IP: Internet Protocol. Protocolo de Red. Dirección IP. 192.168.1.30 Medios Físicos y protocolos de enlace de datos (ethernet, WLAN, etc.). MAC Address. 00:1B:44:11:3A:B7 • Posición del Protocolo ICMP en la Torre de Protocolos Fuente: pinterest.com.mx 18 Construcción de Reglas para Snort Una regla Snort se compone de la forma siguiente: • Header • • • • • • • Acción de la regla Protocolo Direccion IP origen Puerto IP origen Dirección de la operación Direccion IP destino Puerto IP destino • Trailer • Mensaje • Opciones www.snort.org Manual de Usuario de Snort 19 Ejemplo de Regla Snort para Protocolo TCP Regla: alert tcp 192.168.1.200 any -> $HOME_NET any (msg:"Trafico TCP desde Claudia"; sid:666003;) • Header • • • • • • • Acción de la regla Protocolo Direccion IP origen Puerto IP origen Dirección de la operación Direccion IP destino Puerto IP destino Alerta TCP 192.168.1.200 Cualquiera De 200 a nuestra red local (cualquier dirección de esta red) 192.168.1.0 Cualquiera • Trailer • Mensaje • Opciones Tráfico TCP desde Claudia Identificador de la regla (666003) 20 Configuración de Snort para Detección de Tráfico ICMP (Ping) • Grabaremos una regla para detectar tráfico ICMP (ping) en el fichero de configuración de Snort: /etc/snort/rules/local.rules • Tras rearrancar la aplicación, podremos comprobar la grabación de reglas en tiempo real mediante el comando “tail –f” sobre el fichero /var/log/snort_alerts.log # Regla para detectar un ping (ICMP) alert icmp any any -> $HOME_NET any (msg:"¡Trafico ICMP!"; sid:3000001;) 21 Detección de Tráfico ICMP (Ping) • Si visualizamos en vivo con tail –f el fichero de log y hacemos ping desde otra máquina, veremos que se detecta perfectamente el ping, indicando además desde qué dirección se está haciendo (se verán los pings de todas las máquinas a este host, incluido el router). 22 Configuración de Snort para Detección de Tráfico SSH • SSH significa “Secure Shell”, esto es, sesión segura. Es el protocolo que se usa en la actualidad en lugar del protocolo telnet, que es obsoleto e inseguro. Ocurre lo mismo con SFTP (Secure File Transfer Protocol), que es el sustituto del antiguo protocolo ftp. • Este es el protocolo que se utiliza para abrir sesiones en máquinas remotas, por lo que normalmente también es el empleado para los Ataques con Fuerza Bruta o con Diccionario, como es el caso del ataque que hemos preparado previamente con Hydra. • A continuación pararemos Snort, modificaremos su fichero de configuración, dejando como comentario la regla detectora de ICMP del ejemplo anterior para no abarrotarlo de información, y activaremos una regla detectora de SSH. • Tras grabar la regla, limpiaremos el fichero de log, rearrancaremos Snort, abriremos dos terminales y lanzaremos el ataque con Hydra. 23 Configuración de Snort para Detección de Tráfico TCP (SSH) • Posición del Protocolo SSH en la Torre de Protocolos SSH: Protocolo Cifrado de Aplicación, Presentación y Sesión TCP: Transport Control Protocol, CONS (orientado a conexión) IP: Internet Protocol. Protocolo de Red. Dirección IP. 192.168.1.30 Medios Físicos y protocolos de enlace de datos (ethernet, WLAN, etc.). MAC Address. 00:1B:44:11:3A:B7 • Posición del Protocolo TCP en la Torre de Protocolos Fuente: pinterest.com.mx 24 Configuración de Snort para Detección de Tráfico SSH • Exterminio de los procesos de Snort y vaciado del log antes del rearranque 25 Configuración de Snort para Detección de Tráfico SSH • Adición de la regla de detección de tráfico TCP para apertura de sesiones por SSH. 26 Configuración de Snort para Detección de Tráfico SSH • Rearranque de Snort. 27 Configuración de Snort para Detección de Tráfico SSH • Lanzamiento del ataque de Hydra desde la máquina Kali. 28 Configuración de Snort para Detección de Tráfico SSH • En el fichero de log de Snort se puede ver que se registran los miles de ataques de Hydra, desde diferentes puertos de la máquina Kali, pues hemos arrancado varios procesos de ataque. 29 Snort como un IPS • Para activar Snort como un IPS, se deberá disponer de una máquina con dos interfaces de red (eth0 y eth1). • Normalmente, en una máquina de este tipo, se encontrará configurado un bridge entre las dos interfaces para transferir paquetes entre las dos redes unidas por la máquina, que habrá que desactivar antes de arrancar Snort en modo inline. • Una vez configuradas las opciones necesarias para arrancar Snort en modo IPS, las reglas de rechazo de tráfico serán de la siguiente forma: drop tcp 192.168.1.52 any -> $HOME_NET any (msg:"ATAQUE HYDRA";sid:3000003) • Con esta instrucción se descartarán los paquetes tcp procedentes de cualquier Puerto de la IP indicada que se dirijan a la red interna, registrando el evento en el log de alertas con el texto indicado. Existen diversas posibilidades de tratamiento, que se pueden estudiar en el manual de Snort. 30 Bibliografía • www.kali.org • www.github.com • www.snort.org • https://github.com/vanhauser-thc/thc-hydra • www.incibe.es 31

Use Quizgecko on...
Browser
Browser