Archivo de la etiqueta: ataques

Modelo STRIDE

Categorización de ataques STRIDE

Modelo STRIDE

Modelo STRIDE. Fuente imagen: Infosec Institute

Se dice que para abordar un problema primero hay que saber definirlo. Así si podemos analizar el problema podremos idear soluciones adecuadas. Dentro de esta política de definir y categorizar las posibles amenazas aparece la categorización de ataques STRIDE que surge de las iniciales de los diferentes tipos de ataques. A partir de esta clasificación es posible estudiar con mayor profundidad la implementación de los distintos ataques y así evaluar las medidas de protección adecuadas si bien, por regla general, los ataques reales pueden aparecer en varias categorías de forma simultánea.

Spoofing

La categoría de suplantación (spoofing en inglés) hace referencia a cualquier técnica que permita al atacante tomar una identidad que no le corresponde. Probablemente los ataques tradicionales más conocidos sean IP spoofing, donde el atacante falsea su dirección IP, o MAC spoofing donde el atacante falsea su dirección MAC (muy utilizado en ataques a redes inalámbricas). Las técnicas de phising, donde la víctima es engañada al creer que está accediendo a un sistema confiable, también caben en esta categoría.

Tampering

Las técnicas de tampering buscan manipular la información que almacenan los sistemas, ya sea directamente o en mientras se envía por la red. Dentro de esta categoría entrarían aquellas técnicas que buscan ofuscar la presencia de un malware en un sistema falseando la información de logs de un sistemas de seguridad o bien modificar los registros para que la información que reciban los administradores sea indescifrable o engañosa.

Repudation

Asociación STRIDE-CIAAAA.

Asociación STRIDE-CIAAAA. Fuente imagen: gaurabb.com

La tercera categoría del modelo STRIDE , repudio, abarca aquellas técnicas que evitan la certificación o garantía de un hecho. Si un sistema no puede garantizar el no-repudio, es decir que el ejecutante no pueda negar su acción, entonces no se puede garantizar la veracidad de la información mostrada por el sistema. Este puede tener consecuencias legales y es importante en entornos de análisis forense.

Information Disclosure

La revelación de información implica que un usuario no permitido acceda a información o documentación sensible. Probablemente sea el tipo de ataque que más temen las empresas por sus consecuencias legales. Los estados europeos han desarrollado legislaciones especiales para asegurar la protección de los datos personales que pueden manejar las empresas. En España se regula por la Ley Orgánica de Protección de Datos (LOPD).

Denial of service

Los ataques de denegación de servicio probablemente sean los más reconocidos por el público general (lo cual incluye la mayoría de directivos de empresa). Estos tipos de ataque buscan bloquear el acceso a un servicio de tal manera que interrumpan la continuidad del negocio. Estos ataques pueden tener un fuerte impacto económico al que se añade un posible impacto en la reputación de la empresa.

Elevation of privilege

Los ataques ataques por elevación de privilegios ocurren cuando un usuario, debido a un fallo de seguridad, puede cambiar su nivel de privilegios dentro del sistema y acceder a información o servicios a los que, por su identidad, no debería tener acceso.

Keylogger

Un keylogger (término inglés creado a partir de las palabras key (tecla) y logger (registrador)) es un sistema que almacena las pulsaciones del teclado para su posterior tratamiento.

El registro de las teclas pulsadas puede realizarse tanto mediante un software específico como utilizando un equipo físico. La utilización de este sistema permite capturar cualquier información introducida desde un equipo antes de que se aplique ningún tipo de securización (sesiones SSL, cifrado IPsec, etc.) para su transmisión por lo que el atacante puede obtener cualquier tipo de información privada (contraseñas, claves de acceso a datos bancarios, etc.). Así la instalación de un sistema keylogger suele ser un paso previo a un ataque más rentable al conseguir información privilegiada a la que no se tenía acceso.

Tipos de keylogger

Veamos los diferentes tipos de keyloggers:

Keylogger hardware

Keylogger en conector PS2

