Amir Etemadi: Doy la bienvenida a todos y bienvenidos a la presentación de GTVHacker "Hackear todo: 20 dispositivos en 45 minutos". Hemos sido los creadores de los productos originales de Google TV desde 2010, así como de productos como Chromecast, Roku y Nest, y también lanzamos exploits para todos los dispositivos de Google TV.

Entonces quienes somos Soy un científico investigador en Accuvant Labs, creado por GTVHacker, CJ es un líder de equipo e investigador de seguridad, y también ocasionalmente actúa como desarrollador de tecnología. Hans Nielsen es consultor senior de seguridad de Matasano, mientras que Mike Baker desarrolla firmware y es cofundador de OpenWRT.
Hay 8 miembros en nuestro grupo, incluido Gynophage, en este momento está involucrado en algo llamado DefCon CTF, Jay Freeman, creador de Cydia, estudiante Coa Hoang y Tom Dwenger, el mayor especialista en APK y todo lo relacionado con Java.
Entonces, ¿por qué decidimos hackear dispositivos, por qué no software que tampoco nos gusta? Ya sabes, cuando un dispositivo se vuelve obsoleto, llega al final de su vida útil, simplemente se arroja a un vertedero. De hecho, los dispositivos antiguos están matando, y no sirve de nada hacer esto, como sucedió con Logitech Revue.
Le damos nueva vida a los dispositivos desechados, y también siempre nos esforzamos por mejorar el producto, darle más funciones y, si podemos hacerlo, lo hacemos. Nos gusta responder a desafíos técnicos, ya sabes, es como acertijos que te gustaría resolver.
Estudiar, por supuesto, es un proceso sorprendente, pero la esencia de esta presentación se puede expresar en palabras:
"¡Tienes una raíz!"

Esencialmente, "piratear 20 dispositivos en 45 minutos", es decir, durante la presentación, no nos deja mucho tiempo para dedicarlo en detalle a cada dispositivo. Por lo tanto, le mostraré una muestra de dispositivos que entrarán en nuestro Wiki justo después de la presentación. Le presentaremos los detalles técnicos, diagramas de equipos, todo lo que podamos, porque es bastante difícil de leer. En la parte inferior de la diapositiva, verá un enlace, puede usarlo después de la presentación para obtener acceso a todo lo que se muestra durante esta demostración. Y ahora doy la palabra a mi colega, que le informará sobre la "perspectiva de los ataques".
Hans Nielsen: Hay infinitas formas de atacar dispositivos de este tipo. Hoy, utilizando el ejemplo de estos 20 dispositivos, consideraremos 3 métodos principales de piratería.
El primero es el uso de puertos de depuración ubicados en los propios dispositivos. El segundo método: podemos usar puertos serie o tarjetas de memoria EMMC, esta es una versión desactualizada de las tarjetas SD para conectarse al dispositivo y modificar el almacenamiento. El tercer método es obtener acceso directo al sistema operativo, lo que le permite implementar una gran cantidad de comandos a través de la línea de comandos para causar los errores más comunes de electrónica de consumo.
Entonces, hablemos de UART, un transceptor asíncrono universal. Los desarrolladores lo utilizan para depurar equipos y ya no lleva ninguna carga funcional. Esta es una interfaz muy simple: un cable es para transmisión, el otro para recepción y el tercero sirve como tierra.

Me preguntan cuántos años tengo. Respondo, tengo 27 años, ¡gracias por su pregunta! Entonces, aquí se usa un protocolo de intercambio de datos muy simple, y el puerto en sí funciona con un voltaje de diferentes niveles, por ejemplo 1.8V, 3.3V o 5V y es un puerto serie, similar a los puertos USB en una computadora.
Por lo tanto, tiene varios adaptadores gratuitos que le permiten jugar con sus propios dispositivos, y espero que obtenga el mayor beneficio posible de ellos. Entonces, ¿cómo puedes usar UART?
Considere un dispositivo específico: el MFP Epson Artisan 700/800, es una impresora, un escáner y una copiadora, que se puede utilizar como impresora de red. Está controlado por Linux 2.6.21 - arm1. ¿Qué se puede hacer con eso? Si abre la caja, puede ver la placa de circuito impreso en la que se encuentran 4 contactos: recepción, transmisión, conexión a tierra, alimentación. Esta es una opción clásica de conexión UART.

