2 points par GN⁺ 2024-05-26 | 1 commentaires | Partager sur WhatsApp

Ingénierie inverse du firmware du Samsung WB850F

WB850F_FW_210086.zip - Conteneur externe

  • Le WB850F fait partie des rares modèles pour lesquels Samsung a continué à fournir le firmware et les fichiers de support même après l’arrêt de l’application iLauncher.
  • L’archive WB850F_FW_210086.zip contient plusieurs fichiers :
    • GPS_FW/BASEBAND_FW_Flash.mbin : données
    • GPS_FW/BASEBAND_FW_Ram.mbin : données
    • GPS_FW/Config.BIN : données
    • GPS_FW/flashBurner.mbin : données
    • FWUP : texte ASCII, avec fins de ligne CRLF
    • partialImage.o.map : texte ASCII
    • WB850-FW-SR-210086.bin : données
    • wb850f_adj.txt : texte ASCII, avec fins de ligne CRLF
  • Le fichier FWUP contient la chaîne "upgrade all", un script destiné au module de test/automatisation du firmware.
  • Le fichier wb850f_adj.txt est un script complexe qui met à niveau le firmware GPS puis supprime ce fichier.

partialImage.o.map - Dump de l’éditeur de liens

  • partialImage.o.map est un fichier texte de plus de 300 000 lignes, qui contient la sortie de l’éditeur de liens pour partialImage.o ainsi que la carte mémoire complète :
    • Exemple :
      • 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
  • Ce fichier fournit des informations très utiles pour l’analyse du firmware.

WB850-FW-SR-210086.bin - Analyse de l’en-tête

  • L’analyse du fichier WB850-FW-SR-210086.bin avec binwalk a révélé des en-têtes de fichiers (HTML, PNG, JPEG, etc.), un en-tête VxWorks et plusieurs chemins Unix, mais aucune partition ni aucun système de fichiers n’ont été trouvés.
  • Résultat du hexdump du premier 1 Ko :
    • 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.............
  • Cela permet de reconstituer une table de partitions incluant les noms de fichiers et de partitions :
    • 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 - Partitions de code et de données

  • Après extraction des partitions à l’aide d’un outil dédié :
    • ONBL1.bin : données
    • ONBL2.bin : données
    • Main_Image.bin : clé secrète OpenPGP (faux positif)
    • Resource.bin : exécutable MIPSEB-LE MIPS-III ECOFF
    • OIS.bin : données
    • SKIN.bin : données
  • ONBL1 et ONBL2 sont vraisemblablement les premier et deuxième étages du bootloader.
  • Main_Image correspond au vrai firmware et contient de nombreux prologues de fonctions ARM.
  • Resource et SKIN pourraient être des skins d’interface fournis par le fabricant du SoC.
  • OIS est probablement le firmware du système de stabilisation optique de l’image.

Charger le code dans Ghidra

  • Les partitions ONBL1, ONBL2 et Main_Image contiennent bien du code ARM réel.
  • L’analyse a commencé dans Ghidra afin de mapper correctement Main_Image à la bonne adresse mémoire.
  • Les noms de fonctions de partialImage.o.map ont été chargés et associés dans Ghidra.

Ingénierie inverse de DevHTTPResponseStart

  • La fonction DevHTTPResponseStart effectue la détection de hotspot.
  • En résumé :
    • En cas de réponse HTTP 200 OK, le serveur doit définir un cookie sur un domaine "yahoo.something" ou "kr.yahoo.something".
    • En cas de redirection HTTP 301/302/307, l’URL doit contenir la chaîne "yahoo.".
  • Pour contourner la détection de hotspot, il faut soit faire pointer l’enregistrement DNS vers un autre serveur, soit utiliser une redirection HTTP afin de définir le cookie.

Résumé : le véritable trésor

  • Cette analyse a permis de comprendre et de contourner la détection de hotspot de l’appareil photo WiFi Samsung WB850F.
  • Au final, un petit patch a permis à l’appareil de réellement se connecter et d’envoyer des photos.
  • Main_Image contient plus de 77 000 fonctions, ce qui mérite d’être exploré pour mieux comprendre le fonctionnement d’un appareil photo numérique.

L’avis de GN⁺

  1. Défi technique et opportunité d’apprentissage : cet article fournit un cas concret d’ingénierie inverse de firmware, avec un vrai défi technique et une occasion d’apprentissage. Très utile pour les ingénieurs logiciels débutants.
  2. Considérations de sécurité et de vie privée : le contournement de la détection de hotspot soulève des questions importantes de sécurité et de vie privée. Il faut toujours garder les aspects éthiques à l’esprit lors de l’utilisation de ces techniques.
  3. Utilisation de Ghidra : on peut apprendre à analyser un firmware complexe avec des outils comme Ghidra. C’est très utile pour l’ingénierie inverse et l’analyse de sécurité.
  4. Importance des mises à jour de firmware : les mises à jour de firmware sont essentielles pour maintenir les fonctionnalités et la sécurité d’un appareil. Cet article montre bien la complexité de ces mises à jour.
  5. Application à d’autres modèles d’appareils photo : cette technique peut aussi s’appliquer à d’autres modèles d’appareils photo Samsung, ce qui peut aider à résoudre des problèmes similaires sur différents appareils.

1 commentaires

 
GN⁺ 2024-05-26
Avis Hacker News

Sélection de commentaires Hacker News

  • J’ai davantage apprécié ce lien. Un échec absolument stupéfiant de la "crypto" du firmware

    • Il a apprécié le lien qui traite d’un cas d’échec du chiffrement du firmware des appareils photo Samsung NX.
  • Travail incroyable ! As-tu envisagé de faire un tutoriel sur la manière de pratiquer le reverse engineering ?

    • C’est un travail impressionnant. Il se demande si un tutoriel sur le reverse engineering est envisagé.
  • Tout ce que je veux, c’est un dSLR qui, quand je prends une photo avec le bouton de l’appareil, l’image apparaisse quelques instants plus tard dans Apple Photos.

    • Il veut un appareil photo DSLR dont les photos sont enregistrées presque immédiatement dans Apple Photos.
  • [supprimé]

    • Le commentaire a été supprimé.