Blog ENI : Toute la veille numérique !
🐠 -25€ dès 75€ 
+ 7 jours d'accès à la Bibliothèque Numérique ENI. Cliquez ici
Accès illimité 24h/24 à tous nos livres & vidéos ! 
Découvrez la Bibliothèque Numérique ENI. Cliquez ici

Les failles réseau

Généralités

Les réseaux actuels sont basés sur des normes qui datent de la création d’Internet. Les évolutions technologiques et l’apparition de nouveaux médias ont ouvert de nouvelles brèches en plus des failles résiduelles originelles.

Les failles réseau touchent le simple particulier comme la grande entreprise. Ce chapitre nous aidera à appréhender quelques aspects du hacking au niveau réseau et des contre-mesures associées.

Rappel sur les réseaux TCP/IP

Les notions décrites ci-dessous sont primordiales. Elles constituent le fondement de tout réseau TCP/IP moderne.

Le modèle OSI

L’écriture d’un programme unique gérant toutes les tâches nécessaires au fonctionnement d’un réseau serait très complexe, voire un cauchemar pour la personne devant le réaliser ou le maintenir. Aussi, à des fins de standardisation et de simplification, le modèle OSI (Open Standardization for Interconnection) a été créé. Chaque couche joue son rôle et s’appuie sur les autres couches pour les fonctionnalités qui ne sont pas de son ressort.

En voici une synthèse :

images/p326.png

Synthèse du modèle OSI

2. Adresse MAC et adresse IP

Dans les réseaux locaux actuels, les périphériques réseau sont très souvent reliés entre eux par une liaison filaire de type Ethernet (norme 802.3x) ou sans fil Wi-Fi (802.11a/b/g/n/ac). Dans les deux cas, la ou les cartes réseau présentes dans les périphériques sont identifiées individuellement par une adresse appelée adresse MAC (Media Access Control). Cette adresse MAC est gérée au niveau de la couche 2 du modèle OSI.

L’adresse MAC, développée pour fonctionner dans un réseau local (LAN), est uniquement utilisée en local et l’information ne traverse pas les routeurs.

L’arrivée d’Internet change la donne en permettant de relier un ensemble de réseaux à la toile via des routeurs. Le routeur, qui a pour tâche principale d’envoyer l’information dans la bonne direction (vers le bon réseau), est un élément essentiel des réseaux modernes.

Il faut donc définir une autre information permettant d’identifier...

Outils pratiques

Cette partie rassemble différents utilitaires utiles au quotidien.

Des informations sur les sockets

netstat permet de connaître les services et ports ouverts sur votre machine, ainsi que les différents états des connexions (Linux, OSX et Windows). Lancez :

netstat -a[nt] 
-a     Affiche toutes les connexions et tous les ports d'écoute. 
-n     Affiche des adresses et numéros de ports en format numérique. 
-t     Affiche l'état actuel de déchargement de la connexion. 
images/C6-Figure_07.png

Visualisation des sockets avec netstat sous Windows

Les états possibles sont les suivants :

  • ESTABLISHED : connexion établie.

  • SYN_SENT et SYN_RECV : connexion en cours d’établissement.

  • CLOSE : socket fermé.

  • CLOSE_WAIT : socket en attente de fermeture.

  • LISTENING : un service est ouvert sur ce port.

L’analyse des résultats permet de voir que :

  • deux connexions ont été établies vers des serveurs de Google (173.194.65.91 et 173.194.66.100) sur les ports 443 (HTTPS) ;

  • une connexion a été établie vers un serveur ENI (185.42.28.201) sur le port 80 (HTTP).

lsof permet de lister tous les fichiers ouverts. Tous les éléments du système étant considérés comme des fichiers sous Linux, les sockets ne font pas exception à la règle. Lancez :

lsof -ni tcp 

-n empêche la conversion de numéros réseau (adresses décimales) en noms d’hôte pour les fichiers réseau.

