pulse-secure-vpn-mitm-research
Recherche MITM sur Pulse Secure
Date de publication
Date de publication conjointe avec le fournisseur : 26 octobre 2020
Auteur
David Kierznowski, @withdk
Crédits
- Sahil Mahajan de l’équipe PSIRT de Pulse Secure pour le soutien tout au long du processus de divulgation.
- Alyssa Herrera, Justin Wagner, Mimir et Rich Warren pour leur article « Red Teamer’s Guide to Pulse Secure SSL VPN » – Alyssa Herrera (4 septembre 2019).
- La Red Team de SA pour leur soutien et leurs encouragements continus.
Références CVE
- CVE-2020-8241 (8.1 High CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:H)
- CVE-2020-8239 (5.9 Medium CVSS:3.0/AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:H/A:N)
Exemple

Preuve de concept démontrant rogue-pulse-svr.py acquérant un shell inversé meterpreter à partir d’un client Pulse connecté au même réseau.
Introduction
Pulse Connect Secure (PCS) est une solution VPN d’entreprise couramment utilisée. Au moment de la rédaction, PCS prend en charge plus de 20 millions de terminaux (Pulse Secure, n.d.). Cette recherche s’est concentrée sur l’examen de la confidentialité et de l’intégrité du canal de communication réseau établi entre un terminal Windows 10 PCS et une passerelle PCS. En particulier, elle pose la question : « à quel point un terminal est-il sécurisé lorsqu’il est connecté à un réseau non fiable ? ». Cette recherche s’applique aux configurations par défaut et « Always-On ».
Impact (Moyen - Élevé)
Enchaînées, il est possible d’obtenir une exécution de code à distance à partir d’un réseau non fiable avec les privilèges SYSTEM complets. Alternativement, une menace interne pourrait utiliser CVE-2020-8241 comme vulnérabilité autonome pour élever ses privilèges.
Probabilité (Faible - Moyenne)
Ces attaques pourraient être utilisées dans diverses situations, mais elles sont surtout adaptées aux attaques ciblées. Compte tenu de cela et des hypothèses ci-dessous, la probabilité est faible à moyenne.
Attaques potentielles
Les attaques suivantes ont été démontrées avec succès dans un outil de preuve de concept « rogue-pulse » :
- Voler les identifiants de l’utilisateur. Un serveur rogue pourrait inciter l’utilisateur à révéler ses identifiants de connexion.
- Exécuter un binaire depuis un chemin UNC Microsoft Windows. Le serveur PCS prend en charge l’option de lancer un exécutable après l’authentification. Cela peut être abusé pour obtenir une exécution de code avec les permissions de l’utilisateur connecté. Cela s’appuie sur le travail d’Alyssa Herrera et de son équipe (4 septembre 2019).
- Accès administrateur complet à distance en abusant des vérifications de conformité de l’hôte. Les vérifications de conformité de l’hôte sont exécutées en tant que SYSTEM. Un serveur rogue pourrait abuser de cette fonctionnalité pour imposer une politique malveillante permettant un accès en écriture arbitraire à la base de registre.
- Intercepter le trafic réseau. Cela permettra à l’attaquant d’intercepter et de modifier le trafic réseau même lorsque « toujours activé » est activé. Actuellement, l’outil affiche uniquement les requêtes de trafic réseau provenant du terminal.
La preuve de concept implémente également une fonction de connexion automatique. Cela trompe le client en lui faisant croire qu’il s’est déjà authentifié. Cela serait utile dans les cas où l’exécution de code est prioritaire par rapport à la récolte d’identifiants.
Hypothèses
- Cette recherche vise à obtenir une exécution de code à distance via un réseau non fiable. Les deux vulnérabilités sont enchaînées pour atteindre cet objectif. Cela dit, une menace interne pourrait simplement utiliser CVE-2020-8241 seule pour élever ses privilèges.
- La passerelle PCS utilise la configuration par défaut avec « dynamic-trust » activé. Notez que la politique est généralement mise à jour et envoyée au client après l’authentification. Cela signifie qu’une petite fenêtre d’opportunité peut encore exister même après que la passerelle a désactivé « dynamic-trust ».
- L’attaquant est en position d’intercepter le trafic réseau HTTPS (man-in-the-middle), par exemple l’attaquant a compromis le routeur du réseau domestique de l’utilisateur, des points d’accès Wi-Fi malveillants, etc.
- L’utilisateur doit accepter l’avertissement de certificat. Une observation intéressante est que le client Pulse Secure continuera d’afficher ce message jusqu’à ce que l’utilisateur accepte le certificat. De plus, le message contextuel n’est pas particulièrement alarmant. Enfin, en tant que « Secure Client », un utilisateur est beaucoup plus susceptible d’ignorer le message et de se connecter quand même. Cela ne semble pas être un obstacle majeur.
- Le terminal se connecte sur un système d’exploitation Microsoft Windows.
Recommandations
Pour atténuer et corriger le problème, les recommandations suivantes doivent être envisagées :
- Les organisations doivent effectuer une conformité par rapport aux meilleures pratiques de sécurité Pulse Secure (Pulse Secure, 2 juillet 2019). Assurez-vous que « Dynamic certificate trust » est désactivé.
- Appliquez les correctifs du fournisseur (voir https://kb.pulsesecure.net/articles/Pulse_Security_Advisories/SA44601).
- L’exécution de scripts du serveur PCS est effectuée en tant que processus enfant de « Pulse.exe ». Ainsi, des mesures de protection peuvent être déployées en surveillant les processus enfants du binaire « Pulse.exe ».
- Surveillez le service « PulseSecureService » pour toute activité suspecte dans la base de registre.
Références
Avertissement
Les informations fournies le sont à des fins éducatives et de recherche uniquement. L’auteur décline toute responsabilité quant à votre utilisation de ces informations et condamne fermement toute tentative de violer les lois applicables. L’auteur n’a aucune obligation de mettre à jour ces informations, ne fournit aucune garantie quant à leur exhaustivité, leur utilisation ou leur applicabilité, et décline toute confiance en elles. Votre utilisation de ces informations relève de votre seule responsabilité.