Installer Nmap et scanner le réseau

De Wiki Amis SH
Aller à la navigation Aller à la recherche



Le wiki : Accueil - Administrateur - Bureautique - Développeur - Intégrateur - Marketing - Multimédia - Objets numériques - Jeux - We make Hack


Installer Nmap sur Debian

Installer Nmap depuis le dépôt

Installer NMAP :
sudo apt-get install nmap
Installer Zenmap GUI :
sudo apt-get install zenmap
# Installer une alternative à Zenmap qui n'est plus présent dans les dépôts de Linux Mint :
sudo apt install nmapsi4

Installer Nmap depuis le site officiel

# Installer nmap depuis le site officiel : https://nmap.org
wget https://nmap.org/dist/nmap-7.80-1.x86_64.rpm
wget https://nmap.org/dist/zenmap-7.80-1.noarch.rpm
# Installer Alien pour convertir les .rpm en .deb :
sudo apt install alien
sudo alien nmap-7.80-1.x86_64.rpm
sudo alien zenmap-7.80-1.noarch.rpm
# Installer nmap et zenmap :
sudo dpkg --install nmap_7.80-2_amd64.deb
sudo dpkg --install zenmap-7.80-2.noarch.deb
# L'installation n'aboutit pas sur Linux Mint 20.
# J'utilise nmap et nmapsi4 en tant que alternative.
# J'aurais encore du installer subversion et créer un lien symbolique, d'après Geekeries :
Source : https://geekeries.org/2016/03/mettre-a-jour-pour-nmap-en-7-10-sous-debian-8/

Les ports reconnus par NMAP

Consulter les 6 états de ports reconnus par NMAP : https://nmap.org/book/man-port-scanning-basics.html
Liste des numéros de port TCP et UDP et correspondance avec les services liés : https://en.m.wikipedia.org/wiki/List_of_TCP_and_UDP_port_numbers

Afficher les interfaces et les routes de l'hôte

nmap --iflist

Scanner avec Nmap

Scanner les ports les plus courants avec top-ports

nmap --top-ports 5 192.168.1.1
nmap --top-ports 10 192.168.1.1

Scanner les ports ouverts

Scann rapide

nmap -v -sS -A -T4 192.168.1.1

Scanner les ports ouverts de l'IP cible

nmap -sS 192.168.1.1

