Nmap est un scanneur/analyseur de machines tres connus et tres evolue. Mais beaucoup de fonctions de nmap sont ignorees des utilisateur, et ce petit tuto va vous les faires decouvrir :) (bien qu'on puisse toujours se taper un man nmap ou en nmap -h mais c'est moins marrant ^^). Je ne detaillerais ici que les fonctions les plus importantes.
Notez quand meme qu'il est plus conseille de lancer nmap en tant que root (sous linux) ou administrateur sous windows, ou autre en super-utilisateur a cause de fonctions tels que les raw-sockets etc qui ne sont pas toujours permises en tant qu'utilisateur normal.. (tout en gardant a l'esprit les risques de l'utilisation de ces comptes ;) ).
Pour comprendre les subtilites des méthodes de scanning, il peut etre utile de connaître la formation et les différents types de paquets(SYN,ACK,RST..) ainsi que leurs effets. Si vous n'etes pas sur d'être au point, je vous conseil de lire un cours traitant du sujet :)
Pour finir cette introduction, nmap est disponible sur le site www.insecure.org
2: TYPES DE SCANS:
L'utilisateur normal utilisera par défaut la commande -sT, cette commande utilise envoie simplement une requête de connexion sur chaques ports, si la machine répond, le port est ouvert. Cette technique est particulièrement facile à détecter.
Le root benificis de la commande -sS par défaut, un peu plus élaboré que -sT. Cette commande envoie un paquet SYN au serveur et attend une réponse, si la réponse est un paquet SYN ou ACK, le port est ouvert, nmap envoie alors un paquet RST pour interrompre la demande de connexion.
Selon le standard, un port ferme renvoie un RST, la fonction -sF utilise se principe et envoie un paquet FIN nu pour voir la réaction du serveur. A note que pour que cette fonction fonctionne, le serveur distant doit êtres conforme aux standards, ce type de scan ne fonctionne donc pas pour les systèmes Windows, Cisco, BSDI, HP/UX, MVS et IRIX..
Nmap intègre aussi la fonction ping avec l'option -sP mais sachez que cette méthode peut être bloquer (comme d'autres méthodes de scan par ailleurs..). Il est conseille de ne pas utilise cette option lors d'une analyse de ports.
Les techniques de scan ci-dessus scannait uniquement les port TCP, la fonction -sU analyse les ports UDP, cette méthode peut être particulièrement longue a cause des restrictions des OS (sauf pour Windows qui ne donne pas de restriction :D ).
Pour les paranos (c'est bien utile parfois d'être parano ^^), nmap intègre la fonction -sI qui prend pour paramètre une adresse IP. L'avantage est que les systèmes de détections auront comme IP l'IP passe en paramètre qui doit bien sur être active et a peu près répondre normalement ^^.
Sachez que le résultat obtenu est en fonction de l'IP en paramètre, ainsi, en utilisant une IP de confiance, vous aurez les infos comme si vous étiez vous même une IP de confiance :)
Exemple: nmap -sI 216.236.39.104 193.252.122.103 scan Wanadoo avec l'IP de google.
Une option intéressante est -sA qui est utilise pour déterminer les règles des pare-feux utilises sur les machines distantes; nmap affiche uniquement les ports filtres, il se peut donc que vous n'obteniez aucun résultat si tout les ports sont filtres sur la machine distante.
3: OPTIONS SUPPLEMENTAIRES:L'option -h affiche une petite aide :)
Option très utile: -P0 qui est nécessaire pour scanner les IPs qui ne répondent pas a un ping (donc qui refuses les requêtes ou réponses ICMP).
L'option -PS permet un scan standard avec des paquets SYN pour les utilisateurs root.
Option intéressante: -0 qui détecte le système d'exploitation distant a l'aide de quelques spécificité propres a chaque OS. Notes qu'avec l'option -v (décrite plus loin, vous aurez plus d'informations).
Pour connaître l'utilisateur d'un processus connecte via TCP, vous pouvez utiliser l'option -I (utile pour savoir si un processus tourne sous root ^^). Notez tout de fois que cela fonctionne que si l'hote utilise identd..
L'option -v donne plus de détail quand a ce qui se passe avec nmap, je vous recommande de l'activer toujours (ce que je fais moi même), elle peut être utilisée deux fois pour un effet plus important.
Vous voulez juste testez un échantillon de ports, l'option -p est faites pour vous! Elle prend en argument le ou les ports a scanner. Sachez qu'un scan sans -p scan juste les ports de 1 a 1024, l'option -p vous permet aussi de choisir de scanner les ports TCP ou UDP en les faisant précéder respectivement d'un T ou d'un U (n'oubliez pas un -sU si vous voulez scanner des ports UDP ;) ).
Exemple 1: nmap -sU -p U:14,120,T:21,80 216.236.39.104 scan les ports UDP 14 et 120 et les ports TCP 21 et 80.
Exemple 2: nmap -sU -p 18-21,60000- 216.236.39.104 scan les ports TCP 18 a 21 et supérieurs a 60000.
Si vous voulez specifier le port source de votre scan, vous pouvez utiliser l'option -g suivit du port pour duper le pare-feux distant et faire croire par exemple que l'ont est un serveur DNS ^^
Il est aussi possible de demander a nmap de faire ou ne pas faire de résolution DNS (que se soit pour les performances ou autre..), respectivement on utile alors les option -R ou -n.
Pour changer le mode de vitesse du scan nmap intègre la fonction -T suivis du niveau de précaution à prendre. Ces niveau de précautions sont (du plus lent au plus rapide): Paranoid, Sneaky, Polite, Normal, Agressive, Insane (Normal étant le mode par défaut). Notes que l'utilisation du mode Paranoid est quand même très longue (5min entre chaque envoie de paquet.. :S).
4: Scanner un interval d'IP:Pour scanner de nombreuse adresse IP (sur un port particulier ou non), il suffit de spécifier l'adresse IP a scanner de la manière suivante: 195.123.*.* (les * indiquant toutes les combinaisons possibles), nmap scannera toute la classe réseaux commencant par 195.123.
Une IP écrite: 195.128.125.12-234 demande de scanner les IP comprise entre 195.128.125.12 et 195.128.125.234.
Notes que les * ou les - peuvent être utilises dans n'importe quelle champ de l'adresse IP, pour peut que ça ait un sens (245-322 veut rien dire par exemple ;) ).