Vulnerabilidad de día cero en ataques explotados y dirigidos de Windows

Los inversores de ESET invierten en un exploit de día cero (CVE-2019-1132) que prueba un escándalo de vulnerabilidad de privilegios locales en Windows

En junio de 2019, los investigadores de ESET identificaron la explotación de una vulnerabilidad de día cero que se utilizó en ataques de alto perfil en Europa.

Aprovecha la vulnerabilidad del escalador de privilegios de privilegios locales en Microsoft Windows, más específicamente una referencia de punto NULL (cero) en el componente win32k.sys. Una vez que se descubrió i analizó el exploit, se procedió a reportar el hallazgo al Centro de Respuesta de Seguridad de Microsoft, quien rápidamente reparó la vulnerabilidad y lanzó un parche.

La vulnerabilidad afectó a las versiones de Windows:

  • Windows 7 para sistemas de 32 bits Service Pack 1
  • Windows 7 para sistemas basados ​​en x64 Service Pack 1
  • Windows Server 2008 para sistemas de 32 bits Service Pack 2
  • Windows Server 2008 para sistemas basados ​​en Itanium Service Pack 2
  • Windows Server 2008 para sistemas basados ​​en x64 Service Pack 2
  • Windows Server 2008 R2 para sistemas basados ​​en Itanium Service Pack 1
  • Windows Server 2008 R2 para sistemas basados ​​en x64 Service Pack 1

Este artículo se centra en los detalles de las técnicas de vulnerabilidad y explotación. En otro artículo que publicamos más, buscamos el malware y sus implicaciones.

Explotación

Siempre que con otras vulnerabilidades en Microsoft Windows win32k.sys revelado en los últimos años, explota los objetos del tipo menú emergente. Por ejemplo, el exploit de escalada de privilegios locales del grupo Siéntate a analizar en 2017 el uso de objetos del tipo menú y técnicas muy similares al exploit.

Este exploit crea dos ventanas: una para la primera etapa y otra para la segunda etapa de la explotación. Por primera vez, cree elementos de menú y agregue elementos de menú utilizando las funciones CreatePopupMenu y AppendMenu. Además, el exploit configura los ganchos WH_CALLWNDPROC y EVENT_SYSTEM_MENUPOPUPSTART.

Luego, el exploit ofrece un menú usando la función TrackPopupMenu. Este punto es el código de hockey. EVENT_SYSTEM_MENUPOPUPSTART se ejecuta Este código se puede utilizar como ejemplo de un elemento disponible en el menú central de la secuencia de mensajes. MN_SELECTITEM, MN_SELECTFIRSTVALIDITEM y MN_OPENHIERARCHY al menú.

El siguiente paso es muy importante para desconectarse de la vulnerabilidad. El exploit captura el momento en que se crea el menú inicial y el submenú es el punto de creación. A esto, la cuenta de exploit con un código que manipula el mensaje. WM_NCCREATE en el gancho WH_CALLWNDPROC. Cuando el código de explotación detecte que el sistema está en este estado, envía el mensaje MN_CANCELMENUS (0x1E6) al primer menú, el menú predeterminado es. Sin embargo, su submenú aún está por crearse.

Ahora, revisamos el submenú de objetos en el modo kernel que creemos tagPOPUPMENU‑> ppopupmenuRaíz es igual a 0. Ahora puede usar este elemento en esta estructura del núcleo como una puntuación NULL. El exploit diseñó una nueva página en la dirección 0x0 y esta dirección se trata como un objeto. etiquetaPOPUPMENU (ver Figura 1) por el kernel.

Figura 1. La estructura de etiquetas del kernel POPUPMENU

En este punto, los atacantes usaron el segundo aire. El objetivo principal del exploit es el don del bit. bServerSideWindowProc en la estructura tagWND de la segunda ventana. Este es el motivo de la ejecución de un procedimiento. WndProc un modo de núcleo.

Para descargar la acción adecuada, los ataques filtran la dirección del kernel de memoria de la estructura etiquetaWND de la segunda ventana para empezar a trabajar HMValidateManejar no exportado en libertad usuario32.dll. Luego, el exploit crea un objeto falso. etiquetaPOPUPMENU en la página cero e invitar un mensaje MN_BUTTONDOWN un submenú.

En este punto, el núcleo eventualmente expulsado win32k!xxxMNOpenJerarchy.

Figura 2. Código de codificación de la función win32k XxxMNOpenHierarchy

Funciona como un objeto creado en la página cero. win32k!HMAssignmentLock. El bServerSideWindowProc bit se configura en el interior de la función win32k!HMDestroyUnlockedObjectla cual esta ubicada a unas pocas llamadas mas profundas en el interior de win32k!HMAssignmentLock.

Figura 3. Código de insensibilidad de la función Win32k HMDestroyUnlockedObject

¡Todo está aquí! Ahora el exploit puede enviar un mensaje específico a la segunda ventana con el final del ejercicio. WndProc un modo de núcleo.

Como etapa final, el exploit vuelve a colocar el token del proceso real con el token del sistema.

El parque público, entre otros, tiene una revisión de punto cero en la función win32k!xxxMNOpenJerarchy.

Figura 4. Diferencias de código entre las versiones de win32k.sys: original (requerido) y parcheado (correcto)

Conclusión

El exploit solo funciona en versiones antiguas de Windows, que tiene un proceso de uso de Windows 8 que no permite mapear la página cero. Microsoft ha implementado una modificación en Windows 7 para sistemas basados ​​en x64.

Aquellos que utilizarán Windows 7 Service Pack 1 en sistemas de 32 bits consideren actualizar un nuevo sistema operativo, dado que la extensión de soporte para Service Pack 1 de Windows 7 se completará el 14 de octubre de 2020. Quiero decir que Windows 7 usuarios no aceptan actualizaciones de seguridad críticas, que son vulnerables a quedar permanentemente estacionados para siempre.

hash SHA-1 Nombre de detección de ESET
CBC93A9DD769DEE98FFE1F43A4F5CADAF568E321 Win32 / Exploit.CVE-2019-1132.A

Deja una respuesta

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

Subir
error: Content is protected !!