Conferencia DEFCON 27. Buttplug: Pruebas de penetración real. Parte 1

Los analistas creen que actualmente hay alrededor de 10 mil millones de dispositivos del mundo de Internet de las cosas (IoT). A veces, estos dispositivos ganan su lugar en el mercado, literalmente escalando culos humanos. Resultó que los chips de radio baratos y de baja potencia no solo son excelentes para la automatización del hogar, sino que también cambian la forma en que las personas interactúan con los juguetes sexuales. En este informe, nos sumergiremos en el mundo de la televisión dildonics, la tecnología del sexo a una distancia en la cual las sensaciones táctiles, de temperatura y otras se transmiten entre las parejas a través de una línea de comunicación bidireccional. El orador le dirá que la seguridad de los juguetes electrónicos de sexo anal electrónicos de Buttplug se puede oponer a un atacante que encuentra y explota vulnerabilidades en cada nivel de la pila. En última instancia, esto permite que los juguetes sexuales se vean comprometidos,y los dispositivos a los que se conectan.



Un hacker con el apodo smea, o Smealum, comenzó su carrera como desarrollador de videojuegos para consolas de juegos como la Nintendo DS, tratando simultáneamente de descifrarlos. En algún momento, las consolas adquirieron serios sistemas de seguridad, y Smea cambió del software interno al desarrollo de técnicas para romperlo. Smea es conocido por su "trabajo" en Nintendo 3DS y Wii U, aunque también contribuyó al desarrollo de exploits para los navegadores web y las pilas de virtualización más populares. Probablemente, ahora se interesó en irrumpir en tapones anales "inteligentes".

Hola a todos, soy Smia, y hoy hablaremos sobre cómo romper un tapón de arranque. Este es un objeto que tengo en la mano, no sé si lo has visto antes, personalmente no lo sé. Pero en los últimos 2 años, conocí a muchos representantes interesantes de la industria de IoT, por lo que ahora ha llegado el momento. Puede que se pregunte cómo puede romper un tapón de arranque, porque es solo una pieza de silicona que debe insertarse en algún lugar, y estará de acuerdo en que no hay muchos lugares para esto.

De hecho, esto no requiere ninguna electrónica. Pero en los últimos años, o incluso décadas, ha aparecido una nueva industria de dispositivos electrónicos llamada teledildonika. El origen de este término se muestra en la diapositiva: la palabra griega "tele" significa "de lejos", y el inglés "consolador" no significa más que un consolador. Traté de encontrar el origen de la palabra consolador, pero nadie sabe de dónde vino. Pero esto es comprensible, ¿verdad? La idea es que quieras hacer juguetes sexuales que de alguna manera se puedan controlar desde la distancia.

Hay varios escenarios para esto. Solo quiero explicarte cómo funciona esto, porque no todos están familiarizados con tales dispositivos. Por lo tanto, toma el bootplag, lo inserta donde sea necesario y puede controlarlo de forma remota desde donde quiera: desde su teléfono, computadora portátil, etc. Este es el primer escenario llamado "juego en solitario". El segundo escenario que llamé "multijugador local" es cuando transfieres el control de esta cosa a otra persona. Esto es algo bastante real que a menudo se anuncia: puede, por ejemplo, ir a un bar con ella y nadie sabrá lo divertido que es. Pero técnicamente, esto crea un nuevo vector de ataque, porque le da el control del dispositivo a un extraño, y aquí el modelo de amenaza realmente cambia.

El tercer escenario, "multijugador remoto", es similar al segundo, solo que ahora permite que otra persona controle el dispositivo a través de Internet. Tenga en cuenta que esta persona puede ser un extraño.



Para muchos, tener relaciones sexuales a distancia parece genial y divertido, y no voy a bromear sobre eso. Algunos usan teledildonics para ganarse la vida, y el escenario 3B se llama "multijugador pago remoto". Por lo tanto, el hecho de que estoy tratando de romper el tapón trasero no es solo entretenimiento, sino que le da a mis estudios de penetración cierta justificación.



Muchas personas, no sé cómo llamarlas, niños y niñas, ofrecen entretenimiento sexual dinámico en Internet, lo que permite que otras personas controlen sus juguetes sexuales por dinero. La compañía que produce estos colillas tiene una patente para el concepto de deducciones de ganancias cuando usa sus productos para juegos sexuales en Internet. En este escenario, por deducciones de $ 5, tiene derecho a colocar un enlace, por ejemplo, en Twitter, para brindarle a alguien la oportunidad de administrar su bootplag por un tiempo limitado. Dado que las personas confían en estos juguetes como herramientas para ganar dinero, en mi opinión, es muy importante tener en cuenta su seguridad.

