Sacando credenciales de Windows con un “ Bad PDF ”


obtuso

5g causa cancer
Burgués de Nodo
Noderador
Nodero
Noder

Como se puede aprovechar la última vulnerabilidad crítica de Adobe para conseguir las credenciales de Windows de cualquier usuario con un Bad PDF​





Contexto


En la fecha en la que se escribe este artículo, existe una vulnerabilidad descubierta y publicada recientemente por la empresa de seguridad CheckPoint, que permitiría crear un fichero PDF malicioso, de forma que al ser abierto en una máquina Windows enviaría las credenciales NTLM del usuario de vuelta al atacante.

Históricamente se han visto vulnerabilidades graves que afectan a los ficheros PDF, pero muchas de ellas eran de impacto limitado ya que afectaban a algunas versiones concretas de Adobe Acrobat Reader, otras a algunas versiones concretas de sistemas operativos, y en muchos casos se necesitaba la ejecución de código Javascript. Sin embargo, según los investigadores de la vulnerabilidad, esta afectaría a todas las versiones de todos los visores de ficheros PDF, funcionaría en todas las versiones de Windows y no sería necesario Javascript para su funcionamiento. La vulnerabilidad no tiene aún un código CVE, y es que ante el aviso de los investigadores de que la vulnerabilidad existe, les han contestado que no van a trabajar en ella porque Windows ya proporciona un parche de seguridad opcional que proporciona al usuario la posibilidad de deshabilitar la autenticación por NTLM.





Detalle de la vulnerabilidad




Un fichero PDF puede contener la entrada opcional (/AA) que indica acciones a ejecutar cuando se abre (/O) o se cierra (/C) una de las páginas del fichero. Estas acciones se parametrizan con un diccionario con 3 entradas:

  • Entrada /S: Acción a realizar:
    • GoToR: Go to Remote
    • GoToE: Go to Embebbed (acción vulnerable)
  • Entrada /F: Ruta del documento destino.
  • Entrada /D: Ruta dentro del documento destino.



Estas entradas dan la posibilidad de enlazar unos documentos PDF con otros, sin embargo, la vulnerabilidad permite realizar una conexión a una máquina remota en lugar de conectar con otro fichero PDF. A través de una composición concreta de las 3 entradas (/S, /F y /D), se puede realizar una conexión SMB a un host remoto. Esta petición lleva en su contenido las credenciales NTLM del usuario y si el host remoto tiene un servidor escuchando, puede capturar estas credenciales.




Esquema del ataque




Se puede explicar de forma esquemática el ataque en 3 fases:

  1. Creación del PDF: El atacante crea un fichero PDF especialmente compuesto para aprovechar la vulnerabilidad y conectar de nuevo hacia el atacante al ser abierto. El atacante tiene un servidor preparado para recibir estas conexiones.

Bad Pdf Comunix


  1. Envío del PDF: El atacante hace llegar el PDF a otro usuario con Windows.

Bad Pdf Comunix


  1. Acción del usuario sobre el fichero: El usuario que abre el PDF.

Bad Pdf Comunix


  • En ese momento se produce la explotación de la vulnerabilidad: Se aprovecha la vulnerabilidad para que al abrir el fichero automáticamente se realice una conexión desde la máquina del usuario hacia la máquina del atacante, enviando las credenciales del usuario. El atacante está esperando esta conexión y recoge las credenciales.




El proyecto Bad PDF





Se trata de un proyecto realizado en lenguaje Python, publicado por un investigador de seguridad de Arabia Saudí llamado Deepu TV, que desempeña labores de arquitecto de soluciones de ciberseguridad en la empresa Spectrami: https://www.linkedin.com/in/deeputv/

El proyecto Bad PDF permite realizar una prueba de concepto para validar la existencia de la vulnerabilidad descubierta por la empresa CheckPoint. Tanto el investigador como CheckPoint han enviado esta prueba de concepto a la empresa Adobe, y no han obtenido respuesta por su parte. Adobe sin embargo ha solicitado al investigador del proyecto que lo mantenga cerrado temporalmente mientras ellos buscan una solución para mitigar la vulnerabilidad.

Bad Pdf Comunix




La respuesta a esta petición la publica el investigador en su perfil de Linkedin: el proyecto Bad PDF no se cierra.

Bad Pdf Comunix





¿Como funciona Bad PDF?




Bad PDF realiza básicamente 2 tareas:

  1. Crea el fichero PDF malicioso con una entrada especial que produce una acción al abrirse el fichero, que consiste en una conexión a la máquina del atacante.
  2. Arranca un servidor con Responder y lo deja a la escucha. Cuando se reciba una conexión desde uno de nuestros ficheros PDF, se revelarán las credenciales del usuario.






Responder es una herramienta de sniffing y envenenamiento que viene instalada por defecto en Kali Linux. Actúa como un servidor de autenticación para los protocolos: HTTP, SMB, MSSQL, FTP o LDAP y también realiza envenenamiento sobre LLMNR, NetBios y MDNS.



En este caso de Bad PDF, responder servirá como un servidor falso de autenticación ante peticiones SMB, de forma que al recibir una conexión desde uno de los PDF se puedan visualizar las credenciales NTLM del usuario.




Unboxing del proyecto Bad PDF




Se procederá a descargar y revisar el proyecto Bad PDF para mostrar su contenido e identificar los puntos clave.

Se comienza descargando el proyecto desde GitHub.

Bad Pdf Comunix




El proyecto tiene los ficheros README y LICENSE, algunas capturas de pantalla mostrando su funcionamiento, y un único script en Python llamado “badpdf.py”.

Bad Pdf Comunix




Se procede a revisar el contenido del script “badpdf.py” con un editor de textos para comprender mejor su funcionamiento. Se puede ver como se realiza la creación del fichero PDF con versión 1.7 a través de su única función llamada “create_malpdf”.

