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.

1. 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 chargée de 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 entre eux 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 un périphérique et qui peut traverser un routeur : c’est l’adresse IP. Un peu comme l’adresse postale détermine de manière unique et non équivoque une habitation, une adresse IP identifie une interface dans un réseau (voire même le périphérique si celui-ci ne possède qu’une interface).

La gestion des adresses IP est réalisée par la couche 3 du modèle OSI. En version...

Outils pratiques

Cette section rassemble différents utilitaires utiles au quotidien.

1. Des informations sur les sockets

La commande netstat permet d’afficher les services et ports ouverts sur votre machine, ainsi que l’état des connexions sous Linux, macOS 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 au format numérique. 
-t    Affiche l'état actuel de déchargement de la connexion. 
images/06EP07v7.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 trois connexions ont été établies vers des serveurs de Microsoft (20.90.152.133 et 34.149.211.227) sur les ports 443 (HTTPS).

lsof permet de lister tous les fichiers ouverts. Sous Linux, tous les éléments du système étant considérés comme des fichiers, y compris les sockets. 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 les fichiers dont l’adresse Internet correspond à l’adresse spécifiée avec -i.

Cette commande liste les connexions ainsi que les PID des programmes en cours d’exécution.

Cet outil peut être très utile afin de connaître quel programme ouvre des sockets sur votre ordinateur.

images/06EP08v7.png

Visualisation des programmes ayant ouvert des sockets avec lsof

Sous Windows, l’outil équivalent est TCP View, développé par Mark Russinovich. Toute la « Sysinternals Suite » est d’ailleurs très utile pour les administrateurs Windows. 

images/06EP09v7.png

Visualisation des programmes ayant ouvert des sockets avec TCP View

2. Des informations sur une adresse publique ou un nom de domaine

Il existe des sites spécialisés comme http://whois.domaintools.com/ permettant d’enregistrer les...

DoS et DDoS

Un DoS (Denial of Service) est une attaque de déni de service. Le but d’une attaque par 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 ou qu’une corruption est survenue. 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 qui reçoit le paquet.

images/C6-Figure_26.png

Principe de la poignée de main en trois...

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.

Pour écouter le trafic, il est nécessaire de configurer la carte réseau en mode « promiscuous », ce qui permet d’intercepter tout le trafic réseau, y compris 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 visualiser en clair des informations sensibles telles que les mots de passe Telnet, POP, FTP ou HTTP.

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 chiffrées (utilisateur et mot de passe compris).

Wireshark est le sniffer logiciel le plus connu. 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.

images/06EP41v7.png

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.

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

Man In The Middle dans un réseau local

1. Empoisonnement du cache ARP (théorie)

L’attaque de l’homme du milieu (Man In The Middle, MITM) implique au moins trois ordinateurs : celui du milieu se fait passer pour le second aux yeux du premier, et pour le premier auprès 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 Ethernet ne communiquent pas en utilisant leur adresse IP, mais en utilisant leur adresse MAC. L’adresse MAC identifie de manière unique une interface dans un réseau Ethernet. Cette adresse est définie sur 6 octets (48 bits).

Dans un réseau Ethernet IPv4, c’est le protocole ARP (Address Resolution Protocol) qui permet de faire correspondre l’adresse MAC et l’adresse IPv4 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 donc 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.

L’adresse étant attribuée par un administrateur de la machine ou par un serveur DHCP.

images/Figure40a.png

Principe d’une requête ARP

Dans le scénario où la station PC01 veut communiquer avec la station PC02 dans un réseau Ethernet IPv4 et où aucune communication ne s’est encore déroulée, le PC01 ne connaît pas l’adresse MAC de PC02, tout comme le PC02 ne connaît pas l’adresse MAC du PC01.

Pour afficher la liste des adresses MAC connues par le périphérique, il faut utiliser la commande arp -a (point 2 dans le schéma).

Pour résoudre l’adresse MAC de PC02, le PC01 va utiliser une requête ARP ("who has" : "qui a") (point 3 dans le schéma). Son champ adresse MAC source contient l’adresse MAC de la station PC01 et son champ adresse MAC de destination contient FFFF.FFFF.FFFF (broadcast : diffusion). Ce qui lui permet d’adresser toutes les interfaces Ethernet présentes dans le réseau....

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.

