Attaques/Reseau/Sniffing

From aldeid
Jump to navigation Jump to search
This article needs to be translated
This article has been copied from the old wiki and is in french. It needs to be translated into english. If you wish to participate, please send a mail to (click to reveal email)

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 :
    • Les outils suivants permettent de vérifier si un hôte distant est en mode de promiscuité : Sentinel, ifchk, sniffdet, cpm, kstat (ifstat)
    • Pour Windows, l'outil promqry permet de réaliser la même opération

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, ...).
You might also see: p0f, détection passive d'OS
You might also see: Scanneur passif de vulnérabilités

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.

  1. Le switch alimente sa table de correspondance CAM en analysant les en-têtes Ethernet du trafic.
  2. Le pirate sature la mémoire de la table CAM avec de fausses adresses MAC.
  3. Le switch envoie les paquets à tous les hôtes.

Attaque d'un switch avec des messages ARP

  1. Le pirate ajoute une règle d'IP forwarding sur son poste afin de rediriger le trafic (voir étape 4)
  2. Le pirate attaque le cache ARP du switch en lui signifiant que l'adresse IP du routeur correspond à l'adresse physique du pirate. A ce stade, le trafic à destination du routeur sera envoyé au pirate.
  3. L'hôte A établit une communication en destination de l'hôte B. Le trafic passant par le switch, dont le cache ARP est corrompu, fait suivre les paquets à l'attaquant. Il enregistre le trafic qu'il intercepte.
  4. Ce dernier redirige le trafic vers le routeur, afin qu'il atteigne l'hôte B.

Vol de port

  1. Le pirate envoie des paquets sur le réseau avec une fausse information, prétendant que la gateway est sur le port physique #4 du switch
  2. Le switch met à jour sa table CAM (Content Adressable Memory) en conséquence.
  3. L'hôte A envoie un paquet à destination de B. Celui-ci passe par le switch qui consulte sa table CAM pour obtenir le numéro de port sur lequel est connectée la gateway.
  4. Sa table CAM étant corrompue, il redirige le trafic sur le port #4 (vers le pirate) au lieu du port #8 légitime (véritable port de la gateway).
  5. Le pirate peut sniffer le trafic.

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.

  1. L'outil dnsspoof s'exécute sur la machine du pirate. Il écoute les requêtes DNS sur le réseau.
  2. L'hôte A envoie une requête DNS afin de communiquer avec l'hôte B
  3. Dnsspoof intercepte cette requête est répond rapidement avec une fausse correspondance (adresse IP du site pirate)
  4. L'hôte A se connecte au site pirate, pensant se trouver sur le site de l'hôte B.

l'attaque de l'homme du milieu (Man In The Middle Attack)

  1. Le pirate exécute dnsspoof et webmitm sur sa machine et envoie de fausses informations DNS sur le réseau (association du DNS www.mybank.com à l'adresse IP de l'attaquant)
  2. La victime fait pointer son navigateur vers www.mybank.com. Comme l'information envoyée par l'attaquant a été reçue, le traffic est envoyé vers le poste du pirate
  3. A ce stade, tout le trafic peut être interprété par le pirate
Note
Cette technique fonctionne également pour les flux HTTPs et SSH. Dans ce cas, le pirate délivre lui-même un certificat. Les navigateurs récents détectent ce type d'attaque et en informent l'utilisateur par un avertissement.

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é.