| |

Hacking ético proteger impresoras de red

Contenido

  • 1 PJL y JetDirect
  • 2 saludos de pirateo
  • 3 prueba de masa
    • 3.1 Impresión masiva
    • 3.2 ataque DoS
  • 4 Búsqueda global
    • 4.1 Escaneo en red con Nmap
  • 5 interfaz de impresora web
  • 6 herramientas para piratear impresoras
  • 7 impresoras de pirateo
  • 8 Conclusión

El lenguaje de programación y las configuraciones predeterminadas permiten piratear impresoras tanto en la red local como remotamente a través de Internet. Si está siguiendo las noticias en el mundo de la seguridad de la información, probablemente recuerde cómo los piratas informáticos que irrumpieron en las impresoras de red imprimieron volantes pidiendo apoyo para el video blogger PewDiePie. En el artículo de hoy, le mostraré cómo hacer esto y al mismo tiempo le diré cómo proteger la impresora de los ataques.

PJL y JetDirect

HP desarrolló el Printer Job Language (PJL) a finales de los noventa. Originalmente tenía la intención de expandir los comandos de la impresora, pero pasaron los años, y en el mundo dinámico de la tecnología de la información, se comenzó a utilizar otro lenguaje de programación para esta función: el Lenguaje de comandos de la impresora (PCL). Con la mano ligera de HP, PJL ha seguido su propio camino. Fue utilizado por otras compañías y ha adquirido una gran cantidad de características adicionales. Como resultado, obtuvimos algo similar al ensamblador: solo hay un lenguaje de programación, pero las instrucciones para cada dispositivo son diferentes.

Incluso si solo tomamos dispositivos HP, no hay una descripción completa de las instrucciones y comandos en el dominio público (aparentemente, la compañía se dio cuenta de que no es seguro cargar detalles técnicos en Internet). Existe un manual común que compara los modelos de impresoras en serie y los comandos que admiten. También hay una instrucción que describe las acciones de los comandos, la sintaxis y los errores. El documento ya está desactualizado y no debe confiar demasiado en él.

Además del lenguaje de control de la impresora, HP ha desarrollado otra tecnología interesante que continúa hasta nuestros días, JetDirect . Esto le permite convertir cualquier impresora en una red. Sobre esta base, se producen tanto servidores de impresión individuales como integrados (en impresoras, impresoras multifunción y enrutadores). JetDirect le permite conectar dispositivos a la red e imprimir de forma remota … ¡y no solo al propietario!

Hackear saludos

Usando el lenguaje PJL, algunas técnicas de pirateo se utilizan en los centros de servicio. Por ejemplo, reinician los contadores de las hojas impresas o borran la memoria de los cartuchos insertados previamente. Esto no se puede hacer desde el menú de la impresora, por lo que debe recurrir a estos trucos a través de la consola. Profundicemos y veamos cómo rompen las impresoras.

El artículo está escrito con fines educativos. Ni el autor ni los editores del sitio spy-soft.net son responsables de los posibles daños causados ​​por los materiales de este artículo.

El servicio JetDirect por defecto escucha en el puerto TCP 9100. Le enviaremos comandos desde la consola. Para el experimento, utilicé una impresora de red HP Color LaserJet 3600n con un servidor de impresión HP JetDirect Fast Ethernet integrado.

Encontrar Nmap Open Port 9100
Encontrar Nmap Open Port 9100

Podemos conectarnos al puerto abierto con el telnet habitual, pero como soy un fanático de todo tipo de métodos sofisticados, usaré netcat. Intentemos cambiar el saludo de la impresora en la pantalla.

Permítanme explicar un poco el comando:
@PJL: estos caracteres dejan en claro a la impresora qué lenguaje usamos;
STMSG DISPLAY es el comando de cambio de etiqueta de visualización en sí. Después de eso, simplemente escribimos lo que queremos generar.

Enviamos un comando a la impresora.
Enviamos un comando a la impresora.

Como resultado, obtenemos el resultado como en la foto.

Pantalla de la impresora antes y después de enviar un comando
Pantalla de la impresora antes y después de enviar un comando

Ahora nuestra inscripción brillará en la pantalla en lugar del saludo estándar, hasta que alguien presione cualquier botón en el dispositivo.

Se puede lograr un efecto similar utilizando el operador RDYMSG (mensaje de preparación) en lugar de STMSG (mensaje estándar). El equipo tomará la siguiente forma:

