jueves, abril 14, 2011

Ataque selectivo con estación base falsa GSM/GPRS

Normalmente, un atacante que emplea una estación base falsa GSM/GPRS busca comprometer las comunicaciones de un usuario determinado, a la vez que intenta generar la menor actividad posible para el resto de usuarios móviles en su radio de alcance. A esto lo denominamos “ataque selectivo”. Para realizarlo, el atacante debe conocer el IMSI (identificador asociado a la tarjeta SIM) de la víctima.

Existen al respecto de este tipo de ataque dos ideas bastante extendidas:

A.- Que es difícil conseguir el IMSI del usuario al que queremos atacar
B.- Que es difícil no afectar al resto de usuarios en el radio de alcance de la estación falsa

Sin embargo, hay varias técnicas para solventar los puntos anteriores. En este artículo explicaremos, como ejemplo, una de ellas.

Descubriendo el IMSI de la víctima

Para resolver el punto A, el atacante podría realizar lo siguiente:

Paso 1: el atacante se ubica en la zona donde reside su víctima (su casa) cuando ésta se encuentra en ella y captura todos los IMSIs en su radio de alcance (preferiblemente con una antena direccional para limitar el área geográfica donde está capturando IMSIs). Durante esta operación rechaza todos los intentos de registro de los móviles hacia su estación base falsa, a la vez que anota los IMSIs que están intentando registrarse.

Paso 2: Posteriormente, el atacante se ubica en la zona donde la víctima trabaja y realiza la misma operación. Es de esperar que el primer IMSI de la segunda captura que coincida con alguno de los IMSIs de la primera sea el de la víctima.

Paso 3: En ese momento, el atacante debe autorizar el registro de ese IMSI (y sólo de ese IMSI) en su estación base para poder interceptar sus comunicaciones y bloquear los intentos de registro del resto de IMSIs.

Evitando afectar al resto de los usuarios

Una vez resuelto el punto A, vamos a ver cómo el atacante puede abordar el punto B.

En primer lugar, debemos darnos cuenta de que el atacante no ha dejado el registro abierto para todos los terminales, evitando así cualquier síntoma que pudiera alertar a la víctima (cambio brusco del indicador de cobertura, algún fallo en las llamadas salientes, falta de llamadas entrantes, etc.) y cualquier problema de sobrecarga de su estación base falsa (que típicamente tiene unas capacidades de gestión de tráfico y llamadas limitadas).

En cada uno de los pasos descrito anteriormente, el atacante realiza las siguientes acciones de configuración para conseguir afectar lo menos posible al resto de terminales a su alcance:

Paso 1: al atacante le conviene, para minimizar cualquier síntoma en los móviles a su alcance, y también para tener la menor información redundante o inútil posible en los logs de su estación base falsa, que cada IMSI sólo se intente registrar una vez en su celda falsa. Para ello configurará un código de causa de rechazo 0x0C “Location Area Not Allowed”. Este código de causa de rechazo lo incluye la estación base falsa en el mensaje “Location Update Procedure Reject”, que es el que envía cuando rechaza un intento de registro. Según el documento de la norma 3GPP 24.008 (también lo hemos verificado en nuestro lab) el móvil anota el LAI (Location Area Identifier) de la celda que le ha dado esa respuesta en su lista de LAIs prohibidos (denominada “forbidden location areas for regional provision of service”) y no se intenta conectar más a ninguna celda con ese LAI (no al menos hasta que el móvil se apague o se le quite la SIM). De esta forma está impidiendo que los móviles que se han intentado registrar una vez en su celda lo vuelvan a intentar, pero que no tengan problemas en volver a las celdas legítimas.

Paso 2: ahora el atacante persigue que el terminal de la víctima sea de nuevo rechazado la primera vez. Puede configurar su estación base con un LAI diferente al del día anterior, para asegurar que los terminales intentan registrarse de nuevo. Una vez capturado el primer IMSI que coincida, apaga la estación base.

Paso 3: el atacante que ya conoce el IMSI enciende la estación base con un nuevo código LAI, y con el IMSI de su víctima autorizado. Cuando la víctima intente registrarse en su estación base el registro se aceptará y el atacante puede comenzar a interceptar las comunicaciones. El resto de terminales se intentarán registrar una sola vez en la estación base falsa y no lo volverán a intentar pues el código de causa de rechazo sigue siendo 0x0C.

El atacante de esta forma puede conseguir identificar el IMSI de su víctima con una primera sesión de captura de IMSIs que durará algunos minutos, y una segunda sesión en la que ya puede interceptar selectivamente las comunicaciones de su víctima. Por el contrario, el único efecto colateral sobre el resto de terminales a su alcance es que intentan realizar un registro en su celda falsa una sola vez.

José Picó
Taddong

Taddong tiene planificados tranings de seguridad GSM/UMTS para profesionales a los que te puedes apuntar en Madrid, Valencia y Barcelona, en Español y en Inglés.

6 comentarios:

kabracity dijo...

Hay una parte que no me termina quedando clara, no sé si me estoy saltando algo: entiendo que mediante el falso entorno que hemos creado (BTS,OpenBSC,OsmoSGSN,OpenGGSN) podamos realizar el ataque de forma transparente para el usuario, enlazando su tráfico de datos con internet de forma que pueda pensar que todo funciona con normalidad.

Pero ¿en el momento en que intentara hacer una llamada iba a notar que algo no iba bien no? (o con la falta de llamadas entrantes).

José Picó dijo...

@kabracity:
El entorno que describes (BTS,OpenBSC,OsmoSGSN,OpenGGSN) es capaz de gestionar conexiones de voz GSM y de datos GPRS/EDGE. En la parte de voz, el sistema es capaz de enrutar llamadas salientes, así que el único síntoma para el usuario es que no recibe llamadas entrantes (si él mismo se llamase a su móvil desde otro teléfono la operadora reportaría el móvil como "apagado o fuera de cobertura"). El terminal reportará cobertura EDGE.

Anónimo dijo...

O para resolver el punto A, si es Vodafone o ha hecho alguna llamada a algún Vodafone (altamente probable), me puedes preguntar a mí y te lo digo :)

kabracity dijo...

@Jose gracias por la aclaración. Entonces creo que tengo una gran laguna ahí, hay algo que se me está escapando. No tengo muy en mente como es la interconexión entre operadoras, pero daba por supuesto que había algún tipo de filtrado en cuanto al origen de las llamadas que reciben. Es decir, las llamadas de voz a la otra operadora le tienen que entrar por un "GMSC", y he dado por hecho que habrá algún tipo de control (sino con ese escenario estaríamos llamando gratis).

José Picó dijo...

@kabracity: no estás equivocado: entre operadores la interconexión es como mencionas. Sin embargo, la estación falsa no se comporta como un operador (en teoría podría, pero se necesitarían acuerdos con algún operador real); lo que ocurre en este caso es que la estación base falsa enruta llamadas a través de un proveedor de VoIP (SIP).

kabracity dijo...

@Jose: Gracias, así sí :), la parte de usar SIP era la que no se me había pasado por la cabeza

Entradas populares