Bad Pdf Comunix




Se aprecia como la función compone el contenido del PDF con la entrada opcional /AA para definir acciones cuando se abre el documento (/O):



  • /F: Ruta del documento a enlazar (se introduce el host del atacante)
  • /D: Ruta dentro del documento a enlazar
  • /S: Acción GoToE (Go to Embebbed)

Bad Pdf Comunix




Para finalizar el documento PDF, se añade contenido en texto: PDF Document

Bad Pdf Comunix




A continuación se encuentra la función principal del script (main). Al arrancar el script se muestra un logo en ascii art.

Bad Pdf Comunix




En su contenido, la función principal ejecuta las siguientes tareas en orden secuencial:

1) Verificar Responder: Comprueba si está instalado Responder en el sistema. Si no se encuentra el ejecutable de Responder, solicita su ruta al usuario.

Bad Pdf Comunix




2) Solicitar parámetros: Solicita al usuario que introduzca los parámetros necesarios para la ejecución del script:

  • IP del atacante
  • Nombre del Pdf resultante
  • Interfaz de red donde escuchar las credenciales que nos envían.

Bad Pdf Comunix




3) Crear el PDF: Usando la función create_malpdf, crea el fichero PDF inyectando en su interior una conexión al host indicado (usando la vulnerabilidad) y lo guarda con el nombre indicado.

Bad Pdf Comunix




4) Arrancar Responder: Crea un proceso con el comando responder y la interfaz indicada, y lo deja a la escucha.



Bad Pdf Comunix



Bad PDF in action




Finalmente se realizará una prueba de concepto creando un fichero PDF con el script para posteriormente validar la existencia de la vulnerabilidad en varias máquinas Windows.

Se inicia el script con python badpdf.py y se visualiza el logo de bienvenida.

Bad Pdf Comunix




Se introducen los 3 parámetros solicitados:

  • IP del atacante: Se introduce la IP done estará escuchando Responder.
  • Nombre del PDF resultante: Se introduce un nombre adecuado al objetivo. Por ejemplo en una empresa habría un gran número de directivos y gestores interesados en un fichero PDF que ofrece una oferta económica.
  • Interfaz de escucha: La interfaz de red donde se esperan las peticiones SMB. Por defecto es eth0.

Bad Pdf Comunix




Una vez introducidos estos parámetros, se ejecutará automáticamente el comando responder.

[Opcional] Si por alguna razón Responder no arranca correctamente o si se desea parar y ejecutar más tarde, se puede ejecutar el comando a mano:

Bad Pdf Comunix




Una vez arrancado Responder, se queda la ventana abierta con el ejecutable escuchando posibles conexiones, con el mensaje “Listening for events…”

Bad Pdf Comunix




Se deja la ventana abierta con responder escuchando y se usa el fichero en un PC con Windows. En este caso se decide copiar el fichero en un Pen Drive y realizar una prueba en 2 versiones de Windows con distintas configuraciones.

Bad Pdf Comunix



Primera prueba:


Windows 7 + Adobe Acrobat




Para comenzar se introduce el pen drive en una máquina local con Windows 7, con Service Pack 1, con todas las actualizaciones instaladas y un antivirus gratuito.

Bad Pdf Comunix




El sistema tiene instalada una versión más o menos actualizada de Adobe Acrobat Reader: 2018.011.20038

Bad Pdf Comunix




En principio se espera que el antivirus que se utiliza en la máquina, que en otros casos salta a la mínima, ahora muestre alertas de color sangre… un festival de alertas de seguridad, bloqueos o algo similar. Sin embargo al abrir el documento no existe evidencia visual alguna de que se ha realizado una conexión no solicitada desde el fichero PDF a una máquina remota.



Se muestra de forma normal el documento que contiene el texto “PDF Document”. (Se puede poner otro contenido distinto cambiando la parte adecuada del script badpdf.py)

Bad Pdf Comunix






En la máquina donde Responder está escuchando, se muestra la IP, el usuario y el Hash NTLM del usuario que ha abierto el PDF. En esta ocasión la conexión hacia el responder del atacante se produce usando el protocolo SMBv1.

Bad Pdf Comunix





Segunda prueba:


Windows 10 + Internet Explorer Edge




Se introduce el Pen Drive con el PDF en una máquina de la misma red local, esta vez con el sistema operativo Windows 10, con todas las actualizaciones instaladas y sin antivirus (es decir, con Windows Defender). Se abre el documento PDF con el navegador Internet Explorer Edge.

Como resultado de la apertura del fichero, el atacante recibe las credenciales NTLM del usuario. En esta ocasión la conexión hacia el Responder del atacante se produce usando el protocolo SMBv2.

Bad Pdf Comunix





Extraer las contraseñas




Se han obtenido los usuarios y los hashes de las contraseñas, y con esto sería suficiente para usar técnicas como “Pass the Hash”, empleada para pivotar entre máquinas Windows. Las contraseñas originales de los usuarios se pueden extraer usando ataques de fuerza bruta sobre los hashes obtenidos, utilizando un software específico como John the Ripper. En este sentido, Responder escribe las credenciales recibidas del usuario en un fichero preparado para la versión Jumbo de John de Ripper, alojado en la carpeta:

/usr/share/responder/logs/​

Los nombres de los ficheros con los hashes tienen el formato:

(MODULO)-(TIPO_DE_HASH)-(IP_DEL_CLIENTE).txt​

Bad Pdf Comunix




Por último quedaría utilizar estos ficheros junto a John the Riper y un buen diccionario… y a esperar a que caigan las contraseñas.

Bad Pdf Comunix
 
  • Like
Reacciones : miP1t0 y Haze