Lamentablemente, luego de la publicación de este post, Digi, nuestro operador al que pagamos por el servicio, ha decidido introducir cambios para dificultar que cada usuario pueda utilizar el dispositivo que le de la gana. Personalmente es una gran desilusión con un operador con el que estaba encantado. Amigos de Digi, ¿no hubiera sido mas simple poner una aclaración de que aquellos usuarios que no utilizaran los equipos proporcionados por ustedes no tienen soporte técnico? Y de esa manera cada uno es responsable de lo que hace.
Al final del post agrego actualizaciones. (última de Enero 2021 reporta de que funciona)
Si has leído mi otro post sobre como configurar PPPoE para conectarte con tu operador con cualquier router al final comentaba que un punto importante a considerar era si tenías la línea de teléfono fijo conectada al router también, dado que ello requiere otro paso adicional en la migración. En este post voy a compartir como hice yo para sacar los datos necesarios para configurar SIP en otro dispositivo y quitar el router de Digi.
Algunas aclaraciones
- Primero que nada, lo que todos deberíamos hacer es solicitar los datos de conexión a nuestros operadores, dado que son los datos del servicio por el que pagamos…
- Mi escenario: Soy cliente de fibra de Digi, y me han instalado el router Observa Telecom TRG24AC. Esto es importante porque si tu tienes otro router u otro operador, las capturas pueden ser diferentes, pero al final deberías tener los mismo campos.
- La explicación está sumamente simplificada y generalizada para hacerlo más sencillo, pero en cada tema que menciono se puede profundizar o puede haber otras opciones. Utiliza Google :-)
Vamos con algo de teoría básica primero
Hasta no hace mucho tiempo, todos recordamos que nuestros teléfono se conectaba a un famoso "par de cobre". Nuestro terminal convertía el sonido en impulsos eléctricos que se transmitían por ese par de cables hasta la central del operador, quien se encargaba de enrutarlo hasta el destinatario y establecer un circuito entre ambos terminales. El teléfono del destinatario volvía a convertir esos impulsos en audio, como hacemos con los altavoces de nuestros equipos de música. Un sistema que llamaremos analógico, con un funcionamiento muy simple, pero sumamente costoso para el operador por el despliegue que había que realizar y su mantenimiento (si alguno pudo visitar una centralita de Telefónica hace unos años, era como entrar en un laberinto infinito de cables para un lado y para el otro).
Con la llegada de las redes de datos, el mundo IP e Internet, comenzaron a surgir tecnologías que permitían convertir ese sonido en información digital que se podía transmitir primero sobre las líneas de datos, como Voz sobre Frame Relay (VoFR)o Voz sobre ATM (VoATM) y luego directamente sobre protocolo IP, conocido como VoIP (lo cual hace a esta tecnología independiente de la red que hay debajo, da igual si es frame relay o ADSL o fibra) siempre y cuando se dispusiera del ancho de banda necesario para dicho tráfico. Hoy parece un chiste cuando hablamos de pasar video 4K por internet, pero hace unos años la situación era muy diferente (Si te interesa conocer un poco mas sobre la historia de la telefonía: www.nobbot.com/pantallas/historia-telefonia).
Saltando un poco, vamos a comentar que en las soluciones de VoIP a día de hoy tenemos dos áreas que nos interesan:
- Los "codecs" o algoritmos que utilizamos para convertir/comprimir la voz en paquetes IP, donde tenemos cosas como G.711, G.729, G.722, G.726 y muchos mas, algunos son estándares y otros son propietarios (si te interesa el tema: info.teledynamics.com/blog/demystifying-…-human-voice).
- Los protocolos de señalización que van a gestionar el tráfico VoIP para que la cosa funcione… por ejemplo establecer las llamadas, enrutarlas, elegir el mejor codec posible, registrar los terminales etc etc… Aquí tenemos H323, SIP, MGCP, H248 y otros…
Bueno, estas serían las nociones básicas sobre la tecnología, vamos ahora al meollo del asunto.
Proceso
A día de hoy SIP se ha impuesto por su simplicidad, flexibilidad y sobre todo coste de implementación como el protocolo que utilizan casi todos los operadores para darnos el servicio de Telefonía Fija, que ya es 100% IP en el 99% de los casos. También se utiliza en muchas soluciones de telefonía corporativas.
Los que tenemos nuestra linea fija conectada al router de internet estamos utilizando casi con seguridad VoIP y SIP y si queremos llevarnos este servicio a otro dispositivo o software, necesitamos conocer una serie de datos. Ahí viene el problema, lamentablemente (por razones que se pueden entender o no) los operadores no suelen compartir esos datos. Dependiendo el operador, quizás puedas ver el nombre de usuario y la password encriptada en la configuración de tu router e intentar sacarlo por ahí, pero si como yo eres cliente de Digi, ni siquiera tenemos acceso a la sección de configuración VoIP de router y ahora ni hacer un backup para buscarla por ahí.
Dicho esto, voy a compartir con ustedes como hice yo (con algo o mucha suerte) para sacar estos datos y poder configurar mi propio terminal SIP (en mi caso estoy utilizando varios softphones).
Todo parte de la captura de tráfico como ya expliqué en mi post anterior (puedes ver el enlace arriba). Realizando la captura esperé hasta ver pasar en Wireshark el tráfico de la negociación SIP luego de encender el router, hasta llegar a este paquete:
Si entras en los detalles del mismo, podrás ver esta información:
Lo que está en el recuadro rojo es lo que necesitamos para hacer nuestro "estudio" :-) Toma nota también del campo User-Agent, lo vas a necesitar luego de los cambios introducidos por Digi.
Llevo muchos años utilizando una herramienta fantástica para cualquier auditor de seguridad, llamada hashcat (https://hashcat.net/hashcat/). Es una herramienta que ofrece diferentes tipos de ataques a diferentes sistemas de encriptado o hashing, utilizando fuerza bruta, diccionarios, etc.
Por supuesto la herramienta NO HACE MAGIA, aunque es la más eficiente que conozco, si por ejemplo tienes romper un hash de más de 8 caracteres, pues seguramente te aburras antes, salvo que tengas muchos muchos muchos recursos de hardware a tu disposición :-)
Para hacerlo más divertido, el proceso de autenticación de SIP no es un simple hash, sino que hay una conversación previa de intercambio de valores y combinación con otros parámetros que entran en el algoritmo. Pero los amigos de hashcat han hecho una increíble labor introduciendo el template necesario para atacar este modelo. Yo ya lo había utilizado en entornos corporativos (con centralitas IP de empresas) con excelentes resultados, dado que muchas empresas, al ser un entorno restringido, se confían y utilizan contraseñas bastante breves para los usuarios SIP y quise probar si lo podía hacer lo mismo con Digi al no poder acceder a los datos de otra forma.
EL PROBLEMA: Sin tener una idea de como es el formato de la clave, un ataque de fuerza bruta a lo bruto, con todas las combinaciones posibles, puede tardar mucho… cuando llegas a los 8 caracteres (al menos en mi PC) pasa esto:
Va a tardar 2 años y medio en probar todas las posibilidades! no mola no? y si tienes que ir hasta 9 caracteres? "302 years, 150 days"…
LA SOLUCIÓN: El mundo es mucho mejor con amigos, no? Tengo un amigo que hace meses tuvo la oportunidad de hacerse con una config de un router de Digi completa, aunque él no sabía lo que tenía al no ver más que "caracteres raros" _(es un excelente músico pero no informático)_… hace unos días le conté que me pase a Digi y me dijo que tenía este "tesoro" y a mi se me hizo agua la boca cuando a simple vista vi que era un cifrado BASE64 como muchos otros routers, de ahí pude sacar el formato de la contraseña de SIP que aparecía en claro! :-)
Paso siguiente, utilizar el hashcat con la máscara que saque de esa config y los datos de mi captura y…
CRACKED! La contraseña ya está en mi poder!
A continuación voy a compartir detalladamente todo lo que necesitan. De la captura necesitan todos los datos (por motivos obvios voy a cambiar mi numero de teléfono por +34912345678 para el ejemplo)
Digest username="+34912345678@ims.digimobil.es"
realm="ims.digimobil.es"
nonce="73ebf52c1d7504db6650825d599eb613"
uri="sip:ims.digimobil.es"
response="3a5853c296e169f348abdb2b42bcd37a"
algorithm=MD5
cnonce="3ae"
qop=auth
nc=00000001
Imagino que en vuestra captura cambiará username, nonce, response y cnonce
Descargar el hashcat y en su directorio crear un fichero digi.hash y poner esto (con vuestro valores)
$sip$*ims.digimobil.es**+34912345678@ims.digimobil.es*ims.digimobil.es*REGISTER*sip*ims.digimobil.es**73ebf52c1d7504db6650825d599eb613*3ae*00000001*auth*MD5*3a5853c296e169f348abdb2b42bcd37a
Ejecutar hashcat con estos parámetros:
hashcat -m 11400 -a 3 digi.hash 912345678?u?d?d?d?d?d
y cruzar los dedos! si les aparece el mensaje como el mio de cracked, tendrán un fichero llamado hashcat.potfile
con la contraseña al final de la línea como la que teníamos en el digi.hash. La contraseña tiene un formato que es vuestro teléfono + 1 letra + 5 números (ejemplo 9123456789N12345
)
A partir de ahí, ya tendrán los datos que necesitan para la configuración SIP, por ejemplo yo utilizo Zoiper5 como cliente SIP y puse
Usuario: +34912345678
Password: la password encontrada con el hashcat
Domain: ims.digimobil.es
Auth Username: +34912345678@ims.digimobil.es
Outbound Proxy: ims.digimobil.es
Me funciona de maravillas, puedo hacer y recibir llamadas en mi PC e incluso en el cliente SIP que tengo en Android, ya que me conecto via VPN a casa y entonces lanzo el cliente. Me queda pendiente configurar un teléfono Siemens IP que tengo en el escritorio.
Bueno, espero que esto sea de utilidad, que dure lo que dure…
Saludos!
Actualizaciones
Actualización 24/01/2021: Un forero reporta haber podido sacar los datos SIP
Actualización 28/09: CONFIRMADO, Digi ha leído el post y ha cambiado algo en la configuración SIP. El método descrito en este post es válido técnicamente y puede servirte con otro operador, pero de momento ha dejado de funcionar con Digi. Toca investigar de nuevo.
Actualizado 28/09: Gracias a la colaboración de la comunidad, hemos visto que aparentemente Digi esta validando el user-agent ahora. Esto es un problema porque no todos los routers o ATAs o softphones te permiten cambiar este parámetro. En cualquier caso, si tienes esa posibilidad y puedes especificar este valor, utilizando el que tengas en tu captura debería funcionar.
Actualizado 29/09: Por la información que he recibido de compañeros del foro, estos serían los user-agent a utilizar:
- Router ZTE:
ZXHN H298A V1.0/V1.0.25_DIGI.1T10
- Router Observa Telecom TRG24AC:
Spirent SIP v7.2.17
Enviarme por privado si tienen alguno diferente.
Actualizado 01/12: Digi ha implementado una nueva contraseña que (en mi caso) son 13 caracteres alfanuméricos (letras minúsculas y mayúsculas + números). Como explicaba originalmente el método descrito sigue funcionando, pero con este tamaño de contraseña y siendo aparentemente al azar, con el hashcat necesitaríamos muchísimo tiempo para poder romperla.
Insisto en mi frustración con Digi ante este cambio y la falta de criterio al no dejar a los usuarios gestionar sus dispositivos, pero es lo que hay.