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

15 KiB
Raw Blame History

Aprende a hackear AWS de cero a héroe con htARTE (HackTricks AWS Red Team Expert)!

Otras formas de apoyar a HackTricks:

Los peligros de las actualizaciones de firmware maliciosas son bien conocidos y se han discutido anteriormente por [1] y [2]. A diferencia de otros dispositivos en red, es común que las impresoras implementen actualizaciones de firmware como trabajos de impresión ordinarios. Esto abre una amplia puerta para los atacantes porque el acceso a la funcionalidad de impresión suele ser un obstáculo bajo. Solo se puede especular sobre la motivación de tales decisiones de diseño inseguras, pero parece lógico que razones históricas jueguen un papel: las impresoras solían estar conectadas por cable paralelo o USB. Sin conectividad de red, la seguridad era menos importante y sin un servidor web protegido por contraseña o funcionalidades similares, el canal de impresión era la única forma de enviar datos al dispositivo.

Los ataques de modificación de firmware contra impresoras de red han sido demostrados por [3] para dispositivos HP, por [4] para la serie Canon PIXMA y por [5] y [6] para varios modelos de Xerox. Como contramedida, los fabricantes de impresoras comenzaron a firmar digitalmente su firmware [7].

Fabricantes

Para dar una visión general de los procedimientos de implementación de firmware, se han descargado y categorizado sistemáticamente 1,400 archivos de firmware de los 10 principales fabricantes de impresoras por [8]. Los resultados son los siguientes.

HP

El firmware se puede descargar desde support.hp.com o directamente desde ftp.hp.com vía FTP. Se pueden obtener 419 archivos en el formato tradicional de actualización de firmware remoto de HP `.rfu` y 206 binarios más nuevos de HP FutureSmart `.bdl`. Los archivos .rfu contienen comandos PJL propietarios como @PJL UPGRADE SIZE=…, indicando que las actualizaciones de firmware se implementan como trabajos de impresión normales. Esto ha sido demostrado por [3] y causó que HP firmara digitalmente todo su firmware de impresora desde marzo de 2012 [7].

Canon

El firmware está disponible en www.canon.com/support. Sin embargo, Canon requiere un número de serie válido del dispositivo para descargar cualquier firmware. Según [4], quienes pudieron modificar el firmware para la serie Canon PIXMA, no hay firma la forma correcta de hacerlo pero sí tiene un cifrado muy débil. Según la correspondencia por correo electrónico con un representante de soporte técnico de Canon, el firmware tiene que estar firmado digitalmente por Canon para que sea aceptado por la impresora.

Epson

El firmware se puede descargar desde epson.com y vía FTP desde download.epson-europe.com. Los archivos vienen como archivos autoextraíbles WinZip .exe y se pueden desempaquetar usando unp[9]. Los archivos .efu contenidos se pueden analizar usando Binwalk[10] que extrae el firmware real. Se pueden obtener 49 archivos .rcx de formato desconocido SEIKO EPSON EpsonNet Form y nueve archivos .prn que contienen comandos PJL `@PJL ENTER LANGUAGE=DOWNLOAD`. Epson no ha publicado ninguna información sobre mecanismos de protección. El firmware lanzado antes de 2016 no aplicaba la firma de código y podía ser manipulado como se muestra en [11]. Ellos creen que enormes cantidades de dispositivos producidos desde 1999 […] podrían ser vulnerables.

Dell

El firmware se puede obtener desde downloads.dell.com y desde ftp.us.dell.com/printer. Los archivos se pueden desempaquetar usando unp y los archivos .zip incluidos se pueden extraer con una variante de unzip. Dell no produce dispositivos de impresión, sino que cambia la marca de los productos de otros fabricantes. Por lo tanto, se encontró una amplia variedad de archivos de firmware, incluyendo 18 archivos .hd que contienen @PJL FIRMWARE=…, 25 archivos .prn que contienen @PJL ENTER LANGUAGE=DOWNLOAD y 30 archivos .fls/.fly que contienen @PJL LPROGRAMRIP. En cuanto a mecanismos de protección, Dell no ha publicado ninguna información disponible públicamente.

Brother

El firmware no se puede descargar fácilmente. En su lugar, se debe ejecutar un binario de Windows que verifica las impresoras disponibles y solicita enlaces de descarga para el firmware más reciente desde un servicio web. Adivinando los parámetros correctos, se pueden obtener los enlaces para 98 archivos. Los archivos de firmware no necesitan ser desempaquetados ya que ya vienen en formato crudo. 79 archivos tienen la extensión .djf y contienen @PJL EXECUTE BRDOWNLOAD, mientras que 9 archivos .blf contienen @PJL ENTER LANGUAGE=PCL. Brother no ha publicado ninguna información disponible públicamente sobre mecanismos de protección.

Lexmark

El firmware está disponible en support.lexmark.com y se puede desempaquetar usando unp. Se pudieron obtener 63 archivos fls que contienen el encabezado PJL @PJL LPROGRAMRIP para instalar el firmware. El libro blanco de seguridad de Lexmark afirma que los paquetes deben estar cifrados con un algoritmo de cifrado simétrico a través de una clave que solo es conocida por Lexmark y está incrustada de forma segura en todos los dispositivos. Sin embargo, la medida de seguridad más fuerte proviene de requerir que todos los paquetes de firmware deben incluir múltiples firmas digitales RSA de 2048 bits de Lexmark. Si estas firmas no son válidas [...] el firmware se descarta [12].

Samsung

El firmware se puede descargar desde www.samsung.com/us/support/download. Los archivos recuperados vienen ya sea como archivos zip o ejecutables de Windows que se pueden ejecutar en wine y desempaquetar más adelante usando unp. De esta manera, se pudieron obtener 33 archivos .hd que comienzan con @PJL FIRMWARE y archivos .prn asociados que contienen @PJL DEFAULT SWUPGRADE=ON. Samsung no ha publicado ninguna información disponible públicamente sobre mecanismos de protección.

