jueves, 10 de agosto de 2017

Cómo convertir Raspberry Pi en Rogue BlueTooth Speaker

DirtyTooth Hack, es un ataque basado en Rogue BlueTooth Speakers para los dispositivos iPhone. Ya está liberado el código de DirtyTooth para Raspberry Pi.

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 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
Tras realizar la instalación de las dependencias, instalar 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 tienes los 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!