Veamos escenarios que son de interés para los atacantes. El primero es un hack local, cuando un atacante que está dentro del alcance del dispositivo intercepta el control a través de la comunicación inalámbrica. Hubo mucha investigación sobre este método de piratería, por lo que no nos detendremos con nuestra atención.



Técnicamente, dicha intervención puede considerarse como abuso sexual, por lo que sea legal o no, no intente hacerlo. Según el siguiente escenario, un atacante hace lo mismo, pero de forma remota, a través de Internet. Como ya dije, si ganas así, podrías proporcionar voluntariamente a un extraño: un atacante con acceso remoto a tu juguete sexual.

Esto significa que un hacker puede comprometer tus juguetes sexuales "inteligentes" o dispositivos relacionados, en resumen, hacerte algo malo, y es completamente legal, ya que tú mismo le diste acceso. Para un hacker, esta es una opción más interesante, por lo que nos quedaremos un poco más.



El tercer escenario es el opuesto: el atacante mismo usa el complemento de arranque para tomar el control de una computadora o teléfono y piratear dispositivos ubicados en el lado del usuario que participa de forma remota en los juegos con el complemento. La gente no entiende que esto es un riesgo real, pero probablemente te imaginas lo insidiosos que pueden ser los tapones a tope (risas en el pasillo). También estamos explorando este escenario.



Ahora que tiene una idea del mundo de la teledildónica, veamos cómo se ve en la práctica. En la diapositiva, ves un modelo de consolador llamado Lovense Hush, y luego te mostraré una demostración con esta cosa en el aire. Este es el primer modelo de dildo-teledildonics en el mundo, un enchufe anal que se puede controlar desde su teléfono o computadora. Existen aplicaciones para IoS y Android para este boot-plag, puede controlarlo desde una computadora con Mac OS y Windows. Las aplicaciones móviles admiten funciones sociales como chatear, compartir texto, imágenes, videos y controlar juguetes con amigos o extraños.



Para Windows, debe usar una llave USB especial, que mostraré más adelante, porque ahora este complemento de arranque está conectado a mi computadora. La clave de la unidad flash electrónica fue desarrollada por la misma compañía, Lovens, el fabricante del complemento de arranque, que creó su propio ecosistema de consoladores "inteligentes" y toma alrededor de $ 5 de comisión por una sesión en Internet.



La siguiente diapositiva muestra mi visión de un ataque en un enchufe de arranque usando una aplicación de PC. Hay una conexión BLE (BlueTooth Low Energy) entre el enchufe de arranque y la llave USB, la llave está conectada a la computadora del usuario, que a su vez está conectada a Internet. El escenario n. ° 1 lo utiliza un atacante en la sección de la llave USB del conector de arranque, es decir, se ataca la conexión BLE. De hecho, no hay protección, por lo que cualquier extraño puede tomar el control de este juguete. El año pasado, hubo una discusión seria sobre una herramienta llamada BTLE Jack, que le permite atacar con éxito dicha conexión.



El escenario No. 2 consiste en atacar una sección de la conexión a Internet de la computadora de un usuario. El tercer escenario es un intento de piratear cualquiera de los tres sitios: BLE, USB, Internet. Es probable que haya un proyecto abierto Buttplug ... puedes reírte, fue una broma. Entonces, ¿dónde comenzamos nuestra "prueba de penetración verdadera"?



No encontré ningún código o binario para el consolador y el dongle en sí, pero hay archivos de aplicación binarios para dispositivos móviles y una computadora disponible para descargar en Internet. Instalé estos archivos en mi computadora y comencé a trabajar en ellos. En la siguiente diapositiva, verá la interfaz de la aplicación para administrar el complemento de arranque. En el centro de la pantalla hay un control deslizante para ajustar la vibración del juguete, y a la izquierda está el panel de control con botones: acceso a la cuenta, modo de control en la red local, modo de control remoto a través de Internet. Para comprender la estructura de la aplicación, solo necesita leer un poco de código JavaScript confuso.



