Como vimos en el anterior post, uno de los problemas de seguridad al que se enfrentan las redes VoIP actualmente, al igual que las redes de datos, es a lo que se conoce habitualmente como eavesdropping, es decir, escuchar secretamente los datos transmitidos entre dos o más puntos, sin ser participe directo de ello; en términos de VoIP, como eavesdropping podemos considerar la escucha, sin ser participe, de una conversación entre varias personas. Concretamente, debemos interceptar los mensajes de señalización y los streams de audio de la propia conversación.
Actualmente, muchas implantaciones de VoIP no están correctamente planificadas, y por tanto, comparten el mismo medio físico para transmitir voz y datos; no existe una red paralela independiente ni, en muchos casos, independencia lógica de redes basadas en Vlans, por lo que es habitual encontrar conectados a un mismo switch, tanto teléfonos IP, como equipos de usuarios.
Partiendo de esta premisa, y usando ARP spoofing o envenenamiento de la caché ARP como mecanismo para realizar un ataque man-in-the-middle, podemos capturar, analizar e incluso escuchar las conversaciones VoIP que se generan en nuestra red. En nuestro caso, para realizar el ataque de ARP spoofing, vamos a usar ettercap y Wireshark para realizar la captura de tráfico, el cual ya trae funcionalidad y filtros para redes VoIP.
Como se puede observar, el proceso es realtivamente sencillo; mientras tenemos en ejecución ettercap generando peticiones ARP falsas, lanzamos una instancia de wireshark, para realizar la captura. Una vez abierto, realizamos los siguientes pasos:
Seleccionamos los parámetros de captura de la aplicación; desde el menú “Capture” seleccionamos la interfaz a través de la cual vamos a capturar tráfico (podemos seleccionar filtros de captura). Una vez establecidos, pulsamos “Aceptar” para comenzar la captura.
Durante la captura, en pantalla observaremos una gráfica con estadísticas de los protocolos capturados:
Una vez tenemos capturados un número considerable de paquetes, paramos la captura, tras lo cual, podremos ver en la consola de wireshark, la lista de paquetes capturados. En nuestro caso:
Llegados a este punto, podemos realizar distintos tipos de análisis de nuestra red VoIP:
» Estadísticas del protocolo de señalización SIP; pulsando en el menú “Statistics -> SIP -> Create Stat“, donde podremos ver estadísticas de los distintos tipos de mensajes del protocolo:
» Estadísticas del protocolo de transporte RTP; seleccionamos uno de los paquetes RTP capturados y pulsamos en el menú “Statistics -> RTP -> RTP Streams“, donde podemos ver los flujos RTP capturados, jitter, códec usado…
No obstante, la opción más interesante la hemos dejamos para el final. Si pulsamos en el menú “Statistics -> VoIP Calls” podemos ver todas las llamadas capturadas:
Una vez tenemos la lista de capturas, podemos seleccionar una llamada cualquiera, y obtener datos más concretos, como puede ser el intercambio de mensajes de señalización SIP (Pulsando la opción Graph).
Y finalmente, reproducir la propia llamada capturada. Tras pulsar el botón “Player” en la pantalla anterior y ajustar el jitter, decodificamos el paquete, y podremos ver los distintos streams de audio, pudiendo reproducirlos de forma independiente o conjunta:
Buenos días,
Una curiosidad, ¿Qué programa de VoIP se utilizó en la simulación? La pregunta viene por que (hasta donde yo se) este tipo de aplicaciones suelen cifrar las comunicaciones para, sobretodo, evitar los ataques MiMT. Por ejemplo Skype afirma utilizar AES 256 bits, aunque al utilizar un protocolo propietario solo ellos lo saben :-p
Por otro lado, en un ambiente corporativo, donde la seguridad es primordial, ¿qué tecnología VoIP considerarias más segura? He escuchado que el proyecto de Zfone va bien encaminado, aunque tampoco se mucho al respecto. ¿Qué opinas?
Muchas gracias y enhorabuena por el bloq.
Saludos
Buenas,
En efecto, tal como indicas, en los ambientes corporativos donde la seguridad es primordial es necesario proteger nuestra red de voz (al igual que la de datos), aunque en este punto se plantean otras preguntas como ¿es segura nuestra red de datos? ¿ciframos todo nuestro tráfico? ¿cómo de segura es nuestra red de voz tradicional?
Concretando algo más sobre el ejemplo planteado, donde se ha usado Asterisk como PBX, partíamos de la premisa, muchas veces cierta, de usar la infraestructura existente para implantar la red de VoIP, ya sea por coste o comodidad, y por lo tanto, el ataque reproducido era posible.
No obstante, si quisiéramos proteger nuestra red de voz, a parte de separar lógica o físicamente ambas redes, deberemos añadir algunas medidas de seguridad adicionales, como puede ser la autenticación y el cifrado, tanto a nivel de señalización, por ejemplo mediante SIP sobre TCP/SSL, como a nivel de transporte, usando SRTP o ZRTP, éste último desarrollado por el conocido Phil Zimmermann, y el cual también es usado Zfone, y como comentas, ofrece muchas posibilidades aunque personalmente no lo he probado. No obstante, también habrá que tener en cuenta la carga extra generada por el cifrado, así cómo el tipo de cifrado que son capaces de soportar los terminales o incluso la PBX, puesto que habitualmente, se requieren terminales con grandes funcionalidades mientras que se descuidan otros aspectos importantes como la seguridad.
Muchas gracias Jose L. Coincido con vuestra premisa, y es que la segmentación de redes para VoIP no está a la orden del día en todos los sitios.
Habrá que “testear” el Zfone y ver si merece la pena :-)
Saludos