-i sélectionne ls fichiers dont l’adresse Internet correspond à l’adresse spécifiée avec -i.

Cette commande permet de lister les connexions et les PID associés aux différents programmes...

DoS et DDoS

Un DoS (Denial of Service) est une attaque de déni de service. Le but d’un déni de service est de rendre ledit service inopérant ou de faire tomber un serveur qui l’héberge.

Établissement d’une session TCP

TCP est un protocole orienté connexion. L’établissement d’une session permet de s’assurer que les applications sont prêtes à recevoir les données et que toutes les données sont bien reçues par le destinataire.

Il est dès lors possible que des données soient transmises plusieurs fois parce qu’elles n’ont pas été reçues dans les temps. Après la fermeture d’une connexion TCP, l’arrivée de doublons retardataires pourrait provoquer une réouverture du port inutile. Afin d’éviter cela, un timer quiet (égal à deux fois le TTL IP) est activé et bloque le port.

Le TTL (Time To Live) d’un paquet IP transitant sur un réseau est décrémenté de 1 lors de chaque passage dans un routeur afin d’éviter que le paquet ne boucle indéfiniment. En effet, lorsque le TTL est à zéro, le paquet est purement et simplement abandonné par le routeur.

images/C6-Figure_26.png

Principe de la poignée de main en trois étapes lors de l’ouverture de session en TCP

L’attaque par SYN flood est l’une des attaques les plus répandues, elle consiste à demander des connexions et ne pas y répondre. Lors d’une demande de connexion, le serveur est en attente et bloque pendant un certain temps une partie de ses ressources pour cette nouvelle connexion.

Le but est d’envoyer plus de demandes de connexion qu’il ne peut en traiter dans un temps donné. Le serveur ne pourra plus subvenir au besoin des vrais clients. Voici un exemple simple...

Sniffing

Les sniffers, ou renifleurs de paquets, sont des outils qui servent à récupérer l’ensemble des données transmises par le biais d’un réseau de la couche 2 à la couche 7 du modèle OSI.

Afin d’écouter le trafic, il faudra configurer la carte réseau en mode "promiscuous". Ce mode permet d’intercepter tout le trafic réseau, même les paquets qui ne lui sont pas destinés.

De nombreux protocoles réseau ne chiffrent pas les données, il est donc possible de voir en clair les mots de passe Telnet, POP, FTP...

Mais il est tout aussi possible de voir les sites visités sur votre réseau ou même les conversations MSN, de lire les données non cryptées (utilisateur et mot de passe compris). 

Wireshark, anciennement connu sous le nom Ethereal, est un sniffer logiciel.

Installation de Wireshark sous Debian :

apt install wireshark 

Ou téléchargez les sources ou l’installateur pour d’autres systèmes d’exploitation sur le site http://www.wireshark.org. Une version 2 est actuellement disponible en "preview". 

images/C6-Figure_27.png

Nouvelle présentation de Wireshark

L’analyseur de paquets en ligne de commande tcpdump (WinDump sous Windows) permet de capturer le trafic visible depuis une interface réseau et même de le sauvegarder dans un format compatible avec Wireshark.

Capturer des données avec Wireshark

Une fois installé, exécutez Wireshark avec l’utilisateur root ou exécutez les opérations suivantes :

# dpkg-reconfigure wireshark-common 

Choisissez l’option "oui".

# usermod -a -G wireshark <utilisateur> 

Reconnectez-vous avec votre utilisateur

Cliquez sur Capture - Interface.

Choisissez votre interface de capture puis cliquez sur Start.

La capture commence. En quelques instants, de nombreuses...

Man In The Middle dans un réseau local

Empoisonnement du cache ARP (théorie)

L’attaque de l’homme du milieu ou Man In The Middle (MITM), est une attaque nécessitant au moins trois ordinateurs, l’ordinateur du milieu se faisant passer pour le deuxième aux yeux du premier et pour le premier aux yeux du second. L’ordinateur du milieu intercepte et renvoie les communications et peut le cas échéant les modifier.

