Archivo de la categoría: Ataques

LOIC

Low Orbit Ion Cannon (LOIC) es una herramienta utilizada para realizar ataques de denegación de servicio (DoS y DDoS). Originalmente fue desarrollado como una aplicación de prueba de estrés de red , pero desde entonces se ha convertido en código abierto y ahora se usa principalmente con intenciones maliciosas. 

Es conocida por ser una herramienta muy fácil de usar y con una interfaz gráfica muy simple. Además ganó notoriedad por su uso por parte de miembros de grupos hacktivistas.

Funcionamiento de LOIC

LOIC fue desarrollado como una forma de comprobar la capacidad de los servidores web por lo que inunda al servidor de destino con paquetes TCP, UDP o HTTP con el objetivo de saturarlo e interrumpir el servicio.

Interfaz LOIC
Interfaz del programa LOIC. Fuente: SourceForge


En general, un atacante que usa la LOIC no puede generar suficiente tráfico basura para causar un impacto serio en un objetivo, por lo que se se suele utilizar como una herramienta para ataques coordinados buscando denegaciones de servicio distribuidas. Cabe indicar que para facilitar esta coordinación el programa permite ser controlado de forma centralizada desde canales IRC.

Protección frente a LOIC

Los ataques individuales usando LOIC son fáciles de detectar y bloquear por cualquier sistema IPS automatizado, aunque en caso de no tenerlo un administrador debería ser capaz de identificar las direcciones IP atacantes y bloquearlas manualmente.

Los problemas aparecen en cuanto el ataque se realiza de forma coordinada y simultánea desde múltiples fuentes. En estos casos de DDoS, los sistemas WAF ayudan a bloquear las peticiones HTTP maliciosas, mientras que el tráfico UDP y TCP debe ser gestionado por sistemas de protección anti-DDoS específicos.

Cabe indicar que los ataques que utilizan LOIC son relativamente fáciles de detectar y, como no puede funcionar a través de proxy web, dejan rastro de las direcciones IP origen de los atacantes.

Podcast – 42 – R U Dead Yet?

R U Dead Yet?o simplemente R.U.D.Y. es una herramienta que busca la denegación de un servicio web a la página web a reservar recursos para una conexión absurdamente lenta. Mientras la mayoría de ataques de denegación de servicio se basan en el envío de una gran cantidad de conexiones rápidas para conseguir la saturación, RUDY utiliza un enfoque opuesto: ‘relativamente’ pocas conexiones de gran duración que lleguen a agotar los recursos del servidor al no permitirle liberarlos por mucho tiempo.

Esta herramienta tiene un funcionamiento muy sencillo que permite que cualquiera la utilice sin requerir conocimiento alguno: simplemente hay que indicarle la dirección de la web que queremos atacar y darle al botón y lanzamos el ataque. Debido a su funcionamiento cualquier web que tenga un formulario es susceptible de ser atacada mediante esta técnica.

Funcionamiento

Fuente imagen: Riverbed

Veamos cómo funciona esta herramienta:

  1. El programa R.U.D.Y. revisa la web indicada en busca de un formulario. Sirve cualquier formulario: uno sencillo de contacto es suficiente.
  2. Ahora la herramienta establece una primera conexión con un mensaje HTTP POST, pero indicándole al servidor destino que el tamaño del mensaje es muy grande (10,100MB, 20GB.). Esto hará que el servidor reserve espacio de memoria suficiente para recibir esta información tan voluminosa.
  3. Una vez establecida la primera conexión, ahora la herramienta empieza a enviar datos a una velocidad exageradamente lenta. Piensa que puede enviar un único byte por paquete a intervalos de aproximadamente 10 segundos.
  4. La herramienta seguirá enviando información lentamente y el servidor, al ir recibiendo actualizaciones, no cerrará la sesión pues creerá que se trata simplemente de un usuario con una mala conexión.

Si combinas múltiples sesiones de R.U.D.Y. es posible agotar los recursos del servidor atacado al llegar a saturar el espacio de memoria disponible o bien, más probablemente, el número de sesiones simultáneas que el servidor puede manejar. Así pues, si se combina un ataque R.U.D.Y desde varios orígenes, se puede obtener una denegación de servicio distribuida (o DDoS).

Protecciones

Al contrario que otros tipos de ataques de denegación de servicio, un ataque tipo R.U.D.Y es mucho más silencioso y sutil, por lo que es más difícil de detectar.

En las primeras versiones de la herramienta los paquetes se enviaban de forma continua cada 10 segundos, por lo que los sistemas IDS podían detectarlos con relativa facilidad, pero ahora mismo este envío de información se realiza de forma semialeatoria: a estos 10 segundos fijos se le añaden o restan un número aleatorio de segundos para evitar ser detectado por esta regla estática.

La forma más habitual para evitar este tipo de ataques es simplemente cerrar este tipo de conexiones tan lentas. Aunque esto hará que usuarios legítimos con conexiones muy lentas se verán impedidos de acceder a nuestro servicio web.

Otra defensa es el uso de proxys inversos que controlen y gestionen del tráfico de datos de tal forma que sean estos los que realicen las reservas de recursos para gestionar las conexiones lentas y no los propios servidores web.

Descarga directa.

