Comment le balayage des ports contribue-t-il à la sécurité de votre système ?

Les ports jouent un rôle majeur, car ils veillent à ce que les paquets de données parviennent à la destination souhaitée. Ils font office d'interface entre les ordinateurs et les services ou programmes système, et sont utilisés par les protocoles réseau TCP et UDP. Grâce à l'adresse IP, le système d'exploitation peut savoir non seulement à quel ordinateur il envoie le flux de données, mais aussi à quel programme il doit transférer les paquets.

Informations relatives aux ports

Chaque port est doté d’un un numéro compris entre 0 et 65535. Ces numéros sont divisés en trois catégories différentes :

  • Les ports 0 à 1023 comptent parmi les ports standardisés, auxquels l’Internet Assigned Numbers Authority (IANA) a assigné de nombreux protocoles et services fixes. Par exemple, le port 80 est réservé aux connexions HTTP, et correspond donc au port décisif pour les requêtes de serveur Web.
  • Les numéros de port 1024 à 49151 sont attribués par défaut aux services répertoriés, mais également aux programmes clients, en particulier par les systèmes Linux.
  • Les ports 49152 à 65535 permettent d’attribuer des systèmes d’exploitation aux programmes clients de façon dynamique.

Pour établir une connexion à travers un port spécifique, celui-ci doit être ouvert. Ceci signifie en toute logique qu’il existe un grand nombre de ports ouverts, en particulier pour le transfert de données sur Internet, ce qui entraîne de nombreux problèmes, car chaque port ouvert constitue un accès potentiel pour les cybercriminels si l’application en question présente des lacunes de sécurité. Pour cette raison, il est recommandé de toujours garder un œil sur les ports ouverts de votre système, et les applications correspondantes. Les outils qui ont fait leurs preuves dans le suivi des ports déverrouillés sont appelés balayeurs de ports.

Qu’est-ce que le balayage de ports ?

Le balayage de ports désigne le processus de vérification des ports ouverts sur un système informatique, à l’aide d'outils spéciaux. Pour effectuer ce type d’analyse, il n’est pas nécessaire  d'être enregistré dans le système cible, mais seulement d'y être connecté, par exemple via un réseau local ou Internet. À l'aide du balayeur de ports, il est possible de tester l'envoi de paquets de données précis aux différents ports, et de recevoir des réponses ou des messages d'erreur que l'outil analyse et évalue. Selon l'étendue des fonctions du programme de numérisation utilisé, on obtient ainsi des informations sur les ports ouverts ou fermés, mais également sur le système d'exploitation utilisé par l'ordinateur cible, ainsi que sur la durée de mise sous tension du PC, ou sur les services ou applications qui utilisent les ports respectifs.

Le balayage de ports constitue un moyen très efficace pour surveiller le trafic sur un réseau et identifier les potentielles vulnérabilités. Dans certains cas, il permet également de résoudre des problèmes de réseau concrets. Dans la mesure où les outils n'ont pas d'influence notable sur les performances des systèmes examinés, il est possible de les utiliser sans hésitation pour de telles mesures de sécurité. Un balayeur de port est également intéressant sur un PC familial, puisque dès que vous installez et utilisez des applications nécessitant une connexion Internet, les ports s'ouvrent automatiquement, à condition de ne pas en être empêchés par votre pare-feu. Un balayeur de port vous aide à garder une trace de ce qui se passe, et vous indique les ports dont vous n'avez plus besoin et que vous pouvez fermer pour minimiser les risques.

Comment fonctionne le balayage de ports ?

Les balayeurs de ports offrent différentes méthodes par défaut, dont la plupart sont basées sur le protocole TCP. Il est utile de jeter un coup d'œil rapide à la configuration générale du protocole TCP afin de comprendre les processus de base lors du balayage des ports.

  • Dans le cadre du processus de handshake à trois voies, le client envoie d'abord un paquet SYN (pour synchroniser) au port cible correspondant.
  • S'il arrive à une application de cette façon, il récupère un paquet combiné SYN/ACK (synchronize acknowledge = "confirmer la synchronisation"), qui confirme la connexion.
  • À la troisième et dernière étape, le client renvoie un paquet ACK (acknowledge = "confirmer"), qui permet d’établir la connexion et de commencer l'échange de données.

