Archive for category Hacking

Se não te dão, que tal ir buscar ?

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 !

9 Comentários

Etherscope II da Fluke, mais um com Linux !

Andei procurando por um equipamento para análise de rede e acabei caindo no EtherScope II, da Fluke Networks. Apesar do preço, que gira em torno de dez mil dólares para o produto e alguns acessórios, continuei pesquisando sobre ele. As fotos do site eram muito pequenas e iniciei uma procura por fotos com resolução maior. Encontrei algumas no site da BlackBox, bem melhores. Até aí nada demais, se não fosse eu ter visto o símbolo da Trolltech no cantinho da tela … Como seria óbvio desconfiar, o EtherScope também roda Linux e é ARM. Óbvio também seria eu ir dar uma analisada no que eles colocaram dentro dele …

Foi interessante notar que a Fluke Networks seguiu a cartilha da GPL2, colocando um link claro, sem enrolação ou custos adicionais para o download do software modificado por eles. Conjunto básico de software embarcado para Linux, com algumas pequenas surpresas. Notei que eles estão usando o webserver da GoAhead, com suporte a SSL e RSA e, aparentemente, usado por várias empresas grande. Outro programa menos usual foi o Microcom, um emulador de terminal com suporte a scripting. Também vi um VNC server e o konqueror lá dentro. O kernel original era versão 2.4.19 mas não fui olhar as modificações.

Existe uma opção de update de firmware no site. Um programa da Fluke baixa a atualização para o disco ou equipamento. Baixei para o disco o EtherScopeUpdate.zip e perdi mais alguns minutos com o pacote.

Fluke update

Usando técnicas já vistas por aqui, podemos extrair o kernel do sistema, que está a partir da posição 11340, sem grandes problemas.


$ gunzip EtherScopeUpdate.zip

Archive: EtherScopeUpdate.zip
inflating: cardbus-050304
inflating: paramet-102705
inflating: pcmcia-120203
inflating: root-2-5-10
inflating: splashscreen-011504
inflating: txrx-100406
inflating: zImage-product-030304
inflating: update.dat

$ dd if=zImage-product-030304 of=kernel.gz skip=11340 bs=1

938812+0 registros entrando
938812+0 registros saindo
938812 bytes (939 kB) copiados, 4,39043 segundo, 214 kB/s

$ gunzip -v kernel.gz
kernel.gz:
gzip: kernel.gz: decompression OK, trailing garbage ignored
51.0% — replaced with kernel
Também não teve segredos para abrir o sistema de arquivos, não havia nenhuma proteção.


$ mkdir romfs
$ sudo mount -t cramfs -o loop root-2-5-10 romfs
$ cd romfs/
$ ls -l
total 16
drwxrwxrwx 1 root root 2692 1969-12-31 21:00 bin
drwxrwxrwx 1 root root 3804 1969-12-31 21:00 dev
lrwxrwxrwx 1 root root 13 1969-12-31 21:00 etc -> mnt/ramfs/etc
drwxrwxrwx 1 root root 176 1969-12-31 21:00 flukenet
drwxrwxrwx 1 root root 16 1969-12-31 21:00 home
drwxrwxrwx 1 root root 3264 1969-12-31 21:00 lib
-rwxrwxrwx 1 root root 335 1969-12-31 21:00 linuxrc
drwxrwxrwx 1 root root 104 1969-12-31 21:00 mnt
drwxrwxrwx 1 root root 0 1969-12-31 21:00 proc
drwxrwxrwx 1 root root 72 1969-12-31 21:00 ramfs
lrwxrwxrwx 1 root root 3 1969-12-31 21:00 sbin -> bin
lrwxrwxrwx 1 root root 13 1969-12-31 21:00 tmp -> mnt/ramfs/tmp
drwxrwxrwx 1 root root 36 1969-12-31 21:00 usr
lrwxrwxrwx 1 root root 13 1969-12-31 21:00 var -> mnt/ramfs/var

