TL; DR El U-Tec Ultraloq UL3 se puede desbloquear a través de escrituras características BLE GATT de un usuario no autorizado debido a un cifrado débil.
Este video muestra el script en acción y desbloqueando el candado.
Antecedentes:
Spanalytics examina periódicamente el espacio de seguridad de IoT en busca de vulnerabilidades de implementación de protocolos y protocolos publicados. La vulnerabilidad U-Tec Ultraloq BLE publicada en junio de 2019 por PenTest Partners fue una de esas vulnerabilidades que llamó nuestra atención. Compramos un candado para investigación y luego lo reservamos hasta agosto de 2020 cuando Tripwire Research publicó un informe sobre las vulnerabilidades que habían encontrado en Ultraloq. En ese momento, Spanalytics se estaba preparando para una próxima demostración programada para el mes de RIot Virtual Developer en septiembre. La demostración se titulaba "Qué buscar en el tráfico de Bluetooth" y parecía una buena razón para usar Ultraloq y ver si podíamos replicar el éxito de Pen Test Partners al romper el bloqueo de BLE. Esta publicación de blog detallará el trabajo y los resultados de la prueba Ultraloq BLE.
Pruebas:
La publicación de blog de Pen Test Partners sobre la vulnerabilidad de bloqueo nos dio un punto de partida.
Esta publicación de blog nos proporcionó el UUID característico de BLE GATT. Entonces, primero, intentamos conectarnos a la cerradura y leer la característica.
Figura 1 Conexión exitosa de gatttool y lectura característica de UUID
La cerradura aceptó nuestra solicitud de conexión y respondió con el valor característico de GATT. Entonces, la siguiente pregunta era cómo usar ese valor para desbloquear el candado.
La publicación del blog Pen Test Partners nos dijo que hay una clave AES hecha del token concatenado con la cadena 'Anviz.ut'. Eso fue útil, pero aún necesitábamos conocer el comando de desbloqueo y algunos detalles más sobre el cifrado AES. Luego giramos para mirar la aplicación. Sabíamos que la publicación de Pen Test Partners había estado disponible durante más de un año y, según la publicación del blog, no había una solución para la clave de cifrado BLE obtenible, por lo que supusimos que la versión actual de la aplicación se ofuscaría para dificultar la ingeniería inversa. Un vistazo rápido a los resultados de ejecutar la aplicación de Android u-tec apk a través de jadx confirmó que ese era el caso.
Figura 2 Salida de utec apk de JADX
Luego buscamos una versión anterior de la aplicación. Las versiones anteriores eran fáciles de encontrar con una búsqueda rápida en Google, y seleccionamos una versión con una fecha de lanzamiento anterior a la publicación del blog Pen Test Partners. Ejecutar el apk a través de JADX para obtener Java dio mejores resultados y una gran cantidad de código para revisar.
esto parece prometedor
Figura 3 Salida de la aplicación ultraloq de JADX
Una búsqueda en la cadena 'Anviz.ut' o el UUID del token arrojó algunos resultados útiles. La siguiente diapositiva muestra algunos extractos de código que muestran la formación de la clave.
Figura 4 Código de la aplicación que muestra la formación de la clave a partir de una cadena fija y lectura de token sobre BLE
A continuación, capturamos el tráfico de Bluetooth entre la aplicación y la cerradura usando Panalyzr.
Figura 5 Spanalytics Panalyzr
Figura 6 Panalyzr capturó datos BLE entre la aplicación y la cerradura
Al observar el tráfico de Bluetooth capturado por Panalyzr, vemos la siguiente secuencia de mensajes en el tráfico entre la aplicación y la cerradura.
Figura 7 Secuencia de mensajes de aplicación y bloqueo
Después de otro vistazo a la aplicación descompilada, determinamos la configuración de cifrado AES y escribimos un script para descifrar el tráfico rastreado. El código de la aplicación descompilado mostró que el primer byte del marco es el valor máximo de un byte. Esto proporcionó una forma de verificar que obtuvimos el descifrado correcto. A partir de la aplicación descompilada, sabíamos que un cuadro debería comenzar con 7f, seguido de la longitud del cuadro y el valor del comando. La aplicación descompilada también nos indicó el valor del comando de desbloqueo, por lo que sabíamos qué buscar en el cuarto byte.
Figura 8 Código para la formación de datos BLE desde la aplicación
Después de verificar que habíamos descifrado correctamente los comandos, usamos la misma configuración de cifrado para cifrar los comandos y desbloquear el bloqueo. Aquí hay una captura de pantalla de la captura de Panalyzr de los comandos enviados a la cerradura.
Figura 9 Panalyzr capturó datos entre nuestro script y la cerradura
Y aquí hay una captura de pantalla de la salida del script (con un token diferente al de los datos capturados, ya que se tomó en un momento diferente).
Figura 10 Salida del script de desbloqueo
Se puede ver una demostración de esta vulnerabilidad de Ultraloq en una presentación en vivo en "Qué buscar en su tráfico de Bluetooth" presentado como parte de la semana 3 del mes de desarrolladores virtuales de RIot. La presentación de Spanalytics comienza a las 26:30 en el video, y la demostración de bloqueo comienza a las 1:09: https://youtu.be/H7nB_wkgLBQ
Ultraloq tiene vulnerabilidades más allá de BLE, según lo documentado por Pen Test Partners y Tripwire Research en las siguientes publicaciones de blog:
Socios de prueba de penetración: El candado no tan ultra
Investigación de cable trampa: La vulnerabilidad de IoT Smart Lock destaca problemas más grandes
¿Y qué hay de esta declaración del blog Pen Test Partners? “Como el código de la cerradura es un número entero de seis dígitos, esto hace posible intentar un ataque de fuerza bruta contra la cerradura a través de la interfaz BLE”.
Nuestras pruebas se limitaron a demostrar que podíamos desbloquear un candado después de capturar un ejemplo de comunicación entre el candado y la aplicación. Parece un ataque plausible, pero no intentamos probar un ataque de fuerza bruta en una cerradura donde la comunicación no se capturó previamente.
¡Gracias por leer!
Por favor Contáctenos para obtener más información o para participar en el programa beta de PANalyzr.