No me gusta JavaScript, pero lo bueno de esto es la presencia de un montón de nombres de variables y nombres de campos de objetos, y todo esto está perfectamente diseñado en ingeniería inversa. Simplemente suelte el código en Beautifier y descubra cómo funciona. Una vez que haga esto, puede comenzar a comprender el funcionamiento de la llave electrónica.



Al descubrir que esto es solo un puerto serie para conectarse a través de USB, comencé a rastrear el tráfico entre la llave y la aplicación. Preste atención a las líneas a la derecha de la diapositiva: en primer lugar, noté que los mensajes entre el dispositivo de seguridad y la aplicación estaban en formato de texto JSON. Para el código JavaScript, esto es familiar, pero para una llave USB, que es un microcontrolador de 32 bits, incrustar el analizador JSON parece extraño ... Para nosotros es muy conveniente, porque los analizadores JSON generalmente contienen errores de firmware que se pueden usar.



Sin embargo, encontrar errores sin el código de la llave en sí es una tarea tediosa, pero como tenía el código de la aplicación, comencé a buscar un mecanismo para actualizar el firmware de la llave USB y pronto encontré lo que quería: la URL del nodo de actualización. Resultó que el firmware no estaba cifrado o firmado de ninguna manera, así que lo descargué y obtuve un binario para su análisis.



Luego comencé la ingeniería inversa y llamé la atención sobre 2 cosas. En primer lugar, hay 2 controladores de comandos para el puerto USB serie. El primero usa comandos simples como restablecer o tipo de dispositivo, el segundo usa comandos como DFU para actualizar el firmware del dispositivo, de modo que podamos enviar estos comandos y actualizar el firmware.



Después de mirar el analizador JSON, que es de mayor interés para nosotros, descubrí el error esperado: la función parseJsonString. Solo necesita asignar una copia de la cadena original a un nuevo búfer y también trabajar con cosas como secuencias de escape. Al calcular la longitud del nuevo búfer, no coincide con la longitud real utilizada.



Esta función funciona así: admite una secuencia de escape de 5 parámetros U en lugar de, como se esperaba, igualarlos a 0. Gracias a esto, podemos evitar una cadena con terminación nula y hacer que la longitud de la primera cadena calculada sea incorrecta.



Esta pequeña animación muestra lo que está sucediendo aquí. La barra invertida antes de U significa que deben descartarse 6 caracteres. Luego, la función salta a través del terminador nulo, lo cual es un problema. Luego, el proceso continúa, todos los caracteres se copian y caen en el búfer con una longitud de solo 6 bytes. Aquí aparece el segundo problema: el riesgo de desbordamiento del búfer. Esto es genial, pero aún no sabemos cómo funciona el hardware del dongle.



Sabemos con certeza que no tiene aleatorización del espacio de direcciones ASLR, ni pila de cookies, pero es posible que la clave tenga protección como prevención de ejecución de datos DEP o protección XN que impide la ejecución de código en la memoria, excepto para la región .text.

La clave está equipada con un chip SoC NRF51822 con un procesador Cortex M0, sin protección DEP, que es muy popular para dispositivos BLE y está equipado con un montón de contactos de depuración. Por lo tanto, es bastante simple conectarse a esta clave soldando un par de cosas, y depurar a través de la interfaz para depurar y flashear chips SWD si no está deshabilitado en la configuración de fábrica. Al conectarse a través de SWD, podemos vaciar el contenido del montón.

Resulta que se usa solo para el analizador JSON, que no es muy bueno, pero el montón contiene metadatos. Entonces, ¿qué se puede estropear aquí? ¡Por supuesto, metadatos del montón! De esta forma creamos un exploit para el analizador JSON.



Un montón es solo una lista gratuita. Si observa este código, puede ver que cada distribución tiene su propia longitud y puntero. Si usa desbordamiento de búfer, puede estropear la longitud y la posición del siguiente puntero, lo que le permite controlar la ubicación de la siguiente distribución. Al copiar una nueva línea en él, puede organizar fácilmente datos arbitrarios en un lugar arbitrario. Todo esto se puede hacer mientras el depurador está conectado.



En el lado derecho de la diapositiva, verá una pila que se reinicia y se sobrescribe completamente con solo 8 caracteres. Esto nos da la ejecución del código de la llave USB, lo cual es bastante bueno.
Recordé que, desafortunadamente, este dongle tiene un modo de actualización de firmware de DFU de emergencia. Esperaba que, por analogía con la piratería de consolas de juegos, este modo sirve para autenticar la actualización de cualquier manera posible. Resulta que aquí la DFU usa el clásico cálculo de suma de verificación CRC16, que, si comprende la criptografía, no es autenticación de ningún tipo. No creo que realmente quisieran usar la autenticación en este caso, lo más probable es que simplemente decidieran que pocas personas estarían interesadas en ejecutar el código de la llave USB para el enchufe de arranque. Sin embargo, me interesó.



