Reverse Engineering der Samsung-WB850F-Firmware
WB850F_FW_210086.zip - Externer Container
- Die WB850F ist eines der wenigen Modelle, für die Samsung weiterhin Firmware und Support-Dateien bereitstellt, auch nachdem die iLauncher-Anwendung eingestellt wurde.
- Das Archiv
WB850F_FW_210086.zip enthält mehrere Dateien:
GPS_FW/BASEBAND_FW_Flash.mbin: Daten
GPS_FW/BASEBAND_FW_Ram.mbin: Daten
GPS_FW/Config.BIN: Daten
GPS_FW/flashBurner.mbin: Daten
FWUP: ASCII-Text mit CRLF-Zeilenenden
partialImage.o.map: ASCII-Text
WB850-FW-SR-210086.bin: Daten
wb850f_adj.txt: ASCII-Text mit CRLF-Zeilenenden
- Die Datei
FWUP enthält die Zeichenfolge "upgrade all", ein Skript für ein Firmware-Test-/Automatisierungsmodul.
- Die Datei
wb850f_adj.txt ist ein komplexes Skript, das die GPS-Firmware aktualisiert und die betreffende Datei löscht.
partialImage.o.map - Linker-Dump
partialImage.o.map ist eine Textdatei mit mehr als 300.000 Zeilen, die die Linker-Ausgabe von partialImage.o und die vollständige Speicherbelegung enthält:
- Beispiele:
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
- Diese Datei liefert sehr nützliche Informationen für die Firmware-Analyse.
WB850-FW-SR-210086.bin - Header-Analyse
- Die Analyse der Datei
WB850-FW-SR-210086.bin mit binwalk ergab Datei-Header (HTML, PNG, JPEG usw.), einen VxWorks-Header sowie mehrere Unix-Pfade, jedoch keine Partitionen oder Dateisysteme.
- Hexdump der ersten 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.............
- Daraus lässt sich eine Partitionstabelle mit Dateinamen und Partitionsnamen rekonstruieren:
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 - Code- und Datenpartitionen
- Nach dem Extrahieren der Partitionen mit einem Partitionsextraktionstool ergab sich:
ONBL1.bin: Daten
ONBL2.bin: Daten
Main_Image.bin: OpenPGP-Geheimschlüssel (Fehlalarm)
Resource.bin: MIPSEB-LE MIPS-III ECOFF-Executable
OIS.bin: Daten
SKIN.bin: Daten
ONBL1 und ONBL2 sind vermutlich die erste und zweite Stufe des Bootloaders.
Main_Image ist die eigentliche Firmware und enthält zahlreiche ARM-Funktionsprologe.
Resource und SKIN könnten UI-Skins sein, die vom SoC-Hersteller bereitgestellt wurden.
OIS könnte die Firmware der optischen Bildstabilisierung sein.
Code in Ghidra laden
- Die Partitionen
ONBL1, ONBL2 und Main_Image enthalten tatsächlich ARM-Code.
- Die Analyse begann in Ghidra, um
Main_Image auf die korrekte Speicheradresse abzubilden.
- Funktionsnamen aus
partialImage.o.map wurden geladen und in Ghidra zugeordnet.
Reverse Engineering von DevHTTPResponseStart
- Die Funktion
DevHTTPResponseStart führt eine Hotspot-Erkennung durch.
- Zusammenfassung:
- Bei einer HTTP-200-OK-Antwort muss der Server ein Cookie für die Domain
yahoo.something oder kr.yahoo.something setzen.
- Bei HTTP-301/302/307-Weiterleitungen muss die URL die Zeichenfolge
yahoo. enthalten.
- Um die Hotspot-Erkennung zu umgehen, muss man entweder den DNS-Record auf einen anderen Server zeigen lassen oder per HTTP-Redirect ein Cookie setzen.
Zusammenfassung: der wahre Schatz
- Durch diese Analyse ließ sich die Hotspot-Erkennung der Samsung-WiFi-Kamera WB850F verstehen und umgehen.
- Dadurch konnte die Kamera mit einem kleinen Patch tatsächlich eine Verbindung herstellen und Fotos hochladen.
Main_Image enthält mehr als 77.000 Funktionen und ist es wert, weiter erforscht zu werden, um die Funktionsweise von Digitalkameras besser zu verstehen.
Meinung von GN⁺
- Technische Herausforderung und Lernchance: Dieser Artikel bietet ein reales Beispiel für Firmware-Reverse-Engineering und damit sowohl eine technische Herausforderung als auch eine Lernchance. Besonders für angehende Software Engineers ist das sehr nützlich.
- Sicherheits- und Datenschutzaspekte: Das Umgehen der Hotspot-Erkennung ist unter Sicherheits- und Datenschutzgesichtspunkten ein wichtiger Aspekt. Beim Einsatz solcher Techniken sollten ethische Fragen immer mitbedacht werden.
- Verwendung von Ghidra: Man kann lernen, wie sich komplexe Firmware mit Tools wie Ghidra analysieren lässt. Das ist für Reverse Engineering und Sicherheitsanalyse sehr nützlich.
- Bedeutung von Firmware-Updates: Firmware-Updates sind wichtig, um Funktionalität und Sicherheit eines Geräts aufrechtzuerhalten. Dieser Artikel zeigt die Komplexität von Firmware-Updates anschaulich.
- Übertragbarkeit auf andere Kameramodelle: Diese Technik könnte auch auf andere Samsung-Kameramodelle anwendbar sein und helfen, ähnliche Probleme auf verschiedenen Geräten zu lösen.
1 Kommentare
Hacker-News-Meinungen
Sammlung von Hacker-News-Kommentaren
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]