[Bluetooth] Ataque Blueline contra un Motorola RAZR V3

Iniciado por Gospel, 12 Agosto 2006, 03:00 AM

0 Miembros y 2 Visitantes están viendo este tema.

Gospel

El advisory de la vulnerabilidad original se encuentra en http://www.digitalmunition.com/DMA[2006-0321a].txt
El ataque descrito por Kevin Finisterre se realiza contra un Motorola PEBL U6.

La documentación del ataque con capturas del test llevado a cabo con un Motorola RAZR V3 se encuentra en http://gospel.endorasoft.es/bluetooth/seguridad-bluetooth/blueline.html


Ataque Blueline





El objetivo del ataque Blueline es la conexión al Perfil de Pasarela de Voz (Voice Gateway Profile) con el fin de ejecutar comandos AT en el terminal. El Perfil de Pasarela de Voz, accesible a través del canal 3, es un perfil que requiere autorización, aunque no autenticación.




Los nuevos modelos de Motorola, como PEBL U6 y RAZR V3, deniegan automáticamente (sin intervención explícita del usuario) un intento de conexión proveniente de cualquier dispositivo Bluetooth no conocido (que no aparece en el histórico de dispositivos conectados anteriormente).




Con el fin de evitar este problema, el ataque Blueline implementa una variación del ataque HeloMoto.

La vulnerabilidad que explota HeloMoto se basa una implementación incorrecta de la gestión de la lista de dispositivos de confianza en algunos teléfonos móviles Motorola antiguos. El ataque HeloMoto se lleva a cabo enviando una tarjeta de visita o vCard a través del Perfil de Carga de Objetos (OBEX Object Push). De forma automática y sin necesidad de interacción por parte del usuario propietario del teléfono móvil, el dispositivo atacante es añadido a la lista de dispositivos de confianza del terminal, aunque el proceso de envío haya sido interrumpido por el atacante antes de llegar a su fin. El atacante obtiene así privilegios para conectarse a servicios que requieran autorización, aunque no autenticación.

Sin embargo, la funcionalidad del ataque HeloMoto en los modelos de Motorola PEBL U6 y RAZR V3 varía respecto a los modelos antiguos, ya que estos nuevos no son vulnerables al ataque HeloMoto en sí. Llevando a cabo un ataque HeloMoto, el dispositivo atacante no es añadido automáticamente a la lista de dispositivos de confianza del teléfono móvil, pero sí que es añadido al histórico de dispositivos conectados anteriormente, suficiente para que cualquier intento de conexión posterior no sea denegado automáticamente por el teléfono móvil.




De este modo y en adelante, las conexiones entrantes al teléfono móvil desde el dispositivo atacante serán notificadas al usuario para que confirme explícitamente su autorización. No obstante, la notificación informará al usuario del nombre del dispositivo origen y es bastante probable que el usuario deniegue tal conexión si el nombre del dispositivo resulta sospechoso o simplemente por conducta preventiva.




La cuestión reside en persuadir al usuario del teléfono móvil para que confirme la autorización de conexión al perfil.

La originalidad del ataque Blueline consiste en provocar una falsificación o spoofing del interfaz sustituyendo el mensaje original de la ventana de notificación de conexión entrante por cualquier texto deseado con sólo modificar el nombre del dispositivo atacante por una cadena de caracteres maliciosa. Esta cadena de caracteres puede contener caracteres 0x0d para el salto de línea.




De esta forma, el mensaje de notificación malicioso podría engañar a cualquier usuario de teléfono móvil y forzarle a que aceptara la conexión, en cuyo caso, el dispositivo atacante quedaría autorizado en el teléfono móvil comprometido.






En caso de que el usuario atacado sea engañado y confíe en el aviso mostrado por pantalla, el dispositivo atacante dispondrá de autorización para acceder al Perfil de Pasarela de Voz y ejecutar comandos AT en el terminal comprometido.



En este caso, la consola de envío de comandos AT no disponía de eco local y se han enviado los comandos AT ciegamente.
En la imagen, se han añadido los comandos AT utilizados para mejor comprensión.

Agradecimientos a ANELKAOS por la ayuda para llevar a cabo el test del ataque Blueline.

rh3nt0n

como siempre un trabajo extraordinario Gospel  ;)
se podria implementar este ataque para PDA ,tipo pocketbluesnarfer ?

