2 pontos por GN⁺ 2024-05-26 | 1 comentários | Compartilhar no WhatsApp

Engenharia reversa do firmware da Samsung WB850F

WB850F_FW_210086.zip - contêiner externo

  • A WB850F é um dos poucos modelos da Samsung que continuam oferecendo firmware e arquivos de suporte mesmo após a descontinuação do aplicativo iLauncher.
  • O arquivo WB850F_FW_210086.zip inclui vários arquivos:
    • GPS_FW/BASEBAND_FW_Flash.mbin: dados
    • GPS_FW/BASEBAND_FW_Ram.mbin: dados
    • GPS_FW/Config.BIN: dados
    • GPS_FW/flashBurner.mbin: dados
    • FWUP: texto ASCII, com terminadores de linha CRLF
    • partialImage.o.map: texto ASCII
    • WB850-FW-SR-210086.bin: dados
    • wb850f_adj.txt: texto ASCII, com terminadores de linha CRLF
  • O arquivo FWUP contém a string "upgrade all", um script para o módulo de teste/automação de firmware.
  • O arquivo wb850f_adj.txt é um script complexo que atualiza o firmware do GPS e depois apaga esse arquivo.

partialImage.o.map - dump do linker

  • partialImage.o.map é um arquivo de texto com mais de 300 mil linhas, contendo a saída do linker de partialImage.o e o mapa completo de memória:
    • Exemplo:
      • 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
  • Esse arquivo fornece informações muito úteis para a análise do firmware.

WB850-FW-SR-210086.bin - análise do cabeçalho

  • Ao analisar o arquivo WB850-FW-SR-210086.bin com o binwalk, foram encontrados cabeçalhos de arquivo (HTML, PNG, JPEG etc.), cabeçalhos do VxWorks e vários caminhos Unix, mas nenhuma partição ou sistema de arquivos foi detectado.
  • O hexdump dos primeiros 1 KB mostrou:
    • 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 disso, foi possível reconstruir a tabela de partições, incluindo nomes de arquivo e nomes de partição:
    • 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 - partições de código e dados

  • Após extrair as partições com uma ferramenta de extração de partições:
    • ONBL1.bin: dados
    • ONBL2.bin: dados
    • Main_Image.bin: chave secreta OpenPGP (falso positivo)
    • Resource.bin: executável MIPSEB-LE MIPS-III ECOFF
    • OIS.bin: dados
    • SKIN.bin: dados
  • ONBL1 e ONBL2 provavelmente são o primeiro e o segundo estágio do bootloader.
  • Main_Image é o firmware real e contém muitos prólogos de função ARM.
  • Resource e SKIN podem ser skins de interface fornecidas pelo fabricante do SoC.
  • OIS pode ser o firmware do estabilizador óptico de imagem.

Carregando o código no Ghidra

  • As partições ONBL1, ONBL2 e Main_Image contêm código ARM real.
  • A análise começou no Ghidra para mapear Main_Image no endereço de memória correto.
  • Os nomes das funções foram carregados de partialImage.o.map e mapeados no Ghidra.

Engenharia reversa de DevHTTPResponseStart

  • A função DevHTTPResponseStart realiza a detecção de hotspot.
  • Resumo:
    • Em uma resposta HTTP 200 OK, o servidor precisa definir um cookie em um domínio yahoo.something ou kr.yahoo.something.
    • Em um redirecionamento HTTP 301/302/307, a URL precisa conter a string yahoo..
  • Para contornar a detecção de hotspot, é necessário apontar o registro DNS para outro servidor ou usar um redirecionamento HTTP para definir o cookie.

Resumo: o verdadeiro tesouro

  • Essa análise permitiu entender e contornar a detecção de hotspot da câmera Wi‑Fi Samsung WB850F.
  • Como resultado, com um pequeno patch a câmera conseguiu realmente se conectar e fazer upload de fotos.
  • Main_Image contém mais de 77 mil funções, então vale a pena explorá-lo para entender melhor como uma câmera digital funciona.

Opinião do GN⁺

  1. Desafio técnico e oportunidade de aprendizado: este artigo apresenta um caso real de engenharia reversa de firmware, oferecendo um desafio técnico e uma boa oportunidade de aprendizado. É muito útil para engenheiros de software iniciantes.
  2. Considerações de segurança e privacidade: contornar a detecção de hotspot é algo importante do ponto de vista de segurança e privacidade. Ao usar esse tipo de técnica, é preciso sempre considerar os aspectos éticos.
  3. Como usar o Ghidra: dá para aprender como usar ferramentas como o Ghidra para analisar firmwares complexos. Isso é muito útil em engenharia reversa e análise de segurança.
  4. A importância das atualizações de firmware: atualizações de firmware são importantes para manter a funcionalidade e a segurança dos dispositivos. O artigo mostra bem a complexidade desse processo.
  5. Aplicabilidade a outros modelos de câmera: essa técnica também pode ser aplicada a outros modelos de câmera da Samsung, o que pode ajudar a resolver problemas semelhantes em vários dispositivos.

1 comentários

 
GN⁺ 2024-05-26
Comentários no Hacker News

Coletânea de comentários do Hacker News

  • Gostei mais deste link. Uma falha de "cripto" de firmware absolutamente impressionante

    • Gostou do link que trata de um caso de falha na criptografia do firmware da câmera Samsung NX.
  • Trabalho incrível! Você já pensou em fazer um tutorial sobre como fazer engenharia reversa?

    • É um trabalho incrível. Pergunta se há planos de criar um tutorial de engenharia reversa.
  • Tudo o que eu quero é uma dSLR que, quando eu tirar uma foto na câmera usando o botão dela, instantes depois a imagem esteja no Apple Photos.

    • Quer uma câmera DSLR em que, ao tirar uma foto, a imagem seja salva imediatamente no Apple Photos.
  • [apagado]

    • O comentário foi removido.