Si un port fermé est contacté, le client reçoit un paquet RST (reset = "réinitialiser") à la deuxième étape, après laquelle le handshake est annulé.

Dans la mesure où il serait très complexe d'échanger des données avec les différentes applications, le balayage de ports se limite à de simples tentatives de connexion, telles que l’illustrent les méthodes de balayage communes présentées ci-dessous.

Scan TCP SYN

Le scan TCP SYN est souvent appelé « scan semi-ouvert » parce qu'il ne vise pas à établir une connexion TCP complète. On utilise cette méthode avec le balayeur de ports pour envoyer des paquets SYN communs aux ports individuels en attendant la réponse de l'hôte cible. S'il renvoie un paquet SYN/ACK, il signale que le port correspondant est ouvert et qu'une connexion peut être établie. Si la réponse consiste en un paquet RST, cela signifie que le port est fermé. Si l'hôte cible n'envoie pas de réponse, il est probable qu’un filtre de paquets, tel qu'un pare-feu, soit situé en amont. Les scans TCP SYN ne sont pas visibles pour les applications analysées, et ne génèrent donc pas de données log, c'est pourquoi ils sont également appelés « scans furtifs ».

Scan TCP Connect

Pour effectuer une analyse de connexion, il est conseillé d’utiliser son propre balayeur de ports, de ne pas envoyer ou générer soi-même les paquets de données, mais d’utiliser plutôt l'appel système de connexion. Ceci est disponible sur la majorité des systèmes d'exploitation. Par exemple, le navigateur Web l’utilise également pour établir une connexion avec le serveur concerné. Ainsi, l'outil d'analyse n'a rien à voir avec la configuration réelle de la connexion, mais met en service le système d'exploitation. Ceci conduit soit à réussir à établir une connexion et à permettre de confirmer que le port est ouvert, soit à échouer pendant la tentative et indiquer que le port correspondant est fermé. Les fichiers journaux des applications respectives avec ports ouverts montrent que cette méthode d'analyse a été utilisée lorsque la connexion est complètement établie. Toutefois, il ne fournit aucune information sur les programmes de filtrage utilisés. Si vous ne disposez pas des droits pour envoyer des paquets de données brutes, l'analyse TCP Connect reste une alternative utile à l’analyse SYN.

Les scans TCP-FIN, Xmas et Null

Ces trois méthodes de balayage de ports permettent également de distinguer les ports ouverts et fermés. Pour ce faire, on utilise deux principes listés dans la RFC (Request for Comments) de TCP (793) : d'une part, les paquets entrants qui ne sont pas des paquets RST doivent toujours répondre par un port fermé avec leur propre paquet RST ; d'autre part, tous les paquets qui ne sont pas marqués comme SYN, RST ou ACK doivent être ignorés par un port ouvert. Les trois types d’analyse tirent parti de cette situation lorsqu'il s'agit de scanner des systèmes compatibles RFC avec leurs boîtiers individuels :

  • Le scan null n’utilise pas de marquage spécifique.
  • FIN Scan permet au balayeur de ports d’envoyer des paquets FIN (finish = « finir »)
  • Les scans Xmas reposent sur une combinaison de marqueurs FIN, PSH [push = « faire avancer ») et URG (urgent), qui illuminent le scanneur tel un sapin de Noël, d’où son nom.

Les trois méthodes d’analyse fonctionnent exactement de la même manière. Les paquets de test envoyés s’assurent qu'un port fermé réponde par un paquet RST, et qu'un port ouvert ne renvoie pas de réponse, à cause des réglementations RFC. Toutefois, puisque seuls quelques routeurs signalent un message d'erreur lors du filtrage d'un port, l'absence de réponse peut également indiquer qu’il s’agit d’un port filtré. Si les procédures sont encore plus discrètes que les scans SYN, elles présentent toutefois l'inconvénient de ne pas fonctionner si les systèmes n'adhèrent pas exactement à la RFC 793. Windows en est le représentant principal.