Lo mismo se puede hacer imprimiendo desde un archivo:

Después de estos comandos, la etiqueta HACKED nuevamente brilla con orgullo en la pantalla de la impresora, lo que significa que podemos enviar comandos PJL desde el archivo a la impresora.

Prueba de masas

La interacción de la impresora y la computadora cuando se imprime se puede representar como un modelo de tres capas. La primera capa será el protocolo de red, luego el lenguaje de control de la impresora (en nuestro caso, PJL) y el último lenguaje de descripción (PostScript).

Hay un punto interesante: dado que el puerto 9100 está reservado de facto para JetDirect, se utiliza para recibir comandos PJL y trabajos de impresión. En otras palabras, podemos enviar allí cualquier cadena que no esté relacionada con PJL. El servidor de impresión lo llevará al siguiente nivel, donde PostScript lo convertirá en un trabajo de impresión. Por supuesto, sin interactuar con el controlador, lo más probable es que sea imposible imprimir formatos como .docx o .png, pero para un archivo .txt normal es suficiente.

Haré un pequeño comentario: si desea obtener etiquetas idénticas en diferentes modelos y marcas de impresoras y MFP, es mejor olvidarlo de inmediato. PostScript no «comprende» el formato del texto o, en otras palabras, la fuente y el tamaño de la inscripción serán diferentes, la que se usa por defecto.

Para verificar, cree un archivo de texto printme.txt que no contenga comandos. Estas son solo cadenas con letras latinas. Lo enviamos a la impresora con el mismo comando, y … después de un par de segundos, ¡el dispositivo escupe una hoja impresa!

Como resultado, podemos imprimir un documento usando JetDirect simplemente enviando texto al puerto TCP 9100 desde un archivo o consola. ¿Se puede automatizar esto? Por supuesto!

Impresión a granel

Tratemos con la automatización, no es tan difícil. Usaré bash y ejecutaré todas las pruebas usando mi red local como ejemplo, aunque esto funcionará bien con NAT.

Primero, cree un archivo con cualquier contenido. Ahora necesitamos escanear el rango de direcciones IP para todos los nodos con un puerto abierto 9100. El viejo Nmap nos ayudará con esto . Sin embargo, para obtener direcciones IP limpias en un formato conveniente (sin caracteres adicionales), usaré la utilidad grep para procesar expresiones regulares:

Con esta máscara, obtenemos una salida que contiene solo las direcciones IP en cada línea.

Aquí está el comando final después de la fusión:

El resultado de agregar una expresión regular
El resultado de agregar una expresión regular

Ahora manejaremos todo esto en un bucle, indicando la dirección IP deseada y la máscara de subred:

Trabajo de guión
Trabajo de guión

Inicie … y escuchará cómo todas las impresoras de red en la oficina zumbaron. Además de los diversos modelos de HP, el Kyocera 2040dn también se ha unido al trabajo.

Impresiones después de ejecutar el script
Impresiones después de ejecutar el script

Sería posible forzar a las impresoras a imprimir utilizando el comando echo, y no desde un archivo, pero esto es conveniente para cualquier persona.

Ataque DoS

Ahora intenta causar una denegación de servicio. Para hacer esto (como una opción) necesitamos crear un bucle sin fin. En bash, se ve más o menos así:

Añadir envío de trabajo:

Comenzamos y miramos el resultado. Esto es lo que sucedió en la impresora multifunción HP LaserJet Pro M1536dnf experimental: logró imprimir un par de hojas, y luego «Imprimir documento» estaba constantemente en la pantalla, aunque ya no se imprimía. La impresión no se reanudó incluso después de que el script dejó de funcionar. Aparentemente, una larga lista de tareas colgó el MFP. Tuvo que reiniciarse para restaurar la funcionalidad. Más o menos lo mismo sucedió más tarde con el Kyocera 2040dn.

Búsqueda global

Su red es un buen campo de entrenamiento, pero es mucho más interesante enviar trabajos de impresión y divertidas etiquetas de exhibición a todo el mundo. Armados con el motor de búsqueda de hackers ZoomEye , configuramos una búsqueda normal en el puerto 9100 (esta es la forma más fácil) y vemos más de medio millón de objetivos potenciales.

Busque ZoomEye en el puerto 9100
Busque ZoomEye en el puerto 9100

