La telefonía IP se usa ampliamente en las organizaciones. Por ello, es necesario que este servicio esté libre de amenazas, tales como la intercepción de comunicaciones o las denegaciones de servicio. Es necesario securizar dichas plataformas de comunicación esencial y realizar revisiones periódicas de seguridad para comprobar a que ataques somos vulnerables.
En estos entornos de revisión se deben probar diferentes vectores de ataque. Los ataques contra los dispositivos VoIP son fáciles de realizar... Sobre todo si tenemos en cuenta la naturaleza del protocolo de transporte de la VoIP, RTP, el cual va sobre UDP.
Ok, pero ya sabemos que existen controles para los potenciales problemas que son, por ejemplo, inherentes al spoofing. Pero, qué pasa si las implementaciones de las pilas VoIP no contemplan una correcta implementación de los números de secuencia o de funciones similares que se realicen?. Veamos cómo funciona el paquete RTP (se transmite sobre el protocolo UDP y se utiliza en H.323 y SIP):
Figura 1. Cabecera del paquete RTP
Fijémonos en algunos campos:
PT (Payload Type): Informa que tipo de información lleva el paquete: codecs audio, info video, etc.
Sequence Number: Número de secuencia para controlar el flujo de la voz (es muy pobre…)
Timestamp: Refleja el instante de muestreo del primer octeto del propio paquete RTP.
SSRC (Synchronization Source): Es un valor elegido aleatoriamente, para identificar la fuente de la sincronización RTP, en particular.
A la saca!...
Es el momento de ver si se puede inyectar voz y molestar en las conversaciones o meter publicidad como el spit. Para ello, abusaremos de las inseguridades del protocolo UDP (spoofing y facilidades del control de flujo). Lo haremos así:
1. Sniffamos la red para escuchar conversaciones activas
2. Verificamos el códec que se usa en la conversación
3. Extraemos los puertos UDP, el tsmamp, el ssrc y el número de secuencia (fig 2.)
4. Con todo esto, ya podemos inyectar el ataque
1. Sniffamos la red para escuchar conversaciones activas
2. Verificamos el códec que se usa en la conversación
3. Extraemos los puertos UDP, el tsmamp, el ssrc y el número de secuencia (fig 2.)
4. Con todo esto, ya podemos inyectar el ataque
Figura 2. Captura de paquetes RTP
En esta captura se puede observar un ejemplo de tráfico RTP, obtenido de una conversación VoIP entre dos softphones. En este caso concreto, los puertos UDP origen y destino coinciden. Se puede apreciar claramente el incremento del número de secuencia en los siguientes paquetes, este aumento va unidad en unidad. Además, también se puede observar el incremento constante en 100Hex del time stamp, en los diferentes paquetes, que identifica el instante del tiempo en el cual se debe reproducir la muestra de sonido contenida en el paquete.
Por último se puede comprobar el SSRC utilizado que se mantiene constante, ya que todos estos paquetes pertenecen a la misma sesión VoIP.
¿Fácil de hacer no?
Sólo basta con hacerse un pequeño programa e inyectar un tstamp superior y el mismo ssrc, del paquete que hemos obtenido (fig. 3).
Figura 3. Ataque de inyección de voz
Si probáis con este ataque, comprobaréis que muchos de los softphones descartan los paquetes del emisor y leen nuestra muestra o sample inyectado…
¡Es el momento de jugar con las pcap y demás!. Saludos,
0 comentarios:
Publicar un comentario