gracias por el aporte ...[coña]mi mujer se va a cabrear cuando pruebe esta vulnerabilidad con su v3 [/coña] ;D ;D ;D ;D

eso si...con su permiso  :-X

saludos
Reconoce tu tierra, tu ritmo, reconoce te a ti mismo.

Gospel

Por portar se podría portar a una Pocket PC, sí!

Pero el ataque en sí es bastante complejo: requeriría portar también la herramienta que explota el ataque HeloMoto.

Sinceramente, no creo q valga la pena portarlo ya q las posibilidades de éxito en un dispositivo real son muy escasas. Los teléfonos Motorola sólo pueden mantener el Bluetooth activado durante un periodo de 60 segs, lo que hace a estos equipos muy seguros frente a ataques Bluetooth.

Saludos

icisneros

Cita de: Gospel en 14 Agosto 2006, 13:15 PM
Los teléfonos Motorola sólo pueden mantener el Bluetooth activado durante un periodo de 60 segs, lo que hace a estos equipos muy seguros frente a ataques Bluetooth.

Eso si lo activas mediante la opción "encuentrame" pero puedes ir a configurar->energía-> y ponerlo en "activado", así se quedará activado hasta que lo desactives. Mucha gente lo deja si tienes el manos libres en el coche, para que cuando se monte lo detecte automáticamente y no tenga que activarlo a mano.

Saludos!!

Kasswed

Interesante. Por fin algo que probar para estos Motorola, que se hacían bastante seguros... se hacían...

Un saludo.
"He who allows himself to be insulted, deserves to be."

Repórtame cualquier falta a las normas del foro por mensaje privado.

capitan nemo

Alguien me podria explicar como compilar o instalar el programa helomoto porfavor, soy medio brutito jojo...

Gospel


capitan nemo

OK gracias esto es lo que me sucede:


