Académique Documents
Professionnel Documents
Culture Documents
Présentation
Dans cet article et ceux qui suivront, nous allons aborder les techniques et méthodes de scan de
port au sein des réseaux. Il existe en effet plusieurs techniques permettant de scanner les IP d'un
réseau et les ports des machines, que l'on passe par ICMP, ARP, TCP ou UDP...
L'idée est donc d'expliquer certaines de ces méthodes afin de comprendre comment il est possible
de savoir quelle machine est sur le réseau et quels sont les ports ouverts (avec les services associés
bien sûr).
Schéma des comportements lors d'un TCP SYN scan pour un port ouvert et fermé
Pour voir un aspect un peu plus concret du Half Open scan, j'ai effectué un scan du port 80 vers
une machine qui avait un serveur web actif sur ce port. En effectuant une analyse réseau
avec Wireshark entre mon serveur ma machine de scan, je vois le flux suivant :
Sniff réseau lors d'un TCP SYN scan pour un port ouvert.
On voit donc sur la première ligne que la machine 192.168.1.18 (source du scan) envoie un
paquet TCP à mon serveur web (port 192.168.1.15) sur le port 80. Dans ce paquet TCP, le flag
SYN est à 1 pour signifier que le paquet est une demande d’initialisation de connexion TCP.
On voit ensuite sur la deuxième ligne que mon serveur web répond un SYN/ACK, ce qui veut
dire qu'il accepte d'initialiser une connexion et donc de recevoir des flux sur le port 80. On peut
donc en déduire que le port 80 est ouvert et qu'un serveur web est bien présent sur ma machine
cible, voila comment opère un attaquant lors d'un scan de port. Le fait de faire ce genre de scan
sur un ensemble de ports sur une machine permet d'avoir un inventaire plus ou moins complet des
services qu'elle fait tourner.
À l'inverse, j'ai effectué le même test entre les deux machines, mais cette fois-ci vers le port 81 sur
lequel aucun service n'est actif :
Sniff réseau lors d'un TCP SYN scan pour un port fermé.
On voit donc que mon serveur renvoie un RST/ACK en réponse à mon TCP SYN lorsque le
port n'est pas ouvert. En utilisant nmap, c'est l'option "-sS" (scan SYN) qui permet d'effectuer
un TCP SYN scan :
nmap -sS 192.168.1.15
Le TCP SYN scan est le scan le plus couramment utilisé, car il simule une demande de
connexion légitime. En revanche, la fin de la connexion si le SYN/ACK est bien renvoyé par le
serveur peut être suspecte si elle est observée trop de fois sur un serveur. En effet, le
comportement normal d'un client après un TCP SYN/ACK en réponse à un TCP SYN est qu'il
envoie un acknowledgement (ACK) pour ensuite commencer l'échange. Néanmoins, cela permet
d'avoir un scan un peu plus rapide, car il ne s'encombre pas à envoyer un ACK à chaque réponse
positive. L'avantage du SYN Scan est qu'il est plutôt rapide, car un seul paquet est envoyé par port
à scanner.
De plus le TCP SYN scan est capable de détecter si un port est filtré (protégé) par un pare-feu.
En effet, un pare-feu devant l'hôte visé peut être détecté de par le comportement qu'il a lorsqu'il
reçoit un paquet TCP SYN sur un port qu'il est censé protéger. Celui-ci ne va tout simplement pas
répondre. Or nous avons vu que dans les deux cas (port ouvert ou port fermé), il y a une réponse
de l'hôte. Ce troisième comportement va alors révéler la présence d'un pare-feu entre l'hôte
scanné et la machine qui lance le scan. Voici le résultat que l'on peut avoir sur nmap lorsqu'un
port visé est filtré (ici par un iptables directement configuré sur la machine cible) par un pare-feu :
Affi
chage nmap lors du scan d'un port filtré.
Lorsque l'on sniff le réseau au moment de ce scan, on voit effectivement qu'aucune réponse n'est
donnée :
Sniff réseau lors d'un TCP SYN scan pour un port filtré par un pare-feu.
La différence entre un port bloqué et un port filtré est ici, un port filtré est un port protégé par
un pare-feu alors qu'un port bloqué est un port sur la machine visée sur lequel aucun service
ne tourne et qui est donc incapable de traiter nos paquets TCP. Certains types de scan TCP
comme le TCP SYN scan sont capables de détecter si un port est filtré alors que d'autres types de
scan non.
Schématisation des comportements lors d'un TCP Connect scan pour un port ouvert et fermé
Voici ce que l'on peut voir transiter sur le réseau lors d'un TCP Connect scan :
Sniff réseau lors d’un TCP Connect scan pour un port ouvert.
On voit donc ici que le premier paquet TCP envoyé est un TCP SYN envoyé par le client, le
serveur va ensuite répondre par un TCP SYN/ACK ce qui nous indiquera que le port est
ouvert et sur celui-ci tourne un service actif. Pour simuler un client légitime jusqu'au bout,
l’outil de scan va ensuite renvoyer un TCP ACK au serveur. À l'inverse, lors d'un scan sur un
port fermé :
Sniff réseau lors d’un TCP Connect scan pour un port fermé.
On remarque que la réponse du serveur à notre paquet SYN est une fois encore un paquet TCP
RST/ACK, nous pouvons donc en déduire que le port est fermé et qu'aucun service ne tourne sur
celui-ci.
En utilisant nmap, c'est l'option "-sT" (scan Connect) qui permet d'effectuer un TCP Connect
scan :
nmap -sT 192.168.1.15
Schématisation des comportements lors d’un TCP FIN scan pour un port ouvert et fermé
J'ai à nouveau effectué une capture du réseau lors d'un Stealth scan et voilà ce que l'on voit
lorsque le port scanné est ouvert :
Sniff réseau lors d’un TCP FIN scan pour un port ouvert.
On voit donc que le client envoie un ou deux paquets pour mettre fin à une connexion TCP et que
le serveur ne répond pas. Il accepte tout simplement la fin de connexion et arrête de
communiquer. Voici ce que l'on peut voir maintenant lorsque l'on scanne un port fermé :
Sniff réseau lors d'un TCP FIN scan pour un port fermé.
On voit que le serveur renvoie un paquet TCP RST/ACK, on voit donc bien une différence de
comportement entre un port ouvert et un port fermé et nous sommes en mesure de lister les ports
ouverts sur un serveur via l'envoi de paquet FIN. En utilisant nmap, c'est l'option "-sF" (scan FIN)
qui permet d'effectuer un TCP FIN scan :
nmap -sF 192.168.1.15
Note : Le TCP FIN scan ne fonctionne pas sur les machines Windows, nous aurons donc
l'impression que tous les ports sont fermés si l'on effectue un TCP FIN scan sur une machine
Windows. C'est là l'intérêt d'avoir à la fois plusieurs méthodes de scanne mais aussi de
comprendre la différence entre chacune d'entre elles
Étant donné que dans un des deux cas, le TCP FIN n'attendra pas de réponse, celui-ci sera
incapable de détecter la présence d'un pare-feu entre la machine cible et la machine qui scanne. En
effet, une non-réponse de l'hôte sur un port donné pourra à la fois signifier que le port est filtré,
mais également qu'il est ouvert et actif.
C'est tout pour ce premier article sur les scans TCP ! Dans le prochain article, nous nous
pencherons sur les méthodes de scan TCP XMAS, Null et ACK qui opèrent de façon différente
pour détecter les ports ouverts sur une machine.