Análisis y explotación de vulnerabilidades 0day en el sistema Windows de Microsoft
Recientemente, el parche de seguridad publicado por Microsoft incluye una vulnerabilidad de escalada de privilegios win32k que está siendo explotada. Esta vulnerabilidad existe principalmente en versiones anteriores del sistema Windows y no se puede activar en Windows 11. Este artículo analizará cómo los atacantes continúan aprovechando este tipo de vulnerabilidades en el contexto actual de un aumento constante de la protección de seguridad. Nuestro proceso de análisis se realizó en un entorno de Windows Server 2016.
Contexto de la vulnerabilidad
La vulnerabilidad 0day se refiere a una vulnerabilidad de seguridad que no ha sido divulgada ni reparada, similar al concepto de comercio T+0 en los mercados financieros. Este tipo de vulnerabilidad, una vez descubierta, puede ser explotada maliciosamente sin ser detectada, causando un gran daño.
La vulnerabilidad de 0day en el sistema Windows descubierta recientemente podría permitir a los atacantes obtener el control total del sistema. Esto podría llevar a consecuencias graves como la filtración de información personal, el colapso del sistema, la pérdida de datos y pérdidas financieras. Desde la perspectiva de Web3, las claves privadas de los usuarios podrían ser robadas y los activos digitales transferidos. En un sentido más amplio, esta vulnerabilidad podría afectar todo el ecosistema Web3 que opera sobre una infraestructura basada en Web2.
Análisis de vulnerabilidades
A través del análisis del código del parche, descubrimos que se trata de un problema de error de conteo de referencias de objetos. Los comentarios en el código win32k anterior muestran que solo se bloqueaba el objeto de ventana, sin bloquear el objeto de menú dentro de la ventana, lo que podría llevar a una referencia incorrecta del objeto de menú.
Un análisis más profundo revela que, en la función xxxEnableMenuItem, el objeto de menú devuelto puede ser el menú principal de la ventana, un submenú o incluso un menú más profundo. Esto proporciona ideas para construir un POC.
Implementación de POC
Hemos construido una estructura de menú de múltiples capas especial, que contiene cuatro objetos de menú con relaciones específicas. Al configurar cuidadosamente las propiedades y relaciones de estos menús, se puede eludir la detección de la función xxxEnableMenuItem y liberar los objetos de menú clave cuando la función regresa. De esta manera, al hacer referencia a ese objeto posteriormente, se activará una vulnerabilidad UAF.
Explotación de vulnerabilidades ( EXP )
Enfoque general
Consideramos dos tipos de explotación: ejecutar shellcode y modificar el token utilizando primitivas de lectura y escritura. Finalmente, elegimos la segunda opción, ya que es más viable en versiones más recientes de Windows. Dividimos todo el proceso de explotación en dos pasos: cómo controlar el valor de cbwndextra a través de UAF y cómo lograr primitivas de lectura y escritura estables utilizando cbwndextra controlado.
Escritura de datos iniciales
Utilizamos el objeto de nombre de la clase de ventana WNDClass para ocupar la memoria del objeto de menú liberado. Al analizar varios puntos de escritura posibles, finalmente se eligió utilizar la operación AND de los flags del objeto en la función xxxRedrawWindow para escribir el valor cb-extra de HWNDClass.
disposición de la memoria
Hemos diseñado un diseño de memoria compuesto por tres objetos HWND consecutivos, donde el objeto del medio se libera y es ocupado por un objeto HWNDClass. Los objetos HWND en los extremos se utilizan respectivamente para eludir la detección y realizar las primitivas de lectura y escritura finales. A través de la dirección del manejador del núcleo filtrado, podemos controlar con precisión la disposición de estos objetos.
implementación de primitivos de lectura y escritura
Cualquier operación de lectura utiliza la función GetMenuBarInfo, mientras que cualquier operación de escritura utiliza la función SetClassLongPtr. Aparte de que la escritura de TOKEN depende del objeto de clase de la segunda ventana, todas las demás operaciones de escritura utilizan el objeto de clase de la primera ventana a través de un desplazamiento para implementarse.
Resumen
Microsoft está intentando reescribir el código win32k utilizando Rust, en el futuro, este tipo de vulnerabilidades podrían resolverse por completo en el nuevo sistema.
El proceso de explotación de este tipo de vulnerabilidades es relativamente simple, y la principal dificultad radica en cómo controlar la primera escritura de datos.
El descubrimiento de vulnerabilidades puede ser el resultado de técnicas de detección de cobertura de código más completas.
En cuanto a la detección de vulnerabilidades, además de centrarse en los puntos clave de las funciones desencadenantes, también se deben detectar disposiciones de memoria anómalas y operaciones de lectura y escritura de datos.
Esta página puede contener contenido de terceros, que se proporciona únicamente con fines informativos (sin garantías ni declaraciones) y no debe considerarse como un respaldo por parte de Gate a las opiniones expresadas ni como asesoramiento financiero o profesional. Consulte el Descargo de responsabilidad para obtener más detalles.
7 me gusta
Recompensa
7
6
Compartir
Comentar
0/400
DeFiGrayling
· hace3h
Microsoft realmente ha hecho algo grande esta vez -_-
Ver originalesResponder0
HackerWhoCares
· hace3h
¡No es de extrañar que mi computadora esté tan lenta!
Ver originalesResponder0
ResearchChadButBroke
· hace3h
Microsoft ha fracasado esta vez.
Ver originalesResponder0
GasWrangler
· hace3h
técnicamente hablando, este defecto en el diseño de memoria es subóptimo af
La vulnerabilidad 0day del sistema Windows genera riesgos de seguridad en Web3, análisis del proceso de explotación por expertos.
Análisis y explotación de vulnerabilidades 0day en el sistema Windows de Microsoft
Recientemente, el parche de seguridad publicado por Microsoft incluye una vulnerabilidad de escalada de privilegios win32k que está siendo explotada. Esta vulnerabilidad existe principalmente en versiones anteriores del sistema Windows y no se puede activar en Windows 11. Este artículo analizará cómo los atacantes continúan aprovechando este tipo de vulnerabilidades en el contexto actual de un aumento constante de la protección de seguridad. Nuestro proceso de análisis se realizó en un entorno de Windows Server 2016.
Contexto de la vulnerabilidad
La vulnerabilidad 0day se refiere a una vulnerabilidad de seguridad que no ha sido divulgada ni reparada, similar al concepto de comercio T+0 en los mercados financieros. Este tipo de vulnerabilidad, una vez descubierta, puede ser explotada maliciosamente sin ser detectada, causando un gran daño.
La vulnerabilidad de 0day en el sistema Windows descubierta recientemente podría permitir a los atacantes obtener el control total del sistema. Esto podría llevar a consecuencias graves como la filtración de información personal, el colapso del sistema, la pérdida de datos y pérdidas financieras. Desde la perspectiva de Web3, las claves privadas de los usuarios podrían ser robadas y los activos digitales transferidos. En un sentido más amplio, esta vulnerabilidad podría afectar todo el ecosistema Web3 que opera sobre una infraestructura basada en Web2.
Análisis de vulnerabilidades
A través del análisis del código del parche, descubrimos que se trata de un problema de error de conteo de referencias de objetos. Los comentarios en el código win32k anterior muestran que solo se bloqueaba el objeto de ventana, sin bloquear el objeto de menú dentro de la ventana, lo que podría llevar a una referencia incorrecta del objeto de menú.
Un análisis más profundo revela que, en la función xxxEnableMenuItem, el objeto de menú devuelto puede ser el menú principal de la ventana, un submenú o incluso un menú más profundo. Esto proporciona ideas para construir un POC.
Implementación de POC
Hemos construido una estructura de menú de múltiples capas especial, que contiene cuatro objetos de menú con relaciones específicas. Al configurar cuidadosamente las propiedades y relaciones de estos menús, se puede eludir la detección de la función xxxEnableMenuItem y liberar los objetos de menú clave cuando la función regresa. De esta manera, al hacer referencia a ese objeto posteriormente, se activará una vulnerabilidad UAF.
Explotación de vulnerabilidades ( EXP )
Enfoque general
Consideramos dos tipos de explotación: ejecutar shellcode y modificar el token utilizando primitivas de lectura y escritura. Finalmente, elegimos la segunda opción, ya que es más viable en versiones más recientes de Windows. Dividimos todo el proceso de explotación en dos pasos: cómo controlar el valor de cbwndextra a través de UAF y cómo lograr primitivas de lectura y escritura estables utilizando cbwndextra controlado.
Escritura de datos iniciales
Utilizamos el objeto de nombre de la clase de ventana WNDClass para ocupar la memoria del objeto de menú liberado. Al analizar varios puntos de escritura posibles, finalmente se eligió utilizar la operación AND de los flags del objeto en la función xxxRedrawWindow para escribir el valor cb-extra de HWNDClass.
disposición de la memoria
Hemos diseñado un diseño de memoria compuesto por tres objetos HWND consecutivos, donde el objeto del medio se libera y es ocupado por un objeto HWNDClass. Los objetos HWND en los extremos se utilizan respectivamente para eludir la detección y realizar las primitivas de lectura y escritura finales. A través de la dirección del manejador del núcleo filtrado, podemos controlar con precisión la disposición de estos objetos.
implementación de primitivos de lectura y escritura
Cualquier operación de lectura utiliza la función GetMenuBarInfo, mientras que cualquier operación de escritura utiliza la función SetClassLongPtr. Aparte de que la escritura de TOKEN depende del objeto de clase de la segunda ventana, todas las demás operaciones de escritura utilizan el objeto de clase de la primera ventana a través de un desplazamiento para implementarse.
Resumen
Microsoft está intentando reescribir el código win32k utilizando Rust, en el futuro, este tipo de vulnerabilidades podrían resolverse por completo en el nuevo sistema.
El proceso de explotación de este tipo de vulnerabilidades es relativamente simple, y la principal dificultad radica en cómo controlar la primera escritura de datos.
El descubrimiento de vulnerabilidades puede ser el resultado de técnicas de detección de cobertura de código más completas.
En cuanto a la detección de vulnerabilidades, además de centrarse en los puntos clave de las funciones desencadenantes, también se deben detectar disposiciones de memoria anómalas y operaciones de lectura y escritura de datos.