hacktricks/network-services-pentesting/pentesting-printers/firmware-updates.md

100 lines
14 KiB
Markdown
Raw Normal View History

<details>
2022-04-28 16:01:33 +00:00
<summary><strong>Aprenda hacking no AWS do zero ao herói com</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
Outras formas de apoiar o HackTricks:
* Se você quiser ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF**, confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
* Adquira o [**material oficial PEASS & HackTricks**](https://peass.creator-spring.com)
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção de [**NFTs**](https://opensea.io/collection/the-peass-family) exclusivos
* **Junte-se ao grupo** 💬 [**Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga**-me no **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
* **Compartilhe suas técnicas de hacking enviando PRs para os repositórios github** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
</details>
2022-04-28 16:01:33 +00:00
Os perigos de atualizações de firmware maliciosas são bem conhecidos e foram discutidos anteriormente por [\[1\]](http://hacking-printers.net/wiki/index.php/Firmware_updates#cite_note-1) e [\[2\]](http://hacking-printers.net/wiki/index.php/Firmware_updates#cite_note-2). Ao contrário de outros dispositivos de rede, **é comum que impressoras implantem atualizações de firmware como trabalhos de impressão comuns**. Isso abre um amplo portal para atacantes, pois o acesso à funcionalidade de impressão geralmente é um obstáculo baixo. Só se pode especular sobre a motivação para tais decisões de design inseguras, mas parece lógico que razões históricas desempenhem um papel: as impressoras costumavam ser conectadas por cabo paralelo ou USB. Sem conectividade de rede, a segurança era menos importante e sem um servidor web protegido por senha ou funcionalidade semelhante, o canal de impressão era a única maneira de enviar dados ao dispositivo.
2022-04-28 16:01:33 +00:00
Ataques de modificação de firmware contra impressoras de rede foram demonstrados por [\[3\]](http://hacking-printers.net/wiki/index.php/Firmware_updates#cite_note-cui2011print-3) para dispositivos HP, por [\[4\]](http://hacking-printers.net/wiki/index.php/Firmware_updates#cite_note-jordon2014wrestling-4) para a série Canon PIXMA e por [\[5\]](http://hacking-printers.net/wiki/index.php/Firmware_updates#cite_note-heiland2011patched-5) e [\[6\]](http://hacking-printers.net/wiki/index.php/Firmware_updates#cite_note-weidenbach2016pwn-6) para vários modelos Xerox. Como contramedida, fabricantes de impressoras começaram a assinar digitalmente seus firmwares [\[7\]](http://hacking-printers.net/wiki/index.php/Firmware_updates#cite_note-hp2012rfu-7).
2022-04-28 16:01:33 +00:00
## Fabricantes
2022-04-28 16:01:33 +00:00
Para dar uma visão geral dos procedimentos de implantação de firmware, 1.400 arquivos de firmware dos 10 principais fabricantes de impressoras foram baixados e sistematicamente categorizados por [\[8\]](http://hacking-printers.net/wiki/index.php/Firmware_updates#cite_note-8). Os resultados são os seguintes.
2022-04-28 16:01:33 +00:00
### HP
2022-04-28 16:01:33 +00:00
O firmware pode ser baixado de [support.hp.com](http://support.hp.com/) ou diretamente de [ftp.hp.com](ftp://ftp.hp.com/pub/networking/software/pfirmware/) via FTP. 419 arquivos no formato tradicional de atualização remota de firmware da HP \(`.rfu`\) e 206 binários HP FutureSmart mais recentes \(`.bdl`\) podem ser recuperados. Os arquivos `.rfu` contêm comandos PJL proprietários como `@PJL UPGRADE SIZE=…`, indicando que as atualizações de firmware são implantadas como trabalhos de impressão normais. Isso foi demonstrado por [\[3\]](http://hacking-printers.net/wiki/index.php/Firmware_updates#cite_note-cui2011print-3) e fez com que a HP assinasse digitalmente todo o seu firmware de impressora desde março de 2012 [\[7\]](http://hacking-printers.net/wiki/index.php/Firmware_updates#cite_note-hp2012rfu-7).
2022-04-28 16:01:33 +00:00
### Canon
2022-04-28 16:01:33 +00:00
O firmware está disponível em [www.canon.com/support](http://www.canon.com/support/). No entanto, a Canon exige um número de série válido do dispositivo para baixar qualquer firmware. De acordo com [\[4\]](http://hacking-printers.net/wiki/index.php/Firmware_updates#cite_note-jordon2014wrestling-4), que conseguiram modificar o firmware para a série Canon PIXMA, não há assinatura (a maneira correta de fazer isso), mas possui uma criptografia muito fraca. De acordo com a correspondência por e-mail com um representante de suporte técnico da Canon, o firmware precisa ser assinado digitalmente pela Canon para que seja aceito pela impressora.
### Epson
O firmware pode ser baixado de [epson.com](http://epson.com/) e via FTP de [download.epson-europe.com](ftp://download.epson-europe.com/). Os arquivos vêm como arquivos `.exe` autoextraíveis do WinZip e podem ser descompactados usando unp[\[9\]](http://hacking-printers.net/wiki/index.php/Firmware_updates#cite_note-9). Os arquivos `.efu` contidos podem ser analisados usando Binwalk[\[10\]](http://hacking-printers.net/wiki/index.php/Firmware_updates#cite_note-10) que extrai o firmware real. Pode-se obter 49 arquivos `.rcx` de formato desconhecido \(SEIKO EPSON EpsonNet Form\) e nove arquivos `.prn` contendo comandos PJL \(`@PJL ENTER LANGUAGE=DOWNLOAD`\). A Epson não publicou nenhuma informação sobre mecanismos de proteção. O firmware lançado antes de 2016 não aplicava assinatura de código e poderia ser manipulado como mostrado por [\[11\]](http://hacking-printers.net/wiki/index.php/Firmware_updates#cite_note-11). Eles acreditam que grandes quantidades dos dispositivos produzidos desde 1999 \[…\] podem ser vulneráveis.
### Dell
O firmware pode ser obtido de [downloads.dell.com](http://downloads.dell.com/) e de [ftp.us.dell.com/printer](ftp://ftp.us.dell.com/printer). Os arquivos podem ser descompactados usando unp e os arquivos `.zip` incluídos podem ser extraídos com uma variante do unzip. A Dell não produz dispositivos de impressão, mas rebatiza os produtos de outros fabricantes. Portanto, uma grande variedade de arquivos de firmware, incluindo 18 arquivos `.hd` contendo `@PJL FIRMWARE=…`, 25 arquivos `.prn` contendo `@PJL ENTER LANGUAGE=DOWNLOAD` e 30 arquivos `.fls`/`.fly` contendo `@PJL LPROGRAMRIP` foram encontrados. Em relação aos mecanismos de proteção, a Dell não divulgou nenhuma informação publicamente disponível.
### Brother
O firmware não pode ser facilmente baixado. Em vez disso, é necessário executar um binário do Windows que verifica as impressoras disponíveis e solicita links de download para o firmware mais recente de um serviço da web. Ao adivinhar os parâmetros corretos, é possível obter os links para 98 arquivos. Os arquivos de firmware não precisam ser descompactados, pois já vêm em formato bruto. 79 arquivos têm a extensão `.djf` e contêm `@PJL EXECUTE BRDOWNLOAD`, enquanto 9 arquivos `.blf` contêm `@PJL ENTER LANGUAGE=PCL`. A Brother não divulgou nenhuma informação publicamente disponível sobre mecanismos de proteção.
### Lexmark
O firmware está disponível em [support.lexmark.com](http://support.lexmark.com/) e pode ser descompactado usando unp. 63 arquivos `fls` puderam ser obtidos contendo o cabeçalho PJL `@PJL LPROGRAMRIP` para instalar o firmware. O whitepaper de segurança da Lexmark afirma que os pacotes devem ser criptografados com um algoritmo de criptografia simétrica por meio de uma chave que é conhecida apenas pela Lexmark e está embutida de forma segura em todos os dispositivos. No entanto, a medida de segurança mais forte vem da exigência de que todos os pacotes de firmware devem incluir múltiplas assinaturas digitais RSA de 2048 bits da Lexmark. Se essas assinaturas não forem válidas \[...\] o firmware é descartado [\[12\]](http://hacking-printers.net/wiki/index.php/Firmware_updates#cite_note-12).
### Samsung
O firmware pode ser baixado de [www.samsung.com/us/support/download](http://www.samsung.com/us/support/download). Os arquivos recuperados vêm como arquivos zip ou executáveis do Windows que podem ser executados no wine e descompactados usando unp. Desta forma, foram obtidos 33 arquivos `.hd` começando com `@PJL FIRMWARE` e arquivos `.prn` associados contendo `@PJL DEFAULT SWUPGRADE=ON`. A Samsung não divulgou nenhuma informação publicamente disponível sobre mecanismos de proteção.
### Xerox
O firmware está disponível publicamente em [www.support.xerox.com](http://www.support.xerox.com/). Os arquivos baixados vêm em formato zip e podem ser descompactados usando unzip. Os arquivos de firmware estão em diferentes formatos: 16 arquivos `.hd` incluindo `@PJL FIRMWARE=…`, 36 arquivos PostScript para dispositivos mais antigos e 35 arquivos `.dlm` que é o formato atualmente usado pela Xerox e inclui assinaturas digitais. Um defeito no processo de implantação, no entanto, foi encontrado por [\[5\]](http://hacking-printers.net/wiki/index.php/Firmware_updates#cite_note-heiland2011patched-5) e estendido por [\[6\]](http://hacking-printers.net/wiki/index.php/Firmware_updates#cite_note-weidenbach2016pwn-6), levando à execução remota de código a chave privada e a ferramenta usada para assinatura de código estavam contidas no próprio firmware.
### Ricoh
O Centro de Download de Firmware em [support.ricoh.com](https://support.ricoh.com/) não está aberto ao público em geral. Felizmente, a internet contém links diretos para algumas páginas de download de drivers/firmware, então é possível obter 31 arquivos de firmware usando uma simples pesquisa no Google \(`site:support.ricoh.com firmware`\). Os arquivos podem ser descompactados usando unp. 14 arquivos `.bin` contêm `@PJL RSYSTEMUPDATE SIZE=…` enquanto 15 arquivos `.brn` estão associados a um `settings.ini`, incluindo `@PJL FWDOWNLOAD` e `USERID=sysadm, PASSWORD=sysadm`. A Ricoh não fornece nenhuma informação atualizada sobre mecanismos de proteção. Em um whitepaper de 2007, a Ricoh afirma que apenas técnicos de serviço têm uma senha e conta dedicada para fazer atualizações de firmware [\[13\]](http://hacking-printers.net/wiki/index.php/Firmware_updates#cite_note-13).
### Kyocera
A Kyocera não libera firmware para usuários finais. No entanto, em um fórum de revendedores Kyocera publicamente disponível, downloads de firmware para vários modelos são vinculados: [ftp.kdaconnect.com](ftp://ftp.kdaconnect.com/). Os arquivos podem ser descompactados usando unp e contêm imagens cramfs[\[14\]](http://hacking-printers.net/wiki/index.php/Firmware_updates#cite_note-14) e squashfs[\[15\]](http://hacking-printers.net/wiki/index.php/Firmware_updates#cite_note-15) montáveis, bem como formatos binários proprietários. O firmware é implantado como um trabalho de impressão com `!R! UPGR'SYS';EXIT;` precedendo o comando de atualização da linguagem de descrição de página PRESCRIBE [\[16\]](http://hacking-printers.net/wiki/index.php/Firmware_updates#cite_note-16). A Kyocera não divulgou nenhuma informação publicamente disponível sobre mecanismos de proteção.
### Konica
Embora não seja promovido ativamente, o firmware para impressoras Konica Minolta pode ser baixado de [download6.konicaminolta.eu](http://download6.konicaminolta.eu/). Dispositivos mais novos conectados à Internet têm a capacidade de realizar atualizações de firmware por conta própria. Arquivos compactados vêm em diferentes formatos e podem ser descompactados usando unp, unzip e tar, resultando em 38 arquivos binários proprietários `.bin`, 20 módulos de impressora softload baseados em PostScript para dispositivos mais antigos e 14 arquivos de diferentes extensões contendo comandos PJL como `@PJL ENTER LANGUAGE=FIRMUPDATE`. O whitepaper de segurança da Konica Minolta afirma que o firmware é verificado usando um valor de hash [\[17\]](http://hacking-printers.net/wiki/index.php/Firmware_updates#cite_note-17). Pode-se duvidar que tal esquema seja criptograficamente seguro.
## Resultados
Dos dez fabricantes analisados, nove usam comandos [PJL](http://hacking-printers.net/wiki/index.php/PJL) para todos ou pelo menos alguns de seus procedimentos de atualização de firmware, o que é um forte indicador de que as atualizações são implantadas como trabalhos de impressão comuns. O fabricante restante Kyocera aplica a linguagem de descrição de página PRESCRIBE. Portanto, pode-se afirmar que é comum na indústria de impressão instalar novo firmware pelo próprio canal de impressão e nomear um **grande defeito de design** presente em quase qualquer dispositivo de impressora: **dados e código pelo mesmo canal**. No entanto, a exploração deste problema é difícil, pois para a maioria dos fabricantes não se pode fazer uma declaração fundamentada sobre mecanismos de proteção. Uma análise aprofundada de ataques de modificação de firmware deve, portanto, fazer parte de pesquisas futuras. Um resumo dos cabeçalhos de arquivos ou tipos para todos os arquivos de firmware obtidos é dado abaixo:
| Fabricante | Extensão | Quantidade | Cabeçalho de arquivo ou tipo |
| :--- | :--- | :--- | :--- |
| HP | rfu | 419 | @PJL UPGRADE SIZE=… |
| bdl | 206 | Formato binário FutureSmart | |
| Epson | rcx | 49 | SEIKO EPSON EpsonNet Form |
| prn | 9 | @PJL ENTER LANGUAGE=DOWNLOAD | |
| brn | 7 | Binário desconhecido, inclui arquivo de configuração | |
| Dell | fls, fly | 30 | @PJL LPROGRAMRIP |
| prn | 25 | @PJL ENTER LANGUAGE=DOWNLOAD | |
| hd | 18 | @PJL FIRMWARE=… | |
| brn | 3 | Binário desconhecido, inclui arquivo de configuração | |
| ps | 2 | PostScript \(título: Atualização de Firmware\) | |
| pjl | 1 | @PJL ENTER LANGUAGE=FLASH | |
| Brother | djf | 79 | @PJL EXECUTE BRDOWNLOAD |
| blf | 9 | @PJL ENTER LANGUAGE=PCL | |
| Lexmark | fls | 63 | @PJL LPROGRAMRIP |
| bin, fls | 6 | Formato binário desconhecido | |
| Samsung | hd | 33 | @PJL FIRMWARE=… |
| fls, hd0 | 4 | @PJL DEFAULT P1284VALUE=… | |
| Xerox | ps | 36 | PostScript \(título: Atualização de Firmware\) |
| dlm | 35 | Módulo Carregável Dinâmico Xerox | |
| prn, bin | 20 | @PJL ENTER LANGUAGE=DOWNLOAD | |
| hd | 16 | @PJL FIRMWARE=… | |
| brn | 10 | Binário desconhecido, inclui arquivo de configuração | |
| bin | 10 | @PJL SET JOBATTR="@SWDL" | |
| fls, hd, hde | 8 | @PJL DEFAULT P1284VALUE=… | |
| fls, xfc | 4 | @PJL ENTER LANGUAGE=XFLASH | |
| pjl | 3 | @PJL FSDOWN