Les trois méthodes d’analyse fonctionnent exactement de la même manière. Les paquets de test envoyés s’assurent qu'un port fermé réponde par un paquet RST, et qu'un port ouvert ne renvoie pas de réponse, à cause des réglementations RFC. Toutefois, puisque seuls quelques routeurs signalent un message d'erreur lors du filtrage d'un port, l'absence de réponse peut également indiquer qu’il s’agit d’un port filtré. Si les procédures sont encore plus discrètes que les scans SYN, elles présentent toutefois l'inconvénient de ne pas fonctionner si les systèmes n'adhèrent pas exactement à la RFC 793. Windows en est le représentant principal.

UDP-Scan

Un scan UDP envoie des en-têtes UDP vides, c’est-à-dire ne contenant aucune donnée, à tous les ports cibles. Lorsqu’un service répond à son tour par un paquet UDP, ceci confirme que le port en question est ouvert. Si le balayeur de port reçoit un message d'erreur "port inaccessible" (type 3, code 3), ceci lui indique que le port est fermé. D'autres messages d'erreur peuvent indiquer que le port est bloqué par un filtre de paquets. L’inconvénient principal du test de port UDP réside dans les durées d’analyse très longues. En effet, pour des raisons de sécurité, les messages d'erreur peuvent prendre beaucoup de temps sur de nombreux systèmes pour être générés, et les ports ouverts ne répondent que de façon très irrégulière. Par exemple, le noyau Linux limite le nombre de messages à un par seconde, ce qui implique environ 18 heures d'analyse pour 65 535 ports.

Quels sont les balayeurs de ports disponibles ?

S’il existe des scanneurs relativement variés, présentant des fonctionnalités différentes, la plupart des outils disponibles sont freeware ou open source. Nombre d’entre eux sont des programmes de ligne de commande classiques, dont on peut également se servir via des interfaces utilisateur graphiques séparées. Par ailleurs, il existe sur le Web de nombreuses solutions permettant de scanner les ports directement depuis un navigateur. Ces services sont toutefois limités sur le plan fonctionnel, puisqu’ils ne permettent d’analyser les ports que de façon individuelle. C’est par exemple le cas du balayeur de ports DNStools. C'est la raison pour laquelle ils sont plus adaptés à une utilisation occasionnelle, comme des contrôles rapides à domicile.

Netcat, le plus ancien des outils réseau

Netcat (abrégé en NC) a été publié en 1996 par un développeur anonyme, sous le pseudonyme "Hobbit". Écrit à l'origine pour les plateformes UNIX, il existe maintenant diverses options de portage pour d'autres systèmes comme Windows, et de nombreux développements telles que GNU Netcat, OpenBSD Netcat, Cryptcat ou Netcat6 (compatible avec IPv6), qui sont implémentées par défaut dans de nombreuses distributions Linux. La version de base de l'outil en ligne de commande est principalement utilisée pour envoyer ou lire des données via les connexions réseau TCP et UDP, mais peut également être utilisée pour le balayage de ports simples. Par exemple, on peut utiliser une commande simple telle que :

nc -zv localhost 20-30

Ceci permet de vérifier l'état des ports 20 à 30 sur le système d'exécution. L’analyse des ports UDP a besoin du paramètre additionnel -u. Il est également possible de balayer des systèmes externes au lieu de l’hébergeur local, dans la mesure où l’on connaît le nom d'hôte ou l'adresse IP.

Une analyse réseau illimitée avec Nmap

Network Mapper 1997, mieux connu sous le nom de Nmap, est un outil beaucoup plus puissant, qui convainc principalement grâce à sa fonction de balayeur de ports. Le programme, développé pour les systèmes unixoid, est publié sous licence GPL. Depuis 2000, il est également disponible pour les systèmes Windows, avec quelques limites toutefois. Par exemple, l'analyse TCP Connect dure très longtemps, à cause de l'API réseau Windows, et il n’est possible d’effectuer une analyse des ports système qu’en passant par des méthodes détournées. Par défaut, Nmap peut être exploité depuis la ligne de commande. Toutefois, avec Zenmap, il existe une interface utilisateur graphique puissante grâce à laquelle on peut utiliser l'outil réseau de façon encore plus pratique.

