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

14 KiB
Raw Blame History

Aprenda hacking no AWS do zero ao herói com htARTE (HackTricks AWS Red Team Expert)!

Outras formas de apoiar o HackTricks:

Os perigos de atualizações de firmware maliciosas são bem conhecidos e foram discutidos anteriormente por [1] e [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.

Ataques de modificação de firmware contra impressoras de rede foram demonstrados por [3] para dispositivos HP, por [4] para a série Canon PIXMA e por [5] e [6] para vários modelos Xerox. Como contramedida, fabricantes de impressoras começaram a assinar digitalmente seus firmwares [7].

Fabricantes

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]. Os resultados são os seguintes.

HP

O firmware pode ser baixado de support.hp.com ou diretamente de ftp.hp.com 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] e fez com que a HP assinasse digitalmente todo o seu firmware de impressora desde março de 2012 [7].

Canon

O firmware está disponível em 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], 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 e via FTP de download.epson-europe.com. Os arquivos vêm como arquivos .exe autoextraíveis do WinZip e podem ser descompactados usando unp[9]. Os arquivos .efu contidos podem ser analisados usando Binwalk[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]. Eles acreditam que grandes quantidades dos dispositivos produzidos desde 1999 […] podem ser vulneráveis.

Dell

O firmware pode ser obtido de downloads.dell.com e de 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 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].

Samsung

O firmware pode ser baixado de 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. 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] e estendido por [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 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].

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. Os arquivos podem ser descompactados usando unp e contêm imagens cramfs[14] e squashfs[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]. 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. 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]. Pode-se duvidar que tal esquema seja criptograficamente seguro.

Resultados

Dos dez fabricantes analisados, nove usam comandos 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