Podcast – 38 – Ataques a contraseñas hasheadas

Fuente imagen: Sifi Feefer

Recientemente recibí un correo electrónico de un proveedor avisándome de que debido a un acceso no autorizado a sus servidores un atacante se había hecho con la información de mi usuario y su correspondiente contraseña hasheada. En ese mismo correo aseguraban que la contraseña estaba protegida por la función de hash por lo que el atacante no podía descubrirla, pero aún así me obligaban a cambiarla… ¿No es esto una incongruencia? ¿Si está a salvo por qué me obligan a cambiarla?

Dejando de lado el dicho de que ‘más vale prevenir que curar’, la verdad es que una contraseña bien hasheada está bien protegida, pero no perfectamente protegida… y los crackers tienen técnicas para realizar ataques a contraseñas hasheadas y averiguarlas. Veamos las tres principales.

Aunque hablé más a fondo sobre cómo almacenar contraseñas de forma segura en el capítulo 11, podemos resumir la operativa de almacenamiento sería aplicar una función hash sobre la contraseña recibida y almacenar únicamente el resultado de la función hash. NUNCA deberíamos guardar la contraseña sino únicamente el resultado de la función hash. Sabemos que una función hash es un sistema de un solo sentido de tal forma que una misma cadena de entrada siempre devuelva el mismo resultado, pero que sea “computacionalmente imposible” obtener la cadena de entrada (es decir, la contraseña) teniendo únicamente la salida.

Ataques a contraseñas hasheadas

  1. La primera opción sería un ataque de fuerza bruta para conseguir encontrar qué contraseña genera un hash como el obtenido. Así el atacante tan sólo debe probar todas y cada una de las posibles combinaciones de caracteres para ver si el resultado de aplicarle una función hash es igual al de nuestra contraseña. Como entenderás se trata de un proceso que requiere de una capacidad de computación importante, sobre todo si usamos contraseñas largas e incluimos caracteres no alfanuméricos. Aunque es un proceso que con el tiempo será efectivo (en algún momento probará nuestra contraseña) no es muy eficiente en tiempo (pueden pasar años o siglos para localizar una password compleja), por lo que no es muy común su uso (salvo que sepamos a ciencia cierta que la contraseña es corta).
  2. Otra opción es aplicar la función de hash a un grupo concreto de contraseñas que tengamos almacenadas y ver si alguna coincide con el hash que queremos descubrir. Se suele denominar diccionario al listado de claves que queremos comprobar. Existen multitud de diccionarios con las contraseñas más utilizadas; combinaciones de palabras y números comunes; expresiones de uso común en casi cualquier idioma; etc… con lo que se puede sacar una lista de contraseñas probables. Entonces se cogen todas estas claves posibles (los listados puedes ser miles o millones de combinaciones) y se aplica la función de hash a cada una de ellas comparándola con la de la contraseña que queremos romper. Los ataques de diccionario son muy útiles cuando el atacante ha conseguido un gran listado de hashes sobre los que comparar. Pensad en las noticias de filtraciones de grandes empresas con miles o millones de usuarios: es muy probable que dentro de esos millones de usuarios haya centenares o miles de ellos que utilicen como contraseña una de las incluidas dentro del diccionario inicial. Así pues, los ataques de diccionarios son un sistema eficiente de encontrar alguna contraseña en un listado grande de víctimas, aunque no tanto cuando se busca una contraseña en concreto (aunque cómo son rápidos de ejecutar, es probablemente el primero que un atacante intente).
  3. La tercera estrategia que se encuentra en un punto intermedio, computacionalmente hablando, entre las dos anteriores los las denominadas rainbow table (aunque en español se llamarían «tablas arcoíris«, la verdad es que nunca las he oído llamar así). Se trata de tablas de hash precompiladas, específicas para cada protocolo, que relacionan distintas contraseñas con sus correspondientes hashes, aunque la relación no es uno-uno como sería el caso de los ataques por diccionario, sino que incluyen una serie de pasos intermedios que no son almacenados pero que son accesibles con los datos de la tabla. Así tenemos un sistema que implica una mayor necesidad de computación que los ataques de diccionario, pero muchísimo menos espacio de almacenamiento. A grandes rasgos podemos decir que una rainbow table aplica dos funciones (la de hash y otra denominada de reducción) varias veces de tal forma que el resultado de una función sirve como entrada de la siguiente ronda. Finalmente, tras las rondas correspondientes se almacena únicamente la entrada inicial y el resultado final, pero no los resultados intermedios. En el momento de querer sacar una contraseña se aplican las funciones de hash y reducción según el algoritmo de la tabla de reducción, permitiendo la detección de la contraseña correcta no sólo por las dos columnas almacenadas, sino también por los resultados intermedios que son calculados al vuelo. El procedimiento y las funciones utilizadas dependen de cada ‘tabla arcoíris’.

Como ves, los atacantes tienen estrategias para conseguir sacar la contraseña real del hash obtenido, y es por ello que las empresas afectadas por este tipo de filtraciones solicitan, u obligan, a sus usuarios a cambiar su contraseña de acceso: porque el atacante no tiene ahora mismo la contraseña pero puede llegar a tenerla (sobre todo si usamos claves cortas o que usen palabras/combinaciones comunes).

Descarga directa.