jueves, agosto 10, 2017

La implementación de DirtyTooth Hack para Raspberry Pi: Cómo convertir Raspberry Pi en Rogue BlueTooth Speaker

En la pasada RootedCON presentamos el DirtyTooth Hack, un ataque basado en Rogue BlueTooth Speakers para los dispositivos iPhone. Como hacer la integración hardware con algunos BlueTooth Speakers no es trivial - como vimos con el Marshall KillBurn -, decidimos hacer una implementación del DirtyTooth Hack en Raspberry Pi. Y ya está liberado el código de DirtyTooth para Raspberry Pi.

Figura 1: La implementación de DirtyTooth Hack para Raspberry Pi.
Cómo convertir tu Raspberry Pi en un Rogue BlueTooth Speaker

Con una Raspberry Pi 3 u otra Raspberry Pi anterior con un dongle USB BlueTooth, podemos convertir nuestra Raspberry Pi en un Rogue BlueTooth Speaker y poder llevarnos de regalo los contactos de todos los dispositivos iPhone que se conecten a él.

Figura 2: DirtyTooth para Raspberry Pi

Para instalar el paquete dirtytooth.deb necesitamos tener un Raspbian Jessie y las dependencias necesarias instaladas que podemos instalar con:
sudo apt-get updatesudo apt-get install pi-bluetooth libbluetooth-dev python-dev python-dbus python-pip python- gobject python-gobject-2 git pulseaudio pulseaudio-module-bluetooth
Y tras realizar la instalación de las dependencias, instalarlo el paquete con dpkg:
sudo dpkg -i dirtytooth.deb
Figura 3: Instalación del paquete DirtyTooth

Se pueden realizar todos estos pasos de manera automática utilizando el script install.sh que acompaña. Para el funcionamiento son necesarias algunas librerías para Python que se descargarán automáticamente al instalarse el .deb, pero en caso de tener algún problema con la instalación, por ejemplo si se cae la conexión a Internet en medio de la instalación o los enlaces al GitHub se hubieran caído o cambiado, son PyBluez, nOBEX y psutil. La librería PyBluez y psutil pueden instalarse directamente desde pip en las versiones testeadas:
sudo pip install pybluez==0.22 sudo pip install psutil==5.2.2
Sin embargo, nOBEX la descargaremos desde su GitHub y las instalaremos manualmente, ya que no existe actualmente en los repositorios pip:
git clone https://github.com/nccgroup/nOBEX.git cd nOBEX
git reset --hard 0583c72
sudo python setup.py install
Nota: Nos posicionamos en el commit 0583c72 porque es el que hemos probado que funciona. Si en un futuro hay cambios en el repositorio no podemos asegurar el funcionamiento, por tanto instalamos desde el commit probado.
Una vez instalado, el funcionamiento de DirtyTooth es muy sencillo. Podemos consultar su ayuda del paquete para tener más detalles: dirtytooth --help 

Figura 4: Ayuda de DirtyTooth Package

Aquí vemos que la forma de utilizarlo es muy simple, podemos activar o desactivar el agente, que es necesario para poder encontrar el Rogue BlueTooth Speaker que hará el DirtyTooth Hack y también podemos obtener la agenda si sabemos la dirección MAC del dispositivo. Para el iniciar y parar el agente debemos ejecutarlo con: sudo dirtytooth --start

Figura 5: DirtyTooth Hack en ejecución, capturando datos de un dispositivo conectado

Una vez que el proceso está arrancado, cada vez que se conecte un dispositivo por BlueTooth se llamará automáticamente a la ejecución de dirtytooth con la dirección MAC del dispositivo conectado y se guardarán los resultados en la carpeta /root/dirtytooth.

