En informatique, le balayage de ports (port scanning en anglais) est une technique servant à rechercher les ports ouverts sur un serveur de réseau.
Cette technique est utilisée par les administrateurs des systèmes informatiques pour contrôler la sécurité des serveurs de leurs réseaux. La même technique est aussi utilisée par les pirates informatiques pour tenter de trouver des failles dans des systèmes informatiques. Un balayage de ports (port scan ou portscan en anglais) effectué sur un système tiers est généralement considéré comme une tentative d'intrusion, car un balayage de ports sert souvent à préparer une intrusion.
Le balayage de ports est une des activités considérées comme suspectes par un système de détection d'intrusion. Un système de détection d'intrusion peut être réglé à différents niveaux de sensibilité. Un niveau de sensibilité élevé génèrera plus de fausses alertes, un niveau de sensibilité bas risque de laisser passer les balayages effectués par des systèmes sophistiqués comme Nmap qui disposent de diverses options pour camoufler leurs balayages.
Pour tromper la vigilance des systèmes de détection et des pare-feu, les balayages peuvent se faire dans un ordre aléatoire, avec une vitesse excessivement lente (par exemple sur plusieurs jours), ou à partir de plusieurs adresses IP.
Les balayages de ports se font habituellement sur le protocole TCP ; néanmoins, certains logiciels permettent aussi d'effectuer des balayages UDP. Cette dernière fonctionnalité est beaucoup moins fiable, UDP étant orienté sans connexion, le service ne répondra que si la requête correspond à un modèle précis variant selon le logiciel serveur utilisé.
Pour information, la réalisation de balayage de ports est interdite et répréhensible sans autorisation.
Techniques
TCP
Un balayage de ports vise typiquement le protocole TCP, car c'est celui qui est utilisé par la majorité des applications. L'objectif du balayage est de savoir si un logiciel est en écoute sur un numéro de port donné. Si un logiciel écoute, on dit que le port est ouvert, sinon on dit qu'il est fermé. Le balayage d'un port se passe en deux étapes :
- l'envoi d'un paquet sur le port testé ;
- l'analyse de la réponse.
Il existe de nombreuses variantes pour le paquet émis. Il y a le paquet valide selon la norme TCP, le paquet « TCP SYN », et les paquets invalides. L'utilisation des paquets invalides vise à tromper les systèmes de détection d'intrusion. La liste des paquets invalides utilisés est :
Le serveur peut répondre de différentes manières :
- ouverture de connexion acceptée : envoi d'un paquet TCP SYN/ACK ;
- fermeture de la connexion : envoi d'un paquet TCP RST ;
- absence de réponse : on dit que le paquet est droppé.
La réponse ouverture de connexion acceptée indique clairement que le port est ouvert. La réponse fermeture de la connexion indique que le port est fermé. L'absence de réponse est souvent due à un pare-feu qui vise à contrer le balayage de ports. Le pare-feu peut détecter un trafic anormal et décider d'ignorer pendant un certain temps tous les paquets provenant de la machine générant le trafic anormal. En absence de réponse, on ne peut donc pas savoir avec certitude si le port est ouvert ou fermé.
La technique Window envoie un paquet TCP ACK et observe la taille de la fenêtre TCP du paquet de réponse (TCP RST). Si le port est fermé, la taille de la fenêtre de la réponse est nulle.
La technique Maimon est utilisée sur les systèmes BSD. Uriel Maimon a constaté que ces systèmes ignorent un paquet TCP FIN/ACK (invalide) si le port est ouvert au lieu d'envoyer la réponse TCP RST.
Autres techniques pour TCP
Une autre technique consiste à passer par un serveur FTP. On utilise la fonctionnalité de serveur mandataire des serveurs FTP pour balayer les ports.
Enfin, la technique Idle scanning utilise l'identifiant de fragmentation du protocole IP. Un système de détection d'intrusion pense que l'analyse provient d'un ordinateur zombi. Consultez l'article (en) Idle Scanning and Related IPID Games pour plus de renseignements.
UDP et IP
Pour le protocole UDP, on envoie un paquet UDP vide (de longueur nulle). Si le port est fermé, un message ICMP de type 3 (destinataire inaccessible) et code 3 est envoyé.
Il est également possible de lister les protocoles IP pris en charge par un hôte. On appelle cette technique IP Protocol Scan[4] .
Version du logiciel
On peut détecter le système d'exploitation et sa version par la prise d'empreinte de la pile TCP/IP. Un logiciel tel que Nmap permet également de détecter le nom du logiciel écoutant sur un port, voire sa version.
Références
- La technique Maimon porte le nom de son auteur, Uriel Maimon. Elle a été publiée dans le magazine électronique Phrack, numéro 49.
- (en-US) « Port Scanning without the SYN flag - Uriel Maimon », sur phrack.org.
- La technique Xmas (abréviation de Christmas, Noël en anglais) a été nommée ainsi en souvenir de l'attaque du serveur de Tsutomu Shimomura par Kevin Mitnick le jour de Noël 1994. Lire l'article sur Kevin Mitnick pour les détails.
- (en-US) « IP Protocol Scan (-sO) », sur nmap.org.