viernes, 28 de diciembre de 2012

Nuevos ataques GSM: otras maneras de liberar tus llamadas y capturar tus SMS

Dentro de las vulnerabilidades que siguen apareciendo en GSM, este año Nico Golde se ha centrado en su charla en las vulnerabilidades derivadas de el procedimiento de localización de terminales que se activa cuando la red quiere terminar un servicio en el teléfono.
Cuando la red necesita alertar a un teléfono porque tiene una llamada o un mensaje corto para él, normalmente el teléfono está en reposo y no tiene un canal reservado. Para alertar al teléfono de que tiene que establecer un canal y conectarse, la red utiliza un procedimiento que difunde un mensaje por toda un área que se llama "paging".
Dado que el canal de difusión tiene que ser oído por todos los teléfonos, no está cifrado (aunque tiene alguna medidad para proteger a los usuarios, como esconder sus identificadores). Por lo que ¿qué sucede si alguien responde a ese mensaje antes que el usuario verdadero? Pues nada bueno, por supuesto.
Pero antes Nico nos ha contado cómo se puede hacer para responder el primero: básicamente reescribir la pila de protocolos N1-N3 de GSM (partiendo de la implementación pública OsmocomBB) de una manera optimizada en un sólo nivel y así responder en 200ms mientras todos lo demás teléfonos responden en unos 600ms. Y lo dice así como si fuese fácil... :-).
¿Con esto qué se consigue? Básicamente colgar tus llamadas sin que nunca sepas que has sido llamado. Y la charla incluía una demostración de que es posible.
Pero eso no es todo, para el caso sencillo de la entrega de SMS, es posible recibir el SMS en lugar del destinatario legítimo. Aquí ya el procedimiento es más complicado, ya que para evitar eso, las redes ya tienen procedimientos más sofisticados de autenticación y cifrado. Pero resulta que por un lado la terminación de llamadas hay muchas ocasiones en que no se autentica (se cita que se autentica un 10% de las veces en la mitad de los operadores, para disminuira carga en los equipos), y por otro lado, ya hemos visto en años pasados que el cifrado de GSM ha sido roto en la mayor parte de los casos, y además no tiene fácil arreglo.
Como consecuencia, aprovechando esta debilidad es posible capturar y recibir un SMS en lugar del receptor legítimo, y otra vez se ha visto la demostración de que es posible. Por supuesto, esto abre además la posibilidad de ataques de intermediario ("man in the middle"), que permite tanto la captura como la adulteración de los mensajes. Esto es algo grave, porque en el mundo hay servicios en los que los SMS se utilizan para gestionar dinero, por ejemplo en banca on-line para confirmar transacciones o en el proceso de autenticación... Afortunadamente otros servicios de pago por móvil (como m-Pesa o Wanda) no se basan sólo en SMS por lo que probablemente requieren algún paso más para ser atacados... veremos cuánto se tarda.
El tema no se acaba aquí, una de las cuestiones fundamentales es que los mensajes se difunden por toda un área ("Location área"), por lo que el ataque se puede hacer desde cualquier punto del área. ¿Y cómo es de grande un área? Pues Nico tomó un coche, unos dos teléfonos Osmocom y dibujó un mapa de las áreas de Vodafone en Berlin, que pueden tener fácilmente más de 10km entre un usuario y otro (no hablo de diámetros porque no son redondas, como se puede ver).
"Location Areas" de Vodafone en Berlín
Con este tamaño, ¿se podrían bloquear todas las llamadas de teléfonos en un área? Pues también han medido eso: resulta que en un área de las anteriores hay de 400 a 1200 terminaciones por minuto, y un teléfono necesita al menos un segundo para resincronizar tras un intento fallido, por lo que con un sólo teléfono esto no es posible, pero con una decena o dos... el GSM está en peligro.
En fin, sólo queda esperar que se mejore la implementación del GSM con autenticación en todas las terminaciones, y que todos nos pasemos a 3G o 4G, me temo.

No hay comentarios:

Publicar un comentario