Keylogger físico en conector PS2. Fuente imagen: Wikipedia

Se tratan de dispositivos físicos que capturan la información tecleada y la almacenan. Así pues se necesita acceso físico al equipo que se desea espiar. Aunque el funcionamiento básico sea el mismo (interceptar la información antes de que llegue al ordenador) podríamos encontrarnos tres tipos diferentes en función de su instalación:

  1. Adaptadores: se trata de pequeños sistemas que se conectan en el cable que une el teclado con el equipo. Se trata de la forma más sencilla y rápida de instalar un keylogger si bien una revisión física detectaría el equipo.
  2. Internos: son pequeños circuitos pensados para ser montados dentro del teclado. Requieren una mayor pericia y tiempo ya que implican desmontar el teclado, instalar el keylogger y volver a montar el teclado. Sólo pueden ser detectados si se detectan desperfectos o se abre el teclado.
  3. Teclado completo: el engaño consiste en sustituir el teclado del ordenador por uno previamente preparado. Esta acción implica una información previa sobre la marca y modelo del teclado (que podría conseguirse, por ejemplo, en una visita previa o mediante ingeniería social) si bien hace que el keylogger sea virtualmente ilocalizable.

Keylogger software

Ejemplo de captura de un keylogger

Ejemplo de registro de un keylogger. Fuente imagen: Wikimedia

Los keylogger por software son los más comunes y utilizados ya que no requieren la presencia física y pueden ser instalados y gestionados a distancia. En este caso el programa espera que la información de las pulsaciones sea recogida por el ordenador para almacenarla. En este caso podemos encontrar dos vías para obtener la información del teclado:

  1. Sustituir el driver: En este caso el programa sustituye el controlador del teclado que incluye el sistema operativo de tal forma que toda pulsación es gestionada por el keylogger para posteriormente entregarla a las aplicaciones legitimas pasando desapercibido.
  2. Utilizando opciones del sistema operativo: Estos programas, los más sencillos de escribir, utilizan las diferentes funciones del sistema operativo para activarse en el momento que se realiza cualquier pulsación y realizar una copia.

Protección frente a keyloggers

Los keylogger son, probablemente, una de las amenazas más difíciles de detectar y lidiar mientras que son de las más peligrosas por la información que pueden obtener y las implicaciones que pueden alcanzarse. Veamos pues algunas formas de detección y protecciones frente a la amenaza.

Seguridad física

Los keylogger físicos implican un acceso físico a los equipos a vigilar por lo que una política de seguridad física correcta evitaría su uso. El control de acceso es efectivo en este punto. La revisión periódica de los conectores permitiría detectar la mayoría de los keyloggers.

Sistemas antispyware

Los fabricantes de software antivirus y antimalware disponen de una serie de firmas de los keyloggers conocidos por lo que podrían detectar su aparición en los ordenadores. Este sistema sólo es útil si utilizan un programa conocido.

Teclados virtuales

Ejemplo de teclado virtual

Ejemplo de teclado virtual. Fuente imagen: Wikimedia

Una estrategia de la banca online para evitar que sus usuarios sean víctimas de fraude por tener un keylogger instalado en sus equipos ha consistido en la creación de teclados virtuales donde deben marcar sus claves con clicks de ratón. Así se evitan las pulsaciones del teclado y con ello dar información al keylogger. Algunos keylooger han evolucionado para realizar capturas de pantalla cuando detectan que se accede a algún servicio bancario para contrarrestar esta defensa si bien eso no siempre es efectivo (acceso a la web desde accesos directos, favoritos/marcadores, etc.).

Comportamiento lento

Si el keylogger es un programa mal hecho es posible detectar su existencia por un aumento en el tiempo de reacción al pulsar teclas. Aunque el keylogger está pensado para pasar desapercibido debe registrar cada pulsación por lo que la pulsación continua y repetida de múltiples tecla puede ocasionar su saturación y una mayor lentitud en la respuesta de un programa legítimo, lo cual puede llevar a pensar en la existencia de un keylogger. Se trata de una estrategia ya poco útil debido a la mejora de los programas y a la potencia de cálculo de los ordenadores.

