Archivo de la categoría: Definiciones

Diferentes definiciones relativas a los sistemas de ciberseguridad

Podcast – 39 – Deep Packet Inspection

El capítulo de hoy ha surgido tras atender una charla comercial vía videoconferencia donde el presentador repetía una y otra vez la gran capacidad de Deep Packet Inspection de su solución. Pero, ¿seguro qué sabía lo que es, en realidad, Deep Packet Inspection?

Fuente imagen: AltenCalSoftLabs

Técnicamente hablando la denominación Deep Packet Inspection, que ha ganado bastante fuerza en el mundillo comercial y del marketing, debe utilizarse para una familia de técnicas de análisis de tráfico en el que lo que se examina no es la cabecera sino la información enviada en el paquete de datos.

Un firewall tradicional, de lo que sólo miran la tupla clásica (es decir, IP origen/destino, los puertos origen y destino; y el protocolo utilizado) tiene suficiente con mirar las cabeceras para tener toda la información necesaria para realizar su trabajo, así que estos equipos no revisan el campo de datos de los paquetes IP que gestionan. En cambio, los actuales firewalls con capacidad de seguimiento de protocolos, o lo que comercialmente se llama Next Generation Firewall, al analizar el comportamiento del protocolo necesitan analizar el campo de datos de los paquetes para tener la información necesaria. Por ejemplo, un Next Generation Firewall al gestionar el protocolo FTP permite la primera conexión al puerto 21 y luego analizará esa conexión para saber qué puerto aleatorio se ha elegido para empezar la transmisión. Así el firewall permitirá una conexión en un puerto aleatorio que, en situación normal no hubiera permitido.

Otros ejemplos clásicos son los sistemas de seguridad WAF o IDS/IPS, ya que su función es precisamente analizar las peticiones que llegan a los sistemas y revisa si las solicitudes son correctas o malintencionadas. Así que estos sistemas deben revisar el campo de datos de los paquetes y datagramas que circulan por la red.

Los proxies de navegación pueden parecer un ejemplo claro de inspección de profunda de paquetes, ya que su función es revisar las direcciones web consultadas para poder aplicar las políticas definidas por los administradores (control de acceso, categorización, etc.), su inclusión o no dentro de esta categoría en función de la arquitectura de uso. Es decir, si en nuestra empresa tenemos un proxy de navegación conocido por todos y nuestros sistemas operativos están configurados para utilizarlo, no podemos considerar que ese proxy entre dentro de la categoría ya que no se está analizando el tráfico de la red, sino que se lo enviamos conscientemente. Aquí tenemos una comunicación cliente-servidor tradicional. Si configuramos un proxy de navegación transparente que capture el tráfico sin que el cliente lo sepa, sí que entraríamos en nuestra categoría: tenemos un equipo no detectado por cliente o servidor que analiza los campos de datos y no sólo la cabecera.

Obviamente las capacidades de obtención de información de análisis los sistemas de Análisis Profundo de Paquetes son muy útiles en funciones de seguridad y, por ello, se utilizan mucho, pero la próxima vez que un comercial os cante las bondades de la Deep Packet Inspection.. preguntadle qué hace exactamente su sistema y porqué es novedoso… porque muchas veces las técnicas de recolección de datos son las mismas y lo que cambia de una solución a otra es cómo trata la información y qué hace con ella.

Descarga directa.

Podcast – 34 – Port Knocking

Hoy hablaremos sobre una técnica de ‘seguridad por oscuridad’: el Port Knocking. Podéis encontrar una entrada en la Wikipedia española con el nombre de “Golpeo de puertos”. Ciertamente es una traducción literal de la expresión inglesa y es el único sitio donde la he visto, por lo que si me lo permitís me quedaré con Port Knocking.

Micro con feed

Fuente imagen:PerfectYourPodcast

Según algunas fuentes esta técnica apareció por primera vez en 2003 en un artículo de la revista “SysAdmin Magazine” como un mecanismo de autenticación ante un cortafuegos. La idea es permitir el acceso a un servicio a través de un firewall que tiene los puertos cerrados por defecto.

Recordemos que los firewall tradicionales permiten o deniegan el tráfico en función de las direcciones IP origen/destino y de los puertos usados.

