Stratégies anti-hackers Écoutes sur un réseau informatique

Transcription

Stratégies anti-hackers Écoutes sur un réseau informatique
Stratégies anti-hackers
Écoutes sur un réseau informatique
Un dictionnaire de langue anglaise indique que sniffing (écoute) est un terme polysémique. Le
verbe to sniff possède en effet quatre acceptions :
1. Inhaler, renifler, prendre une brève inspiration d'air par le nez comme lorsqu'on hume
quelque chose.
2. Se servir du sens olfactif, comme lors d'une dégustation ou d'une recherche.
3. Considérer quelque chose de manière méprisante ou dédaigneuse.
4. (familier) Fouiner, fureter, espionner.
La dernière signification est celle qui caractérise le mieux l'activité des hackers qui nous intéresse ici.
Qu'est-ce qu’une écoute sur un réseau ?
L’écoute ou sniffing permet à un attaquant de compromettre la sécurité d'un réseau d'une
manière passive. Dans la terminologie propre à la sécurité des réseaux, un sniffer est un
programme ou un outil qui surveille passivement un réseau informatique en vue d'y trouver
des informations susceptibles d'intéresser un attaquant. Ces informations sont généralement
relatives à l'authentification ; ainsi, des noms d'utilisateur et des mots de passe permettront
d'accéder à un système ou à une ressource. La plupart des rootkits contiennent des sniffers. Si
l’un de vos systèmes Unix est compromis, il est très vraisemblable qu'il exécute un sniffer.
Fonctionnement
Il existe deux grandes écoles de la technique d’écoute : l'ancienne et la nouvelle. Auparavant,
les ordinateurs étaient connectés via un média partagé. Ils étaient rattachés au même segment
réseau et la totalité du trafic était visible par chacun. Les cartes réseau prenaient en charge le
filtrage au niveau du matériel, de manière à ce que l'ordinateur relié ne voie que le trafic qui
lui était destiné et non pas celui des autres. Il ne s'agissait pas en réalité d'une fonctionnalité
de sécurité, car elle n'était conçue que dans le but d'éviter de surcharger la machine. Un logiciel de sniffing désactive ce filtre et met la carte dans un mode appelé « promiscuité ». Il a été
spécialement conçu pour traiter les saturations du trafic, soit à des fins d'analyse, soit dans le
but de le capturer.
De nos jours, de plus en plus d'ordinateurs sont reliés par des commutateurs. Au lieu d'envoyer
le trafic à toutes les extrémités du réseau, ces commutateurs filtrent le trafic au niveau du hub,
ce qui empêche de voir le trafic des autres, même en mode de promiscuité. En conséquence,
340
Stratégies anti-hackers
les pirates doivent attaquer le dispositif commutateur/routeur afin de rediriger les flux de trafic
(ce que nous décrirons plus loin) ou se contenter de surveiller le trafic destiné à l'hôte qu'ils
ont compromis.
Lorsque du trafic réseau entre dans une machine, il est tout d'abord pris en charge par le pilote
Ethernet. Celui-ci transmet ensuite les paquets à la pile de protocoles TCP/IP (Transmission
Control Protocol/Internet Protocol), laquelle les envoie aux applications. Le logiciel d’écoute
se connecte directement au pilote Ethernet et fait une copie du trafic qu’il reçoit. Unix propose
un ensemble d'interfaces ouvertes pour réaliser cette opération, alors que les systèmes
Windows offrent très peu d'outils en la matière. C'est pourquoi on trouve généralement des
sniffers dans les rootkits Unix et rarement dans les rootkits Windows.
Les cibles des écoutes
Un réseau regorge d'informations propres à éveiller l'intérêt d'un observateur. Les plus
évidentes sont celles relatives à l'authentification (les noms d'utilisateur et les mots de passe)
dont l’interception peut ensuite permettre d'accéder à des ressources. Beaucoup d'autres informations peuvent également être exploitées, comme les e-mails ou les messageries instantanées. Tout ce qui passe sur un réseau est exposé à l'espionnage.
Les informations d'authentification
Les sections suivantes illustrent par des exemples les différents types de trafics susceptibles
d'attirer un attaquant qui surveille un réseau. Ces exemples, classés par protocole ou par
service, ne prétendent pas couvrir le sujet de façon exhaustive.
Dans l'exemple de la section suivante, le texte en gras correspond aux informations envoyées
par un programme client et le texte normal à celles envoyées par le serveur. Dans presque tous
les cas, nous ne nous intéressons qu'au trafic généré par le client, car il s’agit de celui qui
renferme les informations d'authentification. Des sniffers plus sophistiqués peuvent également examiner le trafic du serveur afin de filtrer les tentatives d'authentification qui ont
échoué.
Vous trouverez ci-après un bref aperçu des types d'informations d'authentification pouvant
être récupérées via leurs protocoles respectifs. Ces exemples ont été simplifiés ; de plus, la
version actuelle de certains de ces protocoles est nantie de mécanismes d'authentification plus
sophistiqués qui réduisent les risques encourus. Dans le cas des protocoles Internet courant, il
existe une RFC (Request For Comments) qui explique les détails des spécifications.
telnet (port 23)
Telnet est le service qu'un attaquant qui tente d'obtenir des informations sur les utilisateurs va
surveiller en priorité. Aujourd'hui, telnet est de moins en moins utilisé en raison de son
manque de sécurité ; l'intérêt que les hackers lui portent décroît donc également. Telnet ne
Écoutes sur un réseau informatique
341
fournit aucune sécurité au niveau de la session : il envoie le nom d'utilisateur et le mot de
passe en clair sur le réseau, comme le montrent les lignes suivantes :
[~] % telnet localhost
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
Red Hat Linux release 6.1 (Cartman)
Kernel 2.2.12-20 on an i686
login: olivier
Password: bonjour
[18:10:03][redhat61]
[~] %
FTP (port 21)
Le service FTP (File Transfer Protocol), qui sert à transmettre des fichiers via un réseau,
envoie également les informations d'authentification en clair. À la différence de telnet, FTP
autorise également les accès anonymes aux fichiers ; dans ce cas, l'utilisateur anonyme prend
le nom « anonymous » ou « ftp » et choisit un mot de passe quelconque. Les informations du
protocole FTP sont normalement dissimulées par une interface cliente conviviale ; le trafic
d'authentification sous-jacent apparaît toutefois tel quel sur le réseau :
[~] % telnet localhost 21
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
220 localhost FTP server (Version wu-2.5.0(1) Tue Sep 21 16:48:12 EDT 1999) ready.
USER olivier
331 Password required for olivier.
PASS bonjour
230 User olivier logged in.
POP (port 110)
Le service POP (Post Office Protocol) est exécuté par un serveur auquel se connectent des
programmes de messagerie client afin de permettre à un utilisateur de relever son courrier
électronique. Les serveurs POP sont en général situés sur les réseaux des fournisseurs d'accès
à Internet. Le trafic POP est rarement chiffré ; les informations d'authentification sont généra-
342
Stratégies anti-hackers
lement envoyées en clair. Le nom de l'utilisateur et son mot de passe sont fournis au serveur
distant par les commandes USER et PASS. Voici un exemple de ce protocole :
[~] % telnet localhost 110
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
+OK POP3 localhost v7.59 server ready
USER olivier
+OK User name accepted, password please
PASS bonjour
+OK Mailbox open, 24 messages
Signalons qu'il existe des extensions au protocole POP qui permettent de chiffrer les informations d'authentification ainsi que les sessions.
IMAP (port 143)
Le service IMAP (Internet Message Access Protocol) est un protocole qui offre les mêmes
fonctionnalités que le service POP. Tout comme dans ce dernier, les informations d'authentification transitent le plus souvent en clair sur le réseau. L'authentification IMAP est accomplie
par l'envoi d'une chaîne de caractères composée d'un jeton choisi par l'utilisateur, de la
commande LOGIN, du nom de l'utilisateur et de son mot de passe :
[~] % telnet localhost imap
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
* OK localhost IMAP4rev1 v12.250 server ready
A001 LOGIN olivier bonjour
A001 OK LOGIN completed
Il existe des extensions au protocole IMAP qui permettent de chiffrer les informations
d'authentification ainsi que les sessions.
NNTP (port 119)
Le protocole NNTP (Network News Transport Protocol) gère la lecture et l'écriture des
messages sur les forums Usenet. L'authentification NNTP s'effectue de différentes façons. Sur
les anciens systèmes, elle reposait principalement sur l'adresse réseau du client, restreignant
l'accès aux serveurs de news à une plage d'adresses donnée. Puis des extensions à NNTP ont
été créées pour permettre d'autres techniques d'authentification, comme celle qui est fondée
Écoutes sur un réseau informatique
343
sur un mécanisme défi-réponse avec chiffrement d’aléa. L'authentification réalisée en texte
clair peut facilement être capturée sur un réseau, comme le montre l'exemple suivant :
[~] % telnet localhost 119
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
200 Welcome to My News Server (Typhoon v1.2.3)
AUTHINFO USER olivier
381 More Authentication Required
AUTHINFO PASS bonjour
281 Authentication Accepted
rexec (port 512)
Le service rexec, appelé rexecd sur presque tous les systèmes d'exploitation Unix, est un
service ancien utilisé pour exécuter des commandes à distance. Le service effectue l'authentification en envoyant au serveur, en clair, le nom de l'utilisateur et son mot de passe. Il reçoit
de la part du client un tampon composé des données suivantes :
• Un numéro de port Ascii qui indique le numéro de port auquel le serveur peut se
connecter pour envoyer des messages d'erreurs standards. C'est un port sur l'hôte client
qui est en attente de cette connexion. La valeur 0 indique que la connexion n'est pas
demandée. Cette chaîne se termine par un caractère null.
• Une chaîne de 16 caractères au plus terminée par un null contenant le nom de l'utilisateur.
• Une chaîne de 16 caractères au plus terminée par un null contenant le mot de passe.
• Une chaîne de caractères terminée par un null contenant la commande à exécuter sur
l'hôte distant.
Voici un exemple de requête d'authentification :
0\0olivier\0bonjour\0touch /tmp/hello\0
Si l'authentification est réussie, le serveur retourne un caractère null ; sinon, il renvoie la
valeur 1 accompagnée d'un message d'erreur.
rlogin (port 513)
Le protocole rlogin fournit en gros les fonctionnalités du protocole telnet combinées au mécanisme d'authentification du protocole rexec. Il gère des chemins de confiance, recensés dans
un fichier appelé .rhosts et situé dans le répertoire home de l'utilisateur. Ce fichier contient la
liste des utilisateurs autorisés à se connecter au compte spécifié sans mot de passe et les hôtes
344
Stratégies anti-hackers
sur lesquels ils résident. Le mécanisme d'authentification repose sur la confiance : on part du
principe que l'utilisateur est bien celui que le client rlogin distant déclare être. Ce mécanisme
d'authentification, qui ne fonctionne que sur les systèmes Unix, n'est plus tellement utilisé sur
les réseaux de nos jours en raison de ses nombreuses failles. En l'absence de chemins de
confiance, le protocole transmet en clair le nom de l'utilisateur et son mot de passe, selon un
mode similaire à celui du protocole rexec et qui comporte :
• Le numéro de port Ascii auquel le serveur peut se connecter pour envoyer des messages
d'erreurs standards. C'est un port sur l'hôte client qui est en attente de cette connexion. La
valeur 0 indique que la connexion n'est pas demandée. Cette chaîne se termine par un
caractère null.
• Une chaîne de 16 caractères au plus terminée par un null contenant le nom de l'utilisateur
client.
• Une chaîne de 16 caractères au plus terminée par un null contenant le nom de l'utilisateur
serveur.
• Une chaîne de caractères terminée par un null contenant le type de terminal et sa vitesse.
Le serveur retourne alors un octet contenant la valeur 0 pour indiquer qu'il a reçu ces informations. Si l'authentification via le mécanisme de confiance automatique échoue, le programme
de connexion prend la main et effectue la connexion comme si l'utilisateur s'était connecté
avec le service telnet.
X11 (port 6000+)
Le système X11 Window utilise un « cookie magique » pour autoriser les clients à se
connecter à un serveur. Un cookie de 128 bits généré aléatoirement est envoyé par tout
client X11 qui se connecte à un serveur X Window. En interceptant ce cookie, un attaquant
pourra se connecter à ce même serveur X Window. Ce cookie est habituellement stocké dans
un fichier nommé .Xauthority, lequel est situé dans le répertoire home de l'utilisateur. Ce
cookie est passé au serveur X Window par le programme xdm au moment de la connexion.
Les descripteurs de fichiers NFS
Le système de fichiers NFS (Network File System), créé par Sun Microsystems, fait appel à ce
que l’on appelle un descripteur de fichier NFS pour accorder l'accès à un fichier ou à un répertoire donné d'un serveur de fichiers. En surveillant les descripteurs de fichiers NFS sur le
réseau, un intrus peut réussir à accéder aux ressources correspondantes. Le protocole NFS a
malheureusement recours à ONC-RPC (Open Network Computing-Remote Procedure Call),
ce qui rend le mécanisme plus compliqué qu'une simple authentification en clair, sans pour
autant garantir une sécurité absolue. Cette complexité nous empêche en outre d'illustrer ce
type de trafic par un exemple.
Voici le processus qui permet à un client NFS légitime d'accéder aux fichiers d'un serveur :
Écoutes sur un réseau informatique
345
• L'utilisateur émet une requête de montage en vue de monter un système de fichiers
distant.
• Le système d'exploitation local contacte un service RPC de l'hôte distant appelé
rpc.mountd et lui transmet le nom du système de fichiers auquel il désire accéder.
• Le programme mountd contrôle la validité de l'accès pour déterminer si la requête
provient d'un port privilégié de l'hôte client et si ce dernier a la permission d'accéder à
l'hôte cible.
• Le programme mountd répond au client en lui fournissant un descripteur de fichier NFS
qui donne accès à la racine du système de fichiers auquel l'utilisateur veut accéder.
• Le programme client contacte ensuite le démon NFS (nfsd) sur l'hôte cible, lui envoie le
descripteur de fichier et accède ainsi à la ressource.
L'authentification sous Windows NT
Le système d'exploitation Windows NT prend en charge plusieurs types d'authentification,
chacun augmentant graduellement sa sécurité. Comme nous le verrons dans la suite de ce
chapitre, la mise en œuvre des mécanismes d'authentification les moins sécurisés créé l’un des
principaux points faibles de Windows NT. Il existe trois types d'authentification :
• Plaintext – Les mots de passe sont transmis en clair sur le réseau.
• LM (Lan Manager) – Utilise un mécanisme faible défi/réponse dans lequel le serveur
envoie un défi au client, qui l'utilise pour chiffrer la valeur de hachage de son mot de
passe, qu'il renvoie ensuite au serveur. Le serveur fait de même et compare le résultat pour
authentifier l'utilisateur. Le mécanisme de transformation de la valeur de hachage est
extrêmement faible ; la valeur de hachage initiale peut être interceptée assez facilement
depuis le réseau et craquée. Sous Windows NT 4, malgré la présence d'un procédé
d'authentification plus performant (NTLM), la valeur de hachage LM était toujours
envoyée sur le réseau avec la valeur de hachage NTLM, ce qui abaissait le niveau de la
sécurité à celui du mécanisme LM.
• NTLM (NT Lan Manager) et NTLMv2 (NT Lan Manager v2) – NTLM et NTLMv2
fournissent un mécanisme défi/réponse plus robuste qui rend les requêtes d'authentification interceptées beaucoup plus difficiles à craquer. NTLMv2 a été commercialisé avec le
Service Pack 4 de Windows NT 4.0. Il est conseillé de l'employer chaque fois que
possible, mais il convient de vérifier la compatibilité des clients avec ce protocole. Vous
serez peut-être obligé d'installer des logiciels supplémentaires sur les clients pour assurer
cette compatibilité.
Le développement de ces mécanismes suit un processus itératif, au cours duquel on remédie
aux vulnérabilités découvertes dans l'implémentation précédente (heureusement, les failles
sont de moins en moins importantes au fil des améliorations).
346
Stratégies anti-hackers
Il existe des sniffers spécialisés qui capturent exclusivement les informations d'authentification de Windows NT. Le programme L0phtCrack en est un bon exemple (celui-ci ne craque
que les mots de passe Windows NT). La documentation qui accompagne L0phtCrack
explique en détail la procédure de création des valeurs de hachage des mots de passe de
Windows NT. L0phtCrack peut être téléchargé à l'adresse suivante : http://stake.com/research/
lc3.
Les autres trafics réseau
Les ports que nous venons de passer en revue sont les plus écoutés, car ils véhiculent en clair
les informations d'authentification, mais ils ne sont pas les seuls à attirer les attaquants.
Comme nous allons le voir, d'autres ports sont également dignes d'intérêt.
SMTP (port 25)
Le protocole SMTP (Simple Mail Transfer Protocol) sert à transférer du courrier électronique
sur Internet ou au sein des messageries internes de nombreuses entreprises. Le courrier électronique est une cible éminemment tentante pour les hackers. Un attaquant peut, par exemple,
surveiller l'administrateur du réseau pour savoir s'il a été découvert. Dans le contexte de guerre
économique permanente qui est le nôtre, surveiller le réseau à la recherche d'informations sur
telle ou telle société (fusions, acquisitions, partenariats, etc.) peut tenter certains. Ces renseignements peuvent généralement être glanés dans le courrier électronique qui transite par le
réseau.
Le sniffer dsniff, présenté plus loin dans ce chapitre, comprend un programme conçu pour
intercepter les messages électroniques envoyés sur le réseau.
mailsnarf affiche les messages e-mail interceptés dans les trafics SMTP et POP
au format mbox de Berkeley ; il est donc adapté à la navigation hors-ligne avec
votre lecteur de courrier électronique préféré (mail(1), pine(1), etc.).
(Extrait de la FAQ de dsniff)
HTTP (port 80)
Le protocole HTTP (HyperText Transfer Protocol) est utilisé pour transmettre du trafic Web.
Ce trafic, habituellement destiné au port 80, est généralement surveillé à des fins statistiques
plutôt que pour son contenu. Les informations d'authentification et les numéros de cartes de
crédit qu'il véhicule sont en général chiffrés à l'aide de SSL (Secure Sockets Layer). Il existe
des produits du commerce à la disposition des entreprises qui souhaitent surveiller les activités sur le Web de leurs employés.
Le sniffer dsniff inclut également un programme dédié à l’interception des requêtes d'URL sur
le réseau :
Écoutes sur un réseau informatique
347
urlsnarf affiche les URL demandées et capturées dans le trafic HTTP au format
CLF (Common Log Format), utilisé par la plupart des navigateurs Web, ce qui
permet d'entreprendre des traitements hors ligne à l'aide de votre outil d'analyse
préféré des logs Web (analog, wwwstat, etc.).
Extrait de la FAQ de dsniff.
Sniffers les plus courants
Les outils d’analyse de protocole sont nombreux ; nous vous proposons d'en présenter quelques-uns. Nous ne prétendons pas à l'exhaustivité, aussi ne mentionnerons-nous que quelques
exemples. Nous allons étudier des sniffers destinés au diagnostic et d'autres conçus pour
l’interception des informations d'authentification. Vous trouverez des listes de sniffers sur
divers sites consacrés à la sécurité, notamment sur le site de securityfocus (www.securityfocus.com).
Ethereal
Ethereal est l'un des analyseurs de protocoles les plus récents, puisqu’il n'est apparu que vers
1998. Toutefois, de par sa nature open source, Ethereal est devenu l'un des analyseurs de
protocoles les plus répandus. Soutenu par une importante communauté de développeurs, il
décode plus de protocoles que de nombreux outils commerciaux équivalents. Il est de loin le
meilleur analyseur de protocoles pour des systèmes Unix. Bien qu'il s'exécute aussi sur
Windows, son interface graphique surprend les habitués de l’utilisation de Windows. En
réalité, celle-ci a été écrite au moyen de Gtk, d'où son apparence de type Unix.
La figure 10.1 montre la fenêtre d’interception d'Ethereal. Une fonctionnalité particulièrement intéressante de ce programme est la décomposition des paquets en temps réel (live
decodes). La plupart des analyseurs de protocoles ne peuvent afficher les données interceptées
tant que l’interception n'a pas été arrêtée. L'utilité de cette fonctionnalité peut paraître
douteuse lorsque l'on sait que le trafic réseau peut atteindre des débits atteignant
10 000 paquets par seconde, une vitesse que les humains sont incapables de suivre. Toutefois,
la plupart des utilisateurs d'un sniffer créent des filtres qui rejettent la plus grande part du
trafic.
Une fois interceptés, les paquets sont conservés dans un tampon et affichés dans une interface
composée de trois panneaux (voir la figure 10.2). Il s'agit du format d'affichage adopté à
l'origine par Sniffer Network Analyzer, qui est ensuite devenu celui de tous les autres produits.
La fenêtre supérieure affiche un résumé ligne par ligne de chaque paquet. La seconde fenêtre
présente la décomposition en couches de protocoles du paquet mis en surbrillance dans la
fenêtre de résumé. La troisième fenêtre correspond à la sortie hexadécimale du même paquet.
Un clic sur l’un des champs de la fenêtre présentant les détails des couches de protocoles
348
Stratégies anti-hackers
Figure 10.1
La fenêtre permettant de
spécifier le trafic à
analyser.
entraîne la mise en surbrillance des caractères correspondants dans la fenêtre qui affiche la
sortie hexadécimale.
Sniffer Pro, de Network Associates
Sniffer Pro est une marque déposée de Network Associates. Les logiciels de sniffing qu'utilisent les hackers d'aujourd'hui tirent peut-être leur nom de ce produit, car il était disponible
bien avant l'apparition des programmes d’interception de mots de passe. Sniffer Pro est doté
d'une interface de capture et de visualisation du trafic réseau conviviale. Le grand avantage
des produits du commerce est qu'ils prennent en charge un grand nombre de protocoles réseau
et qu'ils affichent les données du protocole décodées très lisiblement. Sniffer Pro fonctionne
selon deux modes : il intercepte le trafic réseau, puis il le décode et l'affiche.
La figure 10.3 montre Sniffer Pro en mode interception ; les statistiques réseau et les données
sont affichées dans des fenêtres.
Une fois capturées, les données sont décodées puis affichées de manière lisible. Sur la
figure 10.4, Sniffer Pro a décodé la requête HTTP et on peut voir que deux variables significatives, alias et pw, ont été passées. Elles représentent en l'occurrence le nom de l'utilisateur
et son mot de passe.
Moniteur réseau (Netmon)
Windows NT Server est livré avec un logiciel de surveillance du réseau appelé Moniteur
réseau, ou, en abrégé, Netmon (Network Monitor). Cette version de Netmon n’intercepte que
Écoutes sur un réseau informatique
349
Figure 10.2
La fenêtre affichant la
décomposition en
couches de protocoles.
le trafic entrant ou sortant du serveur sur lequel il est installé. Il existe des versions de Netmon
pour Windows 2000 et Windows XP qui comportent la même restriction. Une version, cependant, intercepte tout le trafic ; celle-ci est fournie avec SMS (Systems Management Server).
Netmon a un avantage sur les autres analyseurs de réseau du marché : il est capable de décoder
certains trafics réseau propriétaires de Microsoft dont les spécifications ne sont pas publiques,
tels que les différents services MS-RPC qui communiquent par le biais de canaux nommés sur
des réseaux Windows NT. Même si Netmon ne décode pas tous les services MS-RPC, il en
décode une bonne partie, qui, sans lui, resterait inintelligibles.
Le mode opératoire du Moniteur réseau est très similaire à celui de Sniffer Pro, puisqu'il
propose un mode d’interception (figure 10.5) et un mode de visualisation (figure 10.6) qui
offrent les mêmes fonctionnalités.
EtherPeek
EtherPeek est l’un des plus anciens analyseurs de protocoles. Outil de WildPackets (dont
l'ancien nom est A.G. Group), il peut être exécuté aussi bien sur des systèmes Macintosh que
Windows (sa première version a été écrite il y a dix ans pour Macintosh). EtherPeek comporte
350
Stratégies anti-hackers
Figure 10.3
Sniffer Pro en mode capture.
une fonctionnalité d'affichage et de décodage en temps réel, et bien d'autres caractéristiques
intéressantes (vous pouvez télécharger une version de démonstration à www.wildpackets.com).
Actuellement, ce produit se distingue notamment dans sa version AeroPeek qui permet
d’écouter des réseaux sans-fil IEEE 802.11b.
TCPDump
TCPDump est, de loin, l'outil de diagnostic et d'analyse réseau sous Unix le plus populaire. Il
surveille et décode toutes les données d'en-tête IP, TCP, UDP (User Datagram Protocol) et
ICMP (Internet Control Message Protocol), ainsi que certaines données de la couche Application (la plupart des protocoles d'infrastructure réseau). Il n'est pas conçu comme un outil
d'attaque et n'est pas destiné à assister les attaquants qui souhaitent surveiller un réseau. Il
Écoutes sur un réseau informatique
351
Figure 10.4
Sniffer Pro affiche les données capturées.
fournit néanmoins une base solide au développement d'un sniffer. Son code source étant
gratuit, il est très instructif de le consulter.
TCPDump peut être téléchargé à l'adresse suivante : www.tcpdump.org.
TCPDump a subi de nombreuses modifications ces dernières années et prend maintenant en
charge beaucoup de protocoles.
dsniff
Dsniff comprend un ensemble d'outils dédiés au sniffing écrits par Dug Song. Vous pouvez
vous le procurer sur le site Web de son auteur (www.monkey.org/~dugsong/dsniff) ainsi que sur
de nombreux sites miroirs.
Dsniff est surtout connu pour ses capacités d’interception des paquets d'authentification
(noms d'utilisateur et mots de passe). La version actuelle décode les informations d'authentification des protocoles suivants : AOL Instant Messenger, Citrix Winframe, CVS (Concurrent
Versions System), FTP (File Transfer Protocol), HTTP, ICQ, IMAP, IRC (Internet Relay
352
Stratégies anti-hackers
Figure 10.5
Le Moniteur réseau en mode interception.
Chat), LDAP (Lightweight Directory Access Protocol), les requêtes de montage RPC,
Napster, NNTP, Oracle Database SQL*Net, OSPF (Open Shortest Path First), PC Anywhere,
POP, PostgreSQL, RIP (Routing Information Protocol), rlogin (Remote Login), les paquets
SMB, RPC yppasswd, Sniffer Pro de Network Associates (remote), SNMP (Simple Network
Management Protocol), Socks, telnet , X11.
Avec les réseaux commutés et les protocoles chiffrés actuels, l’espionnage de mots de passe
ne fonctionne pas toujours aussi bien qu'on pourrait le souhaiter. Dsniff contient plusieurs
utilitaires de redirection et d'attaques de type MITM (Man-In-The-Middle) qui permettent de
rediriger le flux du trafic et de déchiffrer des sessions.
Le premier utilitaire s'appelle arpspoof (appelé à l’origine arpredirect). ARP (Address Resolution Protocol) est utilisé par des hôtes pour déterminer l'adresse MAC (Media Access Control)
du routeur local. En usurpant des paquets ARP, vous pouvez convaincre les ordinateurs du
voisinage que vous êtes le routeur. Votre machine doit alors transmettre les paquets reçus vers
le routeur légitime, mais le sniffer de mot de passe dsniff a ainsi la possibilité de traiter les
paquets. Cela fonctionne non seulement sur des réseaux commutés, mais aussi sur des réseaux
Écoutes sur un réseau informatique
353
Figure 10.6
Le Moniteur réseau en mode visualisation.
modem-câble. Cet outil n'est pas complètement à toute épreuve : vous luttez avec le routeur
lorsque vous essayez de persuader les autres ordinateurs de votre adresse MAC locale. Le
résultat est que le trafic reçu sur votre machine est parfois intermittent. Cette technique est
facilement détectée par les systèmes de détection d’intrusion réseau. Même Sniffer Pro (dont
il a été question plus haut) comporte un mode de diagnostic expert qui signale la présence
« d’adresses IP dupliquées » (à savoir que plusieurs ordinateurs prétendent avoir l’adresse IP
du routeur).
L’utilitaire dnsspoof propose une autre méthode de redirection du trafic. Dans ce cas, ce sont
les réponses du serveur DNS (Domain Name System) local qui sont usurpées. Lorsque vous
allez sur un site Web tel que http://www.exemple.com, votre ordinateur envoie une requête à
votre serveur DNS local pour lui demander l’adresse IP de ce site. Cette requête demande
354
Stratégies anti-hackers
Un exemple d'utilisation de DSNIFF
La sortie suivante a été générée avec dsniff par Dug Song, qui a intercepté avec succès mon mot de
passe lors de la conférence consacrée à la sécurité CanSecWest 2001. Il se trouve en effet qu'Outlook
consulte automatiquement les serveurs POP3, même lorsqu'on se contente de l'ouvrir pour lire les
informations de contact du carnet d'adresse. J'ai rapidement changé mon mot de passe, juste à temps,
car la suite de la sortie de dsniff montre la tentative d'une autre personne qui essaie d'ouvrir une session
avec ce mot de passe ; il s'agit certainement d'un autre utilisateur de dsniff.
----------------03/28/01 18:43:24 tcp 192.168.1.201.1035 ->
216.136.173.10.110 (pop)
USER robert_david_graham
PASS Cerveza2
----------------03/29/01 02:07:41 tcp 192.168.1.243.1837 ->
216.136.173.10.110 (pop)
USER robert_david_graham
PASS Cerveza2
----------------03/29/01 02:07:08 tcp 192.168.1.243.1836 ->
64.58.76.98.80 (http)
POST /config/login?84gteu3f1fmvt HTTP/1.0
Host: login.yahoo.com
Content-type: application/x-www-form-urlencoded
Content-length: 147
.tries=1&.src=ym&.last=&promo=&.intl=us&.bypass=&.partner=&.u=86
3imictc5nnu&.v=0&hasMsgr=0&.chkP=Y&.done=&login=robert
_david_graham&passwd=Cerveza2
----------------03/29/01 02:06:48 tcp 192.168.1.243.1835 ->
64.58.76.98.80 (http)
POST /config/login?15aeb5g14endr HTTP/1.0
Host: login.yahoo.com
Content-type: application/x-www-form-urlencoded
Content-length: 146
.tries=&.src=ym&.last=&promo=&.intl=us&.bypass=&.partner=&.u=863
imictc5nnu&.v=0&hasMsgr=0&.chkP=Y&.done=&login=robert
_david_graham&passwd=Cerveza2
----------------03/31/01 17:07:38 tcp 192.168.1.243.1307 ->
216.136.173.10.110 (pop)
USER robert_david_graham
PASS Cerveza2
habituellement un certain délai pour être résolue ; dnsspoof en profite pour envoyer sa réponse
plus rapidement. La victime prend la première réponse et ignore la seconde. La réponse
usurpée contient une adresse IP différente de la réponse légitime ; il s’agit généralement de
l’adresse IP de la machine de l’attaquant. L’attaquant utilise alors certainement l’un des autres
utilitaires d’attaque de type MITM de dsniff.
Écoutes sur un réseau informatique
355
Le nom MITM (man-in-the-middle) vient de la cryptologie et décrit une situation dans
laquelle une personne intercepte des communications, les modifient et les transmet. Les utilitaires de dsniff pour ces attaques sont webmitm pour le trafic HTTP (y compris SSL) et
sshmitm pour SSH. SSH et SSL sont des protocoles chiffrés généralement considérés comme
sécurisés et non susceptibles d’être analysés. Les utilitaires MITM procèdent en présentant
leurs propres clés de chiffrement aux clients SSL/SSH, ce qui leur permet de déchiffrer le
trafic, d’intercepter des mots de passe et de rechiffrer ceux-ci avec les clés du serveur initial.
En théorie, il est possible de se protéger contre ce type d’attaque en contrôlant la validité du
certificat du serveur, mais dans les faits, personne ne procède à cette vérification.
Dsniff intercepte non seulement les mots de passe, mais aussi tout le trafic qui circule en texte
clair sur le réseau. L’utilitaire mailsnarf intercepte les e-mails tout comme Carnivore du FBI,
sauf qu’il réassemble ceux-ci au format mbox, lequel peut être lu par la plupart des lecteurs de
messagerie électronique. L’utilitaire msgsnarf intercepte les messages envoyés par ICQ, IRC,
Yahoo ! Messenger et IM d’AOL. L’utilitaire filesnarf enregistre toutes les URL circulant sur
le réseau. L’utilitaire webspy envoie quant à lui ces URL à un navigateur Web Netscape en
temps réel, ce qui permet de voir ce qu’affiche le navigateur de la victime.
L’utilitaire macof envoie un flot d’adresses MAC. Il s’agit là d’une autre méthode d’attaque
des commutateurs Ethernet. La plupart des commutateurs ont des tables de taille limitée qui
ne peuvent pas contenir plus de 4000 adresses MAC. Ce nombre est largement suffisant pour
les réseaux habituels (il faut relier plus de 4000 machines au commutateur pour outrepasser la
capacité de sa table). Lorsque le commutateur est saturé, il se met à répéter tous les paquets
sur chacun des ports, ce qui permet d’analyser le trafic de tout le monde.
L’utilitaire tcpkill met fin aux connexions TCP. Il peut servir à des attaques en déni de service.
Vous pouvez, par exemple, configurer cet outil de manière à ce qu’il ferme toutes les
connexions ouvertes par votre voisin. Tcpkill peut aussi être intégré à des outils comme des
IDS afin qu’ils tuent toutes les connexions ouvertes par des intrus. L’utilitaire tcpnice est
semblable à tcpkill ; cependant, au lieu de fermer les connexions TCP, il les ralentit. Vous
pouvez par exemple envoyer des faux messages ICMP Source Quenches (qui signalent un
débit trop élevé à l’émetteur) à partir des modems-câbles de vos voisins pour disposer d’un
pourcentage de bande passante plus élevé pour vos téléchargements.
Ettercap
Ettercap est un logiciel semblable à celui proposé par dsniff. Il propose plusieurs des fonctionnalités de ce dernier : les attaques de type MITM contre SSL et SSH ainsi que l’interception
des mots de passe. Ettercap offre même des fonctionnalités supplémentaires pour les attaques
de l’homme du milieu réalisées contre des connexions TCP standards. C’est ainsi qu’il permet
d’insérer des commandes dans le flux du trafic. Ettercap a été écrit par Alberto Ornaghi et
Marco Valleri. On peut se le procurer à l’adresse suivante : http://ettercap.sourceforge.net.
356
Stratégies anti-hackers
Esniff.c
Esniff.c est certainement un des premiers sniffers ayant vu le jour dans le milieu hacker. Écrit
par un pirate nommé rokstar, il ne fonctionnait initialement que sur SunOS, le système
d'exploitation (désormais obsolète) des machines Sun Microsystems. Esniff gère les protocoles telnet, FTP et rlogin. Il offre les fonctionnalités de base et ne prend pas en charge autant
de protocoles que des sniffers plus récents tels que dsniff et sniffit. Vous pouvez vous procurer
ce sniffer, initialement publié dans la revue Phrack, à l'adresse suivante : http://www.phrack.org/
show.php?p=45&a=5.
Sniffit
Sniffit n'est pas non plus de la première jeunesse. Il est compatible avec de nombreux
systèmes d'exploitation, dont Linux, Solaris, SunOS, Irix et FreeBSD. Bien qu'il n'ait pas été
mis à jour depuis un certain temps, il semble relativement stable (même si la dernière version
était qualifiée de bêta). Brecht Claerhout, l'auteur de sniffit, en propose deux versions sur son
site Web : la 0.3.5 (sortie en avril 1997) et la bêta, 0.3.7. (sortie en juillet 1998). La compilation et la mise en œuvre de la version bêta 0.3.7 ne nous a jamais posé aucun problème ; si
vous en rencontrez, vous pourrez toujours utiliser la version précédente. Le site Web de
Brecht Claerhout se trouve à l'adresse suivante : http://reptile.rug.ac.be/~coder/sniffit/sniffit.html.
Une des raisons pour lesquelles nous employons sniffit est qu'il est facile de le configurer pour
qu'il journalise certains trafics prédéterminés, comme FTP et telnet. Ce type de filtre n'est pas
rare : on le retrouve sur d'autres sniffers, tels que Sniffer Pro et Netmon, pour ne citer qu'eux.
Mais avez-vous déjà vu un de ces sniffers discrètement installés sur un système compromis ?
Sniffit a une taille réduite et est simple à configurer quand il s’agit d’intercepter (et de journaliser) le trafic de certains protocoles contenant des informations en clair, comme les noms
d'utilisateurs et les mots de passe. L'exemple suivant illustre ses capacités :
[Tue
[Tue
[Tue
[Tue
[Tue
[Tue
[Tue
[Tue
[Tue
[Tue
[Tue
[Tue
[Tue
[Tue
Mar
Mar
Mar
Mar
Mar
Mar
Mar
Mar
Mar
Mar
Mar
Mar
Mar
Mar
28
28
28
28
28
28
28
28
28
28
28
28
28
28
09:46:01
10:27:02
10:27:02
10:39:42
10:39:47
11:08:10
11:08:17
12:45:21
12:45:21
14:38:53
14:38:58
16:47:14
16:47:16
17:13:56
2000]
2000]
2000]
2000]
2000]
2000]
2000]
2000]
2000]
2000]
2000]
2000]
2000]
2000]
-
Sniffit session started.
10.40.1.6.1332-10.44.50.40.21: USER [hansen]
10.40.1.6.1332-10.44.50.40.21: PASS [worksux]
10.40.1.99.1651-10.216.82.5.23: login [trebor]
10.40.1.99.1651-10.216.82.5.23: password [goaway]
10.40.2.133.1123-10.60.56.5.23: login [jaaf]
10.40.2.133.1123-10.60.56.5.23: password [5g5g5g5]
10.8.16.2.2419-10.157.14.198.21: USER [afms]
10.8.16.2.2419-10.157.14.198.21: PASS [smfasmfa]
10.40.1.183.1132-10.22.16.51.23: login [hohman]
10.40.1.183.1132-10.22.16.51.23: password [98rabt]
10.40.2.133.1069-10.60.56.5.23: login [whitt]
10.40.2.133.1067-10.60.56.5.23: password [9gillion]
10.40.1.237.1177-10.60.56.5.23: login [douglas]
Écoutes sur un réseau informatique
[Tue
[Tue
[Tue
[Tue
[Tue
[Tue
[Tue
[Tue
Mar
Mar
Mar
Mar
Mar
Mar
Mar
Mar
28
28
28
28
28
28
28
28
17:13:59
17:49:43
17:49:46
17:53:08
17:53:11
19:32:30
19:32:30
20:04:03
2000]
2000]
2000]
2000]
2000]
2000]
2000]
2000]
-
357
10.40.1.237.1177-10.60.56.5.23: password [11satrn5]
10.40.1.216.1947-10.22.16.52.23: login [demrly]
10.40.1.216.1947-10.22.16.52.23: password [9sefi9]
10.40.1.216.1948-10.22.16.52.23: login [demrly]
10.40.1.216.1948-10.22.16.52.23: password [jesa78]
10.40.1.6.1039-10.178.110.226.21: USER [custr2]
10.40.1.6.1039-10.178.110.226.21: PASS [Alpo2p35]
Sniffit session ended.
Comme vous pouvez le constater, en dix heures, nous avons réussi à récupérer les noms
d'utilisateurs et les mots de passe correspondant à neuf utilisateurs de trois sites FTP et de cinq
emplacements telnet. L'utilisateur demrly semble avoir fourni un mot de passe incorrect
quand il a tenté de se connecter à l'adresse 10.22.16.52 pour la première fois, mais nous
conservons quand même ce mot de passe, car il peut être valide à un autre endroit.
Carnivore
Carnivore a été conçu par le FBI pour réaliser des écoutes sur Internet. Sa conception a tenu
compte des exigences particulières de la législation américaine. Il est ainsi possible que
certains juges n’autorisent que l’enregistrement des adresses des expéditeurs et des destinataires (les champs From et To) tandis que d’autres permettent l’interception de la totalité des
e-mails. Le programme de configuration de Carnivore présente un résumé de ses fonctionnalités (voir figure 10.7).
Les fonctionnalités de Carnivore sont les suivantes :
• Filter sets – Les paramètres sont sauvegardés dans des fichiers de configuration, ce qui
permet à l’utilisateur de modifier rapidement les critères de la surveillance en sélectionnant un autre jeu de filtres (filter set).
• Network adapters – Un système est susceptible de comporter plusieurs cartes réseaux,
mais une seule peut être sélectionnée pour l’écoute.
• Archive file size – Il est possible de définir une quantité limite de données interceptées ;
par défaut, le programme remplit la totalité de l’espace disque.
• Total memory usage – Il est possible que le trafic parvienne en rafales dont la vitesse
dépasse les capacités d’écriture sur le disque. Dans ce cas, la mémoire est utilisée pour
mettre en tampon les données entrantes.
• Fixed IP address – On peut filtrer tout le trafic d’une plage d’adresses IP expéditrice ou
de destination. Par exemple, la cible peut avoir une adresse IP fixe de 1.2.3.4 attribuée à
son modem - câble. Le FBI se procurera alors une autorisation judiciaire lui permettant
d’écouter la totalité du trafic de la cible.
358
Stratégies anti-hackers
Figure 10.7
Le programme de
configuration de
Carnivore.
• Protocols to capture – En général, une décision judiciaire ne permet la surveillance que
des trafics déterminés, par exemple SMTP sur TCP. En mode Pen, seuls les en-têtes sont
interceptées.
• Data text strings – Il s’agit d’une fonctionnalité d’Echelon qui recherche certains motsclés dans le trafic. Une décision judiciaire doit spécifier avec exactitude ce qui est à
surveiller : une adresse IP ou un compte e-mail. Des recherches de mot-clés de si grande
envergure sont illégales aux États-Unis. Le FBI a au départ refusé de reconnaître que
Carnivore était doté d’une telle fonctionnalité.
• Ports – Il est possible de spécifier une liste de ports TCP et UDP. Par exemple, si le FBI
dispose d’une décision judiciaire l’autorisant à intercepter des e-mails, il peut spécifier les
ports 25, 110 et 143.
• SMTP e-mail addresses – Un scénario type est celui dans lequel Carnivore est employé
pour surveiller le serveur de la messagerie d’un FAI et rejette tous les e-mails à l’exception de ceux des suspects. Une session e-mail est enregistrée dès lors qu’apparaît l’adresse
e-mail d’un suspect, puis tous les paquets composant l’e-mail sont ensuite interceptés.
• Dynamic IP addresses – Lorsque les utilisateurs se connectent à Internet par ligne
commutée, leurs ouvertures de session sont prises en charge par le protocole RADIUS qui
leur attribue une adresse IP. En principe, le FBI demande au FAI de reconfigurer leurs
serveurs RADIUS de manière à toujours attribuer la même adresse IP au suspect, puis il
surveille la totalité du trafic destiné à cette adresse ou en provenance de celle-ci. (Remar-
Écoutes sur un réseau informatique
359
quez que si vous vous connectez sur ligne commutée et que vous pensez que le FBI s’intéresse à vous, vérifiez que votre adresse IP change à chaque connexion.) Parfois cela n’est
pas possible. Dans ce cas, Carnivore peut être configuré de manière à surveiller le protocole RADIUS et à découvrir dynamiquement la nouvelle adresse IP attribuée au suspect.
La surveillance commence dès l’attribution de l’adresse IP et cesse lorsque celle-ci n’est
plus attribuée.
Le FBI a développé Carnivore en raison des insuffisances d’utilitaires tels que dsniff par
rapport aux exigences d’ordre juridique. Lorsqu’un e-mail est envoyé sur le réseau, celui-ci
est divisé en plusieurs paquets. Un utilitaire tel que mailsnarf (décrit plus haut) réassemble l’email pour lui restituer sa forme d’origine. Ce mécanisme n’est pas souhaitable, car la défense
du suspect aura tôt fait d’insister sur la fragilité des pièces à conviction ainsi rassemblées :
n’est-il pas possible qu’un paquet ait été inséré dans le trafic de manière à changer le texte du
message ? est-ce que le paquet inséré dans le message pourrait provenir de l’e-mail d’une
autre personne ? En interceptant les paquets à l’état brut plutôt qu’en les réassemblant, Carnivore préserve les numéros de séquence, les ports et les indications d’heure d’origine. Tout
paquet manquant ou supplémentaire apparaît aussitôt, ce qui permet au FBI de soutenir
l’authenticité de la pièce à conviction ainsi constituée.
Un autre problème auquel a été confronté le FBI tient à la minimisation des données écoutées.
Lorsque le FBI écoute une ligne téléphonique, il lui faut affecter un agent pour l’écouter. Si
une autre personne que le suspect se sert du téléphone (l’épouse ou les enfants, par exemple),
obligation lui est faite d’interrompre les enregistrements. De la même manière, Carnivore a
été conçu de façon à éviter l’interception de ce qui n’appartient pas au suspect. Un exemple
type est celui de l’utilisation de Carnivore pour surveiller les activités d’un utilisateur se
connectant à Internet par une ligne commutée. Carnivore contient un module surveillant le
trafic RADIUS, lequel est un protocole utilisé par de nombreux FAI pour authentifier les utilisateurs et leur attribuer une adresse IP dynamique. Ce module permet à Carnivore de ne
surveiller que l’utilisateur cible sans intercepter d’autres trafics.
INFO
Vous trouverez une FAQ consacrée à Carnivore à l’adresse suivante : www.robertgraham.com/pubs/carnivore-faq.html.
Autres ressources
Il existe plusieurs pages Web fournissant une liste plus exhaustive des programmes d’écoute
disponibles. En voici deux :
• une liste des programmes de surveillance réseau proposée par Underground Security
Systemes Research : www.ussrback.com/sniffers.htm ;
• une bonne présentation, très détaillée, des analyseurs de paquets écrite par Robert
Graham : www.robertgraham.com/pubs/sniffing-faq.html.
360
Stratégies anti-hackers
Techniques d’écoute avancées
Au fur et à mesure que la technologie progresse, les attaquants conçoivent de nouvelles
méthodes d’écoute du trafic réseau. Les sections qui suivent présentent quelques-unes des
méthodes employées par les attaquants pour tirer parti des avancées de la technologie.
Attaques de type MITM
Comme nous le verrons plus tard, la défense la plus efficace contre l’écoute est le recours à
des protocoles chiffrés, tels que SSL et SSH. Il n’en demeure pas moins que les logiciels
dsniff et Ettercap contiennent des techniques permettant de déjouer le chiffrement des
communications.
La principale technique est celle appelée attaque man-in-the-middle (homme du milieu). Un
bon exemple en est donné dans le film Bons baisers de Russie. Dans ce film, James Bond doit
rencontrer un autre agent dans une gare ferroviaire. L’agent ennemi du SPECTRE commence
par contacter l’agent en se faisant passer pour James Bond. Il obtient ainsi la phrase à
prononcer pour s’identifier. Ensuite, l’agent ennemi usurpe l’identité de l’agent que doit
rencontrer James Bond.
La même technique peut être mise en oeuvre pour les protocoles chiffrés. Un attaquant met en
place un serveur qui répond aux requêtes des clients. Le serveur peut par exemple prendre en
charge les requêtes destinées à http://www.amazon.com. Un utilisateur qui contacte cet ordinateur peut croire alors à tort qu’il a établi une session chiffrée avec le site Amazon. Au même
moment, l’attaquant établit une connexion avec le véritable site et se fait passer auprès de lui
pour l’utilisateur. Autrement dit, l’attaquant joue deux rôles à la fois, ce qui implique qu’il
déchiffre les données entrantes envoyées par l’utilisateur et qu’il chiffre à nouveau celles-ci
pour les transmettre au véritable site.
En théorie, les protocoles de chiffrement comportent des mécanismes de protection contre de
telles attaques. Un serveur prétendant être Amazon doit en fait prouver qu’il l’est véritablement. Dans la pratique, la plupart des utilisateurs ignorent cette nécessité. C’est pourquoi les
attaques de type MITM se sont avérées efficaces lorsqu’elles ont été employées dans ce
domaine.
Craquage des mots de passe
Des outils comme dsniff et Ettercap peuvent non seulement intercepter des mots de passe en
texte clair, mais aussi des mots de passe chiffrés. En théorie, l’interception de mots de passe
chiffrés est inutile. Cependant, de nombreuses personnes choisissent des mots de passe faibles
comme des mots du dictionnaire. Un attaquant n’a alors besoin que de quelques secondes
pour réaliser une attaque avec un dictionnaire de 100 000 mots, au cours de laquelle il comparera la forme chiffrée de chaque mot du dictionnaire à celle du mot de passe recherché. Dès
qu’une correspondance est trouvée, le mot de passe est découvert.
Écoutes sur un réseau informatique
361
Il existe des programmes de craquage de mots de passe employant cette méthode. C’est pourquoi, il suffit que dsniff et Ettercap génèrent les mots de passe à craquer dans un format que
ces outils peuvent lire.
Attaques des commutateurs
La mode des commutateurs a commencé voici quelques années. Nombre de possesseurs de
réseaux commutés étaient persuadés qu'aucun attaquant ne pouvait écouter leurs informations. Nous allons pourtant passer ci-après en revue les méthodes d’écoute mises au point pour
les réseaux commutés !
Usurpation ARP
Quand on projette de surveiller le trafic d'un réseau commuté, on s'attaque à un sérieux
problème : le commutateur limite le trafic qui transite au-delà votre segment de réseau. Les
commutateurs possèdent une liste interne des adresses MAC des hôtes affectés à chaque port.
Le trafic est envoyé à un port seulement si l'hôte destinataire est signalé comme étant présent
sur ce port. Dans de nombreux systèmes d'exploitation, il est cependant possible de modifier
le cache ARP (Address Resolution Protocol). Cette opération permet d’associer votre adresse
MAC à l'adresse IP de la passerelle par défaut. Grâce à cette manipulation, tout le trafic en
provenance de l'hôte cible vous est transmis. Assurez-vous toutefois d'avoir ajouté manuellement une entrée dans la table ARP pour la véritable passerelle par défaut (afin que le trafic soit
envoyé vers le véritable hôte de destination) et d'avoir activé l'IP forwarding.
Il a été démontré que de nombreux réseaux de modems câbles sont également vulnérables à
ce type d'attaque dans la mesure où ils sont avant tout des réseaux Ethernet avec des modems
câbles jouant le rôle de ponts. En résumé, il n'existe aucune solution contre cette attaque ; les
nouvelles générations de réseaux de modems câbles recourront à d'autres mécanismes pour
connecter les utilisateurs au réseau.
Le sniffer dsniff de Dug Song inclut un programme appelé arpspoof (autrefois arpredirect) qui
utilise cette technique.
arpspoof redirige les paquets d’un hôte cible (ou de tous les hôtes) situé sur le
LAN et destinés à un autre hôte du LAN en manipulant les réponses ARP. Il
s’agit là d’une technique de sniffing très efficace dans un environnement
commuté.
(FAQ de dsniff)
Saturation MAC
Pour bien jouer son rôle, un commutateur doit conserver une table des adresses MAC
(Ethernet) des hôtes qui apparaissent sur chaque port. Lorsqu'un grand nombre d’adresses
362
Stratégies anti-hackers
apparaît sur un seul port au point de remplir la table d'adresses, le commutateur n’enregistre
plus le port auquel l’adresse MAC de la victime est connectée. Il s’agit là de la même situation
que lorsqu’un nouvel ordinateur est relié pour la première fois à un commutateur et que celuici doit apprendre l’emplacement auquel se situe cette adresse. Jusqu’à ce qu’il apprenne le
port sur lequel est situé le nouvel ordinateur, le commutateur doit envoyer des copies des
trames destinées à la nouvelle adresse MAC sur tous ses ports ; cette technique est appelée
inondation ou flooding.
Le sniffer dsniff inclut un programme appelé macof, qui rend possible l’attaque par inondation d'un commutateur auquel il envoie un flot d'adresses MAC générées de manière aléatoire.
macof inonde le réseau local d’adresses MAC aléatoirement générées (conduisant certains commutateurs à se comporter comme de simples répéteurs, ce qui
facilite l’écoute). Le programme consiste en un simple portage vers le C du
programme macof d’origine écrit en Perl (avec le module Net::RawIP) par Ian
Vitek <[email protected]>.
(FAQ de dsniff)
Manipulation du routage
Si vous désirez vous assurer que tout le trafic d'un réseau va transiter par votre hôte, vous
pouvez modifier la table de routage de l'hôte que vous voulez surveiller. Cette manipulation
peut être, par exemple, réalisée par l’envoi d’un message de routage RIP (Routing Information
Protocol) erroné annonçant que votre ordinateur est la passerelle par défaut. Si vous réussissez, tout le trafic sera routé à travers votre hôte. Vérifiez que vous avez activé l'IP forwarding et que votre passerelle par défaut est bien la véritable passerelle du réseau. Tout le trafic
sortant de l'hôte transitera alors à la fois à travers votre hôte et par la véritable passerelle du
réseau. Vous ne recevrez probablement pas le trafic de retour, sauf si vous avez la possibilité
de modifier la table de routage de la passerelle par défaut de façon qu'elle reroute tout le trafic
de retour vers vous.
API réseau de certains systèmes d’exploitation
Les systèmes d'exploitation ne fournissent pas tous des interfaces de programmation, ou API,
avec leur couche de liaison réseau. Nous allons examiner plusieurs systèmes d’exploitation
afin de montrer leur interfaçage avec cette couche.
Linux
Linux propose une interface avec la couche de liaison réseau via son interface socket. Cette
interface est l'une des plus simples, tous systèmes d'exploitation confondus. Le programme cidessous illustre cette simplicité. Il ouvre l'interface spécifiée, initialise le mode promiscuité et
Écoutes sur un réseau informatique
commence à lire les paquets Ethernet provenant du réseau. Quand un paquet est lu, les
adresses MAC source et destinataire sont affichées en plus du type de paquet.
#include
#include
#include
#include
#include
#include
#include
#include
#include
<stdio.h>
<stdlib.h>
<sys/types.h>
<sys/socket.h>
<netinet/in.h>
<linux/if_arp.h>
<linux/if_ether.h>
<linux/sockios.h>
<net/ethernet.h>
int open_interface(char *name)
{
struct sockaddr addr;
struct ifreq ifr;
int sockfd;
/* ouvre une socket et la lie à l'interface spécifiée */
sockfd = socket(AF_INET, SOCK_PACKET, htons(ETH_P_ALL));
if (sockfd < 0)
return -1;
memset(&addr, 0, sizeof(addr));
addr.sa_family = AF_INET;
strncpy(addr.sa_data, name, sizeof(addr.sa_data));
if (bind(sockfd, &addr, sizeof(addr)) != 0) {
close(sockfd);
return -1;
}
/* on s'assure que l'interface est Ethernet. Sinon, on quitte */
memset(&ifr, 0, sizeof(ifr));
strncpy(ifr.ifr_name, name, sizeof(ifr.ifr_name));
if (ioctl(sockfd, SIOCGIFHWADDR, &ifr) < 0) {
close(sockfd);
return -1;
}
363
364
Stratégies anti-hackers
if (ifr.ifr_hwaddr.sa_family != ARPHRD_ETHER) {
close(sockfd);
return -1;
}
/* on initialise le mode promiscuté à présent */
memset(&ifr, 0, sizeof(ifr));
strncpy(ifr.ifr_name, name, sizeof(ifr.ifr_name));
if (ioctl(sockfd, SIOCGIFFLAGS, &ifr) < 0) {
close(sockfd);
return -1;
}
ifr.ifr_flags |= IFF_PROMISC;
if (ioctl(sockfd, SIOCSIFFLAGS, &ifr) < 0) {
close(sockfd);
return -1;
}
return sockfd;
}
/* on lit les paquets Ethernet et on affiche les adresses source et destination */
int read_loop(sockfd)
{
struct sockaddr_in from;
char buf[1792], *ptr;
int size, fromlen, c;
struct ether_header *hdr;
while (1) {
/* lit le prochain paquet disponible */
size = recvfrom(sockfd, buf, sizeof(buf), 0, &from, &fromlen);
if (size < 0)
return -1;
if (size < sizeof(struct ether_header))
continue;
Écoutes sur un réseau informatique
365
hdr = (struct ether_header *)buf;
/* affiche l'en-tête Ethernet */
for (c = 0; c < ETH_ALEN; c++)
printf("%s%02x",c == 0 ? "" : ":",hdr->ether_shost[c]);
printf(" > ");
for (c = 0; c < ETH_ALEN; c++)
printf("%s%02x",c == 0 ? "" : ":",hdr->ether_dhost[c]);
printf(" type: %i\n", hdr->ether_type);
}
}
int main(int argc, char **argv)
{
int sockfd;
char *name = argv[1];
if (!argv[1]) {
fprintf(stderr, "Please specify an interface name\n");
return -1;
}
if ((sockfd = open_interface(name)) < 0) {
fprintf(stderr, "Unable to open interface\n");
return -1;
}
if (read_loop(sockfd) < 0) {
fprintf(stderr, "Error reading packet\n");
return -1;
}
return 0;
}
BSD
Les systèmes d'exploitation BSD, comme OpenBSD, FreeBSD, NetBSD et BSDI, fournissent
tous une interface avec la couche de liaison via un pilote du noyau appelé BPF (Berkeley
366
Stratégies anti-hackers
Packet Filter). Le BPF possède quelques fonctionnalités remarquables qui le rendent extrêmement performant dans le traitement et le filtrage des paquets.
Le pilote BPF dispose d’un mécanisme de filtrage intégré au noyau. Celui-ci est composé
d'une machine virtuelle qui permet, au moyen d'opérations très simples sur les octets,
d'examiner chaque paquet via un petit programme chargé dans le noyau par l'utilisateur.
Lorsqu'un paquet arrive, le petit programme traite ce paquet et détermine s'il doit être transmis
à l'application utilisateur. Les expressions sont compilées en un bytecode simple dans le mode
utilisateur, puis chargées dans le pilote via un appel à ioctl.
libpcap
Libpcap n'est pas vraiment une interface du système d'exploitation, mais plutôt une bibliothèque portable multi-plate-forme qui simplifie grandement l'accès à la couche de liaison
réseau sur beaucoup de systèmes d'exploitation. Libpcap est une bibliothèque développée à
l'origine par LBL (Lawrence Berkeley National Laboratories). Son but est d'abstraire l'interface de la couche de liaison sur différents systèmes d'exploitation et de créer une API standardisée simple. Cela permet la création d’un code portable utilisant une interface de programmation unique. Le résultat est que l’écriture de sniffers est grandement simplifiée, puisqu'il
n’est plus nécessaire de consacrer des efforts à l’implémentation du programme sur plusieurs
systèmes d’exploitation.
La version de LBL a été nettement améliorée depuis sa dernière publication officielle. Elle
dispose d'une licence open source (la licence BSD) et peut donc être aussi employée dans des
produits du commerce, modifiée sans restriction ou redistribuée.
La version originale de la bibliothèque LBL peut être téléchargée à l'adresse suivante ftp://
ftp.ee.lbl.gov/libpcap.tar.Z. Les gens de tcpdump.org, qui ont participé au développement de
TCPDump, ont également adopté libpcap. Les dernières versions de libpcap peuvent être téléchargées à l'adresse suivante : www.tcpdump.org.
Si nous comparons un sniffer écrit pour le système d'exploitation Linux, pour lequel nous
avons utilisé l'interface système native, à un sniffer écrit sous Linux à l'aide de libpcap, nous
constatons que le second est beaucoup plus simple, comme l'illustre le programme cidessous :
#include
#include
#include
#include
#include
<stdio.h>
<stdlib.h>
<sys/types.h>
<net/ethernet.h>
<pcap/pcap.h>
pcap_t *open_interface(char *name)
{
Écoutes sur un réseau informatique
pcap_t *pd;
char ebuf[PCAP_ERRBUF_SIZE];
/* on utilise un appel pcap pour ouvrir l'interface en mode promiscuité */
pd = pcap_open_live(name, 1600, 1, 100, ebuf);
if (!pd)
return NULL;
return pd;
}
int read_loop(pcap_t *pd)
{
const unsigned char *ptr;
int size, c;
struct pcap_pkthdr h;
struct ether_header *hdr;
while (1) {
/* lit le paquet suivant disponible en utilisant libpcap */
ptr = pcap_next(pd, &h);
if (h.caplen < sizeof(struct ether_header))
continue;
hdr = (struct ether_header *)ptr;
/* affiche l'en-tête Ethernet */
for (c = 0; c < ETH_ALEN; c++)
printf("%s%02x",c == 0 ? "" : ":",hdr->ether_shost[c]);
printf(" > ");
for (c = 0; c < ETH_ALEN; c++)
printf("%s%02x",c == 0 ? "" : ":",hdr->ether_dhost[c]);
printf(" type: %i\n", hdr->ether_type);
}
}
int main(int argc, char **argv)
367
368
Stratégies anti-hackers
{
pcap_t *pd;
char *name = argv[1];
if (!argv[1]) {
fprintf(stderr, "Please specify an interface name\n");
return -1;
}
pd = open_interface(name);
if (!pd) {
fprintf(stderr, "Unable to open interface\n");
return -1;
}
if (read_loop(pd) < 0) {
fprintf(stderr, "Error reading packet\n");
return -1;
}
return 0;
}
Windows
Les systèmes d'exploitation Windows ne fournissent aucune fonctionnalité permettant
d'accéder au réseau au niveau de la couche de liaison de données. Il faut se procurer et installer
un pilote de paquets externe. Jusqu'à récemment, on ne trouvait pas un pilote de ce type qui ne
soit accompagné d’une licence. Un pilote compatible BPF a été écrit récemment ; il prend
même en charge le mécanisme de filtrage BPF intégré au noyau. Un portage de la bibliothèque
libpcap est également disponible ; combinée au pilote, elle procure une interface aussi simple
d’emploi que celle d'Unix.
Le pilote, le portage de libpcap et des versions Windows de TCPDump sont disponibles à
l'adresse suivante : http://netgroup-serv.polito.it/windump.
Mesures de protection
Si vous considérez que rien ne pourra empêcher l’écoute de votre réseau, sachez qu'il existe
des moyens de protection. Nous allons les étudier dans cette section.
Écoutes sur un réseau informatique
369
Chiffrement des communications
Heureusement pour la sécurité des réseaux, le chiffrement (dès lors qu’il est convenablement
déployé) est la solution miracle qui annihile totalement l'efficacité des sniffers ! Le chiffrement des données réduit en effet à néant, en supposant que l'algorithme de chiffrement soit
valable, toute tentative de surveillance passive de votre réseau.
De nombreux protocoles de réseau ont à présent des équivalents fondés sur un chiffre robuste
comme IPSec. Malheureusement, IPSec est rarement utilisé sur Internet en dehors des entreprises individuelles.
SSH (Secure Shell)
Secure Shell est un substitut sécurisé par chiffrement des commandes standard telnet, rlogin,
rsh et rcp. Il se compose d’un client et d’un serveur qui chiffrent les sessions au moyen d'un
système cryptologique à clés publiques. Secure Shell offre aussi la possibilité de réaliser la
transmission des communications des ports arbitraires sur une connexion chiffrée, ce qui est
très pratique pour la transmission du trafic de X11 Window et des autres connexions.
SSH est plébiscité en tant que mécanisme d'accès interactif et sécurisé à un système distant. Il
a été à l’origine conçu et développé par un Finlandais, Tatu Ylonen. Ce produit est aujourd'hui
commercialisé et, même si la version d'origine est toujours disponible gratuitement, sa licence
est devenue plus restrictive. Des spécifications publiques ont vu le jour ; elles ont eu pour effet
de favoriser le développement de nombreux logiciels client et serveur compatibles avec SSH
qui, eux, ne sont pas soumis à ces restrictions relatives à l'usage commercial.
La version initiale de SSH, écrite par Tatu Ylonen, est disponible à l'adresse suivante : ftp://
ftp.cs.hut.fi/pub/ssh/. La version payante de SSH est en vente sur le site de SSH Communications Security, à l'adresse suivante : www.ssh.com. SSH Communications Security délivre
gratuitement son produit aux universités.
Une version totalement gratuite compatible SSH, OpenSSH, développée dans le cadre du
projet de système d'exploitation OpenBSD (voir la figure 10.8), peut être téléchargée à
l'adresse suivante : www.openssh.com.
Saluons ici le travail remarquable que l'équipe chargée d'OpenBSD et d'OpenSSH accomplit
quasiment gratuitement. La figure 10.8 existe aussi sous la forme… d'un T-shirt, dont la vente
permet de couvrir les frais du projet. Nous vous conseillons d'acheter leurs T-shirts, leurs
posters et leurs CD-Rom à l'adresse suivante : www.openbsd.org/orders.html.
SSL (Secure Sockets Layer)
SSL fournit des services d’authentification et de chiffrement. Par rapport au risque d’écoute
sur le réseau, SSL est vulnérable à une attaque de type MITM (comme il a été montré dans la
section consacrée à dsniff). Un attaquant peut installer un proxy transparent entre vous et le
serveur Web. Ce proxy peut être configuré de manière à déchiffrer la connexion SSL, à l’inter-
370
Stratégies anti-hackers
Figure 10.8
Le projet OpenSSH.
cepter et à la rechiffrer. Lorsque cela se produit, l’utilisateur voit s’afficher une boîte de
dialogue semblable à celle de la figure 10.9. Le problème est que la plupart des utilisateurs
ignorent ces avertissements et continuent leurs opérations.
Figure 10.9
Alerte de non
conformité du certificat
SSL.
PGP et S/MIME
PGP et S/MIME sont des standards pour le chiffrement des e-mails. S’ils sont correctement
utilisés, ils empêcheront des sniffers tels que dsniff et Carnivore d’interpréter les e-mails interceptés.
Écoutes sur un réseau informatique
371
Aux États-Unis, le FBI a mis au point un cheval de Troie appelé Magic Lantern conçu pour
enregistrer les frappes clavier dans l’espoir de capturer la phrase secrète de l’utilisateur cible.
En effet, dès lors que le FBI connaît cette phrase, il est en mesure de déchiffrer les messages
électroniques. Au Royaume-Uni, les utilisateurs sont juridiquement obligés de livrer leurs
clés de chiffrement aux forces de l’ordre lorsque celles-ci les leur demandent.
Commutation
Les commutateurs réseau compliquent pour les attaquants la surveillance de votre réseau,
mais dans une proportion moindre. Les commutateurs sont parfois recommandés pour
résoudre les problèmes d’écoute ; leur premier objectif est toutefois d'améliorer les performances du réseau, pas la sécurité. Comme nous l'avons indiqué dans la section « Techniques
d’écoute avancées », tout attaquant nanti des outils appropriés peut continuer à surveiller un
hôte commuté s'il est sur le même commutateur ou segment que ce système.
Techniques de détection
Quelle stratégie devez-vous adopter si, pour une raison ou pour une autre, vous ne pouvez pas
chiffrer les données qui circulent sur votre réseau ? Vous devez, dans ces conditions, détecter
toute carte réseau susceptible de servir à un sniffer.
Détection locale
De nombreux systèmes d'exploitation fournissent un mécanisme permettant de déterminer si
une carte réseau opère en mode promiscuité. Il s'agit habituellement d'un indicateur d'état
associé à chaque carte réseau et géré par le noyau. Dans les systèmes Unix, on peut l'utiliser à
l'aide de la commande ifconfig.
Les lignes suivantes montrent, sous Linux, une carte réseau qui n'est pas en mode
promiscuité :
eth0
Link encap:Ethernet HWaddr 00:60:08:C5:93:6B
inet addr:10.0.0.21 Bcast:10.0.0.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:1492448 errors:2779 dropped:0 overruns:2779 frame:2779
TX packets:1282868 errors:0 dropped:0 overruns:0 carrier:0
collisions:10575 txqueuelen:100
Interrupt:10 Base address:0x300
Notez que les attributs de cette carte ne mentionnent aucune information relative au mode
promiscuité. Lorsque la carte est en mode promiscuité, comme dans l'exemple suivant, le mot
clé PROMISC apparaît dans la section des attributs :
372
Stratégies anti-hackers
eth0
Link encap:Ethernet HWaddr 00:60:08:C5:93:6B
inet addr:10.0.0.21 Bcast:10.0.0.255 Mask:255.255.255.0
UP BROADCAST RUNNING PROMISC MULTICAST MTU:1500 Metric:1
RX packets:1492330 errors:2779 dropped:0 overruns:2779 frame:2779
TX packets:1282769 errors:0 dropped:0 overruns:0 carrier:0
collisions:10575 txqueuelen:100
Interrupt:10 Base address:0x300
Il est important de noter que si un attaquant a compromis la sécurité de l'hôte sur lequel vous
exécutez cette commande, il peut facilement modifier cette sortie. La boîte à outils de l'attaquant peut renfermer un clone de la commande ifconfig qui ne signale pas les cartes réseau
en mode promiscuité.
Détection réseau
Il existe plusieurs techniques, plus ou moins fiables, destinées à déterminer si un hôte surveille
le trafic du réseau, mais il n'existe aucune méthode fiable de détection des sniffers dans un
réseau.
Résolutions DNS
La plupart des programmes de surveillance de réseaux émettent des requêtes de résolution
DNS inverse lorsqu’ils génèrent une sortie affichant les hôtes émetteurs et destinataires d’une
connexion réseau. L’envoi de ces requêtes génère du trafic supplémentaire et il s’agit pour
l’essentiel de recherches d’adresses réseau. Il est donc possible de surveiller les hôtes du
réseau qui se livrent à de très nombreuses recherches d'adresses. Sachez toutefois qu'il s'agit
parfois de coïncidences et que ces recherches ne sont pas forcément révélatrices de l’activité
d'un sniffer.
Il existe une méthode plus simple, qui fonctionne à tous les coups. Elle consiste à générer une
fausse connexion réseau à partir d'une adresse qui n'a rien à voir avec le réseau local. Il suffit
ensuite de surveiller le réseau et d'observer les requêtes DNS qui tentent de résoudre la fausse
adresse ; cela permet de détecter l'hôte qui fait de l’écoute.
Latence
Un autre procédé peut être utilisé pour découvrir l'hôte qui surveille le réseau : détecter les
variations de latence des réponses de cet hôte (c'est-à-dire faire des commandes ping). Cette
technique est sujette à caution (la latence d'un hôte peut être affectée par une opération
normale), mais peut tout de même aider à définir si un hôte surveille le réseau. Il faut d'abord
sonder l'hôte, puis mesurer les temps de réponse. Un trafic réseau très important est ensuite
généré pour appâter l'hôte qui scrute le réseau à des fins de recherche d'informations d'authentification. Enfin, la latence de cet hôte est de nouveau mesurée afin de déterminer si elle a
changé de manière significative.
Écoutes sur un réseau informatique
373
Les bogues des pilotes
Il arrive parfois qu'un bogue d'un pilote du système d'exploitation donne des indications pour
déterminer si un hôte opère en mode promiscuité. Core-SDI, une société argentine spécialisée
dans la sécurité, a découvert un jour un bogue dans un pilote Ethernet de Linux. Ils se sont
rendus compte que quand un hôte opérait en mode promiscuité, le système d'exploitation
n'arrivait pas à vérifier les adresses Ethernet afin de s'assurer que le paquet était ciblé sur l'une
de ses interfaces. Cette validation était effectuée au niveau IP, et le paquet était accepté s'il
était destiné à l'une des interfaces de l'hôte. Les paquets qui ne correspondaient pas à l'adresse
Ethernet de l'hôte auraient normalement dû être rejetés au niveau matériel ; cependant, en
mode promiscuité, cela ne se produisait pas. On peut déterminer si un hôte est en mode
promiscuité en lui envoyant un paquet ping ICMP avec l'adresse IP de l'hôte valide, mais une
adresse Ethernet invalide. Si l'hôte répond à cette requête ping, c'est qu'il s'exécute en mode
promiscuité.
AntiSniff
AntiSniff est un outil écrit par un groupe de hackers grey-hat de Boston connu sous le nom de
L0pht. Ils ont combiné plusieurs des techniques ici abordées pour produire un outil qui détermine efficacement si un hôte opère en mode promiscuité. Une version d'essai de cet outil
limitée à 15 jours (pour les systèmes Windows) peut être téléchargée à l'adresse suivante :
www.l0pht.com/antisniff/download.html.
Une version Unix réservée aux usages non commerciaux est disponible gratuitement.
Reportez-vous à la licence d'utilisation pour connaître les restrictions de cette version.
N’oubliez pas qu’AntiSniff découvre certains sniffers et non pas tous. Il existe en effet des
sniffers complètement furtifs, tandis que d’autres ont été corrigés de manière à déjouer AntiSniff.
Moniteur réseau
Le Moniteur réseau disponible sous Windows NT est capable de surveiller les utilisations de
Netmon sur votre réseau. Il conserve aussi la liste des postes sur lesquels Netmon est installé.
Il ne détecte que les copies du Moniteur réseau, ce qui signifie que si un attaquant utilise un
autre sniffer, vous devez alors le détecter en utilisant une des méthodes décrites précédemment. La plupart des systèmes de détection détectent aussi ces instances de NetMon.
En résumé...
L’écoute est une technique de surveillance d’un réseau par interception des paquets transmis
sur celui-ci. On peut y faire appel pour obtenir des informations d’authentification (les mots
de passe), voler des e-mails, surveiller les navigations Web et, plus généralement, récupérer
toutes les informations liées aux activités d’un hôte cible sur le réseau. Parmi les protocoles
374
Stratégies anti-hackers
les plus intéressants pour l’interception des mots de passe figurent telnet, POP3, IMAP, HTTP
et NetBIOS.
Il existe un grand nombre de logiciels d’écoute. Les plus connus sont Ethereal, Sniffer Pro,
NetMon, AiroPeek, TCPDump, dsniff et Ettercap. Certains sont des produits du commerce,
tandis que d’autres sont proposés gratuitement. Pour l’interception des mots de passe, dsniff
est le plus intéressant de ces utilitaires ; il est par ailleurs gratuit. Signalons qu’il comporte des
modules pour la surveillance des e-mails et du trafic Web. Carnivore est un sniffer spécialisé
utilisé par des forces de police américaines et qui compte un plus grand nombre d’options de
filtrage que la plupart de ses concurrents (il n’est cependant pas disponible pour le public).
Il y a quelques années, la plupart des réseaux locaux étaient de type Ethernet : le trafic de
chaque hôte était envoyé à tous les nœuds attachés à un même segment. Progressivement, les
commutateurs ont été introduits ; ces dispositifs permettent d’améliorer les performances du
réseau et de contrecarrer dans une certaine mesure l’écoute, puisqu’ils sont conçus pour ne pas
envoyer de trafic aux nœuds qui ne sont pas supposés en recevoir. Des manipulations permettent à des attaquants de déjouer cette limitation : l’inondation MAC, l’usurpation ARP ou la
manipulation du routage. Ces techniques visent à diriger le trafic réseau vers un sniffer installé
sur un hôte du réseau commuté. Pour parvenir à cette fin, l’inondation MAC et la manipulation du routage agissent sur le dispositif de commutation lui-même, tandis que l’usurpation
ARP modifie la table ARP de la machine dont le trafic est à surveiller. Certains des sniffers
mentionnés plus haut sont fournis avec des outils permettant de réaliser ces manipulations.
À l’exception des anciennes versions de Windows, chaque système d’exploitation comporte
une API qui lui est propre et qui permet d’accéder aux opérations de sa couche liaison de
données. Pour les versions de Windows qui n’offrent pas cette fonctionnalité, il est possible
d’installer des modules logiciels gratuits. L’écriture d’un programme d’interception du trafic
réseau ne requiert le plus souvent que quelques lignes de code, mais il convient de disposer
des privilèges appropriés pour l’exécuter. C’est en revanche une tâche beaucoup plus difficile
que de décoder le trafic intercepté par un programme de ce genre.
De manière générale, le chiffrement des communications constitue la meilleure défense
contre la menace d’écoute. Si elle est correctement mise en oeuvre, cette mesure de protection
empêche toute interception et décodage du trafic chiffré. Il n’en demeure pas moins que de
nombreux schémas de chiffrement implique que l’utilisateur fasse attention aux messages
d’erreur susceptibles d’apparaître et agisse en conséquence. Le chiffrement des communications peut en effet être déjoué par une attaque de type MITM, mais ce genre d’attaque génère
une erreur qui est trop souvent ignorée. Le logiciel dsniff comprend des outils permettant de
réaliser des attaques MITM .
Il existe différentes techniques pour détecter l’activité de sniffers dès lors que ceux-ci s’exécutent sur un système d’exploitation dont le mode opératoire normal n’implique pas l’activation
du mode promiscuité de son interface réseau. Parmi eux figurent la surveillance des requêtes
DNS générés par une fausse adresse IP, l’attente de réponses à un paquet dont l’adresse MAC
Écoutes sur un réseau informatique
375
est erronée, etc. Ces moyens ne seront jamais fiables à 100 % dans la mesure où il est possible
de construire un sniffer complètement passif.
Repères
Qu’est-ce que l’écoute ?
• Le sniffing est une sorte de mise sur écoute du réseau permettant d’exercer une
surveillance passive sur les trafics transmis.
• Dans un cadre opératoire classique, un sniffer est attaché à un hôte d’un segment réseau.
• Dans un cadre opératoire moderne, un sniffer est installé sur la machine cible ou comme
passerelle afin d’intercepter le trafic.
Quels types de trafic capturer ?
• La cible la plus courante des sniffers sont les informations d’authentification transmises
sur le réseau en texte clair, tels que les noms d’utilisateur et les mots de passe envoyés
avec les protocoles telnet, FT ou HTTP.
• La seconde cible habituelle sont les messages électroniques, les entrées HTTP ou les
sessions telnet.
Logiciels d’écoute
• Il existe de nombreux sniffers commerciaux ou gratuits destinés à être utilisés comme
outils de diagnostic du réseau. Citons Ethereal, Sniffer Pro de Network Associates,
NetMon, AiroPeek de WildPackets et TcpDump. Ces produits ne comportent pas de fonctionnalités de « piratage » permettant, par exemple, l’interception des mots de passe.
• Dsniff, Ettercap, Esniff et Sniffit sont en revanche des outils qui peuvent être utilisés pour
des activités de piratage. Plutôt que d’intercepter la totalité du trafic, ces outils s’intéressent avant tout aux mots de passe et aux données en texte clair.
Techniques d’écoute avancées
• Il est plus difficile de nos jours d’espionner le trafic d’un réseau qu’auparavant, principalement à cause des commutateurs. Les anciens réseaux répétaient les données sur tous les
segments, ce qui permettait à quiconque de recevoir la totalité du trafic. Les commutateurs empêchent cette diffusion du trafic à tous les hôtes.
376
Stratégies anti-hackers
• Il est possible d’attaquer les commutateurs de plusieurs manières. On peut les inonder
d’adresses MAC pour les forcer à entrer dans certains modes dégradés, envoyer des
paquets aux adresses ARP usurpées ou manipuler le routage des paquets. Ces techniques
visent à diriger le trafic vers un hôte contrôlé par le pirate et sur lequel s’exécute un
sniffer.
• Plusieurs logiciels d’écoute proposent des outils permettant à un pirate de s’interposer
dans des communications, de façon à perpétrer une attaque de type MITM. Une attaque
classique consiste à se faire passer pour un serveur HTTPS, de manière à ce que la victime
chiffre ses données avec la clé de l’attaquant en pensant qu’il s’agit de la clé du serveur de
confiance. Cette attaque permet à un pirate de voir les données avant de les rechiffrer avec
la clé du véritable serveur.
API réseau des systèmes d’exploitation
• L’écoute n’est pas le mode opératoire normal d’un système d’exploitation. Il faut recourir
à des API particulières pour activer ce mode.
• L’API libcap est l’API la plus largement prise en charge sur les plates-formes Unix,
Windows et Macintosh. Mais il existe aussi des API plus spécialisées propres à chaque
plate-forme.
Mesures de protection
• La principale défense contre l’écoute est le chiffrement. La plupart des protocoles prennent en charge le chiffrement des informations d’authentification (le nom d’utilisateur et
le mot de passe) et des données. SSL et SSH sont les deux standards de chiffrement les
plus employés.
• Le chiffrement ne fonctionne pas s’il n’est pas correctement utilisé. Les utilisateurs
doivent choisir des mots de passe robustes et se montrer vigilants à l’égard des attaques de
type MITM.
• Le remplacement des hubs à média partagé par des commutateurs rend plus difficile
l’écoute, mais celle-ci n’en est pas pour autant impossible.
Techniques de détection des écoutes
• La mesure de protection la plus importante à prendre consiste à surveiller les hôtes afin de
voir si leurs interfaces n’ont pas été placées en mode promiscuité. Cela indique non seulement l’exécution d’un sniffer, mais aussi la compromission de l’hôte par un hacker.
• La détection à distance des sniffers n’est pas fiable. Cette technique fait appel à des tests
évaluant le comportement des hôtes. Il s’agit notamment de voir si le système est ralenti
Écoutes sur un réseau informatique
377
du fait de l’activité d’un sniffer ou de détecter les sniffers résolvant des adresses IP en des
noms. En effet, seuls des sniffers se comportent de cette manière.
FAQ
Q. La surveillance des réseaux est-elle légale ?
R. L'utilisation des sniffers à des fins de diagnostic et d’administration est légale ; la surveillance des activités des employés par l'encadrement d'une entreprise est en revanche
un sujet qui fait l'objet d'un vaste débat. Certains outils du marché ont clairement cette
vocation. Dans certains pays (particulièrement aux États-Unis et au Royaume-Uni), les
employeurs ont le droit de surveiller tous les trafics circulant sur leur réseau, y compris
ceux générés par les activités des employés.
Q. Comment puis-je détecter qu'un sniffer est en train de surveiller mon réseau ?
R. Il n'existe aucune méthode totalement fiable, mais des utilitaires peuvent vous assister
dans cette tâche (AntiSniff, par exemple).
Q. Comment puis-je me protéger contre un sniffer?
R. Le chiffrement, encore le chiffrement et toujours le chiffrement : c'est la seule
solution ! Les nouvelles versions de nombreux protocoles réseau gèrent également
l'authentification sécurisée.
Q. Comment se fait-il que mon utilitaire ne fonctionne pas sous Windows ?
R. La plupart des outils de sniffing décrits dans ce chapitre ont été écrits pour des platesformes telles que Linux. Ils peuvent s’exécuter sous Windows, mais il vous faut installer des fonctionnalités dotées d’une ergonomie Unix. Pour cela, vous pouvez faire
appel à la boîte à outils WinDump décrite plus haut. Vous aurez aussi peut-être besoin
d’installer d’autres utilitaires comme l’environnement gnu.
Q. Puis-je utiliser ces outils dans des environnements de réseau sans fil ?
R. Oui, mais cela demande un énorme travail préalable. Le sniffing n’est pas pris en
charge par les progiciels standards acquis auprès de votre éditeur. Vous devrez rechercher sur Internet les correctifs logiciels adaptés à votre pilote. Vous aurez aussi peutêtre besoin de télécharger des utilitaires tels que AirSnort, conçus pour déjouer la faiblesse du chiffre dans les réseaux sans fil actuels. Heureusement, rares sont ceux qui
ont recours au chiffre ; en conséquence, cette dernière opération n’est pas toujours
indispensable.