Archivo de la categoría: Ataques

Concepto Wardriving

Wardriving

Concepto Wardriving. Fuente imagen:Flylib.com

Concepto Wardriving. Fuente imagen:Flylib.com

Se denomina Wardriving a la búsqueda y recolección de información sobre redes Wi-Fi realizada desde un coche en movimiento. Seamos claros: la idea es pasearse por una zona que nos interesa con un portátil, o cualquier otro equipo con capacidad de conectarse a una red Wi-Fi, de manera que guardemos toda la información de las redes Wi-Fi que nos encontremos (SSID, protocolos de cifrado, direcciones MAC de los routers, ubicación GPS etc.) por el camino.

Hay que tener en cuenta que la mayoría de routers ADSL instalados por los operadores de telecomunicaciones en España vienen con una red Wi-Fi configurada por defecto que, hasta hace no demasiado, permitía el cálculo automático de la contraseña de acceso. Así pues, un usuario podría utilizar la información recogida para intentar, a posteriori, obtener las claves de acceso a las redes inalámbricas y utilizar así esas redes cuando lo considerase conveniente con las intenciones que fueran.*

Esta técnica puede utilizarse como parte de la fase de recolección de información de un ataque posterior. El hecho de detectar diferentes redes Wi-Fi puede dar información sobre la existencia, o no, de infraestructura de control de redes inalámbricas, la existencia de líneas ADSL independientes que puedan favorecer una infección remota, etc.

Ejemplo de equipo para wardriving. Fuente imagen: Wigle.net

Ejemplo de equipo para wardriving. Fuente imagen: Wigle.net

¡Pero no sólo los malos usan el concepto de wardriving! Resulta que si quieres que tu empresa disponga de un certificado PCI-DSS hay que cumplir muchos requisitos y uno de ellos, el 11.2 ( «Test for the presence of wireless access points and detect unauthorized wireless access points») obliga a los administradores de red a pasearse por la empresa en busca de redes Wi-Fi desconocidas que puedan suponer una puerta de salida de información privada. Efectivamente. Habréis visto en algunas películas que alguien detecta un pincho USB que emite por Wi-Fi la información que el malo malísimo necesita… y resulta que sí, que los administradores de red buscan estos puntos Wi-Fi dentro de sus instalaciones.

* Como anécdota personal puedo decir que cuando tuve un familiar ingresado durante bastante tiempo utilicé esta técnica (aunque caminando y no en coche) para encontrar una red Wi-Fi con la que conectarme a Internet. Aunque ya nos hemos acostumbrado a la conectividad móvil 4G no hace tanto que las conexiones eran muuuuy lentas y caras 😉

Clickjacking

Se denomina clickjacking, cuya traducción aproximada sería secuestro de clic, a una serie de técnicas, generalmente utilizadas en aplicaciones web, que buscan que el usuario pulse enlaces (y por ello ejecute código) de forma inconsciente. El término fue acuñado en 2008 si bien se puede conocer este tipo de ataques con el termino, más genérico, IU redressing (pudiendose traducir como redirecionamiento de interfaz de usuario).

Ejemplo clickjacking

Ejemplo clickjacking. Fuente imagen: Un informatico en el lado del mal

La idea bajo este ataque es conseguir que el usuario realice una acción no intencionada (ejecutar un script, instalar malware en su equipo, visitar una página web, etc.) sin ser consciente de ello. Para conseguir este resultado se suelen utilizar propiedades del lenguaje HTML de forma malintencionada.

Un ejemplo típico de este tipo de ataques sería la visita de un usuario a una página web que contenga un vídeo. Generalmente para reproducir un vídeo es necesario pulsar el botón de Play para que comience, así pues el usuario hace clic sobre el botón para poder ver el vídeo. Si un atacante malicioso ha colocado sobre el botón una imagen o un iframe transparente con un enlace a otro sitio el usuario en realidad habrá pulsado dicho enlace y no el inicio de la reproducción del vídeo.

Algunas páginas pueden engañar al usuario al crear su propio puntero de ratón, en vez de utilizar el propio del sistema. Así puede mostrar un puntero desplazado respecto al real y hacer que el usuario pulse el enlace no deseado. Esta variante recibe el nombre de cursorjacking (secuestro del cursor).

El éxito de esta técnica tiene una tasa de éxito es muy variable ya que depende en gran medida de la configuración del navegador del usuario y del tamaño de pantalla. Tampoco suele ser un técnica muy efectiva para forzar la instalación de software malicioso ya que los navegadores modernos incluyen incorporan medidas de seguridad, precisamente, para evitar eso (tiempos de espera, avisos de confirmación ,etc.). Debido a estas limitaciones la técnica de clickjaking se ha centrado más en conseguir que los usuarios hagan uso de otros servicios web, siendo los más comunes (por tenerlos en login automático en nuestros navegadores):

  • Seguir a alguien en Twitter de tal manera que esa cuenta gana popularidad y el usuario puede recibir spam en su timeline (1000 seguidores en twitter valen menos de 5€).
  • Darle a Me Gusta de Facebook o compartir publicaciones de una página desconocida para conseguir el mismo efecto. Estas técnicas han sido denominadas como Likejacking (1000 Me gusta en Facebook puede salirte por menos de 10€).
  • Cambiar la configuración de redes sociales para que sea pública y así el atacante puede obtener más información de la víctima.
  • Forzar la visita a una página web no deseada ya sea con el objetivo de vender algún producto o servicio o bien para que la página visitada incremente su popularidad en los buscadores.

Estos problemas de vulnerabilidades pueden no parecer críticos a simple vista pero si una web es vulnerable a un clickjacking de terceros no sería de extrañar que también estuviese afectada por alguna vulnerabilidad XSS.

Defensas frente a clickjacking

Los usuarios pueden utilizar el plugin NoScript que protege frente a este tipo de ataques. Otra solución sería configurar manualmente una plantilla de navegación por la que todos los iframes que se creen tengan un fondo opaco para evitar la aparición de una ventana transparente sobre una página web legítima.

Los administradores de sitios web pueden activar algunas opciones por defecto de X-Frame-Options o de la Content Security Policy para forzar que todos los iframes en su web  tengan fondo opaco y sólo apunten a su propia página y no redirijan tráfico a terceros.

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.