Vous êtes sur la page 1sur 4

Attaque man in the middle sur

la connexion chiffrée de Jabber


Piotr Tyburski

Les utilisateurs de messageries


instantanées veulent être sûrs
que les données qu'ils envoient
restent toujours confidentielles.
Pour cela, ils utilisent des outils
cryptographiques avancés. Est-
ce suffisant pour assurer une
protection complète ?

L
es messageries instantanées les plus client et vice versa) – il pourra donc écouter la
populaires, comme ICQ, pour transfé- connexion. On appelle cette technique attaque
rer un message utilisent des textes non man in the middle.
chiffrés. C'est pourquoi, il est très facile de La condition de base permettant d'effectuer
les écouter. Le niveau de sécurité plus élevé ce type d'attaque est l'accès à l'ordinateur qui
est offert par les applications utilisant le pro- sert d'intermédiaire pendant le transfert des
tocole ouvert Jabber (cf. l'article Paranoïa paquets IP entre l'utilisateur et le serveur. Le
instantanée – Hakin9 3/2004). Cela est dû au cas le plus simple est la situation quand l'at-
fait que Jabber peut être utilisé par le biais de taquant a accès à une passerelle (avec droits
la couche SSL assurant la confidentialité de d'administrateur). Admettons que c'est le cas.
la session.

Man in the middle Cet article explique ...


L'utilisation des algorithmes de chiffrage basés
• comment, à l'aide du filtre de paquets et le pro-
sur les clés longues (de 512 et 1024 bits), re-
gramme socat, intercepter une session chiffrée
négociées après chaque portion de données de Jabber,
déterminée, protège efficacement contre la • comment générer et signer le certificat au
fuite des informations de la connexion établie. moyen du paquet OpenSSL,
Attaque

Mais imaginons cette situation : quelqu'un se • comment faire pour être sûr que personne
situe entre nous et notre serveur, en se faisant n'écoutera notre session Jabber.
passer pour ce dernier (cf. la Figure 1). Le client
établit alors la connexion chiffrée, non pas avec
Ce qu’il faut savoir ...
le serveur, mais avec un autre ordinateur. Par • notions de base de l’administration des systè-
conséquent, cet ordinateur se connectera mes UNIX,
ensuite au serveur, et à partir de ce moment, • on admet que le lecteur connaît les bases de
SSL.
il deviendra l’intermédiaire envoyant les infor-
mations bi-directionnellement (du serveur au

22 www.hakin9.org Hakin9 N o 5/2004


Attaque sur la connexion chiffrée de Jabber

D'où prendre
Comment fonctionne SSL un certificat
La société Netscape a conçu le standard SSL pour résoudre le problème de vulné-
rabilité du protocole TCP/IP à l'écoute et aux attaques de type man in the middle. Pour qu'il soit possible d'intercepter
SSL devrait assurer autant le cryptage des connexions que l'identification du côté une session chiffrée, nous avons
client et serveur. La technologie de certificats employée dans le protocole résout besoin d'un certificat SSL falsifié
parfaitement cette question.
du serveur de Jabber – ainsi, le
La connexion SSL (Secure Socket Layer) est générée sur la base d'une
client Jabber pensera qu'il a à faire
connexion TCP ordinaire. Les données envoyées à l'aide de ce protocole sont
avec un vrai serveur. Lors de sa
chiffrées par une clé symétrique qui est déterminée au début de la session. Dans
la première étape, le client envoie le message Client Hello contenant les infor- création, il faut, bien sûr, entrer
mations sur la version du protocole, l'identifiant de la session et les algorithmes les données identiques que celles
cryptographiques supportés. Le serveur répond par le message Server Hello figurant dans le vrai certificat du
contenant un nouveau numéro de session ou le numéro existant et les informa- serveur (cf. l'Encadré Comment
tions sur les algorithmes de cryptage admissibles. Dans la deuxième étape, le fonctionne SSL).
serveur s'authentifie en envoyant son certificat. Le client vérifie la validité de ces Au moyen du paquet OpenSSL
trois conditions : et le script de shell CA.sh joint
(éventuellement, sa version en Perl
• le certificat a été signé par une autorité de certification connue (en anglais Certi-
CA.pl), nous générons le certificat
ficate Authority – CA) ; les plus connues sont : Verisign, Thawte ou AT&T,
• le certificat est valide et n’est pas arrivé à expiration, d'AC (de l'autorité de certification)
• le nom du certificat correspond au nom de domaine du serveur. et le certificat du serveur avec les clés
privées. Tout d'abord, il faut localiser
Si l'une des ces conditions n'est pas satisfaite, le client envoie un avertissement le script CA.sh dans le système :
et c'est à l'utilisateur de décider s'il veut continuer la connexion ou pas. Si la con-
nexion n'est pas interrompue, le serveur peut effectuer l'authentification analogique $ locate CA.sh
du côté client. Ensuite, l'un et l'autre génèrent ce qu'on appelle une clé master. Cette
clé est utilisée pour la génération des clés de session qui servent ensuite à chiffrer/
Admettons que CA.sh a été trouvé
déchiffrer et à vérifier l'intégrité des données transférées pendant la session SSL. À la
dans le répertoire /etc/ssl/misc :
fin, les données chiffrées informant de la fin du fonctionnement du protocole d'accueil
sont envoyées et il est alors possible d'échanger des données.
$ /etc/ssl/misc/CA.sh -newca

Si l'attaquant n'a pas accès à la ma- connexion de l'ordinateur du client Après le lancement du script, il faut
chine intermédiaire, il peut employer au port 5223 du serveur et de la entrer les données d'identification
les techniques de type ARP spoo- rediriger vers un autre ordinateur. qui seront enregistrées dans le certi-
fing ou ARP poisoning (cf. l'article Sur cette machine, un programme ficat et le mot de passe. Le répertoire
Sniffing dans les réseaux commutés spécial doit réceptionner la con- ./demoCA contenant, entre autres,
– Hakin9 2/2003). nexion initialisée, et ensuite, établir le fichier cacert.pem (le certificat de
L'attaque sur une session les connexions successives, cette notre AC) et cakey.pem (clé privée
chiffrée de Jabber sera efficace, fois-ci à l'adresse correcte. Es- de ce certificat) sera créé.
si l'intrus réussit à intercepter la sayons donc d'effectuer une vraie Maintenant, il faut générer un
tentative d'établissement de la attaque. certificat pour notre serveur. Pour ce
faire, tapez la commande suivante :

����� ��� �������� ��� $ /etc/ssl/misc/CA.sh -newreq

Encore une fois, vous devez saisir


quelques informations (de même
������� ������� �������������
que pour la génération de cacert)
et un mot de passe. Il ne nous reste
������� �������
qu'à signer le certificat généré :

����������������������������������������������������������������� $ /etc/ssl/misc/CA.sh -sign


�������������������������������������������
��������������������������������������������������
������������������������������������������������ Après la saisie du mot de passe de
la clé privée de l'autorité de certifi-
cation, nous obtenons le certificat
Figure 1. Schéma de l'attaque man in the middle sur une session SSL de ./newcert.pem signé numériquement
Jabber et sa clé privée ./newreq.pem.

Hakin9 N o 5/2004 www.hakin9.org 23


Socat – une vraie
puissance
Socat est un outil distribué sous la
licence GNU/GPL. C'est un outil pour
des transferts de données bi-direc-
tionnels entre des canaux de données
indépendants. Grâce à ces options
et à une multitude de types de canaux
gérés (p. ex. fichiers, dispositifs, pipes,
sockets, et autres), il peut être utilisé
pour de maintes applications. Comme
vous avez pu le voir, il peut être employé
pour effectuer une attaque man in the
middle par un simple transfert de ports.
Il peut aussi servir de TCP proxy, ou
résoudre le problème de flots de fichiers
journaux (avec le chiffrage, bien sûr).

Figure 2. Interception réussie d'une session de Jabber


Grâce au commutateur -v utilisé
Réalisation de l'attaque Cette règle redirigera tous les pa- par Eve, la session chiffrée sera di-
Il est temps de passer à l'attaque. quets envoyés par Alice à Bob vers rigée non seulement vers ses flots
Pour intercepter les données de la le port local 5223 : cibles, mais aussi vers stderr – ainsi,
session chiffrée de Jabber, nous Eve pourra la consulter. OPENSSL-
allons utiliser le programme spécial • -A PREROUTING -t nat signifie LISTEN:5223,cert= newcert.pem,key =
(mentionné plus haut) socat (cf. l'En- que cette règle sera ajoutée au newreq.pem,verify=0 créera le serveur
cadré Socat – une vraie puissance) tableau nat de la chaîne PRE- écoutant sur le port 5223 les con-
qui servira d'intermédiaire entre l'uti- ROUTING (la carte des chaînes nexions SSL ; dans les négociations,
lisateur et le serveur. est disponible dans un tutorial elle utilisera le certificat contenu dans
Pour rendre la description de d'iptables quelconque), le fichier newcert.pem. verify=0 ce
l'interception de la session plus • -p tcp définit le protocole auquel qui signifie que socat ne vérifiera pas
facile, nous nous servirons des la règle se réfère (ici, c'est TCP), le certificat du client. Analogiquement,
noms propres : Alice (utilisateur de • -i eth1 filtre les paquets arrivants le commutateur OPENSSL:81.210.17.124:
Jabber), Bob (serveur) et Eve (la de l'interface réseau eth1, 5223,verify=0 établira la connexion
personne qui écoute). Alice se con- • -d 81.210.17.124 --dport 5223 SSL avec le serveur jabberpl.org
necte à partir de l'ordinateur portant signifie que nous redirigeons les (81.210.17.124) sur le port 5223 et ne
l'adresse 10.0.0.2 avec le serveur paquets portant l'adresse cible vérifiera pas le certificat du serveur.
jabberpl.org (81.210.17.124) par l'in- et le port donné. Dans cette situation, les don-
termédiaire de la passerelle portant nées capturées seront affichées sur
l'adresse 10.0.0.1 (au moyen de l'in- Jusqu'à ce moment, la règle défini-
terface eth1) sur laquelle Eve a les ssait les caractéristiques des pa-
droits d'accès d'administrateur. quets auxquels Eve s'intéresse. Fuzzy Fingerprint
Pour rediriger la connexion, il Après, c'est la destination (action) qui Une technique très intéressante appe-
suffit à Eve d'utiliser le filtre de pa- s'affiche – dans notre cas -j REDIRECT lée Fuzzy Fingerprint (ffp) a été conçue
quets Linux standard iptables : --to 5223, c'est-à-dire, la redirection
pour les besoins des attaques de type
man in the middle sur les sessions chif-
vers le port 5223 de localhost. Socat
frées. Cette technique exploite les fau-
$ iptables -A PREROUTING -t nat \ effectue déjà l'écoute, activée par
tes commises par les utilisateurs. Ce
-i eth1 -p tcp -d 81.210.17.124 \ Eve à l'aide de la commande :
Attaque

n'est pas une attaque cryptographique.


--dport 5223 -j REDIRECT --to 5223 Cette technique consiste à induire en
$ socat \ erreur l'utilisateur qui ne vérifie pas pré-
-v OPENSSL-LISTEN:5223, § cisément deux sommes MD5 (emprein-
cert=newcert.pem,key=newreq.pem, § tes) des clés publiques. Si elles sont
verify=0 OPENSSL:81.210.17.124: § très similaires, il n'apercevra aucune
5223,verify=0 différence et acceptera la connexion.
Figure 3. Moment critique – une Pour plus d'informations, visitez le site
avertissement sur le certificat SSL Expliquons les parties spécifiques http://www.thc.org/thc-ffp/.
incorrect (Psi) de la commande.

24 www.hakin9.org Hakin9 N o 5/2004


Attaque sur la connexion chiffrée de Jabber

l'écran (sortie standard pour stderr). • exploiter une faille dans le pro- Nous pouvons être presque sûrs que
Si Eve voulait les intercepter vers un gramme client pour qu'il ne vérifie le dernier scénario, le plus simple,
fichier, elle devrait uniquement rediri- pas le certificat du serveur, sera efficace dans la plupart des cas
ger le flot qui l'intéresse en tapant la • exploiter une faille dans le pro- où ce type d'attaque est possible.
commande 2> spy.log. gramme client pour, sans que
L'attaque a réussi. Quand Alice, l'utilisateur le sache, ajouter le Conclusions
persuadée que sa connexion est sé- certificat à la liste des certificats Que faire pour éviter la perte de
curisée, commence à bavarder avec de confiance, confidentialité ? Quand nous acti-
sa copine, Eve, sur l'écran de son or- • si nous interceptons la première vons Use SSL encryption dans notre
dinateur, pourra lire toute l'information connexion de l'utilisateur avec client Jabber préféré, nous devons
envoyée (cf. la Figure 2 Interception le serveur, p. ex. nous avons veiller à respecter quelques points
réussie d'une session de Jabber). recommandé une messagerie essentiels :
instantanée à notre collègue de
Facteur humain travail, nous pouvons compter • toujours vérifier le certificat avant
Un certificat falsifié ou même l'inter- que l'utilisateur seul ajoutera d'accepter la connexion,
ception de la session du côté serveur le certificat falsifié, ce qui nous • en cas de doutes, renoncer
ne peuvent pas garantir que l'attaque donne la chance de demeurer à la connexion et contacter l'ad-
réussira. Tous ceux qui pensaient indétecté, ministrateur à l'aide d'un moyen
qu'il était possible de contourner les • d'habitude, la plupart des utili- plus sûr que le réseau (p. ex.
protections dans le protocole SSL sateurs négligent chaque fois téléphone),
seront déçus – le mécanisme est très les avertissements concernant • de temps en temps vérifier dans
sûr. Dans notre attaque, nous pouvons les irrégularités du certificat, la liste des AC, si notre système
exploiter uniquement les points faibles et acceptent la connexion, cela ne comporte pas de surprises,
du client ou de l'utilisateur. Quelques signifie que le document falsifié • si c'est possible, utiliser en plus le
scénarios sont possibles : sera efficace. mécanisme PGP (GPG). n

P U B L I C I T É

Hakin9 N o 5/2004 www.hakin9.org 25

Vous aimerez peut-être aussi