Dans un réseau local de type Ethernet, les machines d’un même réseau ne communiquent pas en utilisant leur adresse IP, mais plutôt en utilisant leur adresse MAC. L’adresse MAC identifie de manière unique une machine dans un réseau Ethernet. Cette adresse est définie sur 6 octets (48 bits).

Dans un réseau IPv4, le protocole ARP (Address Resolution Protocol) joue un rôle majeur dans le fonctionnement des communications réseau, car c’est lui qui permet à une machine de connaître l’adresse MAC d’une machine distante.

Dans le jargon, l’opération qui consiste à trouver cette adresse MAC s’appelle la résolution, on parle alors de résolution ARP.

L’objectif d’ARP est de résoudre l’adresse de niveau 3 (l’adresse IPv4) en une adresse de niveau 2 (l’adresse MAC). Une adresse IP est une adresse logique, par opposition à l’adresse MAC qui est une adresse physique.

En conséquence, cette adresse IP peut être attribuée par l’administrateur du réseau ou l’utilisateur. Il est donc possible de fournir l’information de l’adresse IP de destination au système qui veut communiquer.

ARP trouve l’adresse MAC du système de destination en utilisant l’adresse de niveau 3, l’adresse IPv4.

images/Figure40a.png

Principe d’une requête ARP

Dans le scénario...

Vol de session TCP (hijacking) et spoofing d’IP

L’empoisonnement de cache ARP fait intervenir les couches 2 et 3 du modèle OSI. Mais il est également possible d’attaquer la couche 4.

La couche Transport du modèle OSI (la couche 4) contient, entre autres, TCP et UDP.

Il serait intéressant de prendre le contrôle d’une session TCP pour, par exemple, usurper une session Telnet déjà initialisée, ou bloquer la communication du client réel et envoyer des commandes. Tout cela sans même avoir saisi le moindre login ou mot de passe. À vrai dire, avec cette technique il n’est même pas utile de connaître les identifiants.

Le hijacking remet en cause les connexions non chiffrées, par exemple : Telnet.

Pire, le hijacking rend obsolètes toutes les authentifications par adresse IP comme RLOGIN.

La faille : l’ACK/SEQ

Établir une session TCP requiert plusieurs étapes qui permettent d’assurer l’ordre de transmission des paquets dans le temps (voir le schéma à la section DoS et DDoS).

Les étapes d’établissement d’une connexion TCP sont les suivantes :

  • Le client envoie un paquet de demande de synchronisation (SYN) contenant un numéro de séquence que nous allons appeler SEQ-CLIENT.

  • Le serveur retourne un paquet (SYN/ACK) contenant un couple ACK/SEQ :

  • ACK-SERVER contient le numéro de séquence (SEQ-CLIENT+1) du précédent paquet client.

  • SEQ-SERVER généré par le serveur.

  • Le client envoie un ACK = (SEQ-SERVER+1), SEQ= ACK-SERVER = (SEQ-CLIENT+1). 

Une fois la connexion établie, les numéros de séquence augmentent en fonction des paquets reçus ou envoyés.

Rien ne nous empêche donc de créer un paquet TCP avec l’adresse IP du client à destination du...

Failles Wi-Fi

Depuis le début des années 2000, avec l’arrivée des supports sans fil, la norme Wi-Fi s’est imposée. Les ondes ne s’arrêtent pas aux portes et fenêtres, la sécurité de ce type de réseau se limite donc au chiffrement.

Le WPA2 AES avec une authentification RADIUS semble être une bonne solution au moment de l’écriture de ce livre.

Cracker un réseau WEP

La norme WEP ne doit surtout plus être utilisée en production. Elle est étudiée ici à des fins pédagogiques.

Aircrack est la suite qui nous permet de craquer les réseaux Wi-Fi.

Installation sous Debian de aircrack-ng :

apt install aircrack-ng 

Capturer des paquets