Starting Nmap 7.60 ( https://nmap.org ) at 2019-07-26 12:50 CEST
Nmap scan report for alien (192.168.1.64)
Host is up (0.000019s latency).
All 1000 scanned ports on alien (192.168.1.64) are closed

Nmap done: 1 IP address (1 host up) scanned in 1.68 seconds
Scanner tous les ports :
nmap -p "*" 192.168.1.1

Scanner pour savoir si un port est ouvert

nmap -sT -p 3127 127.0.0.1

Starting Nmap 7.60 ( https://nmap.org ) at 2019-07-26 12:52 CEST
Nmap scan report for localhost (127.0.0.1)
Host is up (0.000046s latency).

PORT     STATE  SERVICE
3127/tcp closed ctx-bridge

Nmap done: 1 IP address (1 host up) scanned in 0.04 seconds

Scanner les services en écoute sur localhost

nmap -sT -O localhost

Tester si le port 80 est ouvert

# Scanner port 80
nmap -p 80 192.168.1.1
# Scanner TCP port 80
nmap -p T:80 192.168.1.1
# Scanner UDP port 53
nmap -p U:53 192.168.1.1
# Scanner deux ports
nmap -p 80,443 192.168.1.1
nmap -sT -p 80 127.0.0.1

Starting Nmap 7.40 ( https://nmap.org ) at 2018-01-07 23:13 CET
Nmap scan report for localhost (127.0.0.1)
Host is up (0.00034s latency).
PORT   STATE SERVICE
80/tcp open  http

Nmap done: 1 IP address (1 host up) scanned in 0.05 seconds
nmap –O 192.168.1.64 -p 80 -sS

Starting Nmap 7.60 ( https://nmap.org ) at 2019-07-26 16:31 CEST
Failed to resolve "–O".
Nmap scan report for alien (192.168.1.64)
Host is up (0.000040s latency).

PORT   STATE  SERVICE
80/tcp closed http

Nmap done: 1 IP address (1 host up) scanned in 0.31 seconds

Scanner si le port 3306 est ouvert

nmap -sT -p 3306 127.0.0.1

Starting Nmap 7.40 ( https://nmap.org ) at 2018-01-07 23:10 CET
Nmap scan report for localhost (127.0.0.1)
Host is up (0.00055s latency).
PORT     STATE SERVICE
3306/tcp open  mysql

Nmap done: 1 IP address (1 host up) scanned in 0.05 seconds

Scanner les ports ouverts sur un serveur distant

nmap mysql-base.alwaysdata.net
Plus d'informations avec le paramètre -v pour le mode verbeux.
Starting Nmap 7.60 ( https://nmap.org ) at 2019-07-26 10:49 CEST
Nmap scan report for mysql-base.alwaysdata.net (185.31.40.56)
Host is up (0.031s latency).
Other addresses for mysql-base.alwaysdata.net (not scanned): 2a00:b6e0:1:100:12::1
rDNS record for 185.31.40.56: mysql12.paris1.alwaysdata.com
Not shown: 997 closed ports
PORT     STATE    SERVICE
135/tcp  filtered msrpc
139/tcp  filtered netbios-ssn
3306/tcp open     mysql
Nmap done: 1 IP address (1 host up) scanned in 7.66 seconds
Trois ports dont celui de MySQL est ouvert. Lors de mes précédents tests, un seul port était ouvert pour le service MySQL de alwaysdata.

Scanner une plage de ports

nmap -p 80-200 192.168.1.1

Scanner un hôte avec un protocole de ping par IP

nmap -PO 192.168.1.1

Scanner un hôte avec un protocole UDP de ping par IP

nmap -PU 192.168.1.1

Scanner les ports ouverts sur un serveur distant avec -A -T4

nmap -A -T4 mysql-base.alwaysdata.net
Plus d'informations avec le paramètre -v pour le mode verbeux.
Starting Nmap 7.60 ( https://nmap.org ) at 2019-07-26 10:51 CEST
Nmap scan report for mysql-base.alwaysdata.net (185.31.40.56)
Host is up (0.031s latency).
Other addresses for mysql-base.alwaysdata.net (not scanned): 2a00:b6e0:1:100:12::1
rDNS record for 185.31.40.56: mysql12.paris1.alwaysdata.com
Not shown: 997 closed ports
PORT     STATE    SERVICE     VERSION
135/tcp  filtered msrpc
139/tcp  filtered netbios-ssn
3306/tcp open     mysql       MySQL 5.5.5-10.1.31-MariaDB
| mysql-info: 
|   Protocol: 10
|   Version: 5.5.5-10.1.31-MariaDB
|   Thread ID: 224527878
|   Capabilities flags: 65535
|   Some Capabilities: Support41Auth, Speaks41ProtocolOld, LongColumnFlag, SupportsTransactions, ConnectWithDatabase, SwitchToSSLAfterHandshake, IgnoreSigpipes, SupportsLoadDataLocal, InteractiveClient, Speaks41ProtocolNew, ODBCClient, SupportsCompression, DontAllowDatabaseTableColumn, IgnoreSpaceBeforeParenthesis, LongPassword, FoundRows, SupportsMultipleStatments, SupportsAuthPlugins, SupportsMultipleResults
|   Status: Autocommit
|   Salt: fgSJVT$QPy59^LCH#s>y
|_  Auth Plugin Name: 94

Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 8.06 seconds
Trois ports dont celui de MySQL est ouvert. Lors de mes précédents tests, un seul port était ouvert pour le service MySQL de alwaysdata.

Scanner plusieurs réseaux avec NMAP

nmap 192.168.1.1 192.168.1.2 192.168.1.3
nmap 192.168.1.1,2,3
nmap 192.168.1.1-20
nmap 192.168.1.*
nmap 192.168.1.0/24
Scanner plusieurs réseaux depuis un fichier texte /tmp/test.txt contenant :
visionduweb.fr
192.168.1.0/24
192.168.1.1/24
10.1.2.3
localhost
La commande pour lancer le scann :
nmap -iL /tmp/test.txt

Exclure un hôte

nmap 192.168.1.0/24 --exclude 192.168.1.5,192.168.1.254
# Exclure une liste d'hôtes depuis un fichier :
nmap -iL /tmp/scanlist.txt --excludefile /tmp/exclude.txt

Vérifier si un hôte est protégé par un firewall

Attention : C'est une adresse IP distante qui doit être interrogée car la boucle local est autorisée dans les règles de pare-feu. 
nmap -sA 192.168.1.64

Starting Nmap 7.60 ( https://nmap.org ) at 2019-07-26 11:32 CEST
Nmap scan report for alien (192.168.1.64)
Host is up (0.000014s latency).
All 1000 scanned ports on alien (192.168.1.64) are unfiltered

Nmap done: 1 IP address (1 host up) scanned in 1.69 seconds
# A ce niveau la du scann, on apprend que d'après NMAP, les ports ne sont pas filtrés.
# Il serait donc nécessaire de définir des règles complémentaires pour filtrer correctement les données.
# Si tous les ports d'un hôte reviennent comme étant filtrés un pare-feu est certainement configuré pour supprimer tout le trafic qui y est dirigé.
# État non filtré :
# L'état non filtré signifie qu'un port est accessible, mais NMAP n'est pas en mesure de déterminer s'il est ouvert ou fermé.
# Seul l'analyse ACK, utilisée pour mapper les ensembles de règles de pare-feu, classe les ports dans cet état.
# L'analyse des ports non filtrés avec d'autres types d'analyse, tels que l'analyse de fenêtre, l'analyse SYN ou l'analyse FIN, peut aider à déterminer si le port est ouvert.
# État filtré :
# NMAP ne peut pas déterminer si le port est ouvert car le filtrage de paquets empêche ses sondes d'atteindre le port.
# Le filtrage peut provenir d'un dispositif de pare-feu dédié, de règles de routeur ou d'un logiciel de pare-feu basé sur l'hôte.
# Ces ports frustrent les attaquants car ils fournissent très peu d'informations.
# Parfois, ils répondent avec des messages d'erreur ICMP tels que le code de type 3 code 13 (destination inaccessible: communication interdite par l'administration).
# Les filtres qui abandonnent simplement des sondes sans répondre sont beaucoup plus courants.
# Cela oblige Nmap à réessayer plusieurs fois au cas où la sonde serait abandonnée à cause de la congestion du réseau plutôt que du filtrage.
# Cela ralentit considérablement l’analyse.
# Filtré ou non filtré, est-ce raisonnable ?
# Lors du balayage des systèmes non filtrés, les ports ouverts et fermés renverront tous les deux un paquet RST.
# NMAP les étiquette alors comme non filtrés, ce qui signifie qu'ils sont accessibles par le paquet ACK, mais qu'ils soient ouverts ou fermés est indéterminé.
# Les ports qui ne répondent pas ou renvoient certains messages d'erreur ICMP (type 3, code 0, 1, 2, 3, 9, 10 ou 13) sont étiquetés comme étant filtrés.
# L'état est soit ouvert, filtré, fermé ou non filtré.
# - Ouvrir signifie qu'une application sur la machine cible est à l'écoute des connexions / paquets sur ce port.
# - Filtré signifie qu'un pare-feu, un filtre ou un autre obstacle réseau bloque le port de sorte que Nmap ne puisse pas dire s'il est ouvert ou fermé.
# - Aucune application n'écoute les ports fermés, bien qu'ils puissent s'ouvrir à tout moment.
# - Les ports sont classés comme non filtrés lorsqu'ils répondent aux sondes de Nmap, mais Nmap ne peut pas déterminer s'ils sont ouverts ou fermés.
# Nmap signale les combinaisons d'états ouvert | filtré et fermé | filtré lorsqu'il ne peut pas déterminer lequel des deux états décrit un port.
# Il semble que le comportement normal d'un port fermé soit plus proche de l'action iptables REJECT que de DROP.

Scanner un hôte protégé par un firewall

# Connaître l'état d'ouverture des ports :
nmap -PN 192.168.1.64
nmap -T4 -n -PN --send-ip 192.168.1.64

Starting Nmap 7.60 ( https://nmap.org ) at 2019-07-26 12:19 CEST
Nmap scan report for 192.168.1.64
Host is up (0.000019s latency).
All 1000 scanned ports on 192.168.1.64 are closed

Nmap done: 1 IP address (1 host up) scanned in 1.70 seconds

Scanner uniquement les ports ouverts ou potentiellement ouverts

nmap --open 192.168.1.1

Starting Nmap 7.60 ( https://nmap.org ) at 2019-07-26 16:09 CEST
Nmap scan report for livebox (192.168.1.1)
Host is up (0.0033s latency).
Not shown: 843 closed ports, 148 filtered ports
Some closed ports may be reported as filtered due to --defeat-rst-ratelimit
PORT      STATE SERVICE
53/tcp    open  domain
80/tcp    open  http
139/tcp   open  netbios-ssn
443/tcp   open  https
445/tcp   open  microsoft-ds
5060/tcp  open  sip
9000/tcp  open  cslistener
49152/tcp open  unknown
49153/tcp open  unknown
MAC Address: 84:A0:6E:86:10:A5 (Unknown)

Nmap done: 1 IP address (1 host up) scanned in 10.20 seconds

Scanner une adresse IPv6

nmap -6 ::1

Starting Nmap 7.60 ( https://nmap.org ) at 2019-07-26 14:33 CEST
Nmap scan report for localhost (::1)
Host is up (0.000031s latency).
Not shown: 999 closed ports
PORT    STATE SERVICE
631/tcp open  ipp

Nmap done: 1 IP address (1 host up) scanned in 1.67 seconds
# Ici on observe que cups écoute sur le port 631 de localhost.

Trouver le serveur DHCP avec NMAP

Comment trouver le serveur DHCP avec NMAP : https://memo-linux.com/comment-trouver-le-serveur-dhcp-avec-nmap/

Scanner les protocoles disponibles

nmap -sO 192.168.1.1

Analyser un hôte à l'aide d'un ping TCP ACK (PA) et TCP Syn (PS)

nmap -PS 192.168.1.1

Starting Nmap 7.60 ( https://nmap.org ) at 2019-07-26 17:13 CEST
Nmap scan report for livebox (192.168.1.1)
Host is up (0.0029s latency).
Not shown: 843 closed ports, 148 filtered ports
PORT      STATE SERVICE
53/tcp    open  domain
80/tcp    open  http
139/tcp   open  netbios-ssn
443/tcp   open  https
445/tcp   open  microsoft-ds
5060/tcp  open  sip
9000/tcp  open  cslistener
49152/tcp open  unknown
49153/tcp open  unknown
MAC Address: 84:A0:6E:86:10:A5 (Unknown)

Nmap done: 1 IP address (1 host up) scanned in 149.12 seconds

Scanner les ports TCP les plus couramment utilisés avec TCP SYN Scan

# Stealthy scan #
nmap -sS 192.168.1.1
# Find out the most commonly used TCP ports using  TCP connect scan (warning: no stealth scan)
#  OS Fingerprinting #
nmap -sT 192.168.1.1
# Find out the most commonly used TCP ports using TCP ACK scan
nmap -sA 192.168.1.1
# Find out the most commonly used TCP ports using TCP Window scan
nmap -sW 192.168.1.1
# Find out the most commonly used TCP ports using TCP Maimon scan
nmap -sM 192.168.1.1

Analyser un hôte pour les services UDP

nmap -sU 192.168.1.1

Scanner les versions des services installés

nmap -sV 192.168.1.1

Exporter le résultat d'un scann vers un fichier

nmap 192.168.1.1 > output.txt
nmap -oN /path/to/filename 192.168.1.1
nmap -oN output.txt 192.168.1.1

Attaquer sur les ports

Attaquer un site, charger un shell, supprimer un site avec NMAP

Tester si des machines sont encore vulnérables à MS17-010

Il peut être utile de tester si des machines de votre réseau sont vulnérables à WannaCry (Bulletin CVE-2017-0143 ou MS17-010).
nmap -sC -p 445 --script smb-vuln-ms17-010.nse 139.99.173.195

Starting Nmap 7.60 ( https://nmap.org ) at 2019-07-26 17:26 CEST
Nmap scan report for visionduweb.fr (139.99.173.195)
Host is up (0.41s latency).

PORT    STATE    SERVICE
445/tcp filtered microsoft-ds

Nmap done: 1 IP address (1 host up) scanned in 4.97 seconds

Sécurité sur les ports

Détecter et bloquer les attaques de balayage de ports en temps réel avec psad

https://www.cyberciti.biz/faq/linux-detect-port-scan-attacks/

Lister les ports utilisés avec Netstat

Netstat - est un outil de surveillance de réseau en ligne de commande open source qui surveille le trafic des paquets réseau entrants et sortants.
http://www.tecmint.com/12-tcpdump-commands-a-network-sniffer-tool/
Netstat permet de connaître les ports en écoute sur votre machine, sur quelles interfaces, avec quels protocoles de transport (TCP ou UDP), les connexions actives et de connaître les routes.
Pour voir les connexions actives netstat -nt, pour les ports ouverts netstat -ntl. On peut aussi vérifier s'il existe une route par défaut.
Par exemple existe-t-il une route par défaut vers la machine 213.186.xx.xx utilisez alors netstat -nr | grep 213.186.xx.xx.
L'option -a énumère les ports en cours d'utilisation ou ceux qui sont écoutés par le serveur : netstat -a ou netstat -a |grep ssh.
Retourne la liste avec le nom des services, donne des informations sur les interfaces réseau : netstat -a | grep 'listen' -i.
Des informations, paquets reçus, perdus, forwardés, taille options,..., sur le trafic réseau dans le protocole donné : netstat -p ip.
-a : Tous les ports
-t : Tous les ports TCP
-u : Tous les ports UDP
-l : Tous les ports en écoute
-n : Affiche directement les IP. Pas de résolution de nom.
-p : Affiche le nom du programme et le PID associé.
Liste les adresses locales utilisées :
netstat -ltunp
netstat -paunt
netstat -taupeln
netstat -lapute
netstat -anpe

Lister les ports ouverts avec ss

# La commande ss est utilisée pour afficher les statistiques de ports.
# Elle permet d'afficher des informations similaires à netstat et peut afficher d'avantage d'informations TCP et d'état que d'autres outils.
sudo ss -tulpn
#  Afficher les sockets TCP (-t) à l'état LISTEN (-l) avec le numéro de port associé (-n).
# Regarder alors quelle est l'adresse (Local Address) associée au port.
# Si c'est 127.0.0.1, le socket est en écoute uniquement sur l'interface locale (loopback).
ss -ltn
State    Recv-Q    Send-Q        Local Address:Port        Peer Address:Port    
LISTEN   0         128           127.0.0.53%lo:53               0.0.0.0:*       
LISTEN   0         5                 127.0.0.1:631              0.0.0.0:*       
LISTEN   0         80                127.0.0.1:3306             0.0.0.0:*       
LISTEN   0         128                       *:80                     *:*  

Lister les ports ouverts avec netstat

# Utiliser grep pour n'afficher que les ports en écoute :
sudo netstat -tulpn | grep LISTEN
tcp        0      0 127.0.0.53:53           0.0.0.0:*               LISTEN      908/systemd-resolve 
tcp        0      0 127.0.0.1:631           0.0.0.0:*               LISTEN      965/cupsd           
tcp6       0      0 ::1:631                 :::*                    LISTEN      965/cupsd

Vérifier que le serveur Apache2 écoute bien sur le port 80

# Lancer la commande netstat depuis la machine qui héberge le serveur apache :
netstat -ntlp | grep ":80"
tcp  0 0 :::80  :::*  LISTEN 3996/httpd

Lister les services utilisant un port

netstat -anlp | grep 3000
tcp6       0      0 :::3000                 :::*                    LISTEN      4692/gitea

Vérifier si vous êtes victime d'une attaque DoS

netstat -an | grep SYN
# Si les adresses des attaquants se trouvent dans les logs d'Apache, alors ce n’est pas un SYN flood et l'activation des syncookies est inefficace.
# Rappel :
# SYN flood = création de connexions semi-ouvertes par l'envoi de paquets SYN seuls sans confirmer la connexion. L'application n’est pas informée.
# Présence dans les logs de l'application = conn

Lister les ports ouverts avec lsof

lsof -i -P -n | grep LISTEN
systemd-r  908 systemd-resolve   13u  IPv4  23440      0t0  TCP 127.0.0.53:53 (LISTEN)
cupsd      965            root    6u  IPv6  31840      0t0  TCP [::1]:631 (LISTEN)
cupsd      965            root    7u  IPv4  31841      0t0  TCP 127.0.0.1:631 (LISTEN)

Identifier un port avec /etc/services/ | grep

cat /etc/services | grep 3127

Solutions alternatives à nmap

Masscan

# Masscan est un scanner de port à l'échelle d'Internet.
# Il peut analyser l'intégralité d'Internet en moins de 6 minutes, transmettant 10 millions de paquets par seconde, à partir d'une seule machine.
# Son entrée / sortie est similaire à nmap.
# Il est flexible, permettant des plages de ports et d'adresses arbitraires.
# Il utilise des transmissions asynchrones, similaires aux scanners de ports comme scanrand, unicornscan et ZMap.
# Masscan utilise sa propre pile TCP / IP personnalisée.
# Tout autre élément que les simples analyses de port peut provoquer un conflit avec la pile TCP / IP locale.
Dépôt officiel sur Github : https://github.com/robertdavidgraham/masscan
# Une tentative de test d'installation sur Kali Linux est restée en échec.
# A suivre.

Zmap

# ZMap est un scanner réseau rapide à un seul paquet conçu pour les enquêtes sur le réseau Internet.
# Avec une connexion 10gigE et PF_RING, ZMap peut scanner l'espace d'adressage IPv4 en moins de 5 minutes.
# Sur un ordinateur de bureau typique avec une connexion Ethernet gigabit, ZMap est capable de numériser tout l'espace d'adressage IPv4 public en moins de 45 minutes.
Le dépôt Github de Zmap : https://github.com/zmap/zmap
Site officiel : https://zmap.io

Autres scanners

 Les scanner de ports TCP et UDP : https://www.frameip.com/scanner-port-tcp-udp/

Bibliographie

 Techniques de scann : https://nmap.org/man/fr/
 https://nmap.org/man/fr/man-port-scanning-techniques.html
 https://www.cyberciti.biz/networking/nmap-command-examples-tutorials
 https://www.memoinfo.fr/tutoriels-linux/tuto-nmap-scaner-les-ports-ouverts/
 https://www.linux.com/learn/zenmap-tutorial-audit-your-networks-using-nmap-gui
 Introduction à TCP - UDP - NMAP : https://web.archive.org/web/20150619141531/http://openclassrooms.com/courses/introduction-au-scan-de-ports
Tester l'ouverture d'un port : https://www.starmate.fr/tester-louverture-dun-port/

NAVIGATION

PARTICIPER ET PARTAGER

Bienvenue sur le wiki de Amis SH.
De nombreuses pages sont partagées sur ce wiki.
Créer un compte utilisateur pour participer sur le wiki.
Les pages présentées sur le wiki évoluent tous les jours.
Certaines recherches sont peu abouties et incluent des erreurs.
Utiliser la recherche interne du wiki pour trouver votre contenu.
La page de discussion de Amis SH vous permet de poser vos questions.
Consulter le site amis-sh.fr pour installer votre propre serveur web.
Améliorer le contenu des pages avec vos retours depuis l'onglet discussion.
Ce contenu ne doit pas servir à nuire à autrui ou à un système informatique.
Protéger votre système Linux ou Windows avec cette page dédiée à la sécurité.

SOUTENIR CE WIKI

Soutenir le wiki avec un don en monnaie numérique :
AEON - Bitcoins - Bitcoins Cash - Bitcoins Gold - Bitcore - Blackcoins - Basic Attention Token - Bytecoins - Clams - Dash - Monero - Dogecoins - Ğ1 - Ethereum - Ethereum Classique - Litecoins - Potcoins - Solarcoins - Zcash

OBTENIR DE LA MONNAIE NUMERIQUE

Obtenir gratuitement de la monnaie numérique :
Miner de la cryptomonnaie.