|
|
Les sniffers dans les réseaux commutés
Par Jérémy Amiot
1 - Introduction
2 - Les commutateurs : rappel
3 - Les
techniques du sniffing dans les réseaux commutés
3.1 - Le
switch jamming
3.2 -
La déviation par un paquet ICMP
3.3 -
La reconfiguration du port
moniteur/SPAN
3.4 -
La
manipulation des tables de commutation (les tables CAM)
3.5 -
Les techniques de
manipulation des caches ARP
3.5.1 - La
corruption du cache ARP (ARP cache poisoning)
3.5.2 -
Le man-in-the-middle (MiM) - L'attaque de l'homme du milieu
3.5.3 - L'outil Winarp (non maintenu)
4 - Les outils de sniffing
4.1 - Dsniff
4.2 -
EttercapNG
4.3 - Taranis
4.4 - ARPoison
5 - Discussion autour de la
documentation
6 - Suivi du document
Lorsqu'on veut interférer dans le trafic
d'un réseau local, la première idée qui vient à l'esprit est de se mettre en
écoute passive, soit de passer son interface réseau Ethernet en mode promiscuous.
Au moyen de sniffers comme Ethereal (Wireshark), on parvient à lire le contenu
de tous les paquets qui circulent sur un segment ethernet. Si cette technique
est simple à mettre en oeuvre mais difficile à détecter quand le mécanisme
d'écoute et de capture est mis en place dans une totale passivité, elle se
trouve très vite confrontée à ses propres limites. Sur un réseau commuté, chaque
machine ne reçoit que les trames destinées à elle ou les trames de broadcast et
de multicast. De ce fait, l'utilisation de plus en plus courante des
commutateurs (switch) réduit la portée d'une telle activité d'écoute et de
capture aux seules trames destinées à la station espionne. Nous devons donc
trouver mieux...
En théorie, il est impossible de sniffer dans un réseau commuté puisque chaque
machine sur le segment ethernet ne reçoit que les paquets qui lui sont destinés.
Mais tout cela a changé depuis la création de « dsniff » . En utilisant des
méthodes de déviation (redirection) de trafic et de retransmission des paquets
IP, un attaquant peut sniffer n'importe quelle machine sur un réseau local
commuté. On parle ainsi de sniffing actif puisque l'attaquant n'écoute plus
passivement le trafic transitant mais il génère de faux paquets et redirige le
trafic.
Dans les sections qui suivent, nous allons expliciter des différentes techniques
de sniffing dans un réseau commuté.
Dans un réseau
ethernet commuté, toutes les machines sont reliées à un
commutateur réseau. L'aspect extérieur d'un commutateur est comparable à celui
d'un hub. Chaque machine est connectée au commutateur sur un port. Seuls les
destinataires d'une trame la reçoivent, et les autres machines n'y ont pas
accès. Afin de toujours envoyer les trames aux bons destinataires sur le réseau,
les commutateurs utilisent une table de correspondances entre les ports
auxquelles les stations sont connectées et leurs adresses MAC. Cette table est
appelée table de commutation. C'est une mémoire interne du commutateur. Le
contenu de la table est mis à jour dynamiquement chaque fois qu'une nouvelle
station se connecte à un port libre ou une station déjà connecté au commutateur
change de port, par exemple. Si le commutateur reçoit une trame dont le
destinataire lui est inconnu, autrement dit, s'il n'y a pas de correspondance
pour le destinataire de la trame, il peut agir comme un répétiteur (hub) et
envoie la trame sur tous ses ports ou la détruit. Ceci dépend du type du
commutateur et de sa configuration. Ainsi, lorsqu'une trame est envoyée sur le
réseau (i.e. dans le commutateur), celui-ci compare l'adresse MAC du
destinataire de la trame avec sa table afin de trouver une correspondance
possible. Il envoie ensuite la trame dans le ou les port(s) correspondant(s)
au(x) destinataire(s). Dans la terminologie
Cisco, leader mondial d'équipement
réseaux, elle est appelée table CAM (content addressable memory).
Les commutateurs permettent évidemment d'accélérer les performances du réseau,
mais ils améliorent également sa sécurité. En effet, dans un réseau Ethernet
commuté, vu que toutes les trames ne passent pas devant toutes les cartes
réseau, un utilisateur malveillant situé sur le même réseau ne peut pas
espionner un trafic qui ne lui est pas destiné, en théorie. Nous verrons dans ce
chapitre qu'il existe des techniques d'attaque de sniffing actif.
Les sniffers des réseaux commutés
profitent des vulnérabilités présentes dans tes protocoles de la pile TCP/IP et
plus précisément dans le protocole ARP. Voici les techniques tes plus communes
dans un réseau commuté :
-
le switch jamming ;
-
la déviation avec un paquet ICMP ;
-
la configuration du port moniteur/SPAN
;
-
la manipulation des tables de
communication (les tables CAM) ;
-
la manipulation des caches ARP.
Quelques anciens commutateurs peuvent
être transformés en mode répétiteur où toutes tes trames sont en diffusion (broadcast)
continue sur tous les ports. Il suffit « d'inonder » les tables de commutation
avec une multitude de paquets dotés de fausses adresses MAC.
La fonction « macof » du sniffer dsniff
tente de passer les commutateurs en mode répétiteur (hub). Elle inonde le
commutateur de réponses MAC falsifiées (spoofed MAC replies flooding) à une
vitesse tellement rapide que la table de commutation du commutateur se trouve
engorgée. Les résultats changent selon la marque, mais certains se changent en
mode de diffusion (broadcast) à ce moment-là. Le sniffing peut alors être
exécuté comme sur un simple hub. Comme précisé, cette attaque ne fonctionne que
sur les vieux commutateurs. Les récents ont corrigés ce problème. Passons donc
aux attaques suivantes.
Un message ICMP de déviation (type = 5)
peut être transmis par une passerelle vers une machine reliée au même réseau
pour lui signaler que la route n'est pas optimale, et qu'il faut changer de
passerelle. L'adresse IP de la nouvelle passerelle est fournie dans l'en-tête
ICMP du message ICMP de déviation. Une fois la redirection effectuée, les
paquets seront acheminés vers la nouvelle passerelle. Nous voyons alors la suite
des événements.
En utilisant un générateur de paquet, nos forgeons nous même notre paquet ICMP de déviation (type
5) signalant à une d'adresse IP X.X.X.X qu'elle doit changer l'adresse de sa
passerelle. Ce même paquet contient, dans l'en-tête ICMP, l'adresse IP de la
nouvelle passerelle (gateway Internet address) :Y.Y.Y.Y. Après quoi, la machine
d'adresse IP X.X.X.X. va envoyer tout son trafic, destiné à l'extérieur du
réseau, vers la nouvelle passerelle d'adresse IP Y.Y.Y.Y.
Vous l'aurez compris, l'attaque consiste à envoyer un paquet ICMP de type
déviation à la machine cible afin de dévier l'adresse IP de sa route habituelle.
L'agresseur mettra son adresse IP comme adresse IP de la nouvelle route de telle
sorte que la machine cible utilisera désormais cette route. Par conséquent, la
machine de l'agresseur va recevoir tout le trafic émis par la machine cible. Une
fois cette procédure mise en place, le pirate peut réaliser 2 attaques.
La première attaque consiste à lire le trafic reçu et ensuite à le renvoyer à sa
destination réelle. Donc l'agresseur va procéder à une écoute passive. Le but
étant la furtivité, il ne faut pas déranger le trafic de la machine cible, qui
elle s'attend toujours à recevoir les données normalement. Pour ce faire, la
machine de l'agresseur doit activer le routage IP.
Pour activer le routage IP :
-
Windows 2000/XP/Vista:
Dans le registre HKLM\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters,
créer/modifier la valeur IPEnableRouting à 1.
La commande « ipconfig /all » permet de savoir si le routage IP est activé
ou non.
-
Linux :
pour activer le routage IP temporairement jusqu'au prochain démarrage du
système, il faut taper : « echo 1 > /proc/sys/net/ipv4/ip_forward ».
-
FreeBSD :
la commande « sysctl -w net.inet.ip.forwarding=l » permet d'activer le
routage IP.
La seconde attaque possible consiste à
détruire le trafic reçu causant un état de déni de service dans la machine
victime, puisqu'elle ne peut plus communiquer avec le réseau. Il est important
de noter que cette technique ne permet pas de rediriger le trafic d'une
connexion entre deux machines du même réseau local puisque le trafic échangé ne
passe pas par la passerelle. Par contre, la technique permet de rediriger le
trafic d'une connexion entre une machine du réseau local et une machine située
sur un autre segment réseau étant donné que, dans ce cas, le trafic échangé doit
passer par la passerelle.
La plupart des commutateurs permettent à
des ports d'être configurés en tant que port moniteur (ou SPAN) et de copier une
partie ou la totalité du trafic transitant par le commutateur, dans un but
d'administration. Si une machine est connectée à ce type de port, elle sera en
mesure de capturer le trafic du réseau. En fait, ces ports sont conçus pour
exécuter des sniffers de paquets lorsque l'administrateur réseau doit résoudre
un problème.
Beaucoup de commutateurs sont installés par défaut. Un intrus peut donc faire un
Telnet sur le commutateur ou le reconfigurer avec le protocole
SNMP, dans le but
d'assigner ce type de port au numéro de port sur lequel le pirate est branché.
Cette attaque est donc interne, et ne présente que peu d'intérêt si le pirate
n'a pas un accès physique au commutateur, ou que le port ne peut pas être
changé.
Comme nous l'avons vu, une trame
ethernet dispose d'un champ pour l'adresse source MAC et d'un autre champ pour
l'adresse destination MAC. Ces champs sont examinés par les commutateurs
ethernet, d'une part pour choisir le port sur lequel ils vont envoyer une trame
reçue par examen de l'adresse destination MAC, et d'autre part pour mettre à
jour la table de commutation par examen de l'adresse source MAC. Cette table
contient pour chaque port les adresses MAC des machines qui y sont connectées.
Le contenu de cette table est mis à jour dynamiquement chaque fois qu'une
nouvelle machine se connecte à un port libre ou qu'une machine déjà connectée au
commutateur change de port, par exemple.
L'usurpation d'adresse MAC vise à forcer le commutateur, en se servant de la
procédure de mise à jour, à croire que la station espionnée se trouve sur le
port de la machine espion. Le principe est simple : envoyer une trame avec pour
adresse source MAC l'adresse MAC de la victime. Ou encore plus simple : changer
sa propre adresse MAC en l'adresse MAC de la victime avant de se connecter au switch. En recevant cette trame, le commutateur met sa table à jour en associant
l'adresse MAC de la victime au port de l'agresseur. Dès lors, l'intégralité du
trafic est redirigée vers le port de la machine du pirate qui n'a plus qu'à le
lire tranquillement, puisqu'il recevra le trafic destiné à la victime. Ce mode
est appelé le mode concentrateur limité (limited hub mode).
Bien qu'elle semble très séduisante, cette technique est très limitée. D'abord
parce que la victime émet encore des paquets, ce qui place le commutateur face à
un conflit : il reçoit la même adresse MAC sur deux ports différents. Selon le
matériel utilisé et sa configuration, la réaction va d'une mise à jour
systématique de la table par le dernier paquet reçu à la désactivation
administrative du port usurpant l'adresse. Pour être efficace, cette technique
met hors circuit la victime par déni de service car elle empêche la redirection
du trafic vers son véritable destinataire, puisque son adresse MAC sera
forcément aiguillée sur le port de l'attaquant. Cette technique est donc
inutilisable pour écouter une connexion entre deux hôtes. Mais, elle est très
intéressante dans le cas d'une attaque de déni de service. La machine victime ne
pourra plus communiquer avec le réseau. Enfin, lorsque les commutateurs sont
configurés pour utiliser une table de commutation statique renseignée par
l'administrateur, tout changement d'adresse MAC est immédiatement détecté, le
port désactivé et l'administrateur alerté.
Un fait intéressant peut cependant être exploité. Certains commutateurs
réagissent mal à de nombreux conflits d'adresse MAC, se conduisant alors ensuite
comme des hubs. Ce comportement est aussi obtenu par saturation de la table de
commutation sur certains modèles de commutateurs. La durée de cet état varie de
quelques minutes suivant la disparition des anomalies, à plusieurs jours, voire
un redémarrage de l'équipement.
Un autre méthode est la création d'une double entrée pour la même adresse MAC.
Si l'on arrive a créer dans la table de commutation une double entrée pour
l'adresse MAC de la machine cible, tout le trafic destiné à cette machine sera
alors capturé sans causer de DoS. Par conséquent, la machine cible continuera à
communiquer normalement avec le réseau sans signaler que son trafic est en train
d'être espionné par une autre machine. Attention, la création d'une double
entrée pour une même adresse MAC dans la table de commutation n'est pas
autorisée par la plupart des commutateurs, notamment les nouveaux modèles.
Le niveau de danger que présentent les
sniffers actifs est beaucoup plus important que celui des sniffers passifs. En
effet, les sniffers passifs se contentent de faire une copie de chaque paquet
capturé. En revanche, les sniffers actifs redirigent le trafic et ont la
possibilité de modifier et même de ne pas acheminer le trafic à sa vraie
destination. Ceci est réalisé grâce à des attaques de corruption des caches ARP.
Devant la limitation des techniques
précédentes, les hackers s'attaquent aux mécanismes qui permettent de faire la
correspondance entre les adresses MAC et les adresses IP : les caches ARP. Le
but du hacker est d'agir directement sur le cache ARP de la machine cible,
indépendamment des requêtes ARP que cette machine pourrait être amenée à
émettre. L'objectif principal d'une telle action est de pouvoir détourner et
capturer tout le trafic destiné et issu de la machine cible. Pour y parvenir,
deux opérations doivent être exécutées au préalable :
Cette manipulation est connue sous le
nom de corruption du cache ARP {ARP cache poisoning). Il existe deux techniques
permettant la création et la mise à jour d'entrées dans le cache ARP d'une
machine cible.
La première technique : création d'un paquet ICMP, TCP ou UDP.
Pour créer une entrée dans le cache ARP d'une machine cible, il suffit de lui
envoyer un paquet ICMP, TCP ou UDP qui provoque une réponse. Pour répondre à
cette demande, la machine cible émet une requête ARP et créera, à la réception
de la réponse ARP, une entrée dans son cache ARP. L'entrée créée correspond à
l'adresse IP et l'adresse MAC de la machine qui a émis le paquet
ICMP,
TCP ou
UDP. Cette technique permet de créer des entrées valides dans le cache ARP.
Cependant, un agresseur peut programmer sa machine pour répondre aux requêtes
ARP avec requêtes ARP contenant de fausses adresses IP et/ou adresses MAC.
Ainsi, les machines qui recevront ces réponses ARP vont mettre à jour leurs
caches par de fausses entrées.
La deuxième technique : création et mise à jour directe par une requête ou
réponse ARP.
Lorsqu'une machine reçoit une requête ARP, le cache lit les champs adresses
sources MAC et IP dans l'en-tête ARP du message et met à jour le cache ARP si
l'entrée existe déjà, le cas échéant, il crée une entrée dans le cache. Quand
une machine reçoit une requête ARP, elle met à jour son cache ARP avec
l'association d'IP/MAC correspondant à l'émetteur de la requête ARP. Tous les
systèmes d'exploitation mettront à jour leurs caches ARP à la réception d'une
requête ARP. Avec une requête ou réponse ARP, un agresseur arrive facilement non
seulement à créer une entrée dans le cache ARP d'une machine cible sans que
cette dernière n'ait initié la moindre requête, mais surtout une fausse entrée.
Pour maintenir les fausses entrées dans le cache ARP de la machine cible, il lui
suffit de renouveler régulièrement l'envoi de ces fausses requêtes ou réponses
ARP. Avec un générateur de paquet FrameIP, un agresseur peut
générer une requête ou réponse ARP et l'envoyer régulièrement à la machine cible
pour corrompre son cache ARP. Ainsi, avec cette technique d'empoisonnement du
cache ARP, le pirate va désormais recevoir le trafic issue de la machine cible.
Quand un MiM est exécuté, un utilisateur
malveillant positionne son ordinateur sur le chemin de communications entre deux
ordinateurs cibles. Le sniffing peut alors être exécuté. L'ordinateur
malveillant expédie les trames échangées par les deux ordinateurs cibles, ainsi
les communications ne sont pas interrompues. L'attaque est effectuée comme suit
(A et C sont les ordinateurs cibles, B l'agresseur),
-
B active son routage IP ;
-
B corrompt les caches ARP de A et de
C ;
-
A associe l'adresse IP de C à
l'adresse MAC de B ;
-
C confond l'adresse IP de A avec
l'adresse MAC de B ;
-
tout le trafic IP de A à C ira alors
à B d'abord, au lieu d'aller directement de A à C.
Ceci est particulièrement efficace quand
la corruption touche aussi bien les ordinateurs que les routeurs/passerelles.
Tout le trafic Internet d'un serveur a pu ainsi être intercepté en exécutant une
attaque MiM sur un ordinateur cible et le routeur du LAN.
L'attaque MiM peut être réalisée avec
Winarp, téléchargeable à l'adresse http://sid.rstack.org/arp-sk/ et qui utilise
le pilote WinPcap. L'attaquant B peut utiliser Winarp en tapant la (très simple)
commande :
winarp.exe -a adresseIP_de_A -b adresseIP_de_C
L'outil fonctionne d'une façon transparente seulement si la machine B active le
routage IP. C'est-à-dire qu'elle route tous les paquets capturés et destinés à
l'autre machine. Analyse de Winarp en trois étapes.
Etape 1 - Envoi d'une requête ARP aux machines A et C, pour obtenir leurs
adresses MAC. Ensuite, corruption de leurs caches ARP : envoi d'une requête ARP
aux machines cibles :
Pour la machine A :
Pour la machine C :
Etape 2 - L'état des caches ARP des
machines A et C est maintenu avec des paquets ARP de réponse. Récapitulatif :
Pour la machine A :
Pour la machine C :
Etape 3 - A la fin de l'attaque, deux
autres paquets ARP de requête sont envoyés aux machines A et C. Ces paquets ont
pour but de restaurer les vrais entrées dans les caches ARP des machines A et C.
Pour la machine A :
Pour la machine C :
A la fin de l'attaque, Winarp permet de
restaurer le contenu initial des caches des machines victime. En effet, les
utilisateurs légitimes des deux machines épiées risquent de découvrir le
sniffing si l'agresseur ne procède pas à cette restitution car la communication
entre les deux machines n'était pas directe.
La diffusion (broadcasting)
Les trames peuvent être diffusées sur la totalité du réseau si l'adresse de
destination MAC est placée à FF:FF:FF:FF:FF:FF (adresse de diffusion ou de
broadcast). En envoyant sur un réseau de fausses réponses ARP qui placent
l'adresse MAC de la passerelle réseau à l'adresse de diffusion, toutes les
données destinées à l'extérieur du réseau seront diffusées. C'est un type de
sniffing particulier. Par contre, toutes les données reçues de l'extérieur et
destinées à l'intérieur du réseau seront envoyées seulement à leurs
destinations, à moins que l'agresseur ne réalise l'attaque de corruption du
cache ARP sur la passerelle...
Changer son adresse MAC
Comme nous l'avons vu il est très souvent utile de changer pour usurper son
adresse MAC. Attention, le changement d'adresse MAC n'est valable jusqu'au
prochain redémarrage de la machine, l'adresse étant changé au niveau software,
et non hardware. Les adresses MAC ont été prévues pour être uniques pour chaque
interface réseau produite. Elles sont gravées dans la ROM de chaque interface
réseau. Il n'est donc pas possible de modifier cette valeur au niveau hardware.
Sous Linux :
ifconfig eth0 hw ether 00:OA:00:00:45:00
Sous windows, il faut aller dans les propriétés de la carte réseau, puis onglet
« Détails ». Il existe aussi des petits programmes pour changer l'adresse plus
simplement.
L'outil SMAC permet de changer les MAC adresses pour les systèmes Windows 2000,
XP, Vista et server 2003. L'outil est téléchargeable à l'adresse :
http://www.klcconsulting.net/smac/
Il est important de noter qu'une fois l'adresse MAC change dans un système
Windows avec l'outil SMAC, elle sera gardée même après le redémarrage du
système. Par contre, pour un système Linux, une fois le système redémarre,
l'adresse MAC d'origine qui a été modifiée par MAC Changer ou la commande «
ifconfig » sera restaurée de nouveau. Un pirate qui a pu attaquer un ordinateur
par DoS, pourrait assigner, par la suite, les adresses IP et MAC de cet
ordinateur cible, recevant ainsi toutes les trames prévues et destinées en
principe à sa victime.
Dsniff est le premier programme qui a
rendu possible le sniffing dans un réseau local commuté. La plupart d'entre eux
combinent plusieurs fonctions si bien qu'ils sont devenus des outils de piratage
très puissants.
C'est une boîte d'outils qui inclut
entre autres un code pour analyser différents protocoles d'application et pour
extraire des informations cruciales, telles que des noms d'utilisateurs, des
mots de passe, des pages web visitées, etc. Le tableau suivant énumère les
principales fonctionnalités de Dsniff.
| Arpspoof |
Redirection des paquets sur le
LAN. |
| Dnsspoof |
Production de réponses pour les requêtes DNS. |
| Dsniff |
Sniffing de mots de passe dans FTP, Telnet, SMTP, HTTP, POP, poppas, NNTP,
IMAP, SNMP, LDAP, Rlogin, RIP, OSPF, PPTP MS-CHAP, NFS, VRRP, YP/NIS, SOCKS,
XI1, CVS, IRC, AIM, ICQ, Napster, PostgreSQL, Meeting Maker, Citrix ICA,
Symantec pcAnywhere, NAI Sniffer, Microsoft SMB, Oracle SQL*Net, Sybase et
Microsoft SQL authentification info. |
| Filesnarf |
Sauvegarde des fichiers sniffés à partir du trafic NFS. |
| Macof |
Transformation des commutateurs vers le mode répétiteur (hub). |
| Mailsnarf |
Sauvegarde des e-mails sniffés à partir du trafic SMTP et POP. |
| Msgsnarf |
Sauvegarde des sessions messages et chat sniffés à partir de Most
instant messenger protocols et IRC. |
| Tcpkill |
Désactivation des connexions TCP spécifiques. |
| Tcpnice |
Ralentissement des connexions TCP spécifiques. |
| Urlsnarf |
Affichage des URL du trafic HTTP. |
| Sshmitm |
Sniffing du trafic SSH redirigé par dnsspoof, capture des mots de passe
et des logins. |
| Webmitm |
Sniffing du trafic HTTP/HTTPS redirigé par dnsspoof capture des logins
cryptés par SSL. |
Ettercap NG est un programme puissant et
utilisant une interface utilisateur graphique assez pratique. C'est un sniffer
spécialement conçu pour les réseaux commutés. Toutes les opérations sont
automatisées, et les ordinateurs cibles sont choisis à partir d'une liste
scrollable de machines détectées sur le réseau LAN. Ettercap automatise
également les procédures suivantes :
-
injection de caractères dans les
connexions ;
-
collection de mots de passe ;
-
destruction des connexions.
Ettercap peut être téléchargeable au
site : http://ettercap.sourceforge.net
Taranis vise à démontrer la nécessité
d'une cryptographie et authentification fortes dans un réseau local ethernet. Il
permet de visualiser les logins et mots de passe en redirigeant le trafic
destiné aux serveurs POP et IMAP vers la machine exécutant Taranis.
http://www.bitland.net/taranis/
ARPoison est un outil pour Unix qui
permet de créer des réponses ARP falsifiées. Les utilisateurs peuvent indiquer
la source et la destination des adresses IP et MAC. http://www.arpoison.net Et
d'autres sur http://packetstormsecurity.org ...
Vous pouvez poser toutes vos questions,
vos remarques et vos expériences à propos d'Internet et la vie privée. Pour
cela, rendez-vous sur le Forum Sécurité.
Version 1.0, le 22 Juillet 2009, par
Jérémy AMIOT, création du document.
|
|