2 puntos por GN⁺ 2024-05-26 | 1 comentarios | Compartir por WhatsApp

Ingeniería inversa del firmware de la Samsung WB850F

WB850F_FW_210086.zip - contenedor externo

  • La WB850F es uno de los pocos modelos en los que Samsung siguió proporcionando firmware y archivos de soporte incluso después de descontinuar la aplicación iLauncher.
  • El archivo WB850F_FW_210086.zip incluye varios archivos:
    • GPS_FW/BASEBAND_FW_Flash.mbin: datos
    • GPS_FW/BASEBAND_FW_Ram.mbin: datos
    • GPS_FW/Config.BIN: datos
    • GPS_FW/flashBurner.mbin: datos
    • FWUP: texto ASCII, con terminadores de línea CRLF
    • partialImage.o.map: texto ASCII
    • WB850-FW-SR-210086.bin: datos
    • wb850f_adj.txt: texto ASCII, con terminadores de línea CRLF
  • El archivo FWUP contiene la cadena "upgrade all", que es un script para un módulo de pruebas/automatización del firmware.
  • El archivo wb850f_adj.txt es un script complejo que actualiza el firmware del GPS y luego elimina ese archivo.

partialImage.o.map - volcado del enlazador

  • partialImage.o.map es un archivo de texto de más de 300 mil líneas que incluye la salida del enlazador de partialImage.o y el mapa completo de memoria:
    • Ejemplo:
      • output input virtual section section address size file
      • .text 00000000 01301444 .text 00000000 000001a4 sysALib.o
      • DevHTTPResponseStart 00321a84 000002a4
      • DevHTTPResponseData 00321d28 00000100
      • DevHTTPResponseEnd 00321e28 00000170
  • Este archivo aporta información muy útil para analizar el firmware.

WB850-FW-SR-210086.bin - análisis del encabezado

  • Al analizar el archivo WB850-FW-SR-210086.bin con binwalk, se encontraron encabezados de archivo (HTML, PNG, JPEG, etc.), un encabezado de VxWorks y varias rutas Unix, pero no se encontraron particiones ni sistemas de archivos.
  • Al hacer un volcado hexadecimal del primer 1 KB:
    • 00000000: 3231 3030 3836 0006 4657 5f55 502f 4f4e 210086..FW_UP/ON
    • 00000010: 424c 312e 6269 6e00 0000 0000 0000 0000 BL1.bin.........
    • 00000020: 0000 0000 0000 0000 c400 0000 0008 0000 ................
    • 00000030: 4f4e 424c 3100 0000 0000 0000 0000 0000 ONBL1...........
    • 00000040: 0000 0000 4657 5f55 502f 4f4e 424c 322e ....FW_UP/ONBL2.
    • 00000050: 6269 6e00 0000 0000 0000 0000 0000 0000 bin.............
  • A partir de esto, se puede reconstruir una tabla de particiones con nombres de archivo y de partición:
    • File name size offset partition name
    • FW_UP/ONBL1.bin 196 (0xc4) 0x0000800 ONBL1
    • FW_UP/ONBL2.bin 46 KB (0xb630) 0x00008c4 ONBL2
    • [WB850]DSC_5KEY_WB850 30 MB (0x1d1f438) 0x000bef4 Main_Image
    • RomFS/SPID.Rom 48 MB (0x2f4ac00) 0x1d2b32c Resource
    • FW_UP/WB850.HEX 19 KB (0x4d86) 0x4c75f2c OIS
    • FW_UP/skin.bin 36 MB (0x22fd048) 0x4c7acb2 SKIN

WB850-FW-SR-210086.bin - particiones de código y datos

  • Tras extraer las particiones con una herramienta de extracción de particiones:
    • ONBL1.bin: datos
    • ONBL2.bin: datos
    • Main_Image.bin: clave secreta OpenPGP (falso positivo)
    • Resource.bin: ejecutable ECOFF MIPS-III MIPSEB-LE
    • OIS.bin: datos
    • SKIN.bin: datos
  • Se presume que ONBL1 y ONBL2 son la primera y segunda etapa del bootloader.
  • Main_Image es el firmware real y contiene numerosos prólogos de funciones ARM.
  • Resource y SKIN podrían ser skins de interfaz proporcionados por el fabricante del SoC.
  • OIS podría ser el firmware del sistema de estabilización óptica de imagen.

Cargar el código en Ghidra

  • Las particiones ONBL1, ONBL2 y Main_Image contienen código ARM real.
  • Se inició el análisis en Ghidra para mapear Main_Image en la dirección de memoria correcta.
  • Los nombres de funciones de partialImage.o.map se cargaron y mapearon en Ghidra.

Ingeniería inversa de DevHTTPResponseStart

  • La función DevHTTPResponseStart realiza la detección de hotspot.
  • Resumen:
    • En una respuesta HTTP 200 OK, el servidor debe establecer una cookie en un dominio yahoo.something o kr.yahoo.something.
    • En un redireccionamiento HTTP 301/302/307, la URL debe incluir la cadena yahoo..
  • Para saltarse la detección de hotspot, hay que apuntar el registro DNS a otro servidor o usar una redirección HTTP para establecer la cookie.

Resumen: el verdadero tesoro

  • Este análisis permitió entender y evadir la detección de hotspot de la cámara WiFi Samsung WB850F.
  • Como resultado, con un pequeño parche fue posible hacer que la cámara realmente se conectara y subiera fotos.
  • Main_Image contiene más de 77,000 funciones, así que vale la pena explorarlo para comprender mejor cómo funciona una cámara digital.

Opinión de GN⁺

  1. Desafío técnico y oportunidad de aprendizaje: Este artículo ofrece un caso real de ingeniería inversa de firmware, brindando un desafío técnico y una oportunidad de aprendizaje. Es muy útil para ingenieros de software principiantes.
  2. Consideraciones de seguridad y privacidad: Evadir la detección de hotspot implica consideraciones importantes de seguridad y privacidad. Siempre hay que tener en cuenta los aspectos éticos al usar estas técnicas.
  3. Uso de Ghidra: Se puede aprender a analizar firmware complejo con herramientas como Ghidra. Esto es muy útil para la ingeniería inversa y el análisis de seguridad.
  4. Importancia de las actualizaciones de firmware: Las actualizaciones de firmware son importantes para mantener la funcionalidad y la seguridad de los dispositivos. Este artículo muestra bien la complejidad de las actualizaciones de firmware.
  5. Aplicabilidad a otros modelos de cámara: Esta técnica también podría aplicarse a otros modelos de cámaras Samsung, lo que puede ayudar a resolver problemas similares en distintos dispositivos.

1 comentarios

 
GN⁺ 2024-05-26
Opiniones en Hacker News

Resumen de comentarios de Hacker News

  • I liked this link more. Absolute astonishing firmware "crypto" fail

    • Le gustó más este enlace. Es un fallo absolutamente asombroso en la "criptografía" del firmware.
  • Amazing work! Have you thought about doing a tutorial on how to do reverse engineering?

    • ¡Trabajo increíble! Se pregunta si has pensado en hacer un tutorial sobre cómo hacer ingeniería inversa.
  • All I want is a dSLR that, when I take a picture on the camera with its button, moments later, the image is in Apple Photos.

    • Lo único que quiere es una cámara dSLR en la que, al tomar una foto con el botón de la cámara, momentos después la imagen aparezca en Apple Photos.
  • [dead]

    • El comentario fue eliminado.