1. 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 en usurpant l’adresse IP du client vers le serveur ; ce paquet sera accepté si le couple ACK/SEQ est conforme à l’attente du serveur.

Sur un réseau non commuté ou avec une attaque d’empoisonnement ARP, il est possible, en plus d’envoyer des paquets, de recevoir les paquets à destination de la machine légitime.

Le but ultime est de faire du spoofing d’IP, c’est-à-dire usurper des adresses IP existantes ou non. Cependant, pour en arriver là, il faut impérativement...

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 WPA3 AES avec une authentification RADIUS semble être une bonne solution au moment de l’écriture de ce livre.

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

a. 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-ng est le programme qui permet de capturer les paquets Wi-Fi.

Dans 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             FreeWifi 
00:18:E7:23:A5:DD  0      0      0       0 6  54e.  WPA  TKIP  PSK  Livebox-31B6 
62:BA:70:71:55:2F  0      0      0       0...

IP over DNS

1. 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. Cette méthode consiste à encapsuler des paquets TCP ou UDP dans de fausses requêtes DNS afin de créer un tunnel. Bien que connue, cette technique reste peu utilisée faute de moyens. En effet, pour effectuer cette attaque, nous avons besoin de posséder : un serveur, une IP publique, un nom de domaine.

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

get https://code.kryo.se/iodine/iodine-0.8.0.tar.gz 
# décompression de l'archive tar xvzf iodine-0.8.0.tar.gz 
# compilation iodine 
cd iodine-0.8.0 
sudo make 
# installation de iodine en root sudo make install 
# lancez iodine serveur 
sudo iodined -f 10.0.0.1 votredomaine.com 

Il faut ensuite modifier le fichier de zone du domaine afin de déléguer...

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.

Autrefois, le phreaking nécessitait des manipulations physiques : le phreaker devait se déplacer pour brancher des câbles afin d’écouter, prendre le contrôle ou 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, ce qui rend l’interception des conversations téléphoniques particulièrement simple. En ce qui concerne l’usurpation de la ligne, le couple identifiant/mot de passe peut...

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’ère de la virtualisation où le besoin en adresses IP ne cesse de croître, IPv6 semble encore adopté ! Pourquoi ?

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

1. Les logiciels

Généralement, pour les applications classiques, une simple mise à jour permet d’intégrer la pile IPv6. Mais pour des applications métier spécifiques ou dont l’éditeur n’existe plus, cela se complique.

De plus, dans certains cas, il faut garder d’anciens systèmes d’exploitation qui n’intègrent pas par défaut la pile IPv6. Dans ces cas, une mise à niveau spécifique et manuelle est souvent nécessaire.

2. 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 à son prédécesseur dans un système embarqué. Cela peut faire toute la différence.

3. L’humain

L’IPv6 demande une formation pour les informaticiens. Cela représente un coût non négligeable.

Migrer doucement vers une architecture IPv6 est donc possible, quitte à faire cohabiter IPv4 et IPv6 sur plusieurs années.

Mais quel en est l’avantage ? Cela vaut-il réellement le coup pour une entreprise actuellement, en connaissant les contraintes de coût, temps, problèmes que cela peut représenter, alors qu’actuellement tout fonctionne et que l’avantage ne va pas se voir immédiatement ?

La réponse semble actuellement être non : vu l’ampleur...

Conclusion

Les failles réseau sont des attaques redoutables et très connues, car elles ne sont pas faciles à corriger. Éradiquer ces failles impliquerait de modifier l’architecture réseau, ce qui est coûteux. Dans le contexte mondial, changer l’ensemble en quelques mois serait irréaliste, compte tenu du nombre de machines connectées. Cependant, des améliorations sont à venir avec l’IPv6.

Ce changement de protocole sera long et il faudra rester compatible avec l’IPv4 pendant longtemps.

Aujourd’hui, il ne reste plus d’adresses IPv4 publiques disponibles.

L’IPv6 pour les non-initiés représente un risque majeur.

Dès que vous basculerez en IPv6, vos ports ouverts seront accessibles à tout utilisateur disposant d’une adresse IPv6, sauf si votre routeur relié au WAN intègre un pare-feu.

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