Le protocole UpNp, sa presentation et ses problemes

Nous allons nous interesser dans cet article au protocole UpNp .
Je vous propose tout d’abord l’introduction que nous donne Wikipedia :
L’Universal Plug and Play (UPnP) est un protocole réseau promulgué par l’UPnP Forum.
Le but de l’UPnP est de permettre à des périphériques de se connecter aisément et de simplifier l’implémentation de réseaux à la maison (partages de fichiers, communications, divertissements) ou dans les entreprises. UPnP le permet en définissant et en publiant les protocoles de commande UPnP au-dessus des standards de communication de l’Internet.

Plus clairement, lorsque vous connectez une imprimante, votre Box, etc…, ces produits, etant compatible UpNp, vont tenter de s’auto-configurer ( autant dire qu’ils y arrivent la plupart du temps :] ).
Ces produits doivent respecter des spécifications normalisées, mais peuvent contenir d’autres fonctions supplémentaires, relatives au produit ( une Box qui pourra activer son Wifi via UpNp.. ).
L’établissement d’une connection UpNp se déroule en plusieurs étapes :
-L’obtention d’une adresse IP lorsque l’équipement est connecté sur le réseaux
-Le produit va ensuite avertir les autres équipements sur le réseaux de sa présence via une requête NOTIFY. Cette requete contient un champ LOCATION, indiquant le chemin du fichier XML listant les services.
-Envoi de l’adresse du fichier de configuration ( XML )
-Controle du produit

Les équipements ou logiciels présent sur le réseaux peuvent aussi chercher à obtenir l’adresse d’un service, via une requete M-SEARCH.
Malheuresement, ce beau protocole ne contient absolument aucune sécurité…

Je m’explique : Il est possible de completement reconfigurer un service, un équipement du réseaux utilisant UpNp sans AUCUN mot de passe !

Nous allons dans la suite prendre l’exemple d’une NeufBox, version FirmWare :  NB4-R1.5.6-MAIN
L’ip de cet équipement est sur le réseaux 192.168.1.1 . Cette même adresse propose une interface d’administration sur le port 80, nécéssitant cependant un couple login/password. ( par défaut : admin / clé WPA ).
Pour obtenir l’adresse de son fichier de configuration, et des services paramétrables, nous allons envoyer une requete M-SEARCH, et écouté la réponse NOTIFY de la NeufBox .
L’envoi de ce paquet peut se faire via NMAP, mais nous préfererons “UpNpScan” qui est un petit logiciel executant très bien son travail :

>UPnPScan.exe -t 192.168.1.1
UPnP Discovery Tool v0.4 by patrik@cqure.net
--------------------------------------------
[192.168.1.1]
HTTP/1.1 200 OK
CACHE-CONTROL: max-age=1800
DATE: Sat, 11 Oct 2008 16:30:02 GMT
EXT:
LOCATION: http://192.168.1.1:49152/gatedesc.xml
SERVER: Linux/2.6.8.1, UPnP/1.0, Portable SDK for UPnP devices/1.4.1
X-User-Agent: redsonic
ST: upnp:rootdevice
USN: uuid:75802409-bccb-40e7-8e6c-fa095ecce13e::upnp:rootdevice

Maintenant que nous avons l’adresse du fichier de configuration, analysons-le.
En plus de l’adresse du fabricant, de la version, du site du fabricant et du nom du modele, nous avons trois <serviceList> :

<serviceList>
-
<service>
<serviceType>urn:schemas-dummy-com:service:Dummy:1</serviceType>
<serviceId>urn:dummy-com:serviceId:dummy1</serviceId>
<controlURL>/dummy</controlURL>
<eventSubURL>/dummy</eventSubURL>
<SCPDURL>/dummy.xml</SCPDURL>
</service>
</serviceList>
<serviceList>
-
<service>
-
<serviceType>
urn:schemas-upnp-org:service:WANCommonInterfaceConfig:1
</serviceType>
<serviceId>urn:upnp-org:serviceId:WANCommonIFC1</serviceId>
<controlURL>/upnp/control/WANCommonIFC1</controlURL>
<eventSubURL>/upnp/control/WANCommonIFC1</eventSubURL>
<SCPDURL>/gateicfgSCPD.xml</SCPDURL>
</service>
</serviceList>
<serviceList>
-
<service>
<serviceType>urn:schemas-upnp-org:service:WANIPConnection:1</serviceType>
<serviceId>urn:upnp-org:serviceId:WANIPConn1</serviceId>
<controlURL>/upnp/control/WANIPConn1</controlURL>
<eventSubURL>/upnp/control/WANIPConn1</eventSubURL>
<SCPDURL>/gateconnSCPD.xml</SCPDURL>
</service>
</serviceList>

Le premier fichier ( dummy.xml ) ne nous donne rien d’interessant.
La lecture du second ( /gateicfgSCPD.xml ) nous indique qu’il permet de configurer tout ce qui est en rapport avec le cablage.
En revanche, lors de la lecture du troisième , l’”action-List” proposé est alléchante :
<name>AddPortMapping</name> , <name>GetExternalIPAddress</name> , …

Oui, vous avez bien vu, notre NeufBox nous offre bien gentiment la possibilité d’ajouter une redirection de port NAT !
Pour un particulier, la redirection des ports 139,435 permettra d’avoir accès à son dossier publique, …
Le fichier livré par la balise <controlURL> permettra ces modifications.
En effet, le paramétrage UpNp se fait par requete HTTP/SOAP . Elle sera de la forme :
POST (url de controle) HTTP/1.0
Un champ Host constitué de l’adresse ip et du service UpNp, un champ Content-type spécifiant l’utilisation de XML, et un champ SOAPACTION qui contient l’action à réalisé sur l’équipement cible.
Le contenu du POST(XML), le tout dans une enveloppe SOAP.

Cette attaque peut bien entendu etre facilement automatisée, et il est aussi aisé de la combiné avec une attaque de type CSRF ( via FLash par exemple ), afin de pouvoir completement reconfigurer les équipements réseaux d’un visiteur lambda par la simple vue d’une page web.
L’exemple montrait ici la possibilité de rajouter des redirections NAT, mais il faut savoir que certains routeurs proposeront par exemple le changement de serveur DNS ( => Pharming ), modification des identifiants réseaux, obtention de la clé Wifi, ajout d’adresse d’autorisation pour l’adresse MAC, activation de service HotSpot, …

Il est donc très clair que pour un particulier, ce protocole se révèle certe pratique, mais surtout dangereux.
Reconfigurer des équipements à l’échelle d’une entreprise de manière automatique est bien plus fastidieux, mais il subsiste un risque.

En espérant que cet article vous aura fait acquérir quelques nouvelles connaissances,
Bonne soirée :)

PS: Pour plus d’informations, d’exemples, je vous recommande l’article de XMCO Partners ( Actu sécu n°20 ). Je ne propose d’ailleurs qu’un autre exemple que celui proposé par cet article.

Laisser une réponse