CVE-2024-7479 TeamViewer Verificación de firma incorrecta en la instalación del controlador
Autor: Marcos Accossatto
Solo con fines de demostración. El exploit completo funciona en la versión vulnerable de Team Viewer para Windows.
Introducción
Este PoC de exploit es una implementación en Python del PoC de Pedro Gabaldon para CVE-2024-7479.
Este script contiene todas las clases para manejar el protocolo IPC para la explotación.
Para la explotación final, el controlador dbutil_2_3.sys y el ejecutable compilado del proyecto BYOVDKit deben estar presentes en el mismo directorio local que este script.
Este script fue probado contra TeamViewer 15.57.5.
Pasos de explotación del script
Este script realizará los siguientes pasos para explotar la vulnerabilidad:
- Abrir un socket contra 127.0.0.1 y el puerto 5939.
- Ejecutar BYOVDKit.exe con la siguiente línea de comandos para probar si el controlador ya está instalado:
BYOVDKit.exe 1 token 4
- Ensamblar la primera solicitud IPC mediante la función getClientAuth y enviarla al servidor.
- Tomar el response_challenge de la respuesta del servidor mediante la función getServerChallengeFromResponse
- Concatenar response_challenge y un valor "secret", calcular su hash MD5 y luego usarlo para ensamblar la segunda solicitud IPC mediante la función getClientAuth.
- Enviar la segunda solicitud para completar la autenticación.
- Obtener el PID del proceso de Python, localizar y extraer la versión del archivo ejecutable TeamViewer.exe, ensamblar la tercera solicitud IPC mediante la función getControlRequest y enviarla al servidor.
- Leer paquetes IPC del servidor hasta que la configuración de sincronización esté completa (21 paquetes es normal)
- Copiar el archivo TeamViewerVPN.cat del directorio x64 de TeamViewer en el directorio del script.
- Copiar el archivo TeamViewerVPN.inf del directorio x64 de TeamViewer en el directorio del script y renombrarlo como un archivo inf aleatorio.
- Renombrar el archivo dbutil_2_3.sys del directorio del script como TeamViewerVPN.sys.
- Ensamblar la tercera solicitud IPC mediante la función getInstallDriverRequest y enviarla al servidor.
- Esperar hasta que el usuario haga clic en el botón Instalar este software de controlador de todos modos para completar la instalación del controlador y presione ENTER
- Eliminar todos los archivos copiados/creados/renombrados (TeamViewerVPN.cat, TeamViewerVPN.sys y el archivo .inf aleatorio)
- Ejecutar BYOVDKit.exe con la siguiente línea de comandos para lanzar un cmd como sistema:
BYOVDKit.exe 1 token 4
Uso
- Ejecutar cmd.exe como usuario normal.
- Usar whoami para verificar el nombre de usuario.
- Ejecutar el script con python CVE-2024-7479_PoC.py.
- Cuando aparezca la advertencia de instalación del controlador, haga clic en el mensaje Instalar este software de controlador de todos modos para instalar el controlador.
- Vuelva a la ventana de cmd y presione ENTER para continuar con la ejecución del script.
- Usar whoami para verificar que el nombre de usuario sea nt authority\system.

Referencias
Esperamos que te sea útil, si tienes alguna duda puedes contactarnos en [email protected]
¡Disfrútalo!