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⁺
- 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.
- 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.
- 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.
- 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.
- 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
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
Trabalho incrível! Você já pensou em fazer um tutorial sobre como fazer 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.
[apagado]