Attaques/Reseau/Sniffing
Sniffing
Définition
Les sniffers réseau sont très souvent utilisés par les administrateurs réseau pour capturer le trafic à des fins d'archives (pour une analyse future) ou d'analyse de problèmes réseau (problèmes de congestion, perte de paquets par exemple). Mais ces outils sont également utilisés par des pirates à des fins bien moins éthiques, comme le vol de mot de passe par exemple. En effet, les sniffers réseau révèlent des identifiants et mots de passe lorsque le traffic n'est pas crypté (par exemple HTTP, FTP, TELNET, etc.)
Switch, hub et mode de promiscuité
Switch vs hub
Un hub est un concentrateur. Il divise la bande passante entre les appareils qui y sont connectés et envoie le trafic sur tous ses ports, ce qui facilite grandement le sniffing. C'est pourquoi il est également qualifié de répéteur multiports. Par ailleurs, il ne travaille que sur la couche 1 (physique) du modèle OSI. La connexion de machines à un hub s'effectue généralement en étoile, d'où son nom hub qui signifie moyeu de roue en anglais.
Un switch est un commutateur (traduction du mot switch en anglais). Contrairement au hub, il redirige la bande passante vers le port physique sur lequel seul l'hôte destinataire est connecté (à l'exception bien évidemment des messages broadcast, envoyés à tous les hôtes). Par ailleurs, il travaille sur les deux premières couches (physique, liaison) du modèle OSI.
Le switch, contrairement au hub, maintient une table appelée "Content Adressable Memory" (CAM). Cette table est alimentée au fur et à mesure que des paquets transitent par le switch. Ce dernier associe chaque nouvelle adresse MAC à un de ses ports physiques. Ainsi, il est capable de ne diriger les paquets qu'aux seuls hôtes destinataires.
Mode de promiscuité
Par défaut, l'interface réseau est sélective. Elle n'envoie aux couches supérieures que le trafic qui lui est destiné. A des fins de sniffing, il est cependant possible de modifier ce comportement par défaut, en activant le mode de promiscuité (promiscuous mode). Ceci permet d'envoyer aux couches supérieures tout le trafic, y compris celui qui n'est pas destiné à l'interface. Il est nécessaire de disposer de privilèges administrateurs pour passer une interface en mode de promiscuité.
$ ifconfig eth1 promisc SIOCSIFFLAGS: Permission non accordée
Sous Linux, la commande suivante permet de passer l'interface eth1 en mode de promiscuité :
# ifconfig eth1 promisc #ifconfig eth1 eth1 Link encap:Ethernet HWaddr 00:26:82:**:**:** inet adr:192.168.***.*** Bcast:192.168.***.255 Masque:255.255.255.0 adr inet6: fe80::226:82ff:fe39:5118/64 Scope:Lien UP BROADCAST RUNNING PROMISC MULTICAST MTU:1500 Metric:1 RX packets:10253 errors:0 dropped:0 overruns:0 frame:1379 TX packets:9273 errors:4 dropped:0 overruns:0 carrier:0 collisions:0 lg file transmission:1000 RX bytes:6524691 (6.2 MiB) TX bytes:2056103 (1.9 MiB) Interruption:18
Cette commande permet de rétablir le comportement par défaut (supression du mode de promiscuité) :
# ifconfig eth1 -promisc #ifconfig eth1 eth1 Link encap:Ethernet HWaddr 00:26:82:**:**:** inet adr:192.168.***.*** Bcast:192.168.***.255 Masque:255.255.255.0 adr inet6: fe80::226:82ff:fe39:5118/64 Scope:Lien UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:10253 errors:0 dropped:0 overruns:0 frame:1379 TX packets:9273 errors:4 dropped:0 overruns:0 carrier:0 collisions:0 lg file transmission:1000 RX bytes:6524691 (6.2 MiB) TX bytes:2056103 (1.9 MiB) Interruption:18
Dans le cas d'un switch, il n'est (en théorie seulement) pas possible d'intercepter le trafic n'étant pas destiné à l'interface, puisque ce filtrage est réalisé en amont, par le switch. Il existe cependant des attaques sur les switches, permettant de rendre le mode de promiscuité opérant.
Détection du mode de promiscuité
Il est possible de détecter le mode de promiscuité :
- Sur la machine :
- La commande ifconfig contient la chaîne PROMISC lorsque l'interface est en mode de promiscuité
- Pour les machines Windows, l'utilitaire PromiscDetect permet de réaliser la même opération
- En mode distant :
Outils
- Ethereal, Wireshark, Tshark : WireShark est le successeur de Etheral. Son interface graphique est claire et permet d'observer les trames réseau. Il possède de nombreuses fonctionnalités d'analyse (Analyse graphique des flux) et de regroupement des paquets (Follow TCP stream). TShark correspond à la version en ligne de commandes.
- Tcpdump : Tcpdump est certainement le sniffer en lignes de commandes le plus répandu. Ses nombreux paramètres en font un sniffer très complet.
- Windump : Windump est le portage de tcpdump pour les systèmes d'exploitation Windows.
- Snort : Si Snort est surtout identifié comme IDS (Intrusion Detection System), il n'en reste pas moins un bon sniffer, sa fonction d'origine.
- Sniffit : Sniffer disposant de fonctionnalités "temps réel" très intéressantes (captures des actions du clavier d'un utilisateur distant, récupération temps réel de mots de passe, etc.)
- Dsniff : Sniffer très avancé, comprenant de très nombreux protocoles, et permettant d'intervenir sur les paquets interceptés afin de réaliser des attaques sur le réseau (Macof, arpspoof, ...).
Techniques
Capture de mots de passe
Les protocoles non sécurisés (FTP, Telnet, ...) font circuler des données en clair sur le réseau. Un sniffer peut facilement les intercepter. Voir l'exemple OWASP WebGoat.
Saturation de la mémoire d'un switch
Protocole ARP et table CAM
Comme le montre l'image ci-contre, le protocole ARP et les tables CAM n'interviennent pas sur les mêmes couches du modèle OSI. En effet, le protocole ARP assure la jointure entre les couches 3 (couche réseau, adresse IP) et 2 (couche liaison, adresse MAC), alors que les tables CAM le font entre les couches 2 (liaison, adresse MAC) et 1 (physique, numéro du port physique du switch).
Saturation d'une table CAM
Pour router le trafic, les switches maintiennent une table de correspondance appelée Content Adressable Memory (CAM). Il est possible d'exploiter un dépassement de mémoire de certains équipements en saturant la table d'adresses MAC, afin de capturer les paquets. Voir Dsniff/Macof. En effet, lorsque la mémoire est pleine, certains switches se comportent en hubs et envoient les paquets à tous les hôtes connectés.
|
Attaque d'un switch avec des messages ARP
|
Vol de port
|
Détournement de session par DNS spoofing
Le DNS spoofing consiste à corrompre un serveur DNS de manière à rediriger l'appel à un site légitime vers un autre site (site pirate). L'outil dnsspoof inclus dans dsniff permet de réaliser une telle attaque.
|
l'attaque de l'homme du milieu (Man In The Middle Attack)
|
Protections
- Favoriser l'utilisation de switches par rapport au hubs
- Crypter les données sensibles :
- PGP (Pretty Good Privacy) pour les mails
- Utiliser HTTPs pour les pages d'authentification des applications Web
- Favoriser l'utilisation de protocoles sécurisés tel que SSH à la place de Telnet pour la prise en main distante ou encapsulez les protocoles non sécurisés dans des canaux cryptés comme par exemple Ssltunnel.
- Vérifier de manière distante si des machines ont activé le mode de promiscuité.