La idea básica del Port Knocking es simple: el cliente realiza una serie de intentos de conexión a una secuencia de puertos concreta. Si esta secuencia es correcta, el firewall habilitará el acceso al puerto para acceder al servicio protegido. Así pues, la “contraseña de acceso” al servicio sería la secuencia de puertos que debe ejecutarse antes de conectar con el servicio protegido.

Port Knoking

Ejemplo de Port Knocking. Fuente imagen: CyberVault

Veamos el ejemplo más sencillo de esta técnica: Supongamos que tenemos una página web oculta mediante esta técnica. Para acceder a esa página primero hay que ‘tocar’ los puertos 55, 34034 y 24124.

  1. Cuando cualquier usuario quiera conectar al servidor web protegido el firewall denegará la conexión como si no existiera ningún servicio web operativo. Así se consigue ocultar el servicio de miradas ajenas.
  2. Cuando queremos acceder a nuestra web oculta lanzamos tres peticiones de conexión TCP en el orden correcto: a cada petición recibiremos respuesta de que el puerto está cerrado (igual que recibiría cualquier intento de acceso a un puerto cerrado). Es decir, el Port Knocking no daría pistas de su existencia.
  3. Una vez realizada la secuencia en el orden correcto, en nuestra cuarta conexión accederíamos a nuestra página web y el firewall nos permitiría el paso. A partir de ese momento podemos trabajar con neustra web oculta sin problemas.

Así pues, la clave para acceder al servicio oculto es la secuencia exacta de peticiones que debemos realizar antes de acceder a la web.

Obviamente una vez abierto el acceso, el propio servicio puede (y debe) tener sus propias medidas de seguridad. El Port Knocking dificulta el descubrimiento del servicio, pero en su versión más sencilla (que es la que hemos explicado) no protege al propio servicio. En nuestro ejemplo una vez revelado un servicio web, la propia aplicación web debería tener un control de acceso, por ejemplo, con usuario/contraseña.

Esta técnica puede ser útil para proteger un servicio de miradas indiscretas, pero dónde no podemos saber con antelación desde dónde se conectarán nuestros clientes (servicios en itinerancia, redes móviles, direccionamiento IP dinámico etc.). Si nuestros clientes siempre tienen la misma IP es más sencillo configurar el firewall para que habilite el acceso normal únicamente a una serie de direcciones específicas y bloquee el del resto del mundo.

El principal problema de este modelo más sencillo de Port Knocking es que es débil frente ataques de repetición: si un atacante consigue capturar el tráfico de red (o los logs del propio firewall) podrá darse cuenta de esta secuencia repetida aparentemente sin sentido y averiguar la existencia del servicio secreto simplemente enviando la misma secuencia de peticiones. Una manera de dificultar esta detección sería el uso de puertos comúnmente comprobados por escaneadores de vulnerabilidades, aunque, obviamente, en una secuencia distinta a la habitual: a nadie extraña ver intentos de peticiones a puertos comunes (SMTP, FTP, telnet, ssh, etc.) por lo que se dificultaría que, entre todas las peticiones que hay en cualquier firewall, se detectase el patrón de acceso.

Otras técnicas para evitar los ataques de repetición implican el conocimiento de una clave previa:

  1. Codificaremos la información de nuestra dirección IP origen y el puerto destino al que queremos acceder (donde está el servicio oculto). Por ejemplo: IPPUERTO = 6 bytes.
  2. Ciframos esta cadena de caracteres con la clave adecuada
  3. Cogemos el valor del cifrado y lo separamos en bytes. Cada byte puede tener un valor entre 0 y 255. Así obtenemos una secuencia de valores del 0 al 255
  4. Sumamos a estos valores obtenidos un valor base (por ejemplo 23000). Y enviamos una conexión nueva al puerto resultante de esta operación.
  5. El firewall que recibe las peticiones puede restar el valor base (conocido de antemano) y obtener así los valores de bytes resultantes del cifrado
  6. Como el firewall conoce la clave de cifrado puede obtener el mensaje inicial y así puede abrir el acceso desde la IP origen al puerto solicitado.

Este sistema tiene la ventaja que ante un ataque de repetición (donde se enviasen los mismos paquetes) simplemente se abriría el firewall para la IP origen cifrada en el paquete y no para la IP del atacante. La elección de un valor base al que sumar a los puertos puede ser fija o realizarse de forma dinámica (en función de la hora, día del mes, etc.) permitiendo así dificultar los ataques de repetición y generar una alerta en el sistema en caso de detectar intentos de conexiones en puertos no adecuados a la franja temporal).