Es necesario saber que para ejecutar el comando manualmente con una dirección MAC específica, el dispositivo tiene que estar conectado en ese momento y ejecutarlo con el siguiente formato:
sudo dirtytooth --mac AA:BB:CC:DD:EE:FF
Los resultados que se guardan son dos: la agenda de contactos y el histórico de llamadas. Al tratarse de Bluetooth 2.1 o superior (Bluetooth 4.0 en el caso concreto de la Raspberry Pi 3) no es necesario poner el PIN o Token de Pareado y se conectará automáticamente al intentar realizar la conexión con el dispositivo.

Figura 6: Instalación y Uso de DirtyTooth Package en Raspberry Pi

El resultado final ya lo conocemos, una vez que el móvil se conecta a nuestro “Rogue BlueTooth Speaker” al cabo de unos segundos se cambiará el perfil de audio por el PBAP accediendo a la agenda del teléfono conectado y guardando una copia de los contactos. Posteriormente se pueden usar los datos recogidos para hacer OSINT y obtener información de interés sobre los contactos obtenidos. En este charla tenéis las demos y la explicación completa.

Figura 7: DirtyTooth Hack: It´s Only Rock'n Roll but  I Like it en Open Expo 2017

Para una mejor experiencia de uso, se puede poner un arranque automático del dirtytooth cada vez que iniciamos la terminal, especialmente útil en un sistema lite como Raspian Jessie Lite y con la configuración de inicio de sesión automático, ya que de esta manera arrancará el agente nada mas encender la Raspberry Pi y el altavoz estará preparado. En el caso de la versión con escritorio, se arrancará al iniciar la terminal. Para hacer esto basta con añadir las siguientes lineas al fichero .bashrc:
DIRTY=$(ps cax | grep -v grep | grep dirtyagent) if [ "$DIRTY" == "" ] ; then
pulseaudio -D
/usr/lib/dirtytooth/start fi
Enjoy it!

Autor: Álvaro Núñez - Romero (@toolsprods), Security Researcher en ElevenPaths

*********************************************************************************
- Dirtytooh hack site
- Libro de Hacking iOS: iPhone & iPad [2ª Edición]
- Conferencia DirtyTooth Hack en OpenExpo 2017
- DirtyTooth Hack: It´s only Rock'n Roll but I like it (I de V)
- DirtyTooth Hack: It´s only Rock'n Roll but I like it (II de V)
- DirtyTooth Hack: It´s only Rock'n Roll but I like it (III de V)
- DirtyTooth Hack: It´s only Rock'n Roll but I like it (IV de V)
- DirtyTooth Hack: It´s only Rock'n Roll but I like it (V de V)
- DirtyTooth Hack: Reemplazar el módulo Bluetooth en Marshall Killburn
- DirtyTooth Hack: Seminario en Vídeo
- DirtyTooth para Raspberry Pi
*********************************************************************************

3 comentarios:

Joel GM dijo...

Lo primero, felicidades por vuestro gran trabajo =)
En esa misma RootedCON pregunté por lo que hoy estáis presentando, y me gustaría aprovechar la ocasión para preguntar algo que se me ocurrió más tarde: Si mal no entendí en la charla, los contactos se obtienen una vez que el perfil cambia a A2DP. Por tanto, y si estoy en lo cierto, se podría acceder al micrófono del terminal. Os habéis planteado incorporar una función para escuchar o grabar el micrófono? O incluso, llevándolo más allá, poder “hablar” con la víctima enviando audio y obteniendo las respuestas? Creo que las posibilidades de DirtyTooth son infinitas y podrían utilizarse en um entorno de pentesting/hacking ético. Espero con ansias futuras versiones y que disfrutéis con ello tanto como yo, saludos!

Unknown dijo...

tenga una duda horrible, al momento de ejecutar dirtytooth me confirma que el telefono accedio pero no puedo ver los registros, a que se debe?

Klaus Sperber dijo...

Hay algo así para android?

Entrada destacada

10 maneras de sacarle el jugo a tu cuenta de @MyPublicInbox si eres un Perfil Público

Cuando doy una charla a algún amigo, conocido, o a un grupo de personas que quieren conocer MyPublicInbox , siempre se acaban sorprendiendo ...

Entradas populares