Por el momento, tenía 2 formas diferentes de ejecutar código en este dispositivo, pero el problema con el analizador JSON, en el que pasé mucho tiempo, resultó no ser particularmente efectivo debido a la presencia del modo DFU. Más adelante consideraremos este método junto con la vulnerabilidad del analizador existente. Hasta ahora, he estado más interesado en saber si es posible simplemente modificar el archivo main.bin, volver a calcular su CRC16 e incrustarlo utilizando el programa que se incluye en la aplicación Lovense Remote. Resultó que es posible.
Como resultado, obtuvimos una memoria USB que se vio comprometida al usar una aplicación de PC, y definitivamente fue la parte más fácil de descifrar. Una vez que obtuve el control de la clave, comencé a buscar una forma de ejecutar código en el conector de arranque.



Para hacer esto, recurrí al "hardware" de nuestro juguete sexual, probablemente también tenía un depurador y valió la pena echarle un vistazo. Después de examinar el conector de arranque, encontré un chip más serio, con una gran cantidad de memoria flash y RAM y un procesador Cortex M4 más potente.

Fácilmente descubrí lo que faltaba y lo que estaba a bordo del bootplag. No hay DEP, como en un dongle, en la parte superior hay cables que conducen a la batería, luego está el puerto de carga, los contactos del motor vibrador, varias almohadillas de contacto para la depuración y una antena Bluetooth. Por lo tanto, gracias a la presencia de SWD, el dispositivo se puede actualizar fácilmente.



Ya ves lo que sucedió: no tengo accionista, pero en la bolsa siempre habrá un montón de tapones para los experimentos. Luego comencé la ingeniería inversa y la depuración de la placa de arranque, restableciendo el firmware original. No había analizadores JSON, solo comandos simples, pero en grandes cantidades.

Pensé que si el modo de actualización del firmware del dongle era tan inseguro, entonces es posible que haya vulnerabilidades. Resultó como es. Como resultado de la búsqueda de DFU, encontré 2 cosas: el controlador de comando DFU normal y la línea DfuTarg en el sector de arranque. Este DfuTarg se usa de la misma manera que el identificador del complemento de arranque LVS-Z00, es decir, es similar al gestor de arranque DFU para BLE. Por lo tanto, en modo DFU, el registro de arranque se reconoce como un dispositivo con el nombre DfuTarg, y este identificador único se puede utilizar para buscar el dispositivo.
Entonces, si le envía exactamente el mismo comando DFU que le enviamos a la tecla, la placa de arranque entrará en el modo de actualización del firmware del dispositivo. Para flashear, puede usar las herramientas patentadas del fabricante del microcircuito Nordic Semiconductor - nRF Toolbox.



Con un sniffer de hardware, puede visualizar paquetes BLE en Wireshark.



Envié un breve mensaje "hola desde el enchufe", y esto significa que puede ejecutar el código en el batplag sin ningún tipo de pirateo, y esto no es una vulnerabilidad, sino solo un tipo de diseño de desarrolladores que le permite volver a actualizar el dispositivo. Quizás a la comunidad de código abierto le gustaría esta solución. La conclusión es que cualquiera que pueda conectarse a su complemento de arranque puede ejecutar su propio código en él, y esto ya es algo bastante peligroso. En este caso, el hacker debe estar en el área de la conexión local, es decir, estar lo suficientemente cerca del juguete sexual para obtener el control sobre él a través de un dongle comprometido y un canal BLE. Al mismo tiempo, puede usar el dongle en sí o cualquier otro dispositivo BLE.



La pregunta es, ¿qué se puede hacer realmente con el complemento de arranque, teniendo la oportunidad de ejecutar su propio código en él? Tengo algunas ideas. El primero: tomar el control de esto, puede crear un bootplag de ransomware. Puede modificar su firmware para que el usuario no pueda activar el modo DFU hasta que le proporcione una determinada clave, o simplemente desactive la función de vibración y solicite 50 dólares para desbloquear este útil dispositivo.