Después de conectar nuestro puerto de depuración aquí, vimos un menú de consola con la configuración de la impresora.

Podemos reiniciar la impresora, restablecer la configuración, ejecutar un comando de shell arbitrario, ejecutar cualquier comando que necesitemos, en general, divertirse jugando con nuestra impresora.
El segundo dispositivo es un socket inteligente Wekin de Belkin con control de Internet. Le permite usar un teléfono móvil para encender su cafetera y otros electrodomésticos a través de Internet y es ampliamente utilizado por diferentes personas.

Este es un dispositivo bastante pequeño, por lo que leer la notación en la placa de circuito impreso es bastante difícil. Pero encontramos los contactos del receptor y el transmisor y les conectamos UART. Después de eso, Internet informó que el dispositivo estaba parcheado, pero esto no era cierto. Resultó que teníamos solo 2 segundos para ingresar un comando, después de lo cual el dispositivo se reiniciaba automáticamente.

En el momento adecuado, logramos ingresar un comando que "eliminó" el script de reinicio, después de lo cual pudimos hacer lo que queramos con este socket inteligente.
El tercer dispositivo fue la lámpara inteligente Greenwave Reality, un competidor de Phillips Hue, que utiliza el protocolo de red de nivel superior ZigBee, se ha dicho mucho al respecto. Es curioso que use un microprocesador PowerPC. Durante el inicio, esta lámpara proporciona un servidor SSH del que no teníamos una contraseña.

Cuando abrimos el caso, también encontramos contactos para UART. Este dispositivo estaba equipado con un cargador de arranque U-boot universal de arranque abierto que carga y ejecuta Linux. Con este gestor de arranque, puede hacer cualquier cosa: actualizar el dispositivo, cambiar la línea de comando del núcleo. Puede acompañar el arranque de Linux con una variedad de opciones, por ejemplo, permitiéndole averiguar la cantidad de memoria del dispositivo. Logramos obtener derechos de root cambiando la línea de comando del gestor de arranque. Para hacer esto, nos conectamos a través de UART, insertamos el módulo bin / sh en la línea de comando del núcleo, y así fuimos al shell del cargador de arranque.

Para usar el dispositivo de forma segura en el futuro, desciframos la contraseña de thinkgreen para acceder a los derechos de root.
El cuarto dispositivo es File Transporter, una unidad flash con la capacidad de transferir datos a través de la red. Este es un tipo de "nube" portátil que utiliza un disco duro grande del HDD de formato clásico con una capacidad de 1 TB para almacenar archivos. Puede conectarlo a su red doméstica y acceder a archivos en varios dispositivos domésticos.

Esta "transferencia de archivos" apareció recientemente en el mercado y es un tipo de dispositivo bastante estándar que ejecuta Linux. Esto es algo bastante divertido, y después de quitarle el estuche, encontramos fácilmente un adaptador para conectar UART.

El cargador de arranque U-boot también se usó aquí, de modo que, como en el caso anterior, pudimos obtener derechos de root utilizando la línea de comando del kernel. Esto nos dio la oportunidad de cambiar la contraseña de root y obtener acceso al dispositivo.

El quinto dispositivo fue el reproductor de medios de red Vizio CoStar LT modelo ISV-B11. Proporciona acceso al canal CoStar, que solía ser parte de la red de Google TV. Este reproductor multimedia se conecta a otros dispositivos a través de Internet o por cable a través de la salida HDMI.

