Análisis de Malware, Microsoft libera análisis de los exploits ZeroDays subidos a VirusTotal



Investigadores de seguridad de Microsoft revelaron el detalle de dos vulnerabilidades importantes y criticas de dia Cero que se descubrieron de manera accidental, ya que alguien subió un archivo PDF malicioso a VirusTotal. Gracias a esto, se logró parchar la vulnerabilidad antes de que fuera explotado en estado salvaje

Hace unos meses cuando el equipo de ESET, descubrió de manera accidental un potencial exploit desconocido que afecta al kernel de Windows.

Después de analizar el PDF malicioso, el equipo de Microsoft encontró que el mismo archivo que incluía los ZeroDays Exploits uno para adobe Acrobat reader y el otro para Microsoft Windows.

Dado de que Microsoft lanzó los parches la segunda semana de Marzo, ahora dio a conocer los detalles de las vulnerabilidades, entendiendo que les dio tiempo suficiente a la gente para que esta realizara el parchado de sus sistemas.

Siendo que el exploit fue detectado a tiempo, el malware estaba en proceso de desarrollo ya que al parecer el código que fue subido a Virus Total, tenia toda la impresión de tratarse de una POC. Los dos ataques de días cero están destinados a ser utilizados en conjunto y forman una llamada "cadena de explotación". El día cero de Adobe tiene la intención de proporcionar la capacidad de ejecutar código personalizado dentro de Adobe Acrobat / Reader, mientras que el día cero de Windows permite a los atacantes escapar de la protección de espacio aislado de Adobe y ejecutar código adicional en el sistema operativo subyacente.

Los CVE de ambas vulnerabilidades son la ejecución de código remoto en Adobe Acrobar Reader CVE-2018-4990 y escalada de Privilegios en Windows CVE-2018-8120.

CVE-2018-4990


El ataque de RCE de Adobe acorbat tenia incrustado un código JavaScript que controla la el proceso de Explotación. Cuando el PDF es abierto el código Javascript es ejecutado.

El código Javascript se ejecuta y manipula el objeto Button1. Este objeto contiene un JPEG2000 modificado, la cual gatilla la doble vulnerabilidad en Adobe Reader.


El javascript usa una técnica llamada "heap-spray" para poder corromper la estructura interna. Después de todas estas manipulaciones, los atacantes logran su objetivo principal: leer y escribir el acceso a la memoria desde su código JavaScript.



Usando estas dos primitivas el atacante localiza la dirección de memoria del pluggin Escript.api el cual usa el motor de AdobeAcrobat. Usando instrucciones de ensamblaje (gadgets ROP) de ese módulo, el JavaScript malicioso configura una cadena ROP que conduciría a la ejecución de shellcode nativo.


Como paso final, el shellcode inicializa el archivo PE incrustado en el PDF, y procede a ejecutarlo.

CVE-2018-8120

Ya ejecutado el exploit anterior, el atacante intentará salirse del ambiente en que adobe es ejecutado, y es exactamente el propósito del segundo exploit.

La causa raíz de esta vulnerabilidad desconocida anteriormente se encuentra en la función NtUserSetImeInfoEx del componente de kernel de Windows win32k. Específicamente, la subrutina SetImeInfoEx de NtUserSetImeInfoEx no valida un puntero de datos, lo que permite una referencia de puntero NULL.


Como es evidente en la Figura 4, la función SetImeInfoEx espera un puntero a un objeto WINDOWSTATION inicializado como primer argumento. El spklList podría ser igual a cero si el atacante crea un nuevo objeto de estación de ventana y lo asigna al proceso actual en modo de usuario. Por lo tanto, asignando la página NULL y configurando un puntero para compensar 0x2C, el atacante puede aprovechar esta vulnerabilidad para escribir en una dirección arbitraria en el espacio del kernel. Se debe tener en cuenta que desde Windows 8, un proceso de usuario no puede mapear la página NULL.

Como el atacante tiene una primitiva de escritura arbitraria, podría usar diferentes técnicas, pero en este caso, el atacante elige usar una técnica descrita por Ivanlef0u y Mateusz "j00ru" Jurczyk y Gynvael Coldwin. El atacante configura una puerta de llamada al Anillo 0 reescribiendo la Tabla de Descriptor Global (GDT). Para hacerlo, un atacante obtiene la dirección del GDT original utilizando la instrucción de ensamblaje SGDT, construye su propia tabla y luego reescribe la original utilizando la vulnerabilidad mencionada.

Luego, el exploit usa el comando CALL FAR, para proceder con la escalada en privilegios.



Nombre del Malware


JS/Exploit.Pdfka.QNV trojan
Win32/Exploit.CVE-2018-8120.A trojan


Hashes SHA1



C82CFEAD292EECA601D3CF82C8C5340CB579D1C6
0D3F335CCCA4575593054446F5F219EBA6CD93FE

Fuente: https://www.welivesecurity.com/2018/05/15/tale-two-zero-days/
https://cloudblogs.microsoft.com/microsoftsecure/2018/07/02/taking-apart-a-double-zero-day-sample-discovered-in-joint-hunt-with-eset/