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⁺
- 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.
- 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.
- 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.
- 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.
- 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
Opiniones en Hacker News
Resumen de comentarios de Hacker News
I liked this link more. Absolute astonishing firmware "crypto" fail
Amazing work! Have you thought about doing a tutorial on how to do reverse engineering?
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.
[dead]