Nmap (“Network Mapper”) est un outil open source d'exploration réseau et d'audit de sécurité. Il a été conçu pour rapidement scanner de grands réseaux, mais il fonctionne aussi très bien sur une cible unique.
Dans mon tutoriel, j'utiliserai mes poste personnel l'un sur Debian et le second sur Archlinux.
sudo apt-get install nmap
ou pour ceux qui utilisent aptitude avec des droit root bien sur.
aptitude install nmap
Un GUI existe dans les dépots, pour l'installer
sudo apt-get install zenmap
Vous pouvez l'installer via le Software Center ou la logithèque Ubuntu en tapant nmap dans le filtre de recherche.
Pareil pour Zenmap.
Installation Archlinux
pacman -S nmap
Dépendances optionnelles pour nmap
pygtk: pour avoir le GUI pour Nmap
pacman -S pygtk
Installation de Zenmap et Nmap sous Fedora
yum install nmap-frontend
On va commencer par tester un scan basique avec Nmap avec la commande nmap adress_ip
coyotus@Debian ~ $ sudo nmap 192.168.1.11 Starting Nmap 5.00 ( http://nmap.org ) at 2010-11-10 15:34 CET All 1000 scanned ports on 192.168.1.11 are filtered MAC Address: XX:XX:XX:XX:XX:XX (Asustek Computer) Nmap done: 1 IP address (1 host up) scanned in 21.50 seconds
On obtient ainsi des simple information, l'adresse mac et que l'adresse ip est active.
Ensuite on peut scanner les ports facilement en lançant la commande suivante:
sudo nmap 192.168.1.1 -p 1-65535
Explication de la commande:
sudo: dans le cas ou sudo est installé pour lancer la commande avec des droit super utilisateur.
nmap: est bien sur l'application à utiliser on l'avais facilement deviné.
-p: et une des option de Nmap dans le cas présent l'option <plage>: Ne scanne que les ports spécifiés
1-65535: la plage de port spécifié dans notre exemple de 1 à 65535
pour mon exemple j'ai effectué la commande sur ma box une bbox2 de chez belgacom
coyotus@Debian ~ $ sudo nmap 192.168.1.1 -p1-65535 Starting Nmap 5.00 ( http://nmap.org ) at 2010-11-05 17:29 CET Interesting ports on 192.168.1.1: Not shown: 65523 closed ports PORT STATE SERVICE 23/tcp open telnet 80/tcp open http MAC Address: 00:XX:XX:XX:XX:XX (Sagem Communication) Nmap done: 1 IP address (1 host up) scanned in 23.69 seconds
Dans cet exemple vous voyez les port ciblé l'état des port (ouvert ou fermé) et le service concerné dans notre exemple telnet et http qui sert au navigateur internet.
on va scanner le poste Archlinux de notre réseau
coyotus@Debian ~ $ sudo nmap 192.168.1.11 -p1-65535 Starting Nmap 5.00 ( http://nmap.org ) at 2010-11-05 17:36 CET All 65535 scanned ports on 192.168.1.11 are closed MAC Address: XX:XX:XX:XX:XX:XX (Asustek Computer) Nmap done: 1 IP address (1 host up) scanned in 2.17 seconds
et là on vois que tout les port sont fermé
pareil depuis le poste Archlinux.
root@archlinux ~ $ sudo nmap 192.168.1.11 -p1-65535 Starting Nmap 5.21 ( http://nmap.org ) at 2010-11-05 17:41 CET All 65535 scanned ports on 192.168.1.11 are closed MAC Address: 00:XX:XX:XX:XX:XX (Giga-byte Technology Co.) Nmap done: 1 IP address (1 host up) scanned in 2.17 seconds
l'option sP: Ping Scan - Ne fait que déterminer si les hôtes sont en ligne
coyotus@Debian ~ $ sudo nmap -sP 192.168.1.11 Starting Nmap 5.00 ( http://nmap.org ) at 2010-11-05 17:45 CET Host 192.168.1.11 is up (0.000079s latency). MAC Address: 00:XX:XX:XX:XX:XX (Asustek Computer) Nmap done: 1 IP address (1 host up) scanned in 0.36 seconds
L'option -sL liste rapidement tout les poste susceptible d'être scanné
coyotus@Debian ~ $ sudo nmap -sL 192.168.1.11 Starting Nmap 5.00 ( http://nmap.org ) at 2010-11-05 17:53 CET Host 192.168.1.11 not scanned Nmap done: 1 IP address (0 hosts up) scanned in 0.10 seconds
Dans notre exemple seul le poste Archlinux apparait car les poste qui restent ne sont pas actuellement connecté ni allumé (je possède encore des poste en wifi)
L'option -O: Active la détection d'OS
coyotus@Debian ~ $ sudo nmap -O 192.168.1.1 Starting Nmap 5.00 ( http://nmap.org ) at 2010-11-05 18:03 CET Interesting ports on 192.168.1.1: Not shown: 993 closed ports PORT STATE SERVICE MAC Address: 00:XX:XX:XX:XX:XX (Sagem Communication) Device type: general purpose Running: Linux 2.6.X OS details: Linux 2.6.X - 2.6.XX Network Distance: 1 hop OS detection performed. Please report any incorrect results at http://nmap.org/submit/ . Nmap done: 1 IP address (1 host up) scanned in 2.42 seconds
Dans notre exemple je viens de scanner l'OS de ma box très utile afin de trouver le kernel utilisé dans le cas d'un Linux et éventuellement se renseigner sur les failles connue sur celui-ci et de le mettre à jour afin de corriger celle-ci.
–osscan-limit: Limite la détection aux cibles prométeuses –osscan-guess: Détecte l'OS de façon plus agressive –osscan-guess: Devine l'OS de facon plus agressive
Mettre le résultat d'une commande Nmap dans un fichier texte.
Exemple:
nmap -iflist > liste
Cette commande créera un fichier texte avec le résultat de votre commande dans votre dossier personnel “/home/dossier personnel/liste”, il suffira de le lire avec votre éditeur de texte préféré ou avec “cat”
Maintenant nous allons scanner un site distant avec l'option -v Cette option scanne tous les ports réservés TCP sur la machine du site ciblé . L'option -v active le mode verbeux.
coyotus@Debian ~ $ sudo nmap -v site-cible.fr Starting Nmap 5.00 ( http://nmap.org ) at 2010-11-07 09:21 CET NSE: Loaded 0 scripts for scanning. Initiating Ping Scan at 09:21 Scanning XXX.XXX.XXX.XX [4 ports] // ici on découvre l'ip du site cible Completed Ping Scan at 09:21, 0.08s elapsed (1 total hosts) Initiating Parallel DNS resolution of 1 host. at 09:21 Completed Parallel DNS resolution of 1 host. at 09:21, 0.05s elapsed Initiating SYN Stealth Scan at 09:21 Scanning ns1.XXXX-nom.com (194.150.236.25) [1000 ports] Discovered open port 3306/tcp on 194.150.236.25 Discovered open port 53/tcp on 194.150.236.25 Discovered open port 80/tcp on 194.150.236.25 Discovered open port 22/tcp on 194.150.236.25 Discovered open port 10000/tcp on 194.150.236.25 Completed SYN Stealth Scan at 09:22, 4.12s elapsed (1000 total ports) Host ns1.XXXX-nom.com (194.150.236.25) is up (0.060s latency). Interesting ports on ns1.XXXX-nom.com (XXX.XXX.XXX.XX): // entreparenthèse (IP) Not shown: 993 closed ports PORT STATE SERVICE 22/tcp open ssh 25/tcp filtered smtp 53/tcp open domain 80/tcp open http 646/tcp filtered ldp 3306/tcp open mysql 10000/tcp open snet-sensor-mgmt Read data files from: /usr/share/nmap Nmap done: 1 IP address (1 host up) scanned in 4.47 seconds Raw packets sent: 1031 (45.340KB) | Rcvd: 1022 (40.888KB)
L'option -sP: Ping Scan - Ne fait que déterminer si les hôtes sont en ligne -P0: Considère que tous les hôtes sont en ligne – évite la découverte des hôtes
coyotus@Debian ~ $ sudo nmap -sP 192.168.1.11 [sudo] password for coyotus: Starting Nmap 5.00 ( http://nmap.org ) at 2010-11-10 15:25 CET Host 192.168.1.11 is up (0.000079s latency). MAC Address: XX:XX:XX:XX:XX:XX (Asustek Computer) Nmap done: 1 IP address (1 host up) scanned in 0.33 seconds
Un ping simple peut ne pas aboutir alors que Le nmap scan lui , est capable de détecter la présence d'une cible même si le trafic ICMP est bloqué , en effet le ping nmap envoie deux datagramme , un ICMP echo request et un packet TCP ACK , ce dernier détecte la présence de notre cible.
Exemple de ping non abouti:
coyotus@Debian ~ $ sudo ping 192.168.1.11 PING 192.168.1.11 (192.168.1.11) 56(84) bytes of data. ^C --- 192.168.1.11 ping statistics --- 136 packets transmitted, 0 received, 100% packet loss, time 135498ms
RPC Scan (-sR) :
Ce scan est utilisé pour identifier le service RPC sur notre machine cible . Le scan vérifie si le service est présent . Les RPC sont des programmes qu'on peut utilisé pour accéder à un système comme si il était installé sur notre propre machine depuis la machine cible, il utilise généralement le port 135
il y as très peu de chance d'avoir une réponse positive à cette commande mais elle est parfois utiliser pour vérifier leurs existence lors d'un pentest wink .
Examinez les ports à l’écoute sur votre machine.
coyotus@Debian ~ $ nmap localhost Starting Nmap 5.00 ( http://nmap.org ) at 2011-03-13 10:22 CET Warning: Hostname localhost resolves to 2 IPs. Using 127.0.0.1. Interesting ports on localhost.localdomain (127.0.0.1): Not shown: 996 closed ports PORT STATE SERVICE 25/tcp open smtp 80/tcp open http 631/tcp open ipp 3306/tcp open mysql Nmap done: 1 IP address (1 host up) scanned in 0.09 seconds
Le paramètre -A permet de détecter en plus le système d’exploitation distant et sa version. Pour cela un ou plusieurs ports doivent être ouverts. Mieux : nmap interroge chaque service associé aux ports trouvés quand c’est possible pour récupérer des informations.
coyotus@Debian ~ $ nmap -A 192.168.1.1 Starting Nmap 5.00 ( http://nmap.org ) at 2011-03-13 10:28 CET Interesting ports on 192.168.1.1: Not shown: 993 closed ports PORT STATE SERVICE VERSION 23/tcp open telnet Sagem router telnetd 80/tcp open http? |_ html-title: Belgacom 443/tcp open ssl/https? |_ sslv2: server still supports SSLv2 |_ html-title: Belgacom 992/tcp open ssl/telnet Sagem router telnetd |_ sslv2: server still supports SSLv2 8080/tcp open http-proxy? 8085/tcp open unknown 8443/tcp open ssl/https-alt? |_ sslv2: server still supports SSLv2 |_ html-title: Belgacom
Détecter si quelqu'un sniffe le réseau Local.
nmap --script=sniffer-detect 192.168.1.0/24
(192.168.1.0/24 à adapter à votre réseau)
Le script cherche les cartes réseau en promiscuous mode (mode indispensable pour pouvoir sniffer)
Source: k0n1k
Détecter un serveur DHCP
Voici la commande Nmap permettant de détecter la présence de serveur DHCP sur un réseau via le script « dhcp-discovery.nse » mais aussi de récupérer les informations (plage réseau, DNS et passerelle) qu’il transmet lors d’une requête DHCP demandant l’attribution d’une adresse IP :
nmap -sU -p 67-68 –script dhcp-discover 192.168.1.0/24
Source: http://www.secuip.fr/hack/detecter-un-s … -avec-nmap
En parlant de script, il existe des script nmap à utiliser en complément. Plus d'info sur les lien suivant.
http://wiki.spiritofhack.net/index.php/ … ing_engine
Voici une nmap cheat sheet : http://www.infographiste-prod.ch/la_hye … etv1.0.pdf
Merci au blog de la_hyene pour la découverte.
Certaine commandes ne nécessite pas de droit root et d'autres oui en cas de doute vous verrez cette alerte “requires root privileges. QUITTING!” vous saurez alors qu'il vous faut des droit root.
Résumé des option ou man-pages en français: http://nmap.org/man/fr/man-briefoptions.html
Exemple: http://nmap.org/man/fr/man-examples.html
Tutoriel source: http://raylook.blogspot.com/2010/06/port-scanning.html
Zenmap est une interface graphique officielle à Nmap, grâce à une série de modèles prédéfinis, elle permets de lancer des “scan” en un simple clic de souris.
Entrée dans le menu : Applications → Outils Système → Zenmap
Une alerte s'affiche alors pour vous prévenir que pour certaines commandes, il faut des droit root.
Pour lancer Zenmap avec des droit root il suffit de se logger en root avec “su” ou si vous utilisez “sudo”
sudo zenmap
Voici comment se présente l'insterface de Zenmap
Il suffit de spécifier la cible et de lancer le scan.
Une sélection de commande prédéfinie de scan est disponible dans le menu déroulant.
Aide et autre tutoriel
Nmap
http://gushyxio.net/nmap/index.php
http://raylook.blogspot.com/2010/06/port-scanning.html
http://nmap.org/man/fr/man-briefoptions.html
ZeNmap