Puede parecer curioso que Google TV ya no exista, pero todavía existe nuestro grupo llamado GTVHacker. Entonces, en la esquina superior izquierda de la placa de circuito impreso, las letras blancas indican el conector clásico para conectar UART de 4 pines en una fila. Aquí tuvimos algunas dificultades para comunicarnos con el núcleo, porque después de enchufar la "unidad flash USB", recibimos el mensaje "" sistema de archivos incomprensible en una unidad flash ". Lo formateamos a FAT32, luego de lo cual apareció un mensaje: "No puedo encontrar fs.sys". Parecía sospechoso, así que investigamos un poco.
Como resultado, se concluyó que durante el arranque, debe tener ambos archivos en la unidad flash USB: fs.sys y safe-kernel.img1. El primer archivo es un descargador de imágenes de script U-Boot que contiene comandos arbitrarios de U-Boot que se ejecutan en el momento del arranque. Utilizamos la misma técnica que cuando pirateamos el dispositivo anterior. La modificación de la línea de comando del núcleo nos dio la oportunidad de hackear el núcleo y obtener privilegios de root. Para descargar un kernel completamente nuevo, puede usar una combinación de estos dos archivos ubicados en una unidad flash que simplemente se conecta al UART.
Staples Connect, el modelo Linksys Zonoff, fue el sexto dispositivo que pirateamos. Este es otro pequeño centro de automatización del hogar, un centro que comunica dispositivos domésticos de diferentes marcas y tipos. Está equipado con un módulo Wi-Fi y un puerto USB para conectar un disco duro y se basa en el uso de la tecnología en la nube.
En la placa de circuito, encontramos un bloque con enchufes de contacto. Acortamos los pines de la memoria NAND 29/30, debido a que se produjo un error al cargar el entorno U-Boot y el dispositivo se reinició. Configurando el tiempo de espera predeterminado, ejecutamos el comando setenv bootargs "console = ttyS0,115200 init = / bin / sh [...]", arrancamos en la consola raíz. Al agregar la línea # dropbear - d 222, pudimos modificar, guardar y editar el U-Boot. Para acceder a la raíz, se usó la contraseña SSH de oemroot, que logramos descifrar con relativa facilidad. Y ahora quiero presentarte a CJ.

CJ Jerez: Quiero hablar con usted acerca de las tarjetas de memoria no volátiles en formato eMMC: tarjeta MultiMedia integrada. Se basan en un chip de tarjeta de memoria SD estándar. Esto es algo genial que incluye un módulo flash y un controlador flash. En este caso, no necesita preocuparse por ningún bit mágico adicional.

Una tarjeta de memoria normal contiene bits adicionales que manejan errores y contienen código de corrección de errores; esta función está destinada a desarrolladores. La tarjeta de memoria eMMC usa un sistema de archivos normal, y el acceso a ella es a través de un lector de tarjetas multimedia barato, que lee las tarjetas SD regulares y el eMMC igualmente bien. Dado que esta tarjeta es estructuralmente un chip BGA montado en la superficie, sus hallazgos son bolas de soldadura depositadas en la parte posterior de la almohadilla. Para trabajar con dicha tarjeta, debe identificar estos contactos, es decir, necesitamos ciertas bolas para conectar el depurador.
Para encontrar los contactos necesarios, primero examinamos el diseño de la placa, todo tipo de adhesivos, etiquetas debajo de las resistencias, trazado del sustrato impreso y contactos en el otro lado de la placa. Luego aprovechamos la intuición y el análisis lógico, y después de eso sacamos el chip y nos aseguramos de que no funcionara. Pudimos conectar esta tarjeta al lector MMC y restablecer la configuración.
Ahora hablemos de nuestro séptimo dispositivo, este es un decodificador de Amazon Fire TV con control remoto.

