===== Quelques exemples pratiques de l'utilisation de la commandes NMAP ===== {{:systeme:nmap_logo.png?nolink&150 |}}Nmap est un scanner de ports libre.\\ Il est conçu pour détecter les ports ouverts, identifier les services hébergés et obtenir des informations sur le système d'exploitation d'un ordinateur distant. \\ Ce logiciel est devenu une référence pour les administrateurs réseaux, car l'audit des résultats de Nmap fournit des indications sur la sécurité d'un réseau. \\ Il est disponible sous Windows, Mac OS X, Linux, BSD et Solaris. Le code source de Nmap est disponible sous la licence GNU GPL. \\ Dans cet article, nous allons couvrir quelques exemples pratiques de la commande NMAP sous Linux. \\ Les principales utilisations de nmap sont: * Déterminer les ports et les services ouverts en cours d'exécution dans un hôte * Déterminer le système d'exploitation exécuté sur un hôte * Usurpé l'adresse IP source (consistera à utiliser l'option -S) ~~READMORE~~ ==== Installation de NMAP ==== Sur Debian/Ubuntu : aptitude install nmap Sur CentOS/RedHat : yum install nmap ==== découverte d'hôtes sur un sous réseau ==== Cette commande est généralement un simple ''scan ping''.\\ Parfois vous voulez juste savoir quels sont les hôtes actifs d'un réseau.\\ Nmap peut le faire pour vous en envoyant des paquets d'écho ICMP à chaque adresse IP du réseau spécifié.\\ Les hôtes qui répondent sont actifs.\\ Malheureusement, certains sites bloquent les paquets d'écho.\\ Toutefois nmap peut aussi envoyer un paquet TCP ACK au port 80 (par défaut).\\ Si vous recevez un RST en retour, la machine est active.\\ Une troisième technique consiste à envoyer un paquet SYN et d'attendre un RST ou un SYN/ACK.\\ N'utilisez cette option que si vous voulez faire un balayage de ping sans faire d'analyse de ports. nmap -sP 192.168.1.0/24 Starting Nmap 6.47 ( http://nmap.org ) at 2015-06-27 20:52 CEST Nmap scan report for 192.168.1.14 Host is up (0.0036s latency). MAC Address: Nmap scan report for 192.168.1.254 Host is up (0.00031s latency). MAC Address: Nmap scan report for 192.168.1.250 Host is up. Nmap done: 256 IP addresses (3 hosts up) scanned in 7.76 seconds ==== Scanner les ports ouverts ==== Cette commande est l'utilisation par défaut de NMAP.\\ Il faudra du temps pour que NMAP vous donne la réponse, il va tenter une connexion TCP SYN sur 1000 ports, les plus communs ainsi qu'une demande d'écho ICMP pour déterminer si un hôte est actif.\\ nmap va également effectuer une recherche DNS inversée sur les IP identifiées, cela peut parfois être des informations utiles. nmap 192.168.1.0/24 Starting Nmap 6.47 ( http://nmap.org ) at 2015-06-27 20:53 CEST Nmap scan report for 192.168.1.14 Host is up (0.0060s latency). All 1000 scanned ports on 192.168.1.14 are filtered MAC Address: Nmap scan report for 192.168.1.254 Host is up (0.00046s latency). Not shown: 995 closed ports PORT STATE SERVICE 53/tcp open domain 80/tcp open http 139/tcp open netbios-ssn 631/tcp open ipp 8200/tcp open trivnet1 MAC Address: Nmap scan report for 192.168.1.250 Host is up (0.000012s latency). Not shown: 996 closed ports PORT STATE SERVICE 22/tcp open ssh 80/tcp open http 111/tcp open rpcbind 443/tcp open https Nmap done: 256 IP addresses (3 hosts up) scanned in 205.61 seconds ==== Identifier le système d’exploitation d'un hôte ==== Pour identifier le système d'exploitation d'un hôte à l'aide de nmap, vous pouvez le faire avec l'option -O.\\ Mais l'analyse du système d'exploitation exige les privilèges root.\\ nmap -O 192.168.1.254 Starting Nmap 6.47 ( http://nmap.org ) at 2015-06-27 21:01 CEST Nmap scan report for 192.168.1.254 Host is up (0.00047s latency). Not shown: 995 closed ports PORT STATE SERVICE 53/tcp open domain 80/tcp open http 139/tcp open netbios-ssn 631/tcp open ipp 8200/tcp open trivnet1 MAC Address: Device type: switch|media device|general purpose Running: HP embedded, Philips embedded, Linux 2.6.X OS CPE: cpe:/o:linux:linux_kernel:2.6 OS details: HP Brocade 4Gb SAN switch or, Linux 2.6.15 - 2.6.26 (likely embedded) 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 189.64 seconds ==== Identifier les noms d'hôtes ==== NMAP vous permet de trouver des noms d'hôte pour tous les IP dans un sous-réseau sans avoir envoyer un paquet à l'individu. L'option -SL de NMAP permet de faire une requête DNS simple pour l'IP spécifiée.\\ Cette analyse ne nécessite pas les privilèges root. nmap -sL 172.16.0.0/24 Starting Nmap 6.47 ( http://nmap.org ) at 2015-06-27 21:01 CEST Nmap scan report for 172.16.0.0 Nmap scan report for router.local (172.16.0.1) Nmap scan report for myhost.local (172.16.0.2) Nmap scan report for another.myhost.local (172.16.0.3) ==== Scanne TCP et UDP port ==== Cette commande nmap -sS -sU -PN vérifiera environ 2000 ports TCP et UDP commun pour voir s'ils répondent. \\ Lorsque vous utilisez l'option -Pn, NMAP va considérer tous les hôtes comme étant connectés, saute l'étape de découverte des hôtes.\\ Cela peut être utile pour vérifier si un pare-feu empêche réponses ICMP.\\ Cette analyse nécessite un des privilèges root.\\ nmap -sS -sU -PN 192.168.1.100 Starting Nmap 6.47 ( http://nmap.org ) at 2015-06-27 21:31 CEST Nmap scan report for 192.168.1.100 Host is up (0.00029s latency). Not shown: 1494 closed ports, 496 filtered ports PORT STATE SERVICE 88/tcp open kerberos-sec 139/tcp open netbios-ssn 445/tcp open microsoft-ds 631/tcp open ipp 88/udp open|filtered kerberos-sec 123/udp open ntp 137/udp open netbios-ns 138/udp open|filtered netbios-dgm 631/udp open|filtered ipp 5353/udp open zeroconf ==== Scanne tous les ports TCP et UDP ==== Cette commande nécessite les privilèges root et il est le même que ci-dessus mais en spécifiant la plage complète des ports de 1 à 65535 NMAP va scanner pour voir si l'hôte est à l'écoute sur tous les ports disponibles.\\ nmap -sS -sU -PN -p 1-65535 192.168.1.250 Starting Nmap 6.47 ( http://nmap.org ) at 2015-06-27 22:02 CEST Nmap scan report for 192.168.1.250 Host is up (0.00029s latency). Not shown: 131052 closed ports PORT STATE SERVICE 88/tcp open kerberos-sec 139/tcp open netbios-ssn 445/tcp open microsoft-ds 631/tcp open ipp 17500/tcp open unknown 88/udp open|filtered kerberos-sec 123/udp open ntp 137/udp open netbios-ns 138/udp open|filtered netbios-dgm 631/udp open|filtered ipp 5353/udp open zeroconf 17500/udp open|filtered unknown 51657/udp open|filtered unknown 54658/udp open|filtered unknown 56128/udp open|filtered unknown 57798/udp open|filtered unknown 58488/udp open|filtered unknown 60027/udp open|filtered unknown ==== Scanné les connexions TCP ==== Cette commande va demander à l'OS d'établir une connexion TCP vers les 1000 ports communs. nmap -sT 192.168.1.110 Starting Nmap 6.47 ( http://nmap.org ) at 2015-06-27 22:46 CEST Nmap scan report for 192.168.1.110 Host is up (0.0014s latency). Not shown: 964 closed ports, 32 filtered ports PORT STATE SERVICE 88/tcp open kerberos-sec 139/tcp open netbios-ssn 445/tcp open microsoft-ds 631/tcp open ipp ==== Scanne rapide ==== Vous pouvez utiliser ce scanne pour vérifier les 100 ports les plus courants. nmap -T4 -F 192.168.1.99 Starting Nmap 6.47 ( http://nmap.org ) at 2015-06-27 23:00 CEST Nmap scan report for 192.168.1.99 Host is up (0.00047s latency). Not shown: 96 closed ports PORT STATE SERVICE 88/tcp open kerberos-sec 139/tcp open netbios-ssn 445/tcp open microsoft-ds 631/tcp open ipp ==== Scanne agressif et envahissant de numérisation ==== Pas comme les commandes antérieures cette analyse est très agressif et très envahissant.\\ L'option -A va effectuer une vérification du système d'exploitation et une vérification de version ainsi que l'utilisation de traceroute. \\ Le -T4 est pour le modèle de vitesse ainsi que le nom de la machine cible. nmap -A -T4 192.168.1.0/24 Starting Nmap 6.47 ( http://nmap.org ) at 2015-06-27 23:40 CEST Nmap scan report for 192.168.1.250 Host is up (0.000010s latency). Not shown: 996 closed ports PORT STATE SERVICE VERSION 22/tcp open ssh OpenSSH 6.7p1 Debian 5 (protocol 2.0) |_ssh-hostkey: ERROR: Script execution failed (use -d to debug) 80/tcp open http Apache httpd |_http-title: Apache2 Debian Default Page: It works 111/tcp open rpcbind 2-4 (RPC #100000) | rpcinfo: | program version port/proto service | 100000 2,3,4 111/tcp rpcbind | 100000 2,3,4 111/udp rpcbind | 100024 1 41789/udp status |_ 100024 1 59267/tcp status 443/tcp open ssl/http Apache httpd |_http-title: Apache2 Debian Default Page: It works | ssl-cert: Subject: commonName=note-home | Not valid before: 2015-04-22T18:45:08+00:00 |_Not valid after: 2025-04-19T18:45:08+00:00 |_ssl-date: 1987-01-04T01:09:35+00:00; -28y174d20h34m03s from local time. Device type: general purpose Running: Linux 3.X OS CPE: cpe:/o:linux:linux_kernel:3 OS details: Linux 3.7 - 3.15 Network Distance: 0 hops Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel ==== Verbeux ==== Quand vous ajoutez ''verbose'' à la ligne de commande, vous obtiendrez une meilleure information. nmap -A -T4 -v 192.168.1.250 Starting Nmap 6.47 ( http://nmap.org ) at 2015-06-27 23:51 CEST NSE: Loaded 118 scripts for scanning. NSE: Script Pre-scanning. Initiating Parallel DNS resolution of 1 host. at 23:51 Completed Parallel DNS resolution of 1 host. at 23:51, 0.00s elapsed Initiating SYN Stealth Scan at 23:51 Scanning 192.168.1.250 [1000 ports] Discovered open port 80/tcp on 192.168.1.250 Discovered open port 111/tcp on 192.168.1.250 Discovered open port 443/tcp on 192.168.1.250 Discovered open port 22/tcp on 192.168.1.250 Completed SYN Stealth Scan at 23:51, 2.02s elapsed (1000 total ports) Initiating Service scan at 23:51 Scanning 4 services on 192.168.1.250 Completed Service scan at 23:51, 12.15s elapsed (4 services on 1 host) Initiating OS detection (try #1) against 192.168.1.250 NSE: Script scanning 192.168.1.250. Initiating NSE at 23:51 NSOCK ERROR [17.3740s] mksock_bind_addr(): Bind to 0.0.0.0:53 failed (IOD #19): Address already in use (98) Completed NSE at 23:51, 1.57s elapsed Nmap scan report for 192.168.1.250 Host is up (0.000014s latency). Not shown: 996 closed ports PORT STATE SERVICE VERSION 22/tcp open ssh OpenSSH 6.7p1 Debian 5 (protocol 2.0) |_ssh-hostkey: ERROR: Script execution failed (use -d to debug) 80/tcp open http Apache httpd |_http-methods: GET HEAD POST OPTIONS |_http-title: Apache2 Debian Default Page: It works 111/tcp open rpcbind 2-4 (RPC #100000) | rpcinfo: | program version port/proto service | 100000 2,3,4 111/tcp rpcbind | 100000 2,3,4 111/udp rpcbind | 100024 1 41789/udp status |_ 100024 1 59267/tcp status 443/tcp open ssl/http Apache httpd |_http-methods: GET HEAD POST OPTIONS |_http-title: Apache2 Debian Default Page: It works | ssl-cert: Subject: commonName=note-home | Issuer: commonName=note-home | Public Key type: rsa | Public Key bits: 2048 | Not valid before: 2015-04-22T18:45:08+00:00 | Not valid after: 2025-04-19T18:45:08+00:00 | MD5: f091 c3ca 70dd 72ea be91 f2ea 39ca 59cc |_SHA-1: c21d 4ebf 85f7 e610 fbee c75c 9093 1b03 6aa3 52d4 |_ssl-date: ERROR: Script execution failed (use -d to debug) Device type: general purpose Running: Linux 3.X OS CPE: cpe:/o:linux:linux_kernel:3 OS details: Linux 3.7 - 3.15 Uptime guess: 0.365 days (since Sat Jun 27 15:05:26 2015) Network Distance: 0 hops TCP Sequence Prediction: Difficulty=259 (Good luck!) IP ID Sequence Generation: All zeros Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel NSE: Script Post-scanning. Read data files from: /usr/bin/../share/nmap OS and Service detection performed. Please report any incorrect results at http://nmap.org/submit/ . Nmap done: 1 IP address (1 host up) scanned in 18.79 seconds Raw packets sent: 1078 (50.184KB) | Rcvd: 2170 (95.364KB) ==== Usurpation d’adresse IP source ==== Pour faire cela, nous allons utiliser l'option ''-S'' suivit '''': nmap -e eth0 -Pn -S 192.9.204.1 192.9.204.111 -p80 Nmap scan report for toto.test.loc (192.9.204.111) Host is up (0.00046s latency). PORT STATE SERVICE 80/tcp open http MAC Address: Nmap done: 1 IP address (1 host up) scanned in 0.63 seconds ==== Usurpation d'addresse MAC ==== Pour faire cela, nous utiliserons l'option ''--spoof-mac'' nmap --spoof-mac 01:02:03:04:05:06 127.0.0.1 nmap --spoof-mac Cisco 127.0.0.1 Starting Nmap 6.47 ( http://nmap.org ) at 2015-06-29 09:08 CEST Spoofing MAC address 00:00:0C:F7:EB:11 (Cisco Systems) Nmap scan report for localhost (127.0.0.1) Host is up (0.0000090s latency). Not shown: 996 closed ports PORT STATE SERVICE 22/tcp open ssh 25/tcp open smtp 111/tcp open rpcbind 3306/tcp open mysql Nmap done: 1 IP address (1 host up) scanned in 2.52 seconds ==== Choisir un fichier de sortie pour y écrire les résultats d'un scanne ==== nmap -oN resultat 127.0.0.1 nmap -oX resultat.xml 127.0.0.1 ==== Trace les paquets et les données envoyés et reçus. ==== Pratique pour vérifier qu'une usurpation fonctionne : nmap --packet-trace -S 10.0.0.0 -eth0 127.0.0.1 ==== Option intéressante ==== Presque toutes les options de scanne disponibles dans la commande NMAP on été vu ensemble.\\ Mais quelques options non pas été traité : * **--ttl ** : Ce paramètre permet de modifier la valeur TTL (Time To Live, en français durée de vie) des paquets de test envoyés par Nmap. * **--mtu ** : L'option --mtu permet de spécifier la taille du fragment offset. Cette option est très souvent associé avec **-f** pour forcer la fragmentation des paquets * **-D ** : Cette option permet d'obscurci le scanne avec des leurre, en dissimulant notre scanne parmi des scannes fictifs d'hôtes dans la liste decoy1, decoy2, etc. Effectivement, des paquets simulant un scan de 5 à 10 ports sont envoyés vers l'hôte scanné afin de noyer notre IP.\\ Exemple : nmap -n -e eth0 172.10.1.1 -D 172.10.1.12,172.10.1.13 -p 80 Par ailleurs, l'option NE permet de positionner sa véritable adresse dans la liste des decoys. Si NE est positionné en sixième position ou au delà, la probabilité pour qu'un IDS ne repère pas notre IP est plus élevée. * **-g/--source-port ** : Utilise le numéro de port comme source, certains par-feu mal paramétrés peuvent baser leur confiance sur le port source des paquets.\\ Ainsi par exemple, si un par-feu ne laisse écouter le port 21 qu'en provenance du port 20, il est possible de modifier le scanne en utilisant le port source 20.\\ Exemple : nmap -sS -g 20 -p 21 172.10.1.18 Si vous souhaitez inclure une option dans cette liste, faite le savoir. sources: [[https://nmap.org/man/fr/man-briefoptions.html|nmap.org]], [[http://www.delafond.org/traducmanfr/man/man1/nmap.1.html|delafond.org]]