Wireshark : analyse de paquets

Tags :
  • MON
  • 2022-2023
  • temps 3
  • wireshark
  • reseaux
  • tcp
  • sécurité informatique
Auteurs :
  • Thibault Adelain

Analyse de paquets avec Wireshark

Wireshark est un logiciel libre et gratuit qui permet d'analyser le trafic réseau en capturant et en examinant les paquets de données qui circulent sur un réseau. Il est largement utilisé par les professionnels de la sécurité informatique, les administrateurs réseaux... pour diagnostiquer les problèmes de réseau et détecter les éventuelles attaques.

L'analyse de paquets avec Wireshark permet de comprendre le fonctionnement d'un réseau en examinant le contenu de chaque paquet de données qui y circule. Wireshark peut capturer et afficher différents types de paquets tels que les paquets TCP, UDP, ICMP, DNS... En fait, quasiment tous le trafic réseau transitant par la machine. En examinant les en-têtes de chaque paquet, il est possible de comprendre comment les données sont acheminées à travers le réseau, quelle est l'origine et la destination de chaque paquet, quels sont les ports utilisés, et quelle est la nature des données transmises... Les possibilités sont grandes et ce MON n'en donnera qu'un avant-goût.

Wireshark permet, entre autres, de :

Il peut être intéressant pour un expert en cybersécurité, administration réseau, développement de savoir utiliser ce logiciel.

Le logiciel est téléchargeable ici.

Modèle OSI

Le modèle OSI (Open Systems Interconnection) est un modèle de référence en informatique qui définit les normes de communication entre les différents systèmes informatiques. Ce modèle a été développé par l'ISO (International Organization for Standardization) dans les années 1980 afin de standardiser les communications entre les ordinateurs de différents fabricants et de différentes plateformes.

Le modèle OSI est constitué de sept couches, chacune représentant une étape spécifique dans le processus de communication entre les systèmes. Ces couches sont :

Le modèle OSI permet de standardiser la communication entre les différents systèmes informatiques en séparant les différentes étapes de la communication en couches distinctes. Cela facilite la conception de nouveaux protocoles de communication, la résolution des problèmes et la compatibilité entre les différents systèmes. Le modèle OSI est largement utilisé dans l'industrie des réseaux informatiques pour comprendre et dépanner les problèmes de communication entre les différents équipements et applications.

modèle osi par cisco.goffinet.org.

PING PONG

Définition

Lorsque vous envoyez un ping à un serveur, vous utilisez le protocole ICMP pour tester la connectivité réseau entre votre système et le serveur. Le ping envoie un message ICMP ECHO_REQUEST à l'adresse IP du serveur que vous voulez tester. Le serveur recevra alors ce message et répondra avec un message ICMP ECHO_REPLY. Voici comment cela se déroule en détail :

Si le serveur ne répond pas au message ICMP ECHO_REQUEST, la machine n'est pas atteignable / n'a pas répondu. Le ping est utilisé pour diagnostiquer les problèmes de réseau et tester la connectivité entre les systèmes.

Dans Wireshark

On lance la capture de paquets. Avec la commande ping google.com :

Capture ICMP

Pour trouver les paquets en question, on peut utiliser des filtres. Je vous renvoie à cette vidéo pour avoir plus de détails. Par exemple, on peut filtrer avec :

ip.addr == 192.168.1.21 && icmp

Ensuite, on peut prendre un paquet et faire [clique droit > conversation filter > ethernet] pour avoir son contexte.

On a :

On peut examiner les paquets en détail et s'intéresser au champs présents dans un paquet ICMP (source ip, destination ip, ttl...)