Una funcionalidad de este sistema es que permite abrir accesos a diferentes servicios sin cambiar el esquema, o bien incluso enviar los mensajes de Port Knocking desde direcciones IP diferentes a las que se usarán después para conectar al servicio protegido.

Un caso de control de acceso, que de forma irónica se incluye en la categoría de Port Knocking, son los sistemas Single Packet Authorization: es decir autenticación en un único paquete. A modo resumen se enviaría en un único paquete toda la información de IP origen y servicio al que se quiere acceder de forma cifrada en un único paquete. El firewall lo interpretaría y actuaría en consecuencia. Con este esquema se dificulta en gran medida la detección del sistema de ocultación, si bien al enviar un único paquete no parece que caiga en la categoría de Port Knocking 😉

Este método de protección, aunque parece sacado de una película de espías, podría ser una capa de seguridad adicional útil en algunas ocasiones. No es una configuración habitual en empresas (al menos no en las no tecnológicas), pero puede ser interesante que busquéis este tipo de patrones en los logs de firewall con las herramientas SIEM… quizás os llevéis alguna sorpresa.

Descarga directa.

Podcast – 30 – Firewall

En el trigésimo capítulo de un podcast de seguridad informática aún no he dedicado un capítulo específico a unos de los sistemas de seguridad más clásicos y aún más usados: el firewall.

Micro con feed

Fuente imagen:PerfectYourPodcast

En general, ya digo que hay otras posibilidades de comunicación, una conexión por Internet tiene esta tupla de valores: dirección IP y puerto de origen; dirección IP y puerto de destino; y el identificador del protocolo usado.

Los firewalls tradicionales utilizan estos 5 valores para determinar si una conexión es legítima o no y actuar en consecuencia. Cuando llegue un nuevo paquete a nuestro cortafuegos comprobará si se cumplen las 5 características y en tal caso, y sólo en tal caso, permitirá que el tráfico siga su camino hasta el servidor. Si alguna de los cinco valores no se cumple simplemente se eliminaría ese paquete.

Las reglas de funcionamiento del firewall tradicional deben usar cualquier combinación de estos 5 parámetros: pueden fijarse los 5, o sólo 3 dejando los otros 2 abiertos a cualquier opción, etc.

Así pues, habiendo explicado, grosso modo, el funcionamiento de un cortafuegos de red tradicional veamos cómo ha evolucionado y se ha perfeccionado el concepto:

Tras el primer sistema de filtrado de paquetes, el siguiente paso en los firewall fue el conocido como “cortafuegos de estado”. En este punto el sistema ha evolucionado para, además de ver si el tráfico cumple con las cinco condiciones, además tiene sentido. Cuando se realiza una conexión TCP se establece una negociación de parámetros previa. Así un firewall de estado puede revisar si el tráfico recibido, que sí cumple las cinco condiciones de acceso, además tiene sentido en el flujo de tráfico: si se trata de un paquete de tráfico, pero no se ha negociado antes la conexión entonces lo descarta. Este sistema de control de estado permitiría una primera protección frente a ataques de denegación de servicio.

El siguiente paso en la evolución de los sistemas cortafuegos analizaría no solo el estado de la conexión sino el funcionamiento de la aplicación. Aquí el sistema analiza el tráfico y comprueba que siga las reglas del protocolo de aplicación. Así pues, si para enviar un correo electrónico existe un orden específico en las instrucciones a ejecutar para que el envío funcione: es de suponer que el tráfico legítimo seguirá las reglas marcadas por el propio protocolo por lo que cualquier tráfico que no las siga puede ser descartado. Hay que aclarar que no se trata de un IPS: Aquí el firewall analiza el correcto seguimiento del protocolo de comunicaciones pero no analiza las peticiones específicas en busca de patrones, como sí haría un IPS, como explicamos en el capítulo 4.

Podcast – 30 – Firewall

Podcast – 27 – Pentesting

El pentesting es un tipo de ataques a un sistema en búsqueda de localizar, y explotar, vulnerabilidades de un sistema informático. Así pues los pentester buscan debilidades para ‘penetrar en el sistema’ (de ahí el nombre).

pentesting

PENTESTING. Fuente imagen:Cuculmeca