Está equipado con un procesador Snapdragon 600 de 4 núcleos a 1,7 GHz y una unidad de memoria eMMC de 8 GB, y está controlado por una versión modificada de Android 4.2.2 llamada Fire OS 3.0.
Después de abrir el estuche, comenzamos a buscar el pinout eMMC, y durante la búsqueda arruinamos un dispositivo, porque rompimos uno de los contactos cuando sacamos el chip eMMC, por lo que tuvimos que trabajar en la segunda copia del decodificador.

A la izquierda en la diapositiva muestra la ubicación de los contactos eMMC, a la derecha - contactos UART a 1.8V.
Después de descifrar con éxito este decodificador, tomamos el dispositivo número 8: Hisense Android TV, un televisor inteligente con Android, este es un tipo de Google TV, que fue renombrado. Utiliza uno de los últimos procesadores, el Marvell MV88DE3108 de 4 núcleos. En la conferencia DefCon del año pasado, mostramos cómo omitir el arranque en modo seguro para los procesadores de esta línea debido a un pequeño error en su firmware.

La siguiente diapositiva muestra cómo buscan los contactos para conectar un depurador. Son lo suficientemente pequeños, pero no necesitamos extraer el chip de memoria flash.

Tuve que hacer un procedimiento bastante extenso para este dispositivo: primero monte la sección de configuración de fábrica "factory_settings" usando el comando / dev / mmcblk0p3, que se guardó entre descargas, luego use el modo antiguo # chmod 4755 su, también puede usar el programa para obtener derechos de Super root SU. Además, a través del puente de depuración "ADB" de Android, puede modificar el sistema operativo, que es muy similar al Android original.
Entonces, sigue adelante. Nunca digas: "El dispositivo X no puede ser pirateado". En 2011, el servicio postal de USPS publicó un comercial que decía que "el refrigerador no puede romperse". Esta empresa se ha posicionado como líder en seguridad de refrigeradores. Puede ver un video sobre esto en YouTube
aquí . Lo tomé como un desafío. No tenía los $ 3,000 adicionales para probar esta declaración en el nuevo refrigerador, pero en el basurero puedes encontrar cualquier cosa, incluidas partes de los refrigeradores desechados. Logré obtener el llenado electrónico del LG Smart Refrigerator, modelo LFX31995ST, con un sistema operativo Android 2.3 un poco anticuado. Este es el noveno dispositivo que pudo descifrar.

El "cerebro" del refrigerador controlaba la congelación, la temperatura de los alimentos, la fabricación de hielo, el consumo de agua potable, y el dispositivo en sí estaba equipado con un módulo Wi-Fi, un puerto USB y una tarjeta de memoria SD.
En la placa de circuito impreso había contactos UART, lo que le permitía descargar la consola Root y el chip eMMC. Esto hizo posible montar el sistema, como en el caso de Fire TV, insertar el gestor de arranque de Android y descargar el binario de superusuario. Resultó que el parámetro ro.secure = 0, es decir, el dispositivo ya tenía acceso de superusuario. Probablemente, los desarrolladores estaban seguros de que nadie aprovecharía esta oportunidad.
Luego comenzamos a escribir comandos. Observo que nunca debe confiar en los datos que ingresa el usuario y nunca usar comandos de shell. Al ingresar el comando ls% s con el parámetro “; reiniciar” se obtuvo el resultado de ls; reiniciar, después de lo cual el sistema se reinició con éxito.
El Anexo N ° 10, que demostró perfectamente las capacidades de piratería, fue el Vizio Smart TV, modelo VF552XVT, que se basa en la serie de televisores inteligentes BCM97XXX Yahoo Powered Smart TV. A pesar de que esta plataforma está desactualizada, todavía se usa ampliamente.

Este es uno de los últimos televisores con retroiluminación LED, que es notablemente más delgado que los modelos LCD.
La inyección de línea de comandos aquí es a través de una contraseña de Wi-Fi, que es una versión más moderna del depurador UART a través de un puerto USB.

