Arquivo de 6 junho, 2012
Se não te dão, que tal ir buscar ?
Publicado por Marcelo Barros em Hacking, Linux, Sistemas embarcados em junho 6, 2012
Faz tempo que não fazia nenhum tipo de hacking e, coincidentemente, andei com um problema onde precisava entender o que o webserver de um equipamento fazia em determinada situação. Parecia existir um comando oculto não disponibilizado pela API do equipamento e decidi olhar por mim mesmo, já que a empresa se negou a me mandar a senha de root do equipamento. Antes de mais nada, não esperem nomes aqui ou posso ter um problema de contrato.
Munido do bom e velho espírito hacker, fiz o seguinte:
1) Baixei uma imagem do firmware do fabricante. Geralmente existe alguma imagem de atualização no site. Um simples registro no site, em geral, já te dá acesso a isso.
2) Baixei o binwalk, já comentado pelo Alan e para o qual eu gerei um .deb, para faciliar.
3) Rodei o binwalk e pude perceber que era uma composição de um uboot+uboot parameters+kernel linux+imagem do sistema em JFFS2. Nada de inovador, apenas o já esperado. Bom pra mim. Os valores de offset abaixo (número à esquerda) são fictícios, já que não posso dar os detalhes deste firmware:
DECIMAL HEX DESCRIPTION ---------------------------------------------------------------------------- 4660 0x1234 LZMA compressed data .... 9029 0x2345 uImage header, header siz .... 13398 0x3456 gzip compressed .... 17767 0x4567 JFFS2 filesystem .... ....
4) Nenhum mistério. E o que eu precisava,o root file system, estava em JFFS2, esperando minha extração, à partir do offset imaginário 17767:
dd ibs=1 skip=17767 if=firmware.bin of=rootfs.jffs2
5) Montei o JFFS2 em loop, usando uma dica do OpenMoko:
export loop=$(losetup -f) losetup $loop rootfs.jffs2 modprobe block2mtd block2mtd=$loop,131072 modprobe jffs2 modprobe mtdblock mkdir rootfs mount -t jffs2 -o ro /dev/mtdblock0 rootfs
Neste momento, pude inspecionar e olhar o que eu precisava dentro do rootfs.Para minha sorte, o script web dele era implementado em shell script.
6) Como o fabricante me negou o acesso de root, me dando apenas um shell personalizado e bem restrito, resolvi também ver qual eram as credenciais de acesso. Para isto, copiei o rootfs/etc/shadow chamei o meu amigo John:
sudo apt-get install john john -incremental -users:root
Ainda estou esperando terminar (~21 horas e contando), mas em breve terei a senha de root também. Na última fez que fiz isso, com o mesmo fabricante mas uma imagem mais antiga, demorou 3 dias. Só que, naquela época, ele não usava shadow, apenas o /etc/passwd com direito de leitura para todos. Daí, apenas quebrei a senha, não precisei fazer nada do que descrevi aqui.
Happy hacking !
-
You are currently browsing the archives for 0, 6 \06\UTC junho \06\UTC 2012
Blog Stats
- 162,636 hits
Principais mensagens
- Como fazer o seu cubo de leds 5x5x5
- O guia definitivo para os iniciantes em Net-SNMP (6)
- O guia definitivo para os iniciantes em Net-SNMP (1)
- O guia definitivo para os iniciantes em Net-SNMP (5)
- A nova moda é virar tijolo ! Agora o Acer Aspire One
- O guia definitivo para os iniciantes em Net-SNMP (2)
- Máquinas de estados e síntese de circuitos com VHDL
- Gerência de Redes com SNMP - Apostila
- Projetos
- Uma espiadela no GoAhead webserver
Comentários