Xerox

El firmware está disponible públicamente en www.support.xerox.com. Los archivos descargados vienen en formato zip y se pueden desempaquetar usando unzip. Los archivos de firmware están en diferentes formatos: 16 archivos .hd que incluyen @PJL FIRMWARE=…, 36 archivos PostScript para dispositivos más antiguos y 35 archivos .dlm que es el formato utilizado actualmente por Xerox e incluye firmas digitales. Sin embargo, se encontró un defecto en el proceso de implementación por [5] y extendido por [6], lo que lleva a la ejecución remota de código: la clave privada y la herramienta utilizada para la firma de código estaban contenidas en el propio firmware.

Ricoh

El Centro de Descarga de Firmware en support.ricoh.com no está abierto al público en general. Afortunadamente, la web contiene enlaces directos a un par de páginas de descarga de controladores/firmware, por lo que se pueden obtener 31 archivos de firmware utilizando una simple búsqueda en Google `site:support.ricoh.com firmware`. Los archivos se pueden desempaquetar usando unp. 14 archivos .bin contienen @PJL RSYSTEMUPDATE SIZE=… mientras que 15 archivos .brn están asociados con un settings.ini, incluyendo @PJL FWDOWNLOAD y USERID=sysadm, PASSWORD=sysadm. Ricoh no proporciona ninguna información actualizada sobre mecanismos de protección. En un libro blanco que data de 2007, Ricoh afirma que solo los técnicos de servicio tienen una contraseña y una cuenta dedicada para realizar actualizaciones de firmware [13].

Kyocera

Kyocera no libera firmware a los usuarios finales. Sin embargo, en un foro de distribuidores de Kyocera disponible públicamente, se enlazan descargas de firmware para varios modelos: ftp.kdaconnect.com. Los archivos se pueden desempaquetar usando unp y contienen imágenes montables cramfs[14] y squashfs[15] así como formatos binarios propietarios. El firmware se implementa como un trabajo de impresión con !R! UPGR'SYS';EXIT; antepuesto: el comando de actualización del lenguaje de descripción de página PRESCRIBE [16]. Kyocera no ha publicado ninguna información disponible públicamente sobre mecanismos de protección.

Konica

Aunque no se promociona activamente, el firmware para impresoras Konica Minolta se puede descargar desde download6.konicaminolta.eu. Los dispositivos más nuevos conectados a Internet tienen la capacidad de realizar actualizaciones de firmware por sí mismos. Los archivos comprimidos vienen en diferentes formatos y se pueden desempaquetar usando unp, unzip y tar, lo que resulta en 38 archivos binarios propietarios .bin, 20 módulos de impresora softload basados en PostScript para dispositivos más antiguos y 14 archivos de diferentes extensiones que contienen comandos PJL como @PJL ENTER LANGUAGE=FIRMUPDATE. El libro blanco de seguridad de Konica Minolta afirma que el firmware se verifica utilizando un valor hash [17]. Se puede dudar de que tal esquema sea criptográficamente seguro.

Resultados

De los diez fabricantes analizados, nueve utilizan comandos PJL para todos o al menos algunos de sus procedimientos de actualización de firmware, lo que es un fuerte indicador de que las actualizaciones se implementan como trabajos de impresión ordinarios. El fabricante restante Kyocera aplica el lenguaje de descripción de página PRESCRIBE. Por lo tanto, se puede afirmar que es común en la industria de la impresión instalar nuevo firmware a través del propio canal de impresión y nombrar un defecto de diseño importante presente en casi cualquier dispositivo de impresora: datos y código sobre el mismo canal. Sin embargo, la explotación de este problema es difícil ya que para la mayoría de los fabricantes no se puede hacer una declaración razonada sobre los mecanismos de protección. Por lo tanto, un análisis en profundidad de los ataques de modificación de firmware debería ser parte de la investigación futura. A continuación se presenta un resumen de encabezados de archivos o tipos para todos los archivos de firmware obtenidos:

Fabricante Extensión Cantidad Encabezado de archivo o tipo
HP rfu 419 @PJL UPGRADE SIZE=…
bdl 206 Formato binario FutureSmart
Epson rcx 49 Formato SEIKO EPSON EpsonNet
prn 9 @PJL ENTER LANGUAGE=DOWNLOAD
brn 7 Binario desconocido, incluye archivo de configuración
Dell fls, fly 30 @PJL LPROGRAMRIP
prn 25 @PJL ENTER LANGUAGE=DOWNLOAD
hd 18 @PJL FIRMWARE=…
brn 3 Binario desconocido, incluye archivo de configuración
ps 2 PostScript título: Actualización 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 binario desconocido
Samsung hd 33 @PJL FIRMWARE=…
fls, hd0 4 @PJL DEFAULT P1284VALUE=…
Xerox ps 36 PostScript título: Actualización de Firmware
dlm 35 Módulo Cargable Dinámico de Xerox
prn, bin 20 @PJL ENTER LANGUAGE=DOWNLOAD
hd 16 @PJL FIRMWARE=…
brn 10 Binario desconocido, incluye archivo de configuración
bin 10 @PJL SET JOBATTR="@SWDL"
fls, hd, hde 8 @PJL DEFAULT P1284VALUE=…
fls, xfc 4 @PJL ENTER LANGUAGE=XFLASH
pjl 3 @PJL FSDOWNLOAD [nombre].rpm
axf 3 Ejecutable AIF de RISC OS
Ricoh brn 15 @PJL FWDOWNLOAD…
bin 14 @PJL RSYSTEMUPDATE SIZE=…