$ cat linuxrc
#!/bin/sh
/bin/mount -n -t proc proc /proc
/bin/mount -n -t ramfs ramfs /mnt/ramfs
/bin/busybox cp -dar /ramfs/* /mnt/ramfs
/flukenet/bin/cpypersist
/bin/mount -t jffs2 /dev/mtdblock5 /mnt/home
/bin/hostname –file /mnt/home/Settings/HOSTNAME
/bin/ifconfig lo 127.0.0.1 netmask 255.255.255.0 broadcast 255.255.255.255
exec /sbin/init
Alguma diversão pode ser encontrada no diretório flukenet. Note que estão usando o qpe.


$ ls flukenet/
bin classes Help libs modules qpe qt scripts share web

Cuidado, Fluke, tem um pessoal por aí doido pra copiar … Dá pra fazer um EtherScopeXingLing por bem menos (e, obviamente, longe da qualidade da Fluke) … Bom, eu paro por aqui. O resto fica como dever de casa.

Nota: não se teve acesso físico a nenhum destes equipamentos, apenas foram analisado as atualizações de firmware fornecidas pelos fabricantes. Também não foi feita nenhuma engenharia reversa nos programas distribuídos, somente a constatação pura e simples do conjunto de programas que compunham o firmware.

4 Comentários

Firewalls industriais: firmware da ADS-TEC

Conforme prometido, vamos dar uma analisada agora no firmware da ADS-TEC, que pode ser obtido em http://cgi.ads-tec.de/uploads/pdf/downloads/Ads-tec-IF1xxx-1.1.1-5398.zip. Abrindo o arquivo, encontramos:

unzip Ads-tec-IF1xxx-1.1.1-5398.zip
Archive:  Ads-tec-IF1xxx-1.1.1-5398.zip
inflating: releases/Ads-tec-IF1xxx-1.1.1-SVN-R9428.B-5398.bin
inflating: Changelog-Ads-IF.txt
inflating: gplinfo.pdf

O arquivo gplinfo.pdf lista todos os programas usados que seguem a licença GPL e tem ainda uma cópia do texto da GNU GPL. Também dão o endereço de contato para você adquirir os fontes, por meros 50 euros o CD. Se alguém comprar, por favor, eu aceito uma cópia.

Um hexdump no arquivo Ads-tec-IF1xxx-1.1.1-SVN-R9428.B-5398.bin revela uma primeira parte com código ARM (alguns anos trabalhando com ARM lhe fazem perceber um código mesmo em binário…) que deve ser um bootloader (o redboot citado no gplinfo.pdf), depois uma região que parece compactada/encriptada (o kernel, como veremos depois) e, finalmente, algo compreensível, no formato compressed ROMFS.

Trechos a seguir, para ilustração:

BOOTLOADER:

00000000  e1 a0 00 00 e1 a0 00 00  e1 a0 00 00 e1 a0 00 00  |................|
00000010  e1 a0 00 00 e1 a0 00 00  e1 a0 00 00 e1 a0 00 00  |................|
00000020  ea 00 00 02 01 6f 28 18  1d 60 00 00 1d 6d b7 04  |.....o(..`...m..|
00000030  e1 a0 70 01 e3 a0 80 00  e1 0f 20 00 e3 12 00 03  |..p....... .....|
00000040  1a 00 00 01 e3 a0 00 17  ef 12 34 56 e1 0f 20 00  |..........4V.. .|
00000050  e3 82 20 c0 e1 21 f0 02  e3 cf 20 1f e2 82 38 01  |.. ..!.... ...8.|
00000060  e4 92 00 20 e1 32 00 03  1a ff ff fc ee 07 0f 9a  |... .2..........|
00000070  ee 07 0f 17 ee 11 0f 10  e3 c0 00 05 e3 c0 0a 01  |................|
00000080  ee 01 0f 10 e3 a0 70 63  e3 87 7c 02 ee 11 0f 10  |......pc..|.....|
REGIÃO COMPACTADA (logo após 0x2c38, antes pode-se ver as mensagens do boot loader):

00002c00  4d 65 6d 6f 72 79 20 65  72 72 6f 72 0a 00 00 00  |Memory error....|
00002c10  4d 61 6c 6c 6f 63 20 65  72 72 6f 72 0a 00 00 00  |Malloc error....|
00002c20  72 61 6e 20 6f 75 74 20  6f 66 20 69 6e 70 75 74  |ran out of input|
00002c30  20 64 61 74 61 0a 00 00  1f 8b 08 00 bf 4c 2f 47  | data........L/G|
00002c40  02 03 ec fd 0b 7c 54 d5  b9 3f 8c ef 3d 33 49 06  |.....|T..?..=3I.|
00002c50  08 30 81 a0 a9 72 d9 81  a8 51 09 d9 73 c9 cd a2  |.0...r...Q..s...|
00002c60  26 4c 02 49 4d 60 48 02  a6 02 35 43 12 48 24 24  |&L.IM`H...5C.H$$|
00002c70  31 97 0a 3d 9e 76 72 e1  a2 85 36 0a 28 c7 62 33  |1..=.vr...6.(.b3|
00002c80  6d 6d 6b 7b 6c 0f ed e1  78 68 8f e7 9c 5d c5 96  |mmk{l...xh...]..|
00002c90  5a fd 95 7a 69 a9 d5 d3  99 09 53 d0 b1 96 b6 b6  |Z..zi.....S.....|
REGIÃO DO COMPRESSED ROMFS (inicia em 0x000e0000, o resto é ff por causa da imagem de flash)

000dffd0  ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff ff  |................|
000dffe0  ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff ff  |................|
000dfff0  ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff ff  |................|
000e0000  45 3d cd 28 00 a0 c3 00  03 01 00 00 00 00 00 00  |E=.(............|
000e0010  43 6f 6d 70 72 65 73 73  65 64 20 52 4f 4d 46 53  |Compressed ROMFS|
000e0020  7e 04 f4 96 00 00 00 00  9c 1e 00 00 b1 06 00 00  |~...............|
000e0030  43 6f 6d 70 72 65 73 73  65 64 00 00 00 00 00 00  |Compressed......|
000e0040  ed 41 e8 03 fc 00 00 e8  c0 04 00 00 ed 41 00 00  |.A...........A..|
000e0050  1c 00 00 00 81 14 00 00  2e 73 73 68 ed 41 00 00  |.........ssh.A..|

O meu chute inicial era que teríamos um bootloader e, logo a seguir, o kernel Linux compactado. Não é preciso ser nenhum guru para chutar isso, é o óbvio. Para tentar provar a minha hipótese, procurei por um documento que falasse sobre o gzip e sua possível assinatura. O GZIP segue o RFC 1952 e está bem documentado. Ele fala que os dois primeiros bytes são 0x1f e 0x8b. Depois tem um byte indicando o método de compressão, seguido de um campo de flags, data de modificação, flags adicionais e sistema operacional. Em 0x2c38 eu encontrei um padrão que casava

00002c30  20 64 61 74 61 0a 00 00  1f 8b 08 00 bf 4c 2f 47 | data........L/G|
00002c40  02 03 ec fd 0b 7c 54 d5  b9 3f 8c ef 3d 33 49 06  |.....|T..?..=3I.|
00002c50  08 30 81 a0 a9 72 d9 81  a8 51 09 d9 73 c9 cd a2  |.0...r...Q..s...|

- 1f 8b: assinatura GZIP
- 08: "deflate" compression method
- 00: flags desligados
- bf 4c 2f 47: time stamp (está em big endian, a conversão gera 1194282175, que significa
Mon, 05 Nov 2007 17:02:55 GMT, segundo o site Online Conversion
- 02: compressor used maximum compression
- 03: sistema operacional Unix

Seria coincidência demais não ser GZIP. Sabendo que o o sistema de arquivos deveria estar em 0x000e0000, na região da assinatura do compressed ROMFS, dividi o arquivo em três:

dd if=Ads-tec-IF1xxx-1.1.1-SVN-R9428.B-5398.bin of=bootloader.bin count=11320 bs=1
dd if=Ads-tec-IF1xxx-1.1.1-SVN-R9428.B-5398.bin of=vmlinuz.gz skip=11320 count=894864 bs=1
dd if=Ads-tec-IF1xxx-1.1.1-SVN-R9428.B-5398.bin of=romfs.img skip=917504 bs=1

Descompactei o kernel:

gunzip -v vmlinuz.gz
vmlinuz.gz:
gzip: vmlinuz.gz: decompression OK, trailing garbage ignored
58.4% -- replaced with vmlinuz

O warning se refere ao fato de a região da imagem do kernel ter sido completada com 0xff até o início do ROMFS comprimido. Ignorei isto e realmente o kernel estava lá:

ls -lh
-rw-r--r-- 1 barros barros  12K 2008-01-28 09:05 bootloader.bin
-rw-r--r-- 1 barros barros  13M 2008-01-28 09:18 romfs.img
-rw-r--r-- 1 barros barros 2,1M 2008-01-28 09:09 vmlinuz
-rw-r--r-- 1 barros barros 874K 2008-01-28 12:09 vmlinuz.gz

strings vmlinuz | grep Linux
Linux version 2.4.32-uc0 (snpr@wintermute) (gcc version 3.3.2) #SVN-R9428.B-5398 Mo 5. Nov 18:02:54 CET 2007

Montar o ROMFS comprimido foi mais fácil ainda.

mkdir romfs
sudo mount -t cramfs -o loop romfs.img romfs

No fundo, usar um initrd comprimido para partida do sistema não é a melhor opção já que gasta mais memória RAM. A abordagem com JFFS2 da Innominate é melhor. Uma espiadinha no sistema deles está a seguir:

du * -sh

4,6M    bin
6,5K    dev
5,8M    etc
1,0K    home
512     include
6,2M    lib
512     mnt
1,0K    nvram
512     proc
2,0M    sbin
114K    share
512     tmp
9,9M    usr
512     var

ls etc/init.d/

rcS              S11macs           S41firewall  S42adsdpd   S44smbmount         S80modem
S00init          S12vlan           S41lldpd     S42hosts    S50snmpd            S80thttpd
S01-i2c-modules  S13syslog-local   S41pforward  S42syslog   S51stunnel          S99lednormal
S02startup       S15-rtl8305       S41routing   S43ipsec    S61dnsmasq          S99zlcdmenu
S03-ixp-modules  S30preparechains  S41shaping   S43l2tp     S62nagios
S03time          S40network        S41sshd      S43modbusd  S70checkbootloader
S10Bonding       S40nt0_ntp        S41statusd   S43samba    S70init

ls etc/www.rom/ ( página web do equipamento ?)

db      images      index.php  lang    priv  quickstart  vendor
errors  index.html  js         logout  pub   style       wizard

Vi que eles tem sqlite, zebra, libc GNU, thttp como webserver, entre vários outras coisas. A persistência da informação foi feita em flash mesmo, com JFFS2, que é montado no diretório nvram. Bom já chega de bisbilhotar.

Nota: não se teve acesso físico a nenhum destes equipamentos, apenas foram analisado as atualizações de firmware fornecidas pelos fabricantes. Também não foi feita nenhuma engenharia reversa nos programas distribuídos, somente a constatação pura e simples do conjunto de programas que compunham o firmware.

4 Comentários

Firewalls industriais: firmware da Hirschmann

A Hirschmann disponibiliza atualizações no seu site. O Equipamento no fundo deve ser da Innominate, só colocaram uma caixinha azul pra delimitar o território. Baixei o firmware(versão 04.2.01) e fui dar uma olhada nele. Descompactando, dentro do diretório flash, existem alguns arquivos interessantes:

-rw-r--r-- 1 barros barros    2870 2007-02-26 16:22 install.p7s
-rw-r--r-- 1 barros barros 7534321 2007-02-26 16:22 jffs2.img.p7s
-rw-r--r-- 1 barros barros      16 2006-01-09 20:42 rollout.sh

Li por aí que .p7s é um arquivo de email com assinatura. Como não achei nenhum programa para abrir isto (um site dizia que o Outlook abriria – Deus me livre!), resolvi dar uma olhada no seu interior com o hexdump. O início está a seguir:

00000000  30 83 72 f6 ec 06 09 2a  86 48 86 f7 0d 01 07 02  |0.r....*.H......|
00000010  a0 83 72 f6 dc 30 83 72  f6 d7 02 01 01 31 0b 30  |..r..0.r.....1.0|
00000020  09 06 05 2b 0e 03 02 1a  05 00 30 83 72 f2 45 06  |...+......0.r.E.|
00000030  09 2a 86 48 86 f7 0d 01  07 01 a0 83 72 f2 35 04  |.*.H........r.5.|
00000040  83 72 f2 30 19 85 20 03  00 00 00 0c f0 60 dc 98  |.r.0.. ......`..|
00000050  19 85 e0 01 00 00 00 30  b4 27 ed cb 00 00 00 01  |.......0.'......|
00000060  00 00 00 00 00 00 00 02  45 d1 f8 97 08 04 00 00  |........E.......|
00000070  4c ae 74 3d 07 e1 7d 98  50 61 63 6b 61 67 65 73  |L.t=..}.Packages|
00000080  19 85 e0 02 00 00 00 44  a4 ef 22 3e 00 00 00 02  |.......D..".....|
00000090  00 00 00 01 00 00 41 ed  00 00 00 00 00 00 00 00  |......A.........|

Já que o arquivo se chama jffs2.img.p7s, resolvi dar uma olhada na especificação do JFFS2. Vi que cada nodo temo seguinte formato:

00 01 02 03
+--+--+-----+
|19|85|TYPE |
+--+--+-----+
| TOT LENGH |
+-----------+
|    CRC    |
+-----------+
|   DATA    |
|    ...    |
+-----------+

Ou seja, todo nodo tem um número mágico 0×1985 no início ! Dá pra ver vários aí em cima, não ?

00000050 |19 85|e0 01|00 00 00 30| b4 27 ed cb|00 00 00 01  |.......0.'......|
00000060  00 00 00 00 00 00 00 02  45 d1 f8 97 08 04 00 00  |........E.......|
00000070  4c ae 74 3d 07 e1 7d 98  50 61 63 6b 61 67 65 73  |L.t=..}.Packages|
00000080 |19 85|e0 02|00 00 00 44| a4 ef 22 3e|00 00 00 02  |.......D..".....|
00000090  00 00 00 01 00 00 41 ed  00 00 00 00 00 00 00 00  |......A.........|

Analisando o arquivo, ficava claro que tinha um header até antes de 0×00000050. E o footer também, bastava ver no final algo que aparecia uma assinatura mesmo, confirmando a extensão .p7s:

0072f490  40 d2 4a d5 3c 07 78 23  60 d8 a1 6a a4 68 30 66  |@.J...x#`..j.h0f|
0072f4a0  31 12 30 10 06 03 55 04  03 13 09 6d 47 75 61 72  |1.0...U....mGuar|
0072f4b0  64 20 43 41 31 0b 30 09  06 03 55 04 06 13 02 64  |d CA1.0...U....d|
0072f4c0  65 31 0f 30 0d 06 03 55  04 07 13 06 42 65 72 6c  |e1.0...U....Berl|
0072f4d0  69 6e 31 10 30 0e 06 03  55 04 08 13 07 47 65 72  |in1.0...U....Ger|
0072f4e0  6d 61 6e 79 31 13 30 11  06 03 55 04 0a 13 0a 49  |many1.0...U....I|
0072f4f0  6e 6e 6f 6d 69 6e 61 74  65 31 0b 30 09 06 03 55  |nnominate1.0...U|
...
0072f530  01 86 f8 42 01 0d 04 11  16 0f 78 63 61 20 63 65  |...B......xca ce|
0072f540  72 74 69 66 69 63 61 74  65 30 0d 06 09 2a 86 48  |rtificate0...*.H|
0072f550  86 f7 0d 01 01 05 05 00  03 81 81 00 85 71 cd a2  |.............q..|
...

O óbvio seria então recortar o JFFS2 do arquivo. Moleza:

dd if=jffs2.img.p7s of=ripped.img skip=80 count=7533092 bs=1

Com isto pronto, fui montar o JFFS2. Seria simples como:

dd if=ripped.img of=/dev/mtd0
mount /dev/mtdblock0 mnt

No entanto, tive várias mensagens de erro dizendo que o número mágico não era válido. O arquivo tinha sido gerado para big endian, não little endian… Além disso, o mtd do meu kernel só suportava 4MB e o arquivo ficaria truncado. Procurei muito por um conversor big2little e não achei nada ! Fiz o meu, trocando os campos pertinentes mas aí deu erro no CRC. Teria que ver o tipo de CRC foi usado. Além disso, eu não tinha certeza sobre o que fazer com o campo de dados. Resumindo, fiquei com preguiça de ir olhar o código no kernel (não tem isto documentado em lugar nenhum, não achei nada) e tive outra idéia mais prática: montar isto na minha placa AVR32 da Atmel, que também era big endian.
Como ela tem entrada pra cartão e uma flash serial adicional de 8MB (a principal é paralela, de 8MB também), foi tranquilo. Copiei no cartão, fiz um dd pra flash serial e montei:

dd if=/media/sdcard/ripped.img of=/dev/mtd3
mkdir /tmp/ripped
mount -t jffs2 /dev/mtdblock3 /tmp/ripped

Pronto ! Tá lá o corpo estendido no chão !

/tmp/ripped # ls -l
drwxr-xr-x    4 root     root            0 Feb 13  2007 Packages
drwxr-xr-x    2 root     root            0 Feb 13  2007 bin
drwxr-xr-x    2 root     root            0 Feb 13  2007 bootstrap
drwxr-xr-x    2 root     root            0 Feb 13  2007 dev
drwxr-xr-x    2 root     root            0 Feb 13  2007 etc
drwxr-xr-x    2 root     root            0 Feb 13  2007 lib
drwxr-xr-x    2 root     root            0 Feb 13  2007 proc
-rw-r--r--    1 root     root       717344 Feb 13  2007 vmlinuz
/tmp/ripped # du * -sh
6.1M    Packages
512     bin
1016.0k bootstrap
0       dev
512     etc
0       lib
0       proc
701.0k  vmlinuz

O diretório bootstrap faz o que o nome diz, isto é, parte o sistema. Os pacotes que serão instalado ficam em Packages/mGuard/packed:

/tmp/ripped/Packages/mGuard/packed # ls -l
-rw-r--r--    1 root     root         4096 Feb 13  2007 bridge-utils_0-0.9.5.default.tar.gz
-rw-r--r--    1 root     root       226192 Feb 13  2007 busybox_0-1.1.6.default.tar.gz
-rw-r--r--    1 root     root        27039 Feb 13  2007 bzip2_0-0.0.2.default.tar.gz
-rw-r--r--    1 root     root       200704 Feb 13  2007 clamav_0-1.0.5.default.tar.gz
-rw-r--r--    1 root     root        29399 Feb 13  2007 djbdns_0-1.5.1.default.tar.gz
-rw-r--r--    1 root     root        33958 Feb 13  2007 ebtables_0-0.3.0.default.tar.gz
-rw-r--r--    1 root     root        24576 Feb 13  2007 ez-ipupdate_0-3.0.13.default.tar.gz
-rw-r--r--    1 root     root        17086 Feb 13  2007 fnord_0-1.9.7.default.tar.gz
-rw-r--r--    1 root     root        47061 Feb 13  2007 freeradius_0-0.0.5.default.tar.gz
-rw-r--r--    1 root     root       279981 Feb 13  2007 freeswan_0-1.107.10.default.tar.gz
-rw-r--r--    1 root     root       303104 Feb 13  2007 gai_0-2.2.33.default.tar.gz
-rw-r--r--    1 root     root        36864 Feb 13  2007 iproute_0-1.8.24.default.tar.gz
-rw-r--r--    1 root     root        37914 Feb 13  2007 iptables_0-1.6.5.default.tar.gz
-rw-r--r--    1 root     root        41110 Feb 13  2007 keepalived_0-0.2.6.default.tar.gz
-rw-r--r--    1 root     root        22811 Feb 13  2007 l2tpd_0-0.2.0.default.tar.gz
-rw-r--r--    1 root     root            0 Jan  1 06:54 libc_0-2.4.0.default.tar
-rw-r--r--    1 root     root       902621 Feb 13  2007 libc_0-2.4.0.default.tar.gz
-rw-r--r--    1 root     root        80774 Feb 13  2007 libgmp_0-3.2.1.default.tar.gz
-rw-r--r--    1 root     root      1320831 Feb 13  2007 linux_0-4.10.1.default.tar.gz
-rw-r--r--    1 root     root        25320 Feb 13  2007 lldpd_0-0.1.1.default.tar.gz
-rw-r--r--    1 root     root         9507 Feb 13  2007 mguard-base_0-1.1.10.default.tar.gz
-rw-r--r--    1 root     root        34637 Feb 13  2007 mguard-blade_0-1.1.2.default.tar.gz
-rw-r--r--    1 root     root        17382 Feb 13  2007 mguard-console_0-1.2.11.default.tar.gz
-rw-r--r--    1 root     root        75622 Feb 13  2007 mguard-contentfilter_0-1.1.14.default.tar.gz
-rw-r--r--    1 root     root         2884 Feb 13  2007 mguard-dnscache_0-1.7.1.default.tar.gz
-rw-r--r--    1 root     root        68082 Feb 13  2007 mguard-firewall_0-1.1.34.default.tar.gz
-rw-r--r--    1 root     root        92117 Feb 13  2007 mguard-gai_0-1.2.48.default.tar.gz
-rw-r--r--    1 root     root        11406 Feb 13  2007 mguard-hidiscovery_0-1.2.0.default.tar.gz
-rw-r--r--    1 root     root         8165 Feb 13  2007 mguard-init_0-1.0.0.default.tar.gz
-rw-r--r--    1 root     root         4096 Feb 13  2007 mguard-lcd_0-1.0.1.default.tar.gz
-rw-r--r--    1 root     root         3184 Feb 13  2007 mguard-lldpd_0-1.1.1.default.tar.gz
-rw-r--r--    1 root     root         4096 Feb 13  2007 mguard-mau_0-1.2.0.default.tar.gz
-rw-r--r--    1 root     root        28405 Feb 13  2007 mguard-netconfig_0-1.2.2.default.tar.gz
-rw-r--r--    1 root     root         3973 Feb 13  2007 mguard-network-pptp_0-1.1.1.default.tar.gz
-rw-r--r--    1 root     root         3844 Feb 13  2007 mguard-ntp_0-1.1.2.default.tar.gz
-rw-r--r--    1 root     root         8773 Feb 13  2007 mguard-redundancy_0-1.1.2.default.tar.gz
-rw-r--r--    1 root     root        10627 Feb 13  2007 mguard-router_0-1.1.1.default.tar.gz
-rw-r--r--    1 root     root        17021 Feb 13  2007 mguard-snmp_0-1.1.13.default.tar.gz
-rw-r--r--    1 root     root        60495 Feb 13  2007 mguard-test_0-1.1.1.default.tar.gz
-rw-r--r--    1 root     root       122526 Feb 13  2007 mguard-theme_0-1.3.14.eagle.tar.gz
-rw-r--r--    1 root     root        35923 Feb 13  2007 mguard-tklogd_0-1.1.0.default.tar.gz
-rw-r--r--    1 root     root         4420 Feb 13  2007 mguard-triggeraction_0-1.0.3.default.tar.gz
-rw-r--r--    1 root     root        28672 Feb 13  2007 mguard-userfwd_0-0.1.32.default.tar.gz
-rwxr-xr-x    1 root     root       224928 Dec 13  2006 mguard-uuid_0-0.0.9.default.tar.gz
-rw-r--r--    1 root     root        28431 Feb 13  2007 mguard-vpn_0-1.2.19.default.tar.gz
-rw-r--r--    1 root     root        12554 Feb 13  2007 mii-diag_0-2.0.7.default.tar.gz
-rw-r--r--    1 root     root       123025 Feb 13  2007 ntp_0-1.0.2.default.tar.gz
-rw-r--r--    1 root     root       569344 Feb 13  2007 openssl_0-0.12.0.default.tar.gz
-rw-r--r--    1 root     root        12669 Feb 13  2007 popt_0-0.1.0.default.tar.gz
-rw-r--r--    1 root     root       145083 Feb 13  2007 ppp_0-2.5.5.default.tar.gz
-rw-r--r--    1 root     root        25565 Feb 13  2007 pptp_0-1.4.0.default.tar.gz
-rw-r--r--    1 root     root        60945 Feb 13  2007 runit_0-1.4.0.default.tar.gz
-rw-r--r--    1 root     root        40490 Feb 13  2007 sed_0-4.0.4.default.tar.gz
-rw-r--r--    1 root     root        84894 Feb 13  2007 shadow_0-1.0.0.default.tar.gz
-rw-r--r--    1 root     root       316296 Feb 13  2007 snmp_0-1.3.13.default.tar.gz
-rw-r--r--    1 root     root         9563 Feb 13  2007 socklog_0-2.0.2.default.tar.gz
-rw-r--r--    1 root     root       174385 Feb 13  2007 ssh_0-3.13.0.default.tar.gz
-rw-r--r--    1 root     root        14248 Feb 13  2007 sysmguard_0-0.1.12.default.tar.gz
-rw-r--r--    1 root     root        44649 Feb 13  2007 ucspi-ssl_0-0.55.0.default.tar.gz
-rw-r--r--    1 root     root        33145 Feb 13  2007 ucspi-tcp_0-0.88.0.default.tar.gz
-rw-r--r--    1 root     root        16384 Feb 13  2007 ucspi-unix_0-0.36.1.default.tar.gz
-rw-r--r--    1 root     root         3810 Feb 13  2007 vlan_0-1.0.0.default.tar.gz
-rw-r--r--    1 root     root         8183 Feb 13  2007 weasle_0-0.5.18.default.tar.gz
-rw-r--r--    1 root     root        25293 Feb 13  2007 zlib_0-1.1.4.default.tar.gz
/tmp/ripped/Packages/mGuard/packed #

Tentei fazer um tar para listar mas deu erro. Eu imagino que seria necessário rodar um Qemu para ARM e tentar o tar de lá, versão ARM, mas já estava satisfeito por ter a lista de programas que o produto usa. Fiquei pensando que libc seria aquela … GNU Libc ? uClibc ? Problemas de licença possíveis se for a GNU Libc. Fica de dever de casa fazer o resto no Qemu, OK ? Quem tiver uma placa ARM aí e quiser os pacotes, entre em contato.

Segunda feira conto como abri o firmware da ADS-TEC. Este foi bem mais fácil.

Nota: não se teve acesso físico a nenhum destes equipamentos, apenas foram analisado as atualizações de firmware fornecidas pelos fabricantes. Também não foi feita nenhuma engenharia reversa nos programas distribuídos, somente a constatação pura e simples do conjunto de programas que compunham o firmware.

3 Comentários

Seguir

Obtenha todo post novo entregue na sua caixa de entrada.

Junte-se a 499 outros seguidores