Para muchos, esto servirá como una especie de vacuna contra el uso de tales juguetes. La segunda idea es convertir el bootplag en un arma. Tiene una batería bastante potente que alimenta el motor del vibrador, podemos decir que el 80% del contenido del enchufe de arranque es una batería. Probablemente recuerde lo que sucedió con los teléfonos inteligentes Samsung Galaxy Note: simplemente explotaron (risas), por lo que es probable que esto pueda suceder con los enchufes a tope. No sé cuál es la probabilidad de su explosión, pero si tienes muchos juguetes sexuales con motor, deberías pensarlo. El equipo de desarrollo afirma que estas cosas son absolutamente seguras, a pesar de la presencia de muchas partes móviles. Pero si este es el caso, la función de seguridad del dispositivo está codificada en software, no en hardware.En este caso, la ejecución de código malicioso puede tener consecuencias desastrosas.

Los juguetes sexuales equipados con una bomba de aire también son peligrosos. También tienen un motor bastante potente con batería, por lo que también debes prestarles atención.
Finalmente, la última idea es un complemento de batalla hostil. Hostil, no en el sentido de que sea capaz de explotarte, sino en el hecho de que puede servir como un medio para hackear el resto de tus dispositivos. Por lo tanto, consideraremos el complemento de batalla desde el punto de vista de su hostilidad, que se garantiza mediante la ejecución de código malicioso.

Intentemos averiguar si es posible lograr la ejecución del código en la aplicación para el complemento de arranque considerando cómo procesa los mensajes entrantes.



A la izquierda, verá una devolución de llamada en JavaScript, y a la derecha, cómo interactúa con la aplicación a través del puerto serie. La devolución de llamada se coloca en una cadena y luego se procesa mediante un montón de funciones diferentes.

La primera función es encontrar la clave, procesa los mensajes de inicialización que provienen de la clave. La segunda función está activada ("Datos"), una función de procesamiento que acepta un paquete JSON entrante, cuya longitud, por cierto, no puede exceder los 32 caracteres. A continuación, se analiza y todo lo demás está hecho. De hecho, aquí no hay un procesamiento serio: solo se solicita el estado del dispositivo, verificando la carga de la batería y similares.

La última función es mucho más interesante: lo llamo el registro de depuración, aunque en realidad no tiene nombre en el código real. Esta función registra todo lo que ingresa al dispositivo a través del puerto serie y restablece estas líneas a la consola, que si es necesario muestra un mensaje de error. Además, esta función crea un nuevo elemento DOM como elemento HTML y arroja todo el contenido recibido a través del puerto serie a este HTML. No soy un desarrollador web, pero creo que esta es una vulnerabilidad grave de XSS.

Por lo tanto, si tiene control sobre el dongle, puede enviar cualquier cosa a través del puerto serie, lo que obliga a la aplicación a interpretar esto como HTML. Este es el problema, porque HTML tiene la capacidad de crear un nuevo código JavaScript en una aplicación instalada en su computadora, es decir, puede comprometerlo. La pregunta es qué malware se puede inventar, sabiendo que solo se permiten 32 caracteres a la vez.

22:00 min

Conferencia DEFCON 27. Buttplug: prueba de penetración genuina. Parte 2


Un poco de publicidad :)


Gracias por estar con nosotros. ¿Te gustan nuestros artículos? ¿Quieres ver más materiales interesantes? Apóyenos haciendo un pedido o recomendando a sus amigos, VPS en la nube para desarrolladores desde $ 4.99 , un análogo único de servidores de nivel básico que inventamos para usted: toda la verdad sobre VPS (KVM) E5-2697 v3 (6 núcleos) 10GB DDR4 480GB SSD 1Gbps desde $ 19 o cómo dividir el servidor? (las opciones están disponibles con RAID1 y RAID10, hasta 24 núcleos y hasta 40GB DDR4).

Dell R730xd 2 veces más barato en el centro de datos Equinix Tier IV en Amsterdam? ¡Solo tenemos 2 x Intel TetraDeca-Core Xeon 2x E5-2697v3 2.6GHz 14C 64GB DDR4 4x960GB SSD 1Gbps 100 TV desde $ 199 en los Países Bajos!Dell R420 - 2x E5-2430 2.2Ghz 6C 128GB DDR3 2x960GB SSD 1Gbps 100TB - ¡desde $ 99! Lea sobre Cómo construir un edificio de infraestructura. clase c con servidores Dell R730xd E5-2650 v4 que cuestan 9,000 euros por un centavo?

All Articles