[TALK] 🇫🇷 Pwning a Netgear router from WAN - MitM style

Plusieurs fois par an, ZDI organise un concours appelé Pwn2Own dans lequel des chercheurs en sécurité doivent prendre le contrôle de matériel et logiciel grand public. Cette conférence explique la démarche utilisée par Mitsurugi et xarkes lors de ce concours pour obtenir une RCE depuis Internet dans le routeur wifi grand public Netgear R6700v3.

Voici la présentation qui sera faite pendant LEHACK:

La présentation débute par les difficultés de ce genre de recherche : il s'agit de routeurs grands publics qui ont des fonctions de sécurité, et qui ont déjà été audités, puisqu'il s'agit de leur 3e participation à Pwn2Own. Seule une interface d'administration est accessible à l'utilisateur, et il n'y a pas de "shell" ou d'invite de commande pour le chercheur en sécurité voulant analyser le produit. De plus, il s'agit d'un concours où plusieurs équipes travaillent en parallèle sur le même sujet, et les cibles sont mises à jour jusqu'à la veille de l'épreuve.

Le travail débute par le choix du composant logiciel à attaquer, et sur l'ajout de capacités de debug comme un accès shell, l'accès aux fichiers et l'ajout d'un debugger.

Une recherche de vulnérabilités permet d'en trouver une dans un service chargé d'effectuer du filtrage parental. En effet ce service va récupérer des bases de filtrage sur internet, et ne valide pas correctement le format de message renvoyé par le serveur de mise à jour. Il est rapidement vérifié qu'un crash se produit lorsque l'attaquant prend la place du serveur de mise à jour et renvoie un mauvais message.

Bien que les mises à jour soient téléchargées en TLS, il est possible de remplacer le serveur de mise à jour grâce à une erreur de développement. Différentes stratégies d'exploitation sont possibles, en s'appuyant sur l'absence de défense en profondeur du produit (pas de stack cookie, pas d'ASLR complet). Il a été choisi d'utiliser une RCE via un unique gadget en cherchant par force brute une adresse dans la mémoire heap pour exécuter la commande system() avec une chaîne contrôlée par l'attaquant. Les scripts permettant l'attaque sont alors présentés (la démonstration n'est pas faite en live).

Enfin, la soumission à ZDI est expliquée avec la participation au Pwn2Own, suivi du correctif du constructeur, et de l'analyse du patch supprimant la vulnérabilité. Un compte-rendu du concours Pwn2Own est présenté lors des dernières slides.

Référence du concours: - https://www.zerodayinitiative.com/blog/2021/8/11/pwn2own-austin-2021-phones-printers-nas-and-more

Référence de la vulnérabilité: - https://www.synacktiv.com/publications/pwn2own-austin-2021-defeating-the-netgear-r6700v3.html - CVE-2022-27646 - CVE-2022-27644

Other Information Ce talk présente une exploitation complète d'une vulnérabilité 0-day dans le cadre d'un concours de hacking. Ce talk est intéressant dans le sens où il explique vraiment le cheminement qui mène de la vuln jusqu'à un exploit fonctionnel et fiable, trop de conférences s'arrêtant uniquement à la présentation d'une vuln sans aller plus loin qu'un poc qui crash le logiciel. Plusieurs chemins menant à une exploitation sont expliqués, en précisant les raisons qui ont fait choisir celui utilisé pendant Pwn2Own. Ce talk est également intéressant pour les développeurs car il permet de comprendre comment l'ajout de défenses gratuites (en coût de développement) comme les stack cookies ou un ASLR complet auraient pu empêcher l'exploitation de la vulnérabilité.

About Kevin Denis & Antide Petit

Reverse Engineers @synacktiv