Nmap : Comment scanner les ports ouverts d'un serveur ?

Détection des services qui tournent sur une machine.

Nmap est un scanner de port qui est très utilisé par les administrateurs de réseaux pour avoir des informations sur la sécurité de leurs architectures. Evidemment, les hackers s'en servent eux aussi abondamment pour les mêmes raisons. Attention donc aux informations que vous laissez échapper !

Avant de suivre ce tutoriel, vous devez savoir ce qu'est un port logiciel : Qu'est ce qu'un port logiciel ?

Toutes les manipulations seront réalisées sous Debian Squeeze.

Nmap permet de balayer une plage de ports et, grâce au fichier /usr/share/nmap/nmap-services fait la relation entre ces ports et les services associés. C'est cette fonctionnalité qui permet aux pirates d'obtenir des informations sur les protocoles que vous utilisez et qui leur fournit la porte d'entrée vers votre système. Bien sûr, sauf si vous réalisez les tests sur un réseau privé, vous obtiendrez non pas les ports ouverts d'un ordinateur, mais ceux de la passerelle du réseau. Si vous êtes un particulier il y a de fortes chances que ce soit votre set top-box (LiveBox, FreeBox etc...) qui réponde. Notez que les administrateurs dans une entreprise ou même les fournisseurs d'accès à internet ne sont pas fan du balayage de ports, car il est souvent synonyme d'attaque imminente. Je vous recommande donc de ne pas en abuser en dehors de votre réseau domestique.

Réalisons un premier essai :

Port scanning de ma passerelle

# Installation de nmap apt install nmap; # Balayage des ports des n°1 à 65535. Sur l'adresse IP A.B.C.D nmap -p1-65535 A.B.C.D Starting Nmap 5.00 ( http://nmap.org ) at 2012-07-09 13:33 CEST Interesting ports on D.C.B.A.rev.sfr.net (A.B.C.D): Not shown: 65527 closed ports PORT STATE SERVICE 80/tcp open http 1863/tcp open msnp 1864/tcp open paradym-31 4443/tcp open pharos 5190/tcp open aol 5566/tcp open unknown 32764/tcp open unknown 49153/tcp open unknown Nmap done: 1 IP address (1 host up) scanned in 31.25 seconds

Comme vous pouvez le voir, j'ai obtenu la liste des services ouverts sur mon routeur et j'ai obtenu le nom de mon F.A.I. Maintenant imaginons que je sois un grand méchant et que je veuille utiliser BitTorrent à des fins illégales. Je lance mon logiciel préféré (tests réalisés avec BitTorrent 7.6.1) et je démarre le téléchargement.

Port scanning de ma passerelle avec BitTorrent

nmap -p1-65535 A.B.C.D Starting Nmap 5.00 ( http://nmap.org ) at 2012-07-09 13:39 CEST Interesting ports on D.C.B.A.rev.sfr.net (A.B.C.D): Not shown: 65527 closed ports PORT STATE SERVICE 80/tcp open http 1863/tcp open msnp 1864/tcp open paradym-31 4443/tcp open pharos 5190/tcp open aol 5566/tcp open unknown 6881/tcp filtered bittorrent-tracker 32764/tcp open unknown 49153/tcp open unknown Nmap done: 1 IP address (1 host up) scanned in 33.74 seconds

Oups, grillé ! Fou Heureusement pour vous, les logiciels de nos jours sont assez intelligents pour pouvoir changer de port aléatoirement et n'utilisent plus celui par défaut.

Méfiez vous de certains résultats de nmap car comme je vous l'ai dit, il se base sur le fichier nmap-services. Ainsi si je fais un SCAN de la machine dont je me sers pour réaliser ce tutoriel, il me détecte snet-sensor-mgmt sur le port 10000 alors qu'en fait mon port 10000 est utilisé par Webmin.

Port scanning d'un serveur

nmap localhost Starting Nmap 5.00 ( http://nmap.org ) at 2012-07-09 13:50 CEST Interesting ports on localhost (127.0.0.1): Not shown: 982 closed ports PORT STATE SERVICE 22/tcp open ssh 25/tcp open smtp 53/tcp open domain 80/tcp open http 110/tcp open pop3 111/tcp open rpcbind 139/tcp open netbios-ssn 143/tcp open imap 445/tcp open microsoft-ds 631/tcp open ipp 901/tcp open samba-swat 993/tcp open imaps 2049/tcp open nfs 3128/tcp open squid-http 3306/tcp open mysql 4242/tcp open unknown 5432/tcp open postgresql 10000/tcp open snet-sensor-mgmt Nmap done: 1 IP address (1 host up) scanned in 0.16 seconds

Comme vous pouvez le voir, nmap indique exactement tous les services démarrés sur ma machine. Pour informations, sachez qu'en pratique, il est très courant de ne pas attribuer le port 22 au SSH afin d'éviter des attaques au dictionnaire. Sur ces exemples, j'ai utilisé le scan par défaut de nmap qui est le TCP SYN, je vous laisse regarder le manuel pour voir les autres possibilités. Si vous souhaitez protéger votre système, n'oubliez surtout pas les ports UDP qui sont tout aussi dangereux : option -sU de nmap.

Il est très compliqué de se protéger face au balayage de ports. La plupart des firewalls utilisent une technique qui étudie les connexions : si la même adresse IP se connecte sur plusieurs ports, c'est surement une attaque et l'adresse est bloquée. La meilleure prévention, je pense, est tout simplement de faire attention aux services que vous lancez.