Análisis de vulnerabilidades graves del sistema Windows de Microsoft: puede provocar importantes riesgos de seguridad en Web3
El mes pasado, un parche de seguridad de Microsoft corrigió una vulnerabilidad de elevación de privilegios en Windows que estaba siendo explotada por hackers. Esta vulnerabilidad existe principalmente en las versiones anteriores de Windows y no se puede activar en Windows 11. A pesar de que este tipo de vulnerabilidades ha existido durante años, en el contexto actual de medidas de seguridad en constante mejora, sigue siendo valioso analizar cómo los atacantes pueden continuar explotándola.
Este análisis se basa en el sistema Windows Server 2016. Se trata de una vulnerabilidad de día cero no divulgada, que permite a los hackers tomar el control total del sistema Windows. Una vez que el sistema es controlado, las consecuencias pueden incluir la filtración de información personal, el colapso del sistema, la pérdida de datos, pérdidas financieras, entre otros. Para los usuarios de Web3, las claves privadas pueden ser robadas y los activos digitales pueden ser transferidos. Desde una perspectiva más amplia, esta vulnerabilidad podría incluso afectar a todo el ecosistema Web3 que opera sobre la infraestructura de Web2.
Al analizar el parche, se encontró que el problema radica en el manejo del conteo de referencias de objetos. Los comentarios en el código fuente anterior muestran que el código anterior solo bloqueaba el objeto de la ventana, sin bloquear el objeto del menú en la ventana, lo que podría provocar referencias incorrectas al objeto del menú.
Para reproducir esta vulnerabilidad, construimos una estructura de menú anidado de múltiples niveles especial y configuramos propiedades específicas para cada menú, a fin de pasar las verificaciones del sistema relacionadas. La clave es eliminar la relación de referencia entre los menús al regresar a la capa del usuario, liberando con éxito el objeto de menú objetivo. Así, cuando la función del núcleo vuelve a referenciar ese menú, accederá a un objeto no válido.
En la utilización práctica, consideramos principalmente dos soluciones: ejecutar shellcode y modificar la dirección del token utilizando primitivas de lectura y escritura. Teniendo en cuenta los mecanismos de seguridad de las versiones más recientes de Windows, elegimos la segunda opción. Todo el proceso de explotación se puede dividir en dos pasos: primero, controlar el valor de cbwndextra aprovechando la vulnerabilidad UAF, y luego, basándonos en esto, establecer primitivas de lectura y escritura estables.
Para lograr un diseño de memoria estable, hemos diseñado una estructura de tres objetos HWND consecutivos, liberando el objeto intermedio y ocupándolo con el objeto HWNDClass. Los objetos HWND en los extremos se utilizan respectivamente para la verificación a través del sistema y como medio de lectura y escritura final. También determinamos con precisión si el arreglo de objetos cumple con las expectativas a través de la dirección del manejador del núcleo filtrado.
En cuanto a la lectura y escritura de primitivos, utilizamos GetMenuBarInfo() para realizar lecturas arbitrarias y SetClassLongPtr() para realizar escrituras arbitrarias. Aparte de las operaciones de reemplazo de TOKEN, todas las demás operaciones de escritura se realizan utilizando el objeto de clase del primer objeto de ventana.
En general, aunque Microsoft está reescribiendo el código del núcleo relacionado con Rust para mejorar la seguridad, las vulnerabilidades existentes siguen siendo una amenaza seria para los sistemas actuales. El proceso de explotación de vulnerabilidades es relativamente simple y se basa principalmente en la filtración de la dirección del manejador de la pila de escritorio. En el futuro, la detección de disposiciones de memoria anómalas y operaciones de ventana podría ayudar a identificar vulnerabilidades similares.
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.
10 me gusta
Recompensa
10
5
Compartir
Comentar
0/400
GasFeeCry
· hace23h
Win perdió todo
Ver originalesResponder0
MiningDisasterSurvivor
· hace23h
Otra ola de tontos va a ser tomada por tonta, igual que la ola de 2018 cuando se robaron las llaves privadas.
La amenaza de vulnerabilidades de Windows para la seguridad de Web3: los hackers pueden controlar el sistema para robar la llave privada
Análisis de vulnerabilidades graves del sistema Windows de Microsoft: puede provocar importantes riesgos de seguridad en Web3
El mes pasado, un parche de seguridad de Microsoft corrigió una vulnerabilidad de elevación de privilegios en Windows que estaba siendo explotada por hackers. Esta vulnerabilidad existe principalmente en las versiones anteriores de Windows y no se puede activar en Windows 11. A pesar de que este tipo de vulnerabilidades ha existido durante años, en el contexto actual de medidas de seguridad en constante mejora, sigue siendo valioso analizar cómo los atacantes pueden continuar explotándola.
Este análisis se basa en el sistema Windows Server 2016. Se trata de una vulnerabilidad de día cero no divulgada, que permite a los hackers tomar el control total del sistema Windows. Una vez que el sistema es controlado, las consecuencias pueden incluir la filtración de información personal, el colapso del sistema, la pérdida de datos, pérdidas financieras, entre otros. Para los usuarios de Web3, las claves privadas pueden ser robadas y los activos digitales pueden ser transferidos. Desde una perspectiva más amplia, esta vulnerabilidad podría incluso afectar a todo el ecosistema Web3 que opera sobre la infraestructura de Web2.
Al analizar el parche, se encontró que el problema radica en el manejo del conteo de referencias de objetos. Los comentarios en el código fuente anterior muestran que el código anterior solo bloqueaba el objeto de la ventana, sin bloquear el objeto del menú en la ventana, lo que podría provocar referencias incorrectas al objeto del menú.
Para reproducir esta vulnerabilidad, construimos una estructura de menú anidado de múltiples niveles especial y configuramos propiedades específicas para cada menú, a fin de pasar las verificaciones del sistema relacionadas. La clave es eliminar la relación de referencia entre los menús al regresar a la capa del usuario, liberando con éxito el objeto de menú objetivo. Así, cuando la función del núcleo vuelve a referenciar ese menú, accederá a un objeto no válido.
En la utilización práctica, consideramos principalmente dos soluciones: ejecutar shellcode y modificar la dirección del token utilizando primitivas de lectura y escritura. Teniendo en cuenta los mecanismos de seguridad de las versiones más recientes de Windows, elegimos la segunda opción. Todo el proceso de explotación se puede dividir en dos pasos: primero, controlar el valor de cbwndextra aprovechando la vulnerabilidad UAF, y luego, basándonos en esto, establecer primitivas de lectura y escritura estables.
Para lograr un diseño de memoria estable, hemos diseñado una estructura de tres objetos HWND consecutivos, liberando el objeto intermedio y ocupándolo con el objeto HWNDClass. Los objetos HWND en los extremos se utilizan respectivamente para la verificación a través del sistema y como medio de lectura y escritura final. También determinamos con precisión si el arreglo de objetos cumple con las expectativas a través de la dirección del manejador del núcleo filtrado.
En cuanto a la lectura y escritura de primitivos, utilizamos GetMenuBarInfo() para realizar lecturas arbitrarias y SetClassLongPtr() para realizar escrituras arbitrarias. Aparte de las operaciones de reemplazo de TOKEN, todas las demás operaciones de escritura se realizan utilizando el objeto de clase del primer objeto de ventana.
En general, aunque Microsoft está reescribiendo el código del núcleo relacionado con Rust para mejorar la seguridad, las vulnerabilidades existentes siguen siendo una amenaza seria para los sistemas actuales. El proceso de explotación de vulnerabilidades es relativamente simple y se basa principalmente en la filtración de la dirección del manejador de la pila de escritorio. En el futuro, la detección de disposiciones de memoria anómalas y operaciones de ventana podría ayudar a identificar vulnerabilidades similares.