Detección de tráfico saliente

La información almacenada por el keylogger debe ser revisada por lo que generalmente es enviada fuera de la red para que el atacante pueda analizarla. Una política restrictiva de acceso a servidores de correo o FTP externos puede evitar que la información salga al exterior. Si se dispone de un IDS o IPS es posible detectar conexiones extrañas hacia el exterior y actuar en consecuencia. El hecho de forzar a los usuarios a utilizar un proxy de navegación también dificultará el envío de la información almacenada.

La posibilidad de que haya un keylogger instalado es un ejemplo claro de porqué no hay que descuidar la seguridad desde el punto de vista de un atacante, intencionado o no, interno.

Control permisos instalación software

En un entorno empresarial no es habitual que los usuarios necesiten instalar aplicaciones nuevas por lo que una política de empresa que restrinja los permisos de usuario evitaría la instalación de la mayoría de keyloggers software. Si además se dispone de un repositorio de drivers interno es posible revisar que los ordenadores estén utilizando el driver de teclado correcto y certificado evitando así los drivers modificados de forma maliciosa.

Ataque de denegación de servicio II

En la primera parte de este artículo vimos el concepto genérico sobre cómo funcionan los ataques de denegación de servicio (DoS, DDoS…) y algunos ejemplos tradicionales de ataques utilizando vulnerabilidades de los protocolos base de la red de Internet. En este artículo veremos cómo se han utilizado este tipo de ataques aprovechando debilidades de otros protocolos de red.

Denegación por ataques teardrop

Los ataques teardrop (que podría traducirse como lagrimeo) consisten en el envío de paquetes IP malformados de tamaño excesivo y con una secuenciación superpuesta. De esta manera se fuerza al receptor a dedicar recursos para restructurar y reorganizar los paquetes de información recibida para poder entregar la información a las capas superiores del nivel IP. Se trata de una técnica clásica que era efectiva en sistemas operativos de Microsoft previos a Windows XP y a los entronos Linux que utilizasen una versión anterior a la 2.1.63.

Lectura o escritura lenta

El protocolo TCP incluye una característica (denominada ventana TCP) que permite que tanto cliente como servidor negocien el ritmo de envío de información. Esta funcionalidad es muy útil cuando un cliente dispone de una línea de baja velocidad y desea recibir información de un servidor con mayor capacidad: el cliente indica al servidor el ritmo de paquetes a los que puede gestionar la información y así el servidor no satura al cliente. Este mecanismo puede ser utilizado de forma malintencionada cuando se fuerza al servidor a transmitir demasiado lento obligando a mantener recursos de memoria para gestionar este tráfico lo que si se combina con muchas peticiones puede causar que el servidor se quede sin recursos y generar una denegación de servicio.

HTTP POST

La opción POST dentro del protocolo HTTP permite que el cliente envíe información al servidor. Aunque inicialmente se pensó para enviar información de formularios actualmente se puede enviar casi cualquier archivo por este sistema (adjunto documentos a un webcorreo, subir imágenes a una red social, etc.). El ataque consiste en indicarle al servidor, dentro de una sesión válida, que queremos enviar un fichero de gran tamaño (p.e. 2GB) y hacerlo a una velocidad muy baja. El servidor deberá reservar memoria para almacenar ese fichero y dedicar recursos tanto de red como de procesamiento para gestionar esta petición. Si el envío de información se hace de forma lenta pero lo suficientemente rápido para que no se de la sesión por rota se consigue que el servidor bloquee recursos durante un tiempo excesivo. Si se pueden lanzar diversas sesiones con el mismo sistema podemos llegar a generar una denegación de servicio.

R-U-Dead-Yet? (RUDY)

Se trata de un ataque a aplicaciones web muy similar al HTTP POST. La idea es conseguir que el servicio web no pueda gestionar más sesiones y que mantendría multitud de sesiones semiactivas con el envío de información POST que nunca acabaría.

