"Skype" est le logiciel de téléphonie sur
IP (ou VoIP) qui a fait la
"Une" de l'actualité informatique française au mois
de septembre-octobre 2005 suite à l'interdiction de ce logiciel dans le
monde de la recherche et de l'enseignement supérieur français.
"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 :