CVE-2024-7479 TeamViewer - Vérification incorrecte de la signature lors de l'installation du pilote
Auteur : Marcos Accossatto
À des fins de démonstration uniquement. L'exploit complet fonctionne sur une version vulnérable de TeamViewer pour Windows.
Introduction
Ce PoC d'exploit est une implémentation python du PoC de Pedro Gabaldon pour CVE-2024-7479.
Ce script contient toutes les classes nécessaires pour gérer le protocole IPC pour l'exploitation.
Pour l'exploitation finale, le pilote dbutil_2_3.sys et l'exécutable compilé du projet BYOVDKit doivent être présents dans le même répertoire local que ce script.
Ce script a été testé avec TeamViewer 15.57.5.
Étapes d'exploitation du script
Ce script effectuera les étapes suivantes pour exploiter la vulnérabilité :
- Ouvrir un socket vers 127.0.0.1 et le port 5939.
- Exécuter BYOVDKit.exe avec la ligne de commande suivante pour tester si le pilote est déjà installé :
BYOVDKit.exe 1 token 4
- Assembler la première requête IPC via la fonction getClientAuth et l'envoyer au serveur.
- Récupérer le response_challenge de la réponse du serveur via la fonction getServerChallengeFromResponse
- Concaténer response_challenge et une valeur "secret", calculer son hachage MD5 puis l'utiliser pour assembler la deuxième requête IPC via la fonction getClientAuth.
- Envoyer la deuxième requête pour terminer l'authentification.
- Obtenir le PID du processus python, localiser et extraire la version du fichier exécutable TeamViewer.exe, assembler la troisième requête IPC via la fonction getControlRequest et l'envoyer au serveur.
- Lire les paquets IPC du serveur jusqu'à ce que la configuration de synchronisation soit terminée (21 paquets est normal).
- Copier le fichier TeamViewerVPN.cat du répertoire x64 de TeamViewer dans le répertoire du script.
- Copier le fichier TeamViewerVPN.inf du répertoire x64 de TeamViewer dans le répertoire du script et le renommer en un fichier inf aléatoire.
- Renommer le fichier dbutil_2_3.sys du répertoire du script en TeamViewerVPN.sys.
- Assembler la troisième requête IPC via la fonction getInstallDriverRequest et l'envoyer au serveur.
- Attendre que l'utilisateur clique sur le bouton Installer ce pilote quand même pour terminer l'installation du pilote et appuie sur ENTRÉE
- Supprimer tous les fichiers copiés/créés/renommés (TeamViewerVPN.cat, TeamViewerVPN.sys et le fichier .inf aléatoire).
- Exécuter BYOVDKit.exe avec la ligne de commande suivante pour lancer une cmd en tant que système :
BYOVDKit.exe 1 token 4
Utilisation
- Exécuter cmd.exe en tant qu'utilisateur standard.
- Utiliser whoami pour vérifier le nom d'utilisateur.
- Exécuter le script avec python CVE-2024-7479_PoC.py.
- Lorsque l'avertissement d'installation du pilote apparaît, cliquez sur le message Installer ce pilote quand même pour installer le pilote.
- Revenez à la fenêtre cmd et appuyez sur ENTRÉE pour continuer l'exécution du script.
- Utiliser whoami pour vérifier que le nom d'utilisateur est nt authority\system.

Références
Nous espérons que cela vous sera utile. Si vous avez des questions, vous pouvez nous contacter à [email protected]
Profitez-en !