Redes P2P

En los primeros protocolos de las redes peer-to-peer no se había tenido en cuenta la securización de las conexiones por lo que rápidamente aparecieron algunos ataques que utilizaban vulnerabilidades y defectos de diseño de los mismos. En lo referente a los ataques de DDoS se aprovecharon de una debilidad del protocolo Direct Connect. El protocolo permitía la redirección de las conexiones a otros clientes P2P por lo que se podía forzar a todos los clientes que se conectasen a un servidor comprometido para que se conectase contra una víctima elegida. El resultado era que la víctima recibía tal cantidad de peticiones de conexión que directamente era incapaz de gestionarlas y se producía una denegación de servicio.

Ataques espejo

Diagrama de un ataque de espejo

Diagrama de un ataque de espejo Fuente imagen:Wikimedia

En inglés suelen denominarse como reflected attacks o spoofed attacks. En las comunicaciones IP legítimas la información es solicitada por un equipo (con una dirección IP concreta) y el servidor responde a esa dirección IP. Como ya vimos si utilizamos el protocolo TCP hay que realizar una fase previa de establecimiento de conexión pero no así si utilizamos el protocolo UDP. ¿Qué pasaría si el atacante falsease la dirección IP origen de un paquete UDP? Simplemente que se servidor enviaría la información solicitada a la dirección IP indicada en el paquete. Un usuario malintencionado podría solicitar una gran volumen de información falseando (en inglés: spoofing) la dirección IP  de tal forma que los servidores enviasen la información a la víctima deseada. Así la víctima recibirá una gran cantidad de información no deseada desde servidores que creen estar respondiendo a sus peticiones. Con esta estrategia el verdadero atacante queda oculto tras estos servidores que actúan como DDoS sin tener constancia de ello. Este tipo de ataques utilizan protocolos de uso común en Internet que al utilizar UDP, que no mantiene sesiones ni conexiones, dificultan su protección. Los más típiscos sería NTP, DNS, QOTDo SNMPv2.

Por ejemplo en el protocolo de DNS un usuario puede solicitar toda la información sobre un dominio de tal forma que ante una petición pequeña (que es lo que genera el atacante) se genera una respuesta de un tamaño considerable que la víctima recibirá y deberá gestionar. Así un atacante pueden lanzar múltiples peticiones pequeñas a servidores diferentes y que sean éstos quienes saturen las capacidades de la víctima.

Denegación de servicio telefónico

La irrupción de la Voz sobre IP (VoIP) ha permitido la aparición de servicios de telefonía con llamadas gratuitas y automatizables. La posibilidad de modificar la identificación de llamada (caller ID Spoofing) ha abierto nuevas posibilidades a los atacantes maliciosos.  La denegación del servicio telefónico (Telephony dinial-of-service – TDoS) consiste en realizar tal cantidad de llamadas a un objetivo que sature su capacidad de gestión dejando así el servicio de recepción y envío de llamadas. Al poder falsear la identificación de llamada es posible dirigir las actuaciones policiales posteriores a un ataque TDoS a nuestra verdadera víctima generando así un problemas y complicaciones reales a una persona o empresa.

Ataque de denegación de servicio I

Diagrama DDoS

Esquema ataque DDoS – Fuente imagen: Wikimedia

Se denomina como ataque de denegación de servicio aquel ataque que busca que un servicio o sistema sea inaccesible para los usuarios legítimos. Generalmente se suelen denominar como DoS (Denial od Service) o DDoS (Distributed Denial of Service) en caso de ser un ataque coordinado desde diferentes orígenes.

Los ataques de denegación de servicio buscan saturar las capacidades del sistema atacado ya sea enviando una gran cantidad de tráfico para ser gestionado o bien lanzando múltiples conexiones hasta que llega un punto que el servicio atacado ya no es capaz de responder. Se consigue así que los legítimos usuarios no puedan acceder al servicio generando pérdidas, ya sean económicas o de reputación a las víctimas.