Si configura el modo Wi-Fi, puede ingresar al menú y conectarse al punto de acceso Wi-Fi. Si logra ingresar los comandos que se muestran en la diapositiva, obtendrá acceso a la raíz del sistema.
Para hacer esto, utilizamos un adaptador USB UART y luego ingresamos una cadena de varios caracteres que le indicaron al núcleo dónde enviar los datos. Después de un par de minutos, recibimos un error de entrada de datos y luego ingresamos un comando bash 2 largo, lo que significaba que todos los datos provenientes de este dispositivo deberían enviarse al shell, y todos los datos del shell deberían enviarse al dispositivo. Por lo tanto, pudimos obtener derechos de root a través de USB UART.
El dispositivo número 11 era el reproductor de Blu-ray Sony BDP-S5100 con un procesador MTK 8500 con OC Linux. Está equipado con Wi-Fi, acceso a servicios de visualización de películas en línea Netflix, VUDU, etc.

Otro reproductor de Blu-ray en el mismo chipset es el dispositivo número 12, el LG BP530, con una funcionalidad similar.

Descubrimos que ambos dispositivos tienen el mismo error de firmware del chipset que admite el uso de SDK.
Si coloca un archivo vacío llamado "vudu.txt" en una carpeta llamada "vudu" en la unidad flash USB, y crea un exploit "vudu.sh" que contiene las siguientes líneas:
mount –t overlayfs –o overlayfs /etc/passwd echo "root::0:0:root:/root:/bin/sh" > /etc/passwd /mnt/rootfs_normal/usr/sbin/telnetd
Entonces puedes hacer lo siguiente.
Inicie el servicio VUDU, ejecutará el script de shell como superusuario y podrá utilizar libremente la conexión a través de la red Telnet. Esto se puede hacer con todos los reproductores en el chipset MTK 8500, incluido el siguiente dispositivo en el número 13: el reproductor de Blu-ray Panasonic DMP-BDT230.

Es muy simple La siguiente diapositiva muestra una placa de circuito impreso que tiene casi el mismo diseño para todos los jugadores mencionados. Hay una salida de consola 115200 8n1 a la que puede conectar un UART. Esto fue muy importante para nosotros, ya que nos permitió detectar el error anterior durante la depuración. Sin embargo, existe otra posibilidad de inyectar la línea de comando a través de la consola raíz utilizando el menú en pantalla, ya que el nombre de la carpeta de red no se verifica antes de su uso.

Por lo tanto, puede obtener derechos de superusuario y administrar todas las capacidades de los dispositivos a su discreción.

24:10 min
Conferencia DEFCON 22. Grupo GTVHacker. Hackea todo: 20 dispositivos en 45 minutos. Parte 2Gracias por quedarte con nosotros. ¿Te gustan nuestros artículos? ¿Quieres ver más materiales interesantes?
Apóyenos haciendo un pedido o recomendándolo a sus amigos, un
descuento del 30% para los usuarios de Habr en un análogo único de servidores de nivel de entrada que inventamos para usted: toda la verdad sobre VPS (KVM) E5-2650 v4 (6 núcleos) 10GB DDR4 240GB SSD 1Gbps de $ 20 o cómo dividir el servidor? (las opciones están disponibles con RAID1 y RAID10, hasta 24 núcleos y hasta 40GB DDR4).
VPS (KVM) E5-2650 v4 (6 núcleos) 10GB DDR4 240GB SSD 1Gbps hasta diciembre de forma gratuita al pagar por un período de seis meses, puede ordenar
aquí .
Dell R730xd 2 veces más barato? Solo tenemos
2 x Intel Dodeca-Core Xeon E5-2650v4 128GB DDR4 6x480GB SSD 1Gbps 100 TV desde $ 249 en los Países Bajos y los EE. UU. Lea sobre
Cómo construir un edificio de infraestructura. clase utilizando servidores Dell R730xd E5-2650 v4 que cuestan 9,000 euros por un centavo?