Lo primero indicar que en España realizar este tipo de ataques es ilegal salvo que lo hayas acordado con el propietario del sistema. Así que si cuidado con lo que hacemos… que puede tener consecuencias 😉
Cuando se contrata un pentesting tanto la empresa «víctima» como el analista acuerdan diferentes puntos (qué se puede atacar exactamente, qué técnicas, el horario de los ataques, si se permite tirar el servicio o no se puede provocar DoS), etc. Esto debe aclararse y firmarse por escrito antes de empezar este tipo de consultorías para evitar futuros problemas legales.
Los tipos de ataque de pentesting se categorizan por:

  • De «caja negra» donde el consultor externo no conoce nada del sistema a atacar (sólo la dirección web, ). Se utiliza este tipo de análisis para simular al máximo la situación real en la que un atacante externo quisiera entrar en nuestro sistema. Este tipo de ataque requiere de especialistas más formados y la validez de este resultado depende en gran medida de la capacidad del auditor.
  • De «caja blanca» donde el auditor externo tiene acceso a toda la información sobre la aplicación(arquitectura, servicios usados e incluso el código fuente). El análisis puede ser mucho más profundo y permite preparar y diseñar pruebas específicas de tal forma que se obtenga un resultado más fiable y auditable por un tercero externo.
  • Las de «caja gris» son un punto intermedio entre las dos anteriores donde el atacante recibe parte de la información pero no toda(p.e. tiene el diseño lógico de la aplicación pero desconoce el sistema operativo de los servidores).

Si bien se han desarrollado diferentes metodologías que han buscado unificar y procedimientar este tipo de ataque (sobretodo de cara a la aplicación de normativas y estándares) siendo los más famosos Kill-Chain (una metodología de origen militar), OSSTMM, ISSAF, la guía OWASP (únicamente de aplicaciones web) o la Penetration Testing Framework; la verdad es que el pentesting sigue siendo un proceso manual que depende en gran medida de la experiencia previa, capacidad y pericia del auditor.

Micro con feed

Fuente imagen:PerfectYourPodcast

Aunque todas las metodologías mencionadas antes tienen diferencias podemos decir que en todas tendrían, de una forma u otra, las siguientes fases:

  1. Preparación
    Esta sería una fase teórica de preparar los equipos, tanto hardware como software y equipos humano para realizar el ataque. También se puede incluir en esta fase la negociación del alcance y objetivo de la auditoria con el cliente.
  2. Recopilación de información
    En esta fase el atacante busca obtener la máxima cantidad de información posible del objetivo. Se pueden utilizar métodos pasivos o activos, búsqueda de información pública (dominios, URL, servicios publicados, direcciones físicas, noticias de empresa [si hay una noticia de que la empresa víctima usa Office365 y tenemos una pista para empezar], etc.). El atacante también obtendrá información con acciones activas como pueden ser un escaneo de puertos o consultas DNS.
    Esta fase es probablemente la menos técnica y divertida pero es la base imprescindible para las siguientes fases.
  3. Análisis de vulnerabilidades
    Una vez obtenida toda la información posible toca buscar las debilidades de los sistemas a analizar. Como se puede obtener las técnicas y estrategias usadas serán diferentes en función del objetivo a analizar: no tendrán las mismas vulnerabilidades una aplicación web que los servidores FTP o de correo corporativo. En función del alcance del ataque (que siempre hay que aclarar antes de empezar) los objetivos y estrategias variarán.
    Esta es la fase donde la calidad del auditor destaca especialmente.
  4. Explotación de vulnerabilidades
    En esta fase, una vez localizada la vulnerabilidad se procede a su aprovechamiento de tal forma que se demuestre la viabilidad del ataque y por ende la posibilidad de intrusión exterior. Esta es probablemente la fase más delicada ya que puede implicar la pérdida de servicio por parte del cliente o la extracción de información confidencial (para demostrar que se ha podido acceder). Nuevamente recordar que antes de lanzar un pentest hay que negociar con el cliente qué se puede/debe hacer y cuáles serán las pruebas que demuestren que el atacante ha podido entrar.
  5. Documentación
    El último, e imprescindible paso, es documentar de forma clara y con las pruebas obtenidas en la explotación de las vulnerabilidades de tal forma que se demuestren los problemas y se pueda informar al cliente de cuáles son y qué debe hacer para remediarlos.

Descarga directa.