Un ataque de estas características no busca pasar desapercibido sino más bien al contrario. Se tratan de ataques muy visibles, tanto para los administradores de los sistemas atacados como para sus clientes. Debido a la mejora en las líneas de comunicaciones de los usuarios y empresas, tanto en capacidad de transferencia bruta como en la posibilidad de ampliar esta capacidad según las necesidades, cada vez es más complicado realizar un ataque de saturación efectivo simplemente enviando tal cantidad de tráfico que las líneas queden saturadas e inoperativas por lo que es común lanzar el ataque de forma coordinada desde diferentes equipos de tal manera que actualmente los ataques DDoS son más comunes que los DoS.

En este artículo veremos los ataques clásicos utilizados para generar DoS y los conceptos de su funcionamiento. Actualmente existen técnicas más complejas y que aprovechan fallos en el diseño de los protocolos de red que usamos diariamente.

Envío de gran cantidad de información

Probablemente sea el ejemplo más sencillo de este tipo de ataques. Se trata de enviar grandes volúmenes de tráfico de tal manera que se llegue a saturar el servicio bien porque los servidores no sean capaces de gestionarlo o bien porque la línea de comunicaciones que conecta con el servicio quede saturada. Un ejemplo sería el envío de ficheros de gran tamaño (cientos de MB) a un servidor FTP hasta conseguir que el servicio quede bloqueado.

Una técnica conocida que entraría dentro de esta categoría es el ICMP Flood (también conocido como ping de la muerte) en el que se envían a la víctima una gran cantidad de peticiones de ping con un tamaño excesivo.  En este caso se busca saturar el ancho de banda de las comunicaciones y no tanto los servidores que hay detrás.

Una variante de la inundación por ICMP, conocida como SMURF, consiste en aprovechar el funcionamiento de las direcciones broadcast. El atacante genera peticiones ICMP con la dirección de origen de la víctima. Todos los ordenadores que reciban la petición de ping (que pueden ser cientos o miles en función del tamaño de la red) responderá a la dirección que creen que es el origen, por lo que éste equipo se verá colapsado por una gran cantidad de tráfico inesperado.

Ataques en la negociación TCP

Three Way Handshake

Esquema proceso Three-Way Handshake – Fuente imagen: Wikimedia

El protocolo TCP requiere que antes de empezar a enviar información entre servidores se establezca una conexión. El establecimiento de esta conexión implican un protocolo de tres pasos. Podemos resumir los tres pasos (three way handshake)  en un establecimiento inicial (SYN), una respuesta a ese establecimiento (SYN-ACK) y una confirmación final (ACK).

La manipulación de estos tres pasos es permite algunos de los ataques de denegación de servicio más clásicos:

SYN Flood

El primer ataque consiste simplemente en enviar una gran cantidad de paquetes SYN para iniciar una nueva conexión pero sin responder nunca con la confirmación final. El servidor que reciba la petición reservará recursos (memoria, puertos en protocolos TCP, etc.) para dar servicio a estas peticiones durante un tiempo (momento en el que el sistema decida que ha ocurrido un error y no se podrá establecer la conexión). Si el atacante consigue enviar suficientes peticiones nuevas antes de que se vayan descartando las más antiguas puede saturar la capacidad del servicio dejándolo inutilizado para cualquier usuario legítimo.

RST Flood

Cuando los administradores establecieron sistemas de protección que evitaban el establecimiento de conexiones maliciosas usando la técnica anterior se empezó a aprovecharse del sistema de cierre de conexiones establecidas (que también implica tres pasos). Así los atacantes realizaban una conexión completa para, acto seguido, pedir el cierre de la misma (mensaje RST) sin llegar a cumplir el último paso que confirmaría el cierre. Así el servidor víctima debía mantener información de estado de la conexión (consumiendo recursos) hasta que la diera por finalizada pasado un tiempo. Nuevamente si el atacante podía generar suficientes cierres malintencionados podía colapsar la capacidad de respuesta del servidor víctima.

——-