make: glib-config: No se encontró el programa
gcc -I/usr/local/include      -c helomoto.c -o helomoto.o
helomoto.c:47:18: error: glib.h: No existe el fichero ó directorio
helomoto.c:48:27: error: openobex/obex.h: No existe el fichero ó directorio
helomoto.c:60: error: syntax error before 'btobex_connect'
helomoto.c:60: error: syntax error before '*' token
helomoto.c: En la función 'btobex_connect':
helomoto.c:62: error: 'userdata' no se declaró aquí (primer uso en esta función)
helomoto.c:62: error: (Cada identificador no declarado solamente se reporta una vez
helomoto.c:62: error: para cada funcion en la que aparece.)
helomoto.c: En el nivel principal:
helomoto.c:95: error: syntax error before 'btobex_disconnect'
helomoto.c:95: error: syntax error before '*' token
helomoto.c: En la función 'btobex_disconnect':
helomoto.c:97: error: 'userdata' no se declaró aquí (primer uso en esta función)
helomoto.c: En el nivel principal:
helomoto.c:105: error: syntax error before 'btobex_listen'
helomoto.c:105: error: syntax error before '*' token
helomoto.c:113: error: syntax error before 'btobex_write'
helomoto.c:113: error: syntax error before '*' token
helomoto.c: En la función 'btobex_write':
helomoto.c:115: error: 'userdata' no se declaró aquí (primer uso en esta función )
helomoto.c:117: error: 'buffer' no se declaró aquí (primer uso en esta función)
helomoto.c:117: error: 'length' no se declaró aquí (primer uso en esta función)
helomoto.c: En el nivel principal:
helomoto.c:121: error: syntax error before 'btobex_handleinput'
helomoto.c:121: error: syntax error before '*' token
helomoto.c: En la función 'btobex_handleinput':
helomoto.c:123: error: 'userdata' no se declaró aquí (primer uso en esta función )
helomoto.c:129: error: 'timeout' no se declaró aquí (primer uso en esta función)
helomoto.c:139: error: 'handle' no se declaró aquí (primer uso en esta función)
helomoto.c: En el nivel principal:
helomoto.c:146: error: syntax error before 'btobex_ctrans'
helomoto.c:147: error: el nombre del campo no está en el inicializador de record  o union
helomoto.c:147: error: (cerca de la inicialización de 'btobex_ctrans')
helomoto.c:147: aviso: la inicialización crea un entero desde un puntero sin una  conversión
helomoto.c:148: error: el nombre del campo no está en el inicializador de record  o union
helomoto.c:148: error: (cerca de la inicialización de 'btobex_ctrans')
helomoto.c:148: aviso: exceso de elementos en el inicializador de escalar
helomoto.c:148: aviso: (cerca de la inicialización de 'btobex_ctrans')
helomoto.c:149: error: el nombre del campo no está en el inicializador de record  o union
helomoto.c:149: error: (cerca de la inicialización de 'btobex_ctrans')
helomoto.c:149: aviso: exceso de elementos en el inicializador de escalar
helomoto.c:149: aviso: (cerca de la inicialización de 'btobex_ctrans')
helomoto.c:150: error: el nombre del campo no está en el inicializador de record  o union
helomoto.c:150: error: (cerca de la inicialización de 'btobex_ctrans')
helomoto.c:150: aviso: exceso de elementos en el inicializador de escalar
helomoto.c:150: aviso: (cerca de la inicialización de 'btobex_ctrans')
helomoto.c:151: error: el nombre del campo no está en el inicializador de record  o union
helomoto.c:151: error: (cerca de la inicialización de 'btobex_ctrans')
helomoto.c:151: aviso: exceso de elementos en el inicializador de escalar
helomoto.c:151: aviso: (cerca de la inicialización de 'btobex_ctrans')
helomoto.c:152: error: el nombre del campo no está en el inicializador de record  o union
helomoto.c:152: error: (cerca de la inicialización de 'btobex_ctrans')
helomoto.c:152: aviso: exceso de elementos en el inicializador de escalar
helomoto.c:152: aviso: (cerca de la inicialización de 'btobex_ctrans')
helomoto.c:153: aviso: la definición de datos no tiene tipo o clase de almacenam iento
helomoto.c:156: error: syntax error before '*' token
helomoto.c: En la función 'btobex_event':
helomoto.c:158: error: 'event' no se declaró aquí (primer uso en esta función)
helomoto.c:159: error: 'OBEX_EV_PROGRESS' no se declaró aquí (primer uso en esta  función)
helomoto.c:161: error: 'OBEX_EV_ABORT' no se declaró aquí (primer uso en esta fu nción)
helomoto.c:165: error: 'OBEX_EV_REQDONE' no se declaró aquí (primer uso en esta función)
helomoto.c:168: error: 'OBEX_EV_REQHINT' no se declaró aquí (primer uso en esta función)
helomoto.c:171: error: 'OBEX_EV_REQ' no se declaró aquí (primer uso en esta func ión)
helomoto.c:174: error: 'OBEX_EV_LINKERR' no se declaró aquí (primer uso en esta función)
helomoto.c:175: error: 'handle' no se declaró aquí (primer uso en esta función)
helomoto.c:178: error: 'OBEX_EV_PARSEERR' no se declaró aquí (primer uso en esta  función)
helomoto.c: En el nivel principal:
helomoto.c:189: error: syntax error before '*' token
helomoto.c: En la función 'btobex_readfile':
helomoto.c:191: error: 'guint8' no se declaró aquí (primer uso en esta función)
helomoto.c:191: error: 'buf' no se declaró aquí (primer uso en esta función)
helomoto.c: En la función 'btobex_plant':
helomoto.c:216: error: 'obex_t' no se declaró aquí (primer uso en esta función)
helomoto.c:216: error: 'handle' no se declaró aquí (primer uso en esta función)
helomoto.c:217: error: 'obex_object_t' no se declaró aquí (primer uso en esta fu nción)
helomoto.c:217: error: 'object' no se declaró aquí (primer uso en esta función)
helomoto.c:218: error: 'obex_headerdata_t' no se declaró aquí (primer uso en est a función)
helomoto.c:218: error: syntax error before 'hd'
helomoto.c:222: error: 'OBEX_TRANS_CUST' no se declaró aquí (primer uso en esta función)
helomoto.c:241: error: 'OBEX_CMD_CONNECT' no se declaró aquí (primer uso en esta  función)
helomoto.c:253: error: 'OBEX_CMD_PUT' no se declaró aquí (primer uso en esta fun ción)
make: *** [helomoto.o] Error 1

Gospel

¿Tienes instaladas las librerías de BlueZ y de OpenObex?

capitan nemo

Esto tengo instalado en mi sistema:
libopenobex-1.0
obexftp
obexserver
qobex
libbtctl


ya con todas las librerias de bluez, el bluezscanner ya lo compile y esta 100% funcional, tambien ya realize intercambio entre la pc y un movil, pero le problema persiste cuando trato de compilar el helomoto, gracias por responder.