Assez simple, jusque-là. On peut aussi recommencer une capture et préciser la payload (nombre d'octets) à envoyer par trame :

ping -s 1500 google.com

puis :

ping -s 1500 -D google.com

Et là, problème. Vous pouvez essayer de comprendre dans Wireshark et allez voir cette ressource pour en savoir plus.

TCP

Définition

TCP (Transmission Control Protocol) est un protocole de transport fiable et orienté connexion utilisé pour la transmission de données sur les réseaux informatiques. Il est l'une des deux options principales de la couche transport du modèle OSI (l'autre étant UDP). TCP fournit une communication bidirectionnelle, de bout en bout et fiable, c'est-à-dire qu'il garantit la livraison des données sans erreur.

Pour cela, TCP utilise une méthode appelé le three-way handshake. Le 3-way handshake est un mécanisme de synchronisation à trois étapes utilisé par TCP pour établir une connexion fiable et orientée connexion entre deux systèmes. Voici les étapes du 3-way handshake :

Une fois que le 3-way handshake est terminé, les deux systèmes peuvent commencer à échanger des données de manière fiable et ordonnée. Les segments de données envoyés par TCP contiennent un numéro de séquence qui permet à celui qui réceptionne les données de les réassembler dans le bon ordre.

Dans Wireshark

Ressource.

On lance la capture de paquets. Avec la commande curl google.com :

capture_tcp

Pour avoir la capture en question, on peut appliquer le filtre http. Ensuite, [clique droit > follow TCP stream] sur le paquet.

Note : pour ajouter des colonnes : dans le cadre en bas à gauche, clique droit sur la donnée et apply as a column

Les trois premiers paquets correspondent à l'établissement de la connexion : SYN, SYN-ACK, ACK. Je vous invite à étudier ces paquets.

On voit un lien entre le acknowledgment number et TCP Segment Length, non ?

En fait, le acknowledgment number est incrémenté de 1 + taille du paquet reçu à chaque réception

Analyse scan Nmap

Scan Full TCP connect

Exo : faites un scan nmap full TCP connect sur une machine de votre réseau. Comment détecter que c'est un scan Nmap ?

Réponse

nmap -sT 192.168.1.1 En regardant paquet par paquet, c'est difficile à remarquer... Chaque paquet TCP est normal et comporte toutes les options classiques d'un paquet TCP. Le comportement global est cependant étrange (SYN, SYN-ACK, ACK, RST-ACK), on établit une connection pour la fermer brutalement ensuite (flag RESET : "Le bit de réinitialisation a été prévu pour des situations comme celle où un ordinateur A « plante » ou est éteint alors qu'une connexion TCP était en cours avec un ordinateur B." wikipedia). On aurait pu aussi préciser le port pour éviter de tout scanner et d'éveiller les soupçons. Finalement, on comprend facilement qu'un scan comme ça est facile à détecter par les IDS. capture nmap full tcp

SYN ("stealth") scan

Exo : faites un SYN scan nmap sur une machine de votre réseau. Comment détecter que c'est un scan Nmap ?

Réponse

sudo nmap -sS 192.168.1.1 Si on a réussi à établir une connexion, on a ceci dans wireshark : capture syn scan On voit que le client envoie un SYN, le server revoie un SYN-ACK pour établir une connexion TCP, et ensuite... plus de réponse. Le serveur retransmet alors son SYN-ACK, en supposant qu'il n'a pas été reçu, et recommence toutes les ~ 2 * delta. Le SYN scan envoie un paquet SYN et attend un SYN-ACK en retour, mais ne renvoie pas de ACK au serveur. Il est donc normal d'avoir ce genre de stream. Mais du point de vue du serveur, c'est difficile à détecter, car tout se passe comme si le paquet réponse s'était perdu en chemin (d'où la retransmission). Cependant, en regardant attentivement, on voit que le premier SYN envoyé par le client n'est pas identique à ceux de tout à l'heure. Et oui, regardez dans les options TCP... que 4 octets. C'est très étrange, normalement un paquet TCP SYN a au moins une vingtaine d'octets d'options. Finalement, On voit qu'un stealth scan n'est pas si stealth que ça...

Sources