En esta serie de artículos hablaremos sobre los ataques de Denegación de Servicio (DoS attacks) en redes VoIP. Inicialmente comentaremos la problemática de los ataques DoS en general, posteriormente comentaremos su impacto en VoIP y dejaremos para la siguiente entrega el uso de diferentes herramientas para probar este tipo de ataques
Los ataques de denegación de servicio afectan a todas las redes de datos actualmente, ya sean cableadas o inalámbricas, LAN o WAN. Sin embargo, es en servicios como VoIP, con requisitos de calidad de servicio (QoS) muy exigentes, donde las consecuencias son más notables.
No todos los ataques de este tipo tienen que ver con la calidad de servicio. Principalmente, los ataques DoS suelen estar provocados por una de estas causas:
- DoS Exploits. Se da cuando un atacante envía un paquete o secuencia de paquetes con un contenido específico que explota una vulnerabilidad en la implementación de algún componente VoIP. El paquete puede ser especialmente largo o con una estructura incorrecta, de manera que provoque una excepción o fallo en dicho componente debido a que no había sido implementado para manejar paquetes con alguna característica inesperada.
- Flood DoS. Se da cuando se envía un alto número de paquetes bien construidos a un destino. De esta manera, dicho destino tendrá que dedicar gran cantidad de recursos para procesar el flujo de paquetes del atacante, con lo que dejará de procesar correctamente paquetes de clientes legítimos. Una variante de este tipo de ataque DoS es que los paquetes enviados causen una ocupación de los recursos en espera de una respuesta que nunca se enviará. Otra variante son los ataques de denegación de servicio distribuido (DDoS), en el que dicho ataque se llevará a cabo utilizando diferentes clientes distribuidos de manera que el flujo de paquetes enviados sea mayor.
- DoS de nivel de aplicación. Se da cuando una característica del servicio VoIP se manipula para conseguir una denegación de servicio. Por ejemplo, el secuestro de la sesión de un teléfono IP puede causar la pérdida de llamadas vinculadas a dicho teléfono.
A continuación trataremos cuestiones relacionadas con la calidad de servicio en redes de telefonía sobre IP, estudiaremos ataques ya conocidos y veremos herramientas concretas para realizar ataques de denegación de servicio en VoIP.
Calidad de Servicio (QoS) en VoIP
Como ya hemos comentado anteriormente, los servicios de telefonía sobre IP son tremendamente sensibles a una pérdida en la calidad del servicio. Un pequeño retardo de menos de 200 ms. puede provocar una sensación muy desagradable en el interlocutor cuando hablar mediante VoIP. Este tipo de latencias, lejos de estar provocadas por ataques de denegación de servicio (DoS), pueden ser generadas por los propios sistemas de seguridad que tratan de proteger la comunicación.
Mecanismos de autenticación y cifrado, cortafuegos o sistemas de detección de intrusiones (IDS) pueden incrementar no intencionadamente las posibilidades de éxito de un ataque DoS.
Otro factor que influye notablemente en las redes de voz sobre IP el el jitter, o la variabilidad de de los retardos que impide que los paquetes se puedan procesar en secuencia. Dado que RTP funciona sobre UDP, los paquetes que no se reciban en orden no podrán ser reensamblados hasta la capa de aplicación, lo que introduce una demora considerable. De hecho, aunque los paquetes lleguen en orden, si el jitter provoca que lleguen a ráfagas, será necesario utilizar un buffer temporal para mitigar esos retardos variables. Siempre que se utilizan buffers temporales para cada conexión, los riesgos para el sistema de quedarse sin memoria ante un ataque de denegación de servicio se multiplican.
Otro punto importante relacionado con la calidad de servicio reside en que RTP no garantiza el envío de los paquetes, que sumado a las fuertes restricciones temporales pueden provocar pérdida de paquetes, ya sea por la falta de confiabilidad de la red o por su lentitud. Sin embargo, dado que los extremos finales de la comunicación suelen ser personas, es necesaria una pérdida significativa de paquetes para que el mensaje no sea entendido.
De todas formas, en muchas ocasiones las pérdidas de paquetes no son aisladas y hacen que se pierda toda una palabra o una frase, complicando mucho la comunicación. Por muy bueno que sea el códec empleado, una pérdida del 5% de los paquetes tendrá consecuencias muy negativas en la comunicación, por lo que un atacante que quiera frustarla no tendrá que arruinar el 100% de los paquetes, tiene suficiente con conseguir que el 5% de ellos no lleguen a su destino. Es aquí donde entran en juego los sistemas de priorización de tráfico basados en colas o en bits en las cabeceras de los paquetes.
La adopción de sistemas basados en VoIP por instituciones médicas o gubernamentales hace que las consecuencias de un ataque DoS en algunos servicios como el 112 (911 en E.E.U.U.) pueda ser debastadora. Además, las emergencias reales (por ejemplo, un incendio o un atentado terrorista) pueden ser difícilmente distinguibles de un ataque de DoS en muchos casos.
Ataques de Denegación de Servicio en VoIP
Existen en la actualidad varios ataques DoS específicos de VoIP, la mayoría de ellos bastante obvios, producidos por saturación o inundación de paquetes o por el falseo de mensajes de desconexión (Flood DoS y DoS a nivel de aplicación):
- Saturación mediante paquetes RTP: durante el establecimiento de la sesión, se intercambia información relativa al protocolo de transporte empledado, la codificación, tasa de muestreo o números de puertos. Utilizando esta información es posible saturar a uno de los dos extremos con paquetes RTP o renegociar las condiciones de la transferencia para que los agentes de usuario (teléfonos IP o softphones) causen problemas.
- Malformación en mensajes INVITE: el envío de mensajes INVITE con contenidos extraños puede hacer que los agentes de usuario funcionen mal o incluso dejen de funcionar completamente. Unos cuantos ejemplos prácticos:
- Express Talk v.1.03: los mensajes INVITE con Content-Lengh negativo provocan que la terminación anómala del programa.
- CallConductor v. 1.03: ocurre lo mismo que con Express Talk.
- X-Lite 1103: si se envían mensajes INVITE con un valor de Content-Length mayor o igual a 1073741823 bytes, el rendimiento se degrada de forma notable, consumiendo toda la memoria RAM y Virtual disponible en el sistema.
- Cierre de la comunicación mediante mensajes BYE: dado que el Call-ID actua como un identificador único para un conjunto de mensajes SIP, conocido ese dato por el atacante, podría cerrarse la comunicación enviando un mensaje BYE falso que incluyera el valor apropiado para el campo Call-ID.
- Cierre de la comunicación mediante mensajes CANCEL: en la misma línea que el anterior, la comunicación se puede cortar enviando mensajes CANCEL que tenga el mismo valor en el campo Call-ID que tenía el mensaje INVITE de la conexión que se quiere denegar.
No solamente los agentes de usuario (teléfonos IP o softphones) son suceptibles a este tipo de ataques. Es posible también que estos ataques afecten a centralitas y proxys SIP mediante inundaciones de peticiones INVITE o REGISTER que provoquen un colapso en los mismos.