Afin de cracker la clé WEP, il faut capturer des paquets. Les hypothèses pour l’exemple sont :

  • une carte Wi-Fi nommée wlan0 ;

  • un nom du réseau (ESSID) ACISSI ;

  • l’adresse MAC de la borne Wi-Fi est : 00:11:22:33:44:55 ;

  • l’adresse MAC de l’ordinateur client est : 00:00:00:00:00:01.

La commande iwconfig permet de connaître le nom de l’interface Wi-Fi.

airodump-ng --write capture1 wlan0 

Airodump est le programme qui permet de capturer les paquets Wi-Fi.

Pour l’exemple, les paquets sont capturés à partir de l’interface wlan0 et enregistrés dans le fichier capture1.cap. Le fichier capture1.txt contient les informations utiles telles que les clients connectés aux bornes, les adresses MAC...

CH 10 ][ Elapsed: 3 mins ][ 2009-02-13 12:23 
 
BSSID               PWR Beacons #Data, #/s CH  MB   ENC  CIPHER AUTH ESSID 
 
4A:9A:6D:77:83:49   0   176    1    0   1  54e  OPN        ...

IP over DNS

Principe

L’ IP over DNS est une technique qui tend à se répandre. En effet, de plus en plus de hotspots Wi-Fi sont disponibles. Le problème est qu’il faut souvent s’authentifier afin d’avoir accès à Internet.

La majorité de ces hotspots sont mal configurés et laissent passer les requêtes DNS. Il est alors possible d’encapsuler des paquets TCP/UDP dans une fausse requête DNS afin de créer un tunnel. Cette technique est connue, mais pas encore très répandue faute de moyens. En effet, pour effectuer cette attaque, nous avons besoin de posséder : un serveur, une IP publique, un nom de domaine.

En pratique

Iodine est une implémentation de l’IP over DNS pouvant exploiter des connexions garanties par hachage MD5 et pouvant également filtrer les paquets ne provenant pas de l’adresse IP utilisés lors de la connexion.

Installation de iodine

Récupérons l’archive sur le site http://code.kryo.se/iodine/.

# décompression de l'archive 
tar xvzf iodine-0.5.2.tar.gz  
# compilation iodine 
make 
# installation de iodine en root 
make install 
# lancez iodine serveur 
iodined -f 10.0.0.1 votredomaine.com 

Nous devons modifier le fichier de zone du domaine afin de déléguer le sous-domaine à notre faux serveur DNS.

tunnel1host   IN   A   ipduserveur 
tunnel1       IN  NS   tunnel1host.mytunnel.com. 

Du côté client, il suffit d’installer iodine comme indiqué précédemment et de lancer la commande suivante :

iodine -f ipduserveur votredomaine.com 

Une nouvelle interface est disponible via ifconfig. Afin de vérifier si le tunnel est bien établi, nous pouvons faire un ping sur l’adresse IP du serveur : ping 10.0.0.1.

images/C6-Figure_48.png

Utilisation...

La téléphonie sur IP

La voix sur IP (VOIP, Voice over IP) a connu un essor important en France pour les entreprises, mais aussi pour les particuliers grâce notamment à la banalisation des offres Triple Play. Le phreaking, la technique de piratage dédiée à la téléphonie, se rapproche donc inévitablement du hacking. En effet, si la téléphonie utilise le réseau informatique, elle hérite de ses faiblesses.

Depuis toujours, la téléphonie subit le plus souvent deux types d’attaques différentes : l’écoute de conversation téléphonique et l’utilisation frauduleuse de celle-ci.

Le phreaking était auparavant une discipline sportive, le phreaker était obligé de se déplacer physiquement pour aller brancher les câbles pour écouter, prendre le contrôle, ou encore couper la ligne. Aujourd’hui, toutes ces opérations sont possibles sans bouger et en quelques manipulations. Il faut donc avouer que la téléphonie sur IP aide les pirates grâce à la discrétion qui en découle.

Sur un réseau informatique, le sniffing permet d’écouter le trafic, il n’y a donc qu’un pas vers l’écoute d’une conversation téléphonique. En ce qui concerne l’usurpation de la ligne, le couple identifiant/mot de passe peut être sniffé afin de le brute-forcer hors ligne.

Écoute de conversation

Le programme VoiPong permet l’enregistrement en fichier WAV d’une conversation VoIP.

Vous pouvez utiliser le liveCD Backtrack / Kali afin de tester VoiPong ou l’installer sur votre système.

Installation de VoiPong

Vous devez installer les dépendances libpcap et l’utilitaire sox sur votre machine.

Utilisez une version de sox datant...

IPv6

La migration majeure de l’Internet vers l’IPv6 n’a toujours pas eu lieu. Pourtant, nous sommes à l’aube d’une carence d’adresses IPv4 en Europe et aux États-Unis ; l’Asie, quant à elle, n’a plus d’adresses IPv4 disponibles depuis avril 2011.

En Europe, la date d’échéance estimée est également dépassée.

Pourtant, les entreprises et opérateurs n’ont pour la plupart pas migré vers IPv6.

À l’âge de la virtualisation où l’on a besoin de plus en plus d’adresses IP, nous avons l’impression que l’IPv6 n’est qu’un mythe ! Pourquoi ?

Il y a différents types de problèmes liés à une migration aussi importante dans une entreprise.

Les logiciels

Nous avons là l’exemple typique du bug de l’an 2000. Lors de la création de logiciels, il y a entre 10 et 20 ans, il n’était pas imaginable de prévoir les logiciels type clients/serveurs avec l’IPv6, les OS eux-mêmes ne l’implémentaient pas encore.

Généralement, en ce qui concerne les applications classiques, une simple mise à jour, souvent payante, suffit.

Mais pour des applications métier développées spécifiques ou dont l’éditeur n’existe plus, cela se complique.

Rien qu’un parc de machines sous Windows XP n’intègre pas par défaut la pile IPv6, il faut passer sur chaque machine pour l’activer via une console.

Le matériel

Certains équipements réseau seront à changer.

Et même ceux compatibles, requérant une simple mise à jour, ne seront peut-être plus aptes à établir autant de connexions qu’avant, vu la place prise par IPv6 par rapport à...

Conclusion

Les failles réseau sont des attaques redoutables et très connues, car elles ne sont pas faciles à corriger. Éradiquer ces failles revient à changer d’architecture réseau : cela est coûteux, et dans le cadre du réseau des réseaux, tout changer en quelques mois serait utopique, il y a énormément de machines connectées. Cependant, des améliorations sont à venir avec l’IPv6.

Mais ce seul changement de protocole sera long et il faudra rester compatible avec l’IPv4 pendant un bon bout de temps.

Aujourd’hui, il ne reste que très peu d’adresses IPv4 publiques disponibles.

L’IPv6 pour les non-initiés représente un risque majeur. En effet, depuis l’ADSL, beaucoup ne font pas attention à avoir un pare-feu sur leur machine : le manque d’adresses IP nous a cloisonnés derrière le NAT de nos routeurs.

À l’instant où vous allez passer en IPv6, vos ports ouverts seront donc disponibles pour quiconque aura une IPv6, sauf si le routeur intègre un firewall.

Certes, scanner des IPv6 est beaucoup plus lent : au lieu de scanner une IP publique, il va falloir scanner en plus toutes les IPv6 non utilisées sur votre réseau. Cependant, des techniques se peaufinent afin d’exécuter un scan de façon non linéaire, basée sur des probabilités et de manière distribuée.

Les outils commencent à se dessiner, vous trouverez par exemple l’excellente suite THC-IPv6 citée précédemment.

Nous nous devons donc de connaître les failles réseau afin de mieux sécuriser nos architectures. Ce maillon est très important, car même si nous avons les applications les plus solides, si nous laissons passer des informations en clair ou altérables...