Skip to content
KitploitKITPLOIT
HerramientasBlog
Enviar
HerramientasBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

··Feeds·Contacto·Privacidad·© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
Xiaomi-C200-Firmware-Analysis — De UART a Root: Irrumpiendo en el Xiaomi C200 mediante U-Boot | Kitploit
Herramientas/GitHubGitHub/h3xdum/xiaomi-c200-firmware-analysis
Seguridad de Sistemas EmbebidosEscalada de PrivilegiosSeguridad IoTExplotaciónIngeniería InversaRecuperación de DatosHacking de HardwareSeguridad de HardwareAnálisis de Firmware

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir
GitHubh3xdum/xiaomi-c200-firmware-analysis

Xiaomi-C200-Firmware-Analysis

De UART a Root: Irrumpiendo en el Xiaomi C200 mediante U-Boot

Ver Repositorio
1112hace 8 mesesAún no revisado

El Alcance

En este repositorio mostraré cómo obtuve acceso a la interfaz UART incluso sin el conjunto común de pines expuestos / pads de prueba, utilizando U-Boot y trucos para obtener root en una etapa temprana y eventualmente extraer el firmware.

Reconocimiento Inicial

pcb Hay algunas cosas clave que quedan claras en la PCB:

  • Chip → Procesador Ingenic T31
  • Memoria Flash → Tipo SOIC-8 SPI NOR
  • Posibles pads de prueba UART

Primero fui a los candidatos obvios para un acceso UART directo, hay 4 pads de prueba en fila que parecen ser Tx, Rx, GND y alimentación, pero al probarlos con un multímetro obtuve lecturas incorrectas como se ve en la imagen. Probé la mayoría de los otros pads de prueba y aún así no pude encontrar la lectura correcta, así que tuve que cambiar de estrategia.

Obteniendo un punto de apoyo

Como no quedaban conectores en la placa ni pads de prueba útiles, decidí ir a la fuente, conectándome a los pines del procesador y obteniendo una shell UART de esa manera. Descargué la hoja de datos de ese procesador e identifiqué los pines del protocolo UART. T31

Ahora solo necesitamos encontrar tierra en la placa y conectar:

  • Tx → Rx
  • Rx → Tx
  • GND → GND

Usé algunas sondas PCBite y un adaptador USB a TTL para esta configuración. pcb_uart

U-Boot y Root

Ahora podemos usar picocom para obtener la shell UART que buscamos.

root@kitploit:~
sudo picocom -b 115200 /dev/ttyUSB0

Si no se hace nada, solo obtengo los registros de arranque y ninguna shell al final del proceso de arranque, así que tuve que interrumpir U-Boot presionando Enter inmediatamente. Al obtener una shell de U-Boot, primero imprimí los argumentos del entorno. U-Boot_1 Las cosas importantes para nosotros son:

  • bootargs → muestra que el comando init es ejecutar el binario linuxrc y el diseño del firmware (particiones y su propósito/tamaño/slots)
  • bootcmd → el comando para cargar la memoria desde la flash a RAM y arrancar el dispositivo

Para obtener un acceso root rápido, puedo usar el truco de cambiar el comando init con setenv para obtener una shell en lugar de ejecutar el binario linuxrc. Luego puedo cargar la memoria manualmente y arrancar el dispositivo (esencialmente copiando el comando bootcmd). U-Boot_1 Ahora, cuando termine el arranque, seré enviado a una shell temprana sin prácticamente nada ejecutándose en el sistema, así que ejecutaré el binario original linuxrc en segundo plano y comprobaré si hay puertos abiertos en este sistema. root_netstat ¡Sin suerte! La cámara solo habla con su nube en "47.237.75.249", sin interfaz web expuesta para experimentar. Dado que la ingeniería inversa del binario de comunicación en la nube está fuera del alcance de mi investigación, aquí es donde decidí finalizar mi investigación :)

Extracción del firmware

Un extra para quienes estén interesados en jugar con el firmware: aquí se explica cómo obtenerlo. Misma configuración que antes con la UART, pero esta vez solo sondeando y cargando la memoria desde la flash a la RAM sin arrancar en ella. Luego puedes imprimir los datos desde la memoria RAM y grabar la salida de tu terminal (esta vez con minicom) para guardarla en un archivo, limpiarla un poco con Python y obtener el firmware. Emparejar binwalk y bootargs ayuda a nombrar cada sección. Firmware

Descargar herramienta