Quizás no todos sean impresoras o MFP. Por lo tanto, utilizaremos los filtros que se pueden encontrar en la documentación . Por ejemplo, agregamos el dispositivo de refinamiento +: impresora a nuestra solicitud y ya recibimos alrededor de 300 mil resultados. Luego puede especificar la ciudad, y la solicitud tomará la forma

Como resultado, obtenemos resultados de búsqueda que contienen alrededor de 5000 dispositivos en Moscú. ¿Quién quería imprimir folletos de campaña más baratos allí?

También puede encontrar impresoras de red disponibles a través de Internet usando Google. Para hacer esto, necesita saber cómo se ve la parte típica de la URL de la interfaz web o la respuesta específica del servidor de impresión. Aquí hay un par de google dorks como ejemplo:

JetDirect Web Based Management utiliza SNMP (Protocolo simple de administración de red), un protocolo de capa de aplicación para administrar dispositivos de red, incluidas las impresoras. Funciona en redes IP a través de TCP / UDP, y los dispositivos con soporte SNMP son fácilmente detectados por utilidades especializadas como Net-SNMP y combinadores de administración universales, como Fing .

Se necesita mucho más tiempo para buscar los puertos abiertos 9100 con el escáner Nmap en Internet. Todo se hace de la misma manera que en la red local. Para mayor comodidad, tome un sitio web o programa que pueda emitir todas las direcciones IP en una ciudad específica. Los escribimos en un archivo y ejecutamos un escaneo de Nmap.

Durante veinte minutos de trabajo, el programa me complació con treinta líneas de IP, pero solo diez de ellas resultaron ser impresoras externas.

Escanear a nmap
Escanear a nmap

Este método es más largo, pero el resultado será nuevo. Las bases de datos de ZoomEye no se actualizan todos los días.

Para la automatización, puede usar el mismo modo: nuevamente, ajuste todas las líneas en un bucle y, si se detecta una impresora, envíe el archivo a imprimir. Luego, durante el escaneo, todas las impresoras encontradas imprimirán automáticamente el archivo especificado.

Escaneo en red con Nmap

Un poco de aclaracion. La documentación de este escáner dice que el puerto 9100 se omite de forma predeterminada si el control de versiones está habilitado (se especifica mediante las opciones -sV, que también incluyen la opción -A). Esto se debe al hecho de que algunas impresoras simplemente imprimen todo lo que va al puerto JetDirect. En respuesta a una encuesta TCP 9100, imprimen una solicitud GET / HTTP. Por lo tanto, al comenzar con estos indicadores, Nmap versión 3.90 y posteriores solo emitirán un servicio sospechoso con un signo de interrogación. Una opción más segura (pero menos informativa) es ejecutar Nmap con los modificadores -sO. Por lo tanto, intentará determinar el sistema operativo host, pero no enviará solicitudes adicionales para averiguar qué servicios están respondiendo en el puerto especificado.

Escanear con función de versionado
Escanear con función de versionado

Interfaz de impresora web

Las impresoras de red a menudo están conectadas a Internet y sin el conocimiento de sus propietarios. La interfaz web con páginas de configuración y funciones de administración también será visible debido a NAT sin restricciones de acceso significativas. En la mayoría de los casos, el nombre de usuario / contraseña se establece de manera predeterminada o no se establece en absoluto. Aquí hay un sitio con el nombre parlante passwordsdatabase.com , uno de los directorios de contraseñas predeterminadas en línea con una búsqueda por proveedor. No hay (todavía) nuevos modelos, pero las impresoras informan inmediatamente su número, por lo que es fácil encontrar la contraseña de fábrica en el manual en el sitio web del fabricante.

Dependiendo del modelo de la impresora, puede hacer diferentes cosas a través de su panel web: ver y cambiar la configuración, enviar un comando para imprimir una página de prueba o un archivo específico.

Posibilidad de especificar un archivo para imprimir
Posibilidad de especificar un archivo para imprimir

También puede leer los registros de uso de la impresora, es decir, ver quién imprimió qué. Por lo general, en orden cronológico, se indican los nombres de usuario, las aplicaciones usadas, los nombres de documentos, etc.

Algunas impresoras (en particular, que se encuentran en la Ricoh Aficio MP C3500) les dicen a los piratas informáticos que la contraseña de administrador es predeterminada o que no existe en absoluto. Parece la línea «¡Cambie su contraseña de administrador!» directamente en el panel de control de la impresora.

