2 Punkte von GN⁺ 2024-05-26 | 1 Kommentare | Auf WhatsApp teilen

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⁺

  1. 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.
  2. 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.
  3. 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.
  4. 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.
  5. Ü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

 
GN⁺ 2024-05-26
Hacker-News-Meinungen

Sammlung von Hacker-News-Kommentaren

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

    • Dieser Link über das Scheitern der Firmware-Verschlüsselung bei Samsung-NX-Kameras gefiel mir besser.
  • Amazing work! Have you thought about doing a tutorial on how to do reverse engineering?

    • Erstaunliche Arbeit. Ich frage mich, ob du schon einmal darüber nachgedacht hast, ein Tutorial zum Reverse Engineering zu machen.
  • 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.

    • Ich möchte einfach nur eine DSLR, bei der das Bild kurz nach dem Auslösen direkt in Apple Photos erscheint.
  • [dead]

    • Der Kommentar wurde gelöscht.