L'inventeur de Nmap, Gordon Lyon, ainsi que l'équipe de développeurs de Nmap font constamment évoluer le programme et ses capacités de balayage de ports, ce qui explique la grande variété de fonctionnalités. Par exemple, des techniques comme l'identification des empreintes digitales de l'OS (la reconnaissance du système d'exploitation d'un hôte cible en particulier), et la lecture des services qui sont cachés derrière un port font de Nmap l'une des solutions de balayage de ports les plus appréciées. Cette diversité se reflète également dans les méthodes d’analyse disponibles, résumées dans le tableau suivant :

Méthode de balayage de ports

Commande Nmap

Description

Scan TCP Connect

nmap -sT Host

Vérification classique hors administrateurs.

Scan TCP Syn

nmap -sS Host

Méthode de vérification rapide et discrète pour les administrateurs.

Scan Null/TCP-FIN/XMAS

nmap -sF Host

nmap -sX Host

nmap -sN Host

Méthode permettant de contourner les pare-feu.

Scan TCP Ping

nmap -sP Host

Ce n’est pas une méthode de balayage de ports classique ; permet de vérifier l‘accessibilité d’un hôte.

Scan TCP ACK

nmap -sA Host

Détecte les ports filtrés, mais ne fait pas la distinction entre les ports ouverts et fermés.

Scan TCP Window

nmap -sW Host

Similaire au scan ACK ; peut vérifier individuellement chaque port ouvert ou fermé.

Scan TCP Maimon

nmap -sM Host

Combinaison de scan FIN et ACK.

Scan TCP Idle

nmap -sI Host

Méthode d’analyse la plus discrète, la plus complexe mais également la plus lente ; s’exécute sur un troisième ordinateur.

Scan UDP

nmap -sU Host

Méthode d’analyse pour ports UDP sans connexion.

Scan SCTP Init

nmap -sY Host

Analyse de ports avec SCTP, une alternative à TCP et UDP.

Scan IP protocol

nmap -sO Host

Ce n’est pas un balayeur de ports ; permet de vérifier quels protocoles IP sont compatibles avec le système cible.

Il est possible de télécharger Nmap et l’interface Zenmap pour le moteur de recherche de votre choix, à partir de la page officielle. Il y a deux versions disponibles : la version actuelle (stable) et la version beta (development), qui est en cours de développement. 

Pourquoi le balayage de ports n’est pas toujours légal

Nmap est apprécié non seulement des utilisateurs d'ordinateurs, mais aussi des réalisateurs de films. Par exemple, dans la seconde partie de la saga Matrix, Trinity, le personnage féminin, utilise l'outil réseau pour balayer les ports du système informatique d'une centrale électrique. Toutefois, elle ne cherche pas à en optimiser la sécurité, mais se sert du résultat de l'analyse pour accéder au système. Pour ce faire, elle utilise du code programme malveillant qui exploite une faille du protocole SSH fonctionnant sur le port 22. La scène ne montre qu'une attaque très simplifiée basée sur un balayage de port précédent, mais illustre bien quels avantages les cybercriminels peuvent tirer du balayage de ports.

Un contrôle des ports n'est donc pas toujours effectué dans un cadre légal et à des fins honnêtes, et toute tentative d'exploitation ultérieure des résultats est passible de poursuites judiciaires. Si l'on effectue un balayage intensif des ports qui conduit à paralyser un système, la situation juridique est moins claire. En raison du grand nombre de demandes de connexion, la méthode de contrôle impose parfois une charge importante au système cible, ce qui peut provoquer un crash. Par ailleurs, les responsables du système cible peuvent s’apercevoir du contrôle en cours avant même le plantage, et l’interpréter comme les premières étapes d'une cyberattaque. Dans ce cas, d’éventuelles conséquences juridiques ne peuvent être exclues. Si le système externe est délibérément surchargé, il s'agit d'attaques dites DoS ou DDoS qui sont largement passibles de poursuites pénales.

Par conséquent, il est essentiel de toujours s’assurer que l’on est autorisé à effectuer un scan de port sur le système concerné, et que l’on n’utilise cette technologie qu'à des fins de sécurité, et non par seule curiosité ou à des fins malveillantes. Les différentes manières d'utiliser le balayage des ports illustrent à quel point il est important de garder un œil sur les ports de son propre ordinateur système ou réseau, ainsi que sur les différents services qui y accèdent.