Ricoh Aficio MP C3500 solicita cambiar la contraseña de administrador
Ricoh Aficio MP C3500 solicita cambiar la contraseña de administrador

Herramientas de pirateo de impresoras

En 2017, la conferencia Black Hat consideró formas automatizadas de explotar varios agujeros en la seguridad de las impresoras de red, después de lo cual hubo aún más herramientas listas para usar. Estas son algunas de ellas.

Hijetter es una utilidad multiplataforma de código abierto que le permite enviar comandos PJL, incluidos los indocumentados. Por ejemplo, use la función RFU (actualización remota de firmware), que realiza el flasheo remoto del dispositivo. En lugar del firmware oficial, puede deslizar su propio (modificado), en la mayoría de los casos, no se realizan verificaciones. La versión de Windows tiene una GUI intuitiva, y en los sistemas nix es más conveniente realizar la automatización desde la línea de comandos. La documentación es deficiente, pero es fácil manejar el programa.

Praeda : este programa está diseñado para la auditoría de seguridad al verificar la configuración de conexión de la impresora de red. Capaz de realizar búsquedas automáticas y descargar documentos de la memoria de la impresora. Funciona en los puertos TCP 80 y 443, es decir, admite una conexión segura. También se puede ejecutar en Windows, sin embargo, primero tendrá que cambiar algo en el código del programa en sí (consulte la documentación).

PRET es un marco completo de Python para explotar vulnerabilidades conocidas en servicios de impresión remotos. Funciona en Linux, admite comandos PJL y PCL. La herramienta está muy bien documentada, incluso hay una guía detallada con ejemplos.

Pirateo de impresoras

Para proteger la impresora de tales ataques, al menos debe cerrar el puerto 9100 (por ejemplo, a través de la configuración del enrutador). Esto incluso está escrito en la guía sobre seguridad de red mínima en el sitio web de HP, pero algo me dice que pocas personas lo leen.

Por lo general, una computadora envía un trabajo de impresión a través de una red de una manera diferente, por ejemplo, al puerto TCP 631 usando IPP . La siguiente captura de pantalla muestra los paquetes capturados por el sniffer mientras imprime el documento en la impresora de red HP Color LaserJet 3600n.

como hackear una impresora
Registro de Wireshark al imprimir en una impresora de red

Los modelos avanzados le permiten configurar una lista de acceso desde direcciones IP específicas. Busque en la documentación la sección correspondiente o las palabras clave IP ACL.

Cambie los nombres de usuario / contraseñas predeterminados, incluso si no va a usar el control remoto.

Establecer una nueva contraseña de administrador de impresora
Establecer una nueva contraseña de administrador de impresora

Sin embargo, todo esto no es una panacea. Se han utilizado varias vulnerabilidades en el sistema JetDirect durante mucho tiempo y se han parcheado extremadamente lentamente. En 2018, HP incluso invitó a los piratas informáticos a instalar nuevas impresoras, pero el principal problema es minimizar rápidamente el soporte para las antiguas. Las organizaciones han estado utilizando impresoras y equipos multifunción obsoletos durante años. Hay exploits listos para ellos, pero no habrá ni habrá nuevos controladores / firmware que cubran vulnerabilidades conocidas.

Por lo tanto, es mejor desconectar completamente su impresora de Internet y usarla solo a través de la red local. Enciéndalo solo cuando sea realmente necesario. Solo un dispositivo apagado no puede ser pirateado de forma remota.

Conclusión

Las vulnerabilidades de las impresoras de red se han examinado desde su aparición, pero en los últimos años la situación no ha mejorado en absoluto. El WiFi apareció en las impresoras y la función de actualización automática de firmware a través de Internet, mientras que la MFP más cara ahora tiene memoria incorporada, a menudo almacenando copias de documentos escaneados e impresos durante un largo período.

Poco a poco, de mimos ataques a impresoras de red se convierten en un negocio. Algunos buscan datos confidenciales en ellos, otros los usan como punto de entrada a la red corporativa y otros intentan beneficiarse de los correos masivos. Algunas personas emprendedoras ya han creado el servicio de publicidad de impresoras, en el cual se envía correo no deseado por una cierta cantidad, imprimiéndolo de forma remota en las impresoras de otras personas.

Publicaciones Similares

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *