"Skype" et la sécurité des systèmes d'information
Date : 04 Novembre 2005
"Skype" est le logiciel de téléphonie sur
IP (ou VoIP) qui a fait
"Skype", qui est de plus en plus utilisé dans le monde, fait aujourd'hui aussi son entrée dans les entreprises, et cela parfois à l'insu des administrateurs du système d'information (SI). Ce type d'outil est à rapprocher d'autres logiciels bien connus (et offrant des fonctionnalités de communication "Peer-to-Peer" similaires) comme MSN et AIM (AOL Instant Messaging) pour lesquels les problématiques de sécurité restent sensiblement les mêmes.
Nous allons dans cet article présenter les mécanismes
utilisés par "Skype", et étudier les mesures techniques qui
pourraient permettre aux responsables des SI qui le souhaitent d'interdire l'utilisation de "Skype" au sein d'une entreprise.
Présentation de "Skype" :
"Skype" est un logiciel gratuit de téléphonie sur
IP de type "Peer-To-Peer". Il s'appuie sur un réseau collaboratif
(maillé) de plus en plus évolué afin d'assurer son fonctionnement à travers
Internet. "Skype" a été conçu par les auteurs du logiciel d'échange
de fichier "KaZaA", et dont la société vient d'être récemment rachetée par le groupe
américain "eBay".
Il existe aujourd'hui peu d'informations sur le fonctionnement de ce logiciel de téléphonie. L'éditeur reste très silencieux sur certains aspects importants (communications réseaux, serveurs utilisés, …) ; néanmoins on arrive au moyen de tests à déterminer certaines des propriétés clefs du logiciel.
Une des difficultés ici est que ces dernières évoluent de manière constante et au fur et à mesure des mises à jour du logiciel. En particulier, certaines des informations fournies par Salman A. Basset et Henning Schulzrinne lors d'une observation du comportement de "Skype" en février-avril 2004 (Cf. partie "Pour plus d'information") n'ont pas été retrouvées dans l'analyse sommaire faite par le Cert-IST de la version 1.4.0.8.7 (octobre 2005).
Cependant, on peut, à ce jour, indiquer que l'architecture "Skype" est basée sur un réseau collaboratif où se trouvent :
- des clients "Skype" (PC utilisateurs)
- des "super-nœuds" qui sont en fait des clients "Skype" ayant une adresse IP publique et des ressources (bande passante, CPU) assez conséquentes (voire des serveurs détenus par la société "Skype"). Leur fonction est de permettre aux clients :
- de pouvoir rester "en attente" de communication, fonctionnalité pour les clients situés derrière un garde-barrière ou un équipement faisant de la translation d'adresses (NAT), ceci en établissant une connexion permanente vers le "super-nœud".
- d'effectuer une recherche pour contacter un autre utilisateur.
- d'effectuer des transferts de fichier (le "super-nœud" joue le rôle d'intermédiaire).
- un serveur d'authentification d'IP 80.160.91.5 (cette information n'a pas pu être vérifiée lors de l'analyse du Cert-IST). Les échanges chiffrés d'authentification qui ont été observés lors des tests s'établissaient entre un client et un "super-nœud" dédié (?).
- un serveur de mise à jour ("ui.skype.com" - 212.72.49.131) appartenant au domaine "skype.com".
Fonctionnement sommaire de
"Skype" :
Lorsqu'un utilisateur lance "Skype" d'innombrables connexions en mode UDP (ou TCP si le trafic UDP est bloqué) s'effectuent vers une liste de "super-nœuds" (à peu près 150 adresses) dont les couples "(adresse IP, port)" sont stockés dans le fichier XML "shared.xml" contenu dans le répertoire '' C:Documents and Settings[Utilisateur]Application DataSkype" du poste de l'utilisateur. Les informations sur les machines mentionnées dans ce fichier sont amenées à évoluer soit par des mises à jour à la volée, soit par la publication de nouvelles versions de "Skype".
Afin de se connecter au réseau
"Skype", le client nécessite théoriquement peu de ports réseau
ouverts.
# Ideally, outgoing TCP connections to all ports (1..65535) should be opened. This option results in the most reliable connection for Skype. # If the above is not possible, open up outgoing TCP connections to port 443. This will only work if you are using Skype version 0.97 or later. # If the above is not possible, open up outgoing TCP connections to port 80. Some firewalls restrict traffic to port 80 to HTTP protocol, and in this case Skype can not use it since Skype does not use HTTP. In some firewalls it is possible to open up all traffic to port 80, not just HTTP, and in this case Skype will work. # If the above is not possible, Skype versions 0.97 or later can use a HTTPS/SSL proxy. In order to do that, you have to configure the proxy address in Internet Explorer options. Then Skype will be able to use it as well. http://support.skype.com/index.php?_a=knowledgebase&_j=questiondetails&_i=114 |
Le Cert-IST a voulu tester le dernier point indiqué avec un PC muni d'un garde-barrière personnel configuré afin que seul le trafic HTTP/HTTPS pour l'application "Skype" soit autorisé. Il a été constaté que la connexion du client au réseau "Skype" était impossible (et aucun trafic notable n'a été constaté sur le port 443 ou 80). Ce résultat pourrait signifier que le client "Skype" testé nécessite au moins une connexion UDP ou TCP (hors HTTP/HTTPS) vers Internet afin d'être opérationnel. Ce qui serait en contradiction avec les propriétés énoncées par l'éditeur.
Car, selon le site officiel de
l'éditeur (et comme mentionné dans l'encadré ci-dessous), "Skype" est
capable d'utiliser les relais HTTP de l'entreprise, car il récupère sous
Windows les paramètres de connexions (adresse du relais web et identifiant mot
de passe éventuels) configuré au niveau du navigateur Internet Explorer. A
défaut, l'utilisateur peut saisir ces informations dans une boite de dialogue
ad-hoc.
Does Skype support connections through proxies
and authenticating firewalls?
Yes, Skype supports regular HTTP or HTTPS proxies, and authenticating HTTPS/SSL and SOCKS5 proxies. In Windows, the Internet Explorer settings are used. See Skype for Linux FAQ about how to set them in Skype for Linux. You can fine-tune proxy settings in Skype Options. http://support.skype.com/index.php?_a=knowledgebase&_j=questiondetails&_i=149 |
Lorsque les machines externes répondent aux requêtes du client "Skype", ce dernier en choisit une (par un algorithme "secret") et initie (vraisemblablement) une connexion TCP/TLS (port 443) avec cette dernière afin de s'authentifier. Comme la communication est chiffrée, on ne peut connaître la nature des données envoyées au serveur distant.
Ensuite le client se met en attente de connexions sur les ports 31480 (port configuré par défaut dans l'interface graphique de "Skype"), 80 et 443, ou, si le PC est derrière un garde-barrière ou un équipement NAT, le client garde une connexion permanente avec un "super-nœud" afin de pouvoir être contacté par un autre utilisateur.
A ce stade, le client "Skype" va automatiquement vérifier sur le serveur "ui.skype.com" la présence de mise à jour logicielle via une connexion HTTP. Cette connexion peut être identifiée par la présence dans l'en-tête HTTP au niveau du champ "User-Agent" du mot clé "skype".
Nota : Ce même type de connexion HTTP est également effectué vers un serveur du domaine "skype.com" ou "skype.net" lors de la première connexion du client "Skype" au réseau pour s'annoncer.
Dès lors, le client
"Skype" est prêt pour communiquer (en direct ou via un
"super-nœud" en mode "TCP") avec un autre utilisateur :
- en mode VoIP,
- ou au travers d'une messagerie instantanée (IM),
- ou même au travers des transferts de fichiers.
Comme on le voit, le protocole utilisé
par "Skype" pour établir une communication avec Internet est théoriquement
fortement adaptatif. Il est donc très probable que si l'entreprise met en place
un filtrage sur les flux sortants, "Skype" se replie vers des flux
TCP HTTP ou HTTPS qui ont eux de fortes chances d'être autorisés.
Voici ci-dessous un exemple de trafic généré par le logiciel "Skype" (en mode "super-nœud" vraisemblablement) sur un MacIntosh en mars 2005 (source : liste SOS-Virus – CNRS)
- trafic avec 800 adresses IP sur Internet par jour,
- un flux de 100 à 300 Mo par jour, réparti continument dans la journée (volume de paquets IP dans les 2 sens),
- toutes les minutes, ouverture de connexion TCP du Mac vers "sss1.skype.net" (1 Mo dans la journée),
- ouverture des connexions TCP vers le port 54045 de 20 destinations,
- réception d'ouvertures de connexion TCP port 54045 depuis 850 sources, jusqu'à 100 ouvertures par heure (ces connexions restent actives quelques minutes),
- augmentation de trafic (de 10 Mo par jour à 200 à 300 Mo par jour) correspondant exactement au jour de l'installation de "Skype".
De plus de récentes
vulnérabilités du client "Skype" sont venues compléter la
problématique de l'utilisation de ce type d'outil (Cf. la note dans la liste "Vuln-Coord" du 26 octobre
2005).
Face à ce phénomène contraignant, comment interdire en pratique l'utilisation de "Skype" si une décision a été prise en ce sens ?
Les réponses à cette question restent relativement difficiles, en particulier parce que "Skype" (et ses moyens de communications) évolue de version en version, et même comme on l’a vu (plage de ports, port 80, proxy), semble s’adapter aux restrictions constatées sur le terrain.
Recommandations :
Cependant, on peut dès à présent donner quelques pistes de réflexions qui pourront être recoupées par une expérimentation sur le terrain.
Ces recommandations s'établissent à partir d'une configuration de base de "Skype" (version 1.4.0.8.7) observée sur un système Microsoft Windows XP (SP2).
- Filtrer l'accès au domaine "skype.com" (plage d'adresses 212.72.49.128 – 212.72.49.159) ou "skype.net" (adresses IP chez différents fournisseurs "Verio", " Elion Ettevotted Aktsiaselts", …). Ce filtrage peut permettre de détecter les installations des clients "Skype" lors de leur connexion au serveur de mise à jour ("ui.skype.com" - 212.72.49.131). Les téléchargements des versions de "Skype" via le site officiel "download.skype.com" sont à ce jour initiés sur différents serveurs web hors domaine "skype.com" : 195.215.8.138, 198.63.211.251 et 198.63.211.252). Dans ce cas de figure, il est préférable de filtrer si possible le nom de domaine que des adresses IP.
- Filtrer les adresses IP contenues dans le fichier "shared.xml" du client "Skype" (fichier disponible auprès du Cert-IST pour la version en date d'octobre 2005 - 1.4.0.8.7). Il est à noter que cette liste peut évoluer rapidement par des mises à jour du logiciel. Néanmoins, elle peut permettre de détecter les nouvelles installations de "Skype" sur le réseau.
- Filtrer les connexions entrantes vers le port TCP 31480 (port par défaut utilisé par le client "Skype" de la version observée).
- Filtrer les connexions TCP/UDP sortantes des PC utilisateurs vers des ports hauts non communs (ex : 33033).
- Filtrer les connexions HTTP/HTTPS contenant le mot clé "skype" dans le champ "User-Agent" de leur en-tête (filtrage de contenu).
Conclusion :
L'interdiction de l'utilisation "Skype" dans un SI
reste aujourd'hui difficile à contrôler de part l'absence de documentation
précise sur son fonctionnement et l'évolution récurrente des techniques de
communications qu'il utilise. Néanmoins, certaines précautions peuvent être
mises en œuvre pour déceler (ou plus) la présence de ce type de logiciel.
Cependant les recommandations énoncées dans le présent article peuvent se
révéler un jour obsolètes suite à l'évolution de "Skype".
Il est à noter qu'aujourd'hui des solutions commerciales de
filtrage axent leur effort publicitaire sur les possibilités de filtrage de
"Skype" et des autres logiciels de ce type comme MSN. Cependant, il
est conseillé de garder un regard critique vis-à-vis de ce type d'argument car,
du fait de l'évolution constante des produits, le filtrage "étanche"
proposé aujourd'hui pourrait se révéler caduque demain.
Pour plus d'information :
- Site de Salma Baset sur "Skype" et la sécurité : http://www1.cs.columbia.edu/~salman/skype/
- Etude de la sécurité de "Skype" : http://www.skype.net/security/files/2005-031%20security%20evaluation.pdf
- Document sur les aspects réseaux de "Skype" : http://www.skype.com/security/guide-for-network-admins.pdf
- Récentes vulnérabilités du client "Skype" :
- http://www.skype.com/security/skype-sb-2005-02.html
- http://www.skype.com/security/skype-sb-2005-03.html
- Section "sécurité" chez "Skype" : http://www.skype.com/security/