Vous êtes sur la page 1sur 43

Scan de ports

nmap
15 janvier 2016

Support avec
correction
There’s a difference between knowing the path and wal-
king the path
Morpheus

TSEF Chapin Mickael


mickael.chapin@intradef.gouv.fr

ADJ Olivier LE BRUN


olivier.le-brun@intradef.gouv.fr

Cours Sécurité Réseaux


Table des matières

1 Premiers pas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.1 Nmap 4
1.2 Installation 6

2 Mise en œuvre . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
2.1 Cartographie réseau 9
2.2 Inventaire des ports 13

3 Mise en œuvre de scripts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24

4 Synthèse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32

5 IDLE SCAN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
5.1 Rappel connection TCP 33
5.2 Rappel IP 33
5.3 Mise en œuvre du scan 33
5.4 Exemple de mise en pratique 34

6 Résumé des options . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37


6.1 Spécification des cibles 37
6.2 Découvertes des hôtes 37
6.3 Techniques de scan 38
6.4 Spécifications des ports et ordre de scan 38
6.5 Détection de service/Version 38
2

6.6 Script Scan 39


6.7 Détection de système d’exploitation 39
6.8 Temporisation et performance 39
6.9 Evasion pare-feu/IDS et Usurpation d’identité 40
6.10 Sortie/Output 40
6.11 Divers 41

7 sources . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42

TD-Scan-de-ports(correction) Version 1.2a


Nmap
Installation

1. Premiers pas

Objectif
Comprendre et savoir exploiter un scanner de ports.

Un scanner de ports est un logiciel dont le but principal est de réaliser l’inventaire
des ports ouverts sur une machine distante.

Question 1

Qu’est-ce qu’un port ?

Solution 1 Un port est l’adresse d’une application sur une machine.

Avant de scanner un poste distant, ou un réseau, on peut s’interroger sur les ports
ouverts sur notre machine.

# netstat -ntaup
1.1 Nmap 4

Au travers de cette commande, nous pouvons constater que, sur notre poste, il y
a des ports ouverts. Les services associés sont soit en écoute ”LISTEN” soit connecté
”ESTABLISHED”.

Question 2

Que signifie ”LISTEN” et ”ESTABLISHED”?

Solution 2 Un service (ou application) a pour état ”LISTEN” lorsqu’il est actif et
en attente de connexion. Si l’état est ”ESTABLISHED” cela signifie qu’un client est
connecté au service.

1.1 Nmap
Durant la suite du TP, nous utiliserons l’outil ”Nmap” développé par Fyodor et
distribué par insecure.org.
L’utilisation de cette outil se fait en ligne de commande ou via une interface graphique.
Nmap repose sur des protocoles tels que TCP, UDP, IP ou ICMP. Par défaut
Nmap scanne les ports de 1 à 1024 et les ports indiqués dans le fichier nmap-services. Il se
base sur les réponses particulières qu’il obtient à des requêtes spécifiques pour obtenir une
empreinte de la pile IP. Chaque système d’exploitation utilise la pile IP différemment.Les
paquets spécifiques sont générés au travers de paquets IP brut (raw paquets). C’est par
cette méthode que l’outil reconnaı̂t la version d’un système d’exploitation ainsi que la
version des services en écoute.
Nmap reconnait 6 états de ports :
Open
Closed
Filtered
Unfiltered
Open | Filtered
Closed | Filtered
Open
Une application qui tourne sur la machine cible accepte les connexions TCP ou les
paquets UDP sur ce port.
Closed
Accessible (reçoit et répond aux paquets envoyés par Nmap) mais il n’y a pas
d’application à l’écoute sur ce port. Cela permet de savoir qu’une machine est ”UP” et
de détecter sa version d’OS.
Filtered
Nmap n’a pas pu determiner l’état du port. Cela peut être causé par un firewall
(réseau ou local), des règles de routage (acl)... L’inconvénient, c’est que ces cas là Nmap
va tenter plusieurs fois le scan.
Unfiltered
Le port est accessible mais Nmap ne peut determiner si il est ouvert ou fermé. Dans
ce cas là il faut tester avec d’autres options (Windows scan, FIN scan,...).

TD-Scan-de-ports(correction) Version 1.2a


1.1 Nmap 5

Open | filtered
Nmap ne peut déterminer si le port est ouvert ou filtré. Cela peut être du à l’absence
de réponse.
Closed | Filtered
Nmap ne peut déterminer si le port est fermé ou filtré.

Lors de l’exécution d’un scan, Nmap réalise les étapes suivantes :

Script pre-scanning (NSE) : Utilisation de scripts spéciaux afin d’obtenir plus


d’information sur les systèmes distants. Utilisé seulement avec les options --script
ou -Sc. Par exemple, dhcp-discover et broadcast-dns-service-discovery qui
utilisent des requètes de broadcast pour obtenir des informations sur les services
réseaux courant.
Target enumeration : Nmap liste les cibles fournies (Nom DNS, adresses IP,...).
Si ce sont des adresses IP qui sont fournies, cette phase sera alors simplifiée. Avec
les options -n -SL (balayage sans résolution DNS inverse), Nmap affiche les cibles
et n’effectue pas d’autre numérisation de cible.
Host discovery (ping scan) : Recherche sur le réseau des postes en lignes pour
limiter la durée du scan. Nmap peut également réaliser cette recherche sur le réseau
avec des requêtes ARP rapide ou d’autre type de sondes. Cette phase est exécutée
par défaut mais on peut la désactivée avec l’option -Pn. Cela sous entend que l’on
est sûr de la présence des hôtes scannés. Avec les options -n -sn on stoppe le scan
juste après cette étapes.
Reverse-DNS resolution : Une fois que Nmap a identifié les hôtes à scannés, il
cherche à résoudre les noms FQDN/DNS. Cette étape peut être évitée avec l’option
-n ou bien étendue également au hôtes non accessibles avec l’option -r.
Port Scanning : Fonction de base de Nmap. Les sondes sont envoyées et les
réponses ( ou absence de réponses) sont utilisées pour classer les ports distants
dans les différents états. Le scan peut être évité avec l’option -sn. Nmap continuera
avec les étapes suivantes comme Traceroute ou Script scanning.
Version detection : Si le port distant est ouvert, alors Nmap va comparer les
réponses obtenues avec sa base de données de plus de 6500 signatures de services
connus. Activée avec l’option -sV.
OS detection : Active seulement avec l’option -O. Nmap se base sur les différentes
implémentation des standards réseaux par les OS.
Traceroute : Nmap contient une implémentation optimisée de traceroute, activée
avec l’option --traceroute. Il peut trouver les routes vers les différents hôtes en
parallèle en utilisant des sondes optimisées par les phases de découvertes précédentes.
Cela implique souvent une nouvelle recherche DNS-inverse.
Scrip scanning (NSE) : La plupart des scripts NSE s’effectuent durant cette
phase plutôt que durant les phases PRE ou POST scanning. NSE repose sur le
langage de programmation Lua et une librairie standard concue pour la collecte
d’information réseau. Durant cette phase, les scripts sont exécutés une fois pour
chaque cible et numéro de port associés. Ils effectuent les tâches courantes telles
que la détection de vulnérabilité de services, découverte de logiciel malveillant,
détection de version avancé,... Cette phase n’est exécuté que si les options --script
ou -Sc sont fournies.
Output : Au final Nmap affiche à l’écran ou dans un fichier les résultats des phases
précédentes.

TD-Scan-de-ports(correction) Version 1.2a


1.2 Installation 6

Script post-scanning : A la fin de l’exécution de Nmap, les scripts déclarés


peuvent réaliser un traitement sur les résultats. Il n’existe pas encore de script
fournie par Nmap, cela reste à la charge de l’utilisateur.

Lors d’un scan d’un grand réseau, Nmap va réaliser ces différentes phases plusieurs
fois en réalisant un regroupement d’hôtes. Ainsi, Nmap scan un premier groupe, affiche
le résultat puis passe au groupe suivant.
En conclusion, Nmap est un outil très puissant, utilisé dans le cadre d’attaque
informatique ou d’audit de sécurité. Il faut apprendre à le maı̂triser avant de l’utiliser,
au risque de faire tomber le réseau. Pour en savoir plus lire le chapitre Préambule du
document L’inventaire de ports.pdf. Vous trouverez les options les plus courantes dans la
partie résumé des options de ce document.

1.2 Installation
Sous Debian, ouvrir le gestionnaire de paquets ”synaptique” ou ”paquets”, rechercher
nmap et zenmap :

Synaptic

Paquets

TD-Scan-de-ports(correction) Version 1.2a


1.2 Installation 7

TD-Scan-de-ports(correction) Version 1.2a


Cartographie réseau
Inventaire des ports

2. Mise en œuvre

Comme évoqué précédemment, l’utilisation de Nmap peut se faire


— en ligne de commande
Ouvrez un terminal et faites une élévation de privilège afin d’être root au travers de la
commande su.

— au travers d’une interface graphique. Cette interface graphique se trouve dans vos
applications ou peut être appelée avec la commande zenmap.
2.1 Cartographie réseau 9

Vous devez également disposer de Wireshark en écoute sur l’interface réseau active.

Rmq Pour identifier l’interface active, utilisez la commande ip a ou ip link show.


L’interface active sera celle avec la valeur ”state UP”.

2.1 Cartographie réseau


Dans le cadre d’un contrôle technique, avant de faire l’inventaire des services offerts par
les machines du réseau contrôlé, il est souhaitable de disposer de la liste des équipements
présents. Cette documentation est à comparer à la cartographie obtenue afin de déceler
d’éventuels écarts.
Lisez le chapitre 5 La cartographie de réseau du document L’inventaire de ports.pdf
et répondez aux questions suivantes :

Question 3

Quel est l’utilité d’effectuer une requête ICMP à destination de la machine cible ?

TD-Scan-de-ports(correction) Version 1.2a


2.1 Cartographie réseau 10

Solution 3 Cela évite de scanner des systèmes éteints et accélère donc le scan.

Question 4

Pourquoi cela n’est-il pas suffisant ?

Solution 4 Certaines machines ne répondent pas aux requêtes ICMP, c’est par exemple
le cas si elles sont situées derrière un pare-feu qui l’interdit.

Question 5

Quelles sont les autres possibilités de tester la présence de machines sur le réseau ?

Solution 5 La sollicitation d’un port TCP ou UDP supposé ouvert, ou une interrogation
ARP en broadcast.

Les principales options qui permettent de tester la présence de la machine cible


préalablement au scan de port proprement dit sont résumées dans le tableau ci-dessous :

Test de présence Fonction


-PE Envoi d’un paquet ICMP-Echo-Request
-PA Le test de présence se fait par envoi d’un TCP Ack
-PS Le test de présence se fait par envoi d’un TCP Syn
-PU Le test de présence se fait par envoi d’un paquet UDP vide
-PN Ne fait pas de test de présence (No ping)
-PR Scan ARP

Lors d’une cartographie du réseau, comme pour un scan de port, Nmap renseigne
par défaut le nom FQDN de la machine cible.

Question 6

Que signifie FQDN ? Quelles requêtes permettent de renseigner le FQDN ? Comment


l’éviter ?

Solution 6 FQDN : Full Qualified Domain Name ( Nom de domaine complet) Ce sont
des requêtes DNS PTR émises par le poste contrôleur :

TD-Scan-de-ports(correction) Version 1.2a


2.1 Cartographie réseau 11

Si vous souhaitez éviter d’émettre ces requêtes sur le réseau, vous pouvez utiliser
l’option –n de Nmap qui correspond dans zennmap à la case Disable reverse DNS
resolution :

TD-Scan-de-ports(correction) Version 1.2a


2.1 Cartographie réseau 12

Question 7

Effectuez un ping scan du réseau 172.XX.0.0/24. Que voyez-vous dans Wireshark ?


(XX représentant le numéro de la salle)

Solution 7

Dans Wireshark, nous voyons dans un premier temps des requêtes ARP, puis des
requêtes DNS PTR afin de réaliser une résolution de nom.

Question 8

Utilisez zenmap pour scanner les réseaux 172.XX.0.0/24 et 15.0.0.0/24, puis faites
apparaı̂tre la topologie de ces réseaux dans l’outil graphique.

Solution 8

TD-Scan-de-ports(correction) Version 1.2a


2.2 Inventaire des ports 13

2.2 Inventaire des ports


Le scan de ports permet de faire l’inventaire des services offerts par une machine. Il
consiste à envoyer des trames réseau vers la cible et à en déduire la liste des ports en
écoute.

Vous trouverez une aide complète dans le manuel de Nmap ainsi que dans le document
L’inventaire de ports.pdf au chapitre 6. Les principales options qui permettent de scanner
une machine ou un réseau sont résumées dans le tableau ci-dessous :

Option de Fonction
scan
-F Fast scan. Scan rapide, test de présence et nombre de ports réduits
(de l’ordre d’une centaine contre un millier sans l’option -F)
-sT TCP connect() scan : C’est la forme la plus simple de scan. Le scanner
reproduit la séquence Syn, Syn/Ack, Ack
-sP Ping Scan : ICMP-echo-request puis test du 443 et du 80. Test rapide
de présence de la cible.
-sS Cette technique est parfois appelée half-open scan ou scan semi-ouvert.
Contrairement au TCP Connect, en cas de réception d’un SYN/ACK
indiquant que le port est en écoute, le scanner envoie immédiatement
un RST pour interrompre prématurément la connexion afin de ne pas
être détecté.
-sA, -sF, Scans furtifs. Le but de ces différents scans est de provoquer une
-sM, -sN, réaction de la cible mais sans envoyer de SYN. Voir le chapitre 6.3 du
-sX document PDF joint.
-sO Scan de protocoles. Cette technique consiste à envoyer des trames
IP pures (sans couche supérieure TCP ni UDP) en renseignant le
champ protocole par toutes les valeurs possibles (de 1 à 255). Un
message ICMP Type 3 code 2 (Destination unreachable / Protocol
unreachable) indique un protocole non supporté.
-sU Scan UDP. La difficulté vient du fait qu’UDP est en mode déconnecté.
Cette technique consiste à envoyer sur chaque port UDP à tester une
trame UDP vide. Un port fermé est signalé par la station distante par
un message ICMP type 3 (port unreachable)
-sR RPC scan. Teste les Remote Procedure Calls. La version de RPC n’est
récupéré que pour les SUNRPC. Utilisez un autre outil pour Windows.
Voir chapitre 6.7 du document PDF joint.

TD-Scan-de-ports(correction) Version 1.2a


2.2 Inventaire des ports 14

Question 9

Effectuez un scan simple de 15.0.0.80 sans aucune option :

# nmap 15.0.0.80

Quels sont les ports ouverts ?

Solution 9

Question 10

Quel filtre d’affichage devez-vous définir dans Wireshark pour lister les ports en
écoute ?

Solution 10 tcp.flags.syn==1 and tcp.flags.ack==1

Question 11

Que constatez-vous ?

Solution 11 Le nombre de Syn/Ack observés dans Wireshark est différent du nombre


de ports ouverts : En effet, Nmap effectue d’abord un Syn vers le 443 avant de lancer
le scan des autres ports.

TD-Scan-de-ports(correction) Version 1.2a


2.2 Inventaire des ports 15

Question 12

Combien de port sont scannés ?

Solution 12 On compte le nombre de Syn envoyé par le PC Contrôleur (172.16.0.150).


C’est 645 dans notre cas :

Question 13

Par défaut, Nmap teste les ports aléatoirement. Pourquoi ?


Comment scanner les ports dans l’ordre ?

Solution 13 Pour tenter d’éviter la détection par les IDS. L’option -r supprime l’aléa.

Question 14

Quel fichier contient la liste des services à scanner ?

Solution 14 /usr/share/nmap/nmap-services

Question 15

Dans ce fichier, comment ajouter un service afin qu’il soit systématiquement pris en
compte par nmap ?

Solution 15 Pour ajouter un service à scanner, il suffit d’ajouter une ligne et de définir
sa représentativité ( open-frequency) à une valeur suffisante pour être systématique-
ment prise en compte (à titre d’information, les trois services les plus représentés sont :

http 80/tcp 0.484143


snmp 161/udp 0.433467
ipp 631/udp 0.450281
On peut facilement extraire les services les plus représentés par la commande :

TD-Scan-de-ports(correction) Version 1.2a


2.2 Inventaire des ports 16

# cut -f2,3 /usr/share/nmap/nmap-services |grep -v ^# |


sort -r -k2 |head -n 50

Définir une valeur open-frequency à 0.9 pour le service à scanner le fera prendre en
compte systématiquement.

Question 16

Sur une station identifiée à risque, il est parfois nécessaire d’effectuer un scan de la
totalité des ports. Effectuez ce test en TCP et UDP sur le serveur www.perseus.etrs.
Comparez les temps d’exécution avec les scans précédents.

Solution 16 A titre d’exemple, un scan simple : 0.19 seconde et un scan TCP et UDP
des 65535 ports : 8.10 secondes

Sur votre bureau, vous devez retrouver un raccourcis nommé ”Support” pointant
vers un espace de stockage contenant des machines virtuelles. Dans ce répertoire, allez
dans le dossier ”Machines Virtuelles” puis ”TP NMAP”. Vous devez retrouver 2 fichiers
représentant les machines virtuelles suivantes :
— Windows 7 (Seven-cible-nmap.ova)
— Windows exploitable (windowsploitable.ova)
Double-cliquez sur ces fichiers, cocher la case permettant de réinitialiser les adresses
mac et décocher la case activant le support USB.

Normalement, vous devez avoir une nouvelle machine virtuelle importée dans VirtualBox.
Cette machine virtuelle est pontée, le pare-feu Windows est désactivé. 2 possibilité de
configuration réseau :
— Elle est cliente DHCP.

TD-Scan-de-ports(correction) Version 1.2a


2.2 Inventaire des ports 17

— Elle n’obtient pas d’adresse IP, affectez-lui une adresse statique de la forme :
172.XX.150.ZZ/16. (ZZ représentant le dernier octet de l’adresse IP de votre
poste)

Rmq Il n’est pas nécessaire de renseigner une adresse de passerelle ni de serveur DNS

Rmq Répétez l’opération pour la deuxième machine virtuelle fournie. L’adresse IP à


renseigner , si nécessaire, sera la suivante : 172.XX.151.ZZ/16

Question 17

Effectuez un scan UDP des ports 135 à 139 de la machine Windows 7. Quels ports
sont ouverts ?

Solution 17 Les ports 137 et 139 sont ouverts :

Question 18

Que répond la machine Windows lorsqu’elle est sollicitée sur le port UDP 136 ?

Solution 18 Elle répond par un ICMP Type 3 code 3 (Destination unreachable,


Port unreachable) :

TD-Scan-de-ports(correction) Version 1.2a


2.2 Inventaire des ports 18

La phase suivante peut consister à déterminer la version du système d’exploitation


qui tourne sur l’hôte cible. Pour ce faire, nmap tente de récupérer des bannières ou envoie
des paquets mal-formés à la cible. La détection est basée dans ce cas sur la différence de
réaction des OS face aux paquets invalides.

Les options qui permettent d’identifier des services ou des machines sont résumées
dans le tableau dessous :

Option Fonction
-sV Détection de Version : La technique utilisée consiste à tenter de récupérer,
sur le service en écoute, une information (bannière de service, suite d’octet
représentatif, comportement particulier, etc.) qui sera ensuite comparée
à une base de connaissance.
-O OS détection. La récupération d’information est d’abord passive par
écoute puis le scanner tente de stimuler la pile TCP/IP de la cible en lui
envoyant des paquets mal formés afin de la faire parler. Certaines piles
TCP/IP peuvent réagir de façon incontrôlable, cela peut entraı̂ner une
masse de perturbations.

Question 19

Quel est la syntaxe de Nmap qui permet de détecter le système d’exploitation de


15.0.0.80 et quel est ce système ?

Solution 19 La commande :

#Nmap -O 15.0.0.80

TD-Scan-de-ports(correction) Version 1.2a


2.2 Inventaire des ports 19

C’est un Linux 3.2

Question 20

Dans l’OS détection, après avoir effectué un balayage des ports ouverts, le scanner
envoie des paquets mal formés à la cible. Donnez un exemple de paquet TCP non
conforme observé dans Wireshark ?

Solution 20 On observe içi un FIN,SYN,PUSH,URG :

TD-Scan-de-ports(correction) Version 1.2a


2.2 Inventaire des ports 20

Question 21

Donnez l’OS de la machine Windows 7.

Solution 21 La commande à utiliser est :

# nmap -O adresse_de_la_cible

C’est un Windows 7 :

Question 22

Donnez toutes les informations sur l’hôte à l’adresse 10.13.37.1

Solution 22 La commande à utiliser est :

# nmap -O -sT -sV -traceroute 10.13.37.1

TD-Scan-de-ports(correction) Version 1.2a


2.2 Inventaire des ports 21

Question 23

Quels sont les protocoles supportés par la machine Windows Seven ?

Solution 23 # nmap -sO adresse_de_la_cible

Les numéros 1, 6 et 17 à savoir ICMP, TCP et UDP.

Question 24

Quel numéro de type et numéro de code ICMP sont renvoyés au scanner si le


protocole n’est pas supporté ?

Solution 24 ICMP Type 3 code 2 (Destination unreachable, Protocol unrea-


chable) :

TD-Scan-de-ports(correction) Version 1.2a


2.2 Inventaire des ports 22

Question 25

Effectuez une détection de version des services se trouvant derrière les ports
25,143,587 et 993 de 15.0.0.143 ?

Solution 25

Question 26

Que fait le scanner après avoir vérifié que le port 25 est ouvert ?

TD-Scan-de-ports(correction) Version 1.2a


2.2 Inventaire des ports 23

Solution 26 Il tente de se connecter au serveur SMTP :

TD-Scan-de-ports(correction) Version 1.2a


3. Mise en œuvre de scripts

Nmap permet d’exécuter des scripts nse (NMAP Script Engine). Ces scripts mul-
tiplient encore les possibilités de Nmap en permettant d’effectuer des recherches plus
ciblées. Nmap est fourni avec un certain nombre de ces scripts, ils se trouvent dans
/usr/share/nmap/scripts.

Les scripts portent des noms parlants : dns-*.nse, ftp-*.nse, smb-*.nse ... et
appartiennent à une ou plusieurs catégories : catégorie par défaut, intrusive, sûre, ... Il
est possible d’exécuter un script, une famille de scripts (tout ce qui a pour objet le http
par exemple) ou tous les scripts d’une catégorie (la catégorie vuln concerne la recherche
de vulnérabilités par exemple).

Un simple grep permet de lister les catégories des différents scripts, limitées ici à
l’exploration du http :
25

Question 27

Quels sont les ports ouverts sur le serveur 15.0.0.180 ?

Solution 27 le 22, 80 et 111.

TD-Scan-de-ports(correction) Version 1.2a


26

Question 28

lancez le script banner.nse sur ce même serveur. Que constatez-vous ?

Solution 28 On affiche la version du serveur Openssh :

Question 29

lancez les scripts de la catégorie safe sur ce même serveur. Que constatez-vous ?

TD-Scan-de-ports(correction) Version 1.2a


27

Solution 29 Les résultats sont beaucoup plus détaillés, mais cela a nécessité presque
une minute.

Question 30

lancez le script http-enum.nse sur ce même serveur. Que constatez-vous ?

Solution 30 Le script énumère les répertoires intéressants d’un serveur web.

TD-Scan-de-ports(correction) Version 1.2a


28

Par défaut, ce script n’affiche que certains répertoires (ceux qui nécessitent un login par
exemple). On peut passer un argument pour faire afficher à Nmap tous les répertoires
du serveur.

Question 31

lancez le script http-enum.nse avec l’argument http-enum.displayall sur ce même


serveur.
Que constatez-vous ?

Solution 31 Le script énumère tous les répertoires d’un serveur web.

TD-Scan-de-ports(correction) Version 1.2a


29

Question 32

Utilisez le script smb-os-discovery contre la machine virtuelle Seven. A quel


Workgroup appartient-elle ?

Solution 32

Question 33

Utilisez le script banner contre la machine virtuelle Seven, en interrogeant les ports
des services de messagerie. Quelles informations voyez-vous apparaitre ?

Solution 33 Les bannières :

TD-Scan-de-ports(correction) Version 1.2a


30

Copiez le fichier script smb-vuln-ms08-067.nse qui se trouve dans les Documents


du serveur Moodle dans le répertoire /usr/share/nmap/scripts de votre machine.

Question 34

Que fait ce script ?

Solution 34 Il identifie les machines vulnérables à la faille 08-067

Question 35

Quel danger présente l’exécution de ce script pour la cible ?

Solution 35 Il peut faire planter la cible.

Question 36

Utilisez le script smb-vuln-ms08-067 contre la machine Windowsploitable.


Quelles informations voyez-vous apparaı̂tre ?

Solution 36 La machine XP est vulnérable :

TD-Scan-de-ports(correction) Version 1.2a


31

TD-Scan-de-ports(correction) Version 1.2a


4. Synthèse

Question 37

Scanner le réseau perseus (15.0.0.0/16) et établissez la cartographie.

Question 38

Question Bonus
Donner la cartographie de tous les réseaux connectés à la plate-forme PERSEUS.
Rappel connection TCP
Rappel IP
Mise en œuvre du scan
Exemple de mise en pratique
Trouver un ”complice”
Réalisation du scan

5. IDLE SCAN

Le scan de port TCP anonyme... ou comment scanner un hôte distant sans que
celui-ci ne connaisse notre adresse IP.
Pour bien comprendre ce type de scan, il faut au préalable se remémorer le fonction-
nement d’une connection TCP basée sur le protocole IP.

5.1 Rappel connection TCP


Une connection TCP s’établit en 3 phases :
• Envoie d’un segment SYN
• Réponse d’un segment SYN+ACK
• réponse d’un segment ACK

5.2 Rappel IP
Lors d’un échange avec le protocole IP, celui-ci supporte un IPID (IP identifier) qui
est un nombre codé sur 2 octets et contenu dans l’en-tête. ce nombre varie donc de 0
à 65535. Il est normalement incrémenté de 1 à chaque émission, et sert à retrouver les
fragments issus d’un même paquet quand celui-ci a été fragmenté en plusieurs paquets.
Exemple :
• j’envoie un paquet : IPID = 2145
• j’envoie un autre paquet : IPID = 2146
• j’envoie un autre paquet : IPID = 2147....

5.3 Mise en œuvre du scan


Maintenant que nous avons toutes les informations requises, nous allons pouvoir faire
notre scan ”furtif”. Pour cela le scénario sera le suivant :
• je recherche un poste ”complice” qui ne semble pas avoir beaucoup d’activité sur le
réseau ( afin de garantir l’enchaı̂nement de son IPID).
• je récupère son adresse IP ainsi que son IPID
• je scan un port sur l’hôte distant un utilisant l’adresse IP du ”complice”.
• je récupère le nouveau IPID du ”complice”.
5.4 Exemple de mise en pratique 34

Explication :
Comment faire pour récupérer l’IPID de notre ”complice”? Nous allons
effectuer un scan de port sur notre complice pour y trouver un port ouvert afin de lui
envoyer un SYN. Dès lors, notre ”complice” nous répondra avec un SYN+ACK dans
lequel on pourra lire dans l’en-tête IP son IPID. Par exemple, le IPID sera de 100.

Scan de la victime Maintenant nous envoyons un SYN vers notre victime avec
l’adresse de notre ”complice”. IL y a alors 2 cas possibles : Le port scanné est ouvert ou
fermé.
• Cas du port ouvert : Notre victime répond par un SYN+ACK vers l’adresse fournie
lors du scan à savoir celle de notre ”complice”. celui-ci n’étant pas à l’origine de
la demande, il va renvoyer un RST à notre victime. Son IPID passe alors à 101.
Il faut alors renvoyer un SYN sur le port ouver du ”complice” pour récupérer son
en-tête IP afin de lire son IPID. Celui-ci doit normalement avoir été incrémenté de
1, à savoir 102.
• Cas du port fermé : la victime renvoie un RST à notre ”complice” qui ne lui répond
pas. Son IPID reste à 100. On envoie un SYN à notre ”complice” qui nous répond
avec un SYN+ACK dans lequel nous récupérons
Intérêt :
Ce type de scan permet d’identifier de façon ”furtive” les ports ouverts sur un hôte
distant. cela permet par la suite de ne scanner que ces ports afin de récupérer plus
d’informations. Ce scan peut s’effectuer port par port est espacé dans le temps afin de
rester discret.
Attention, ce type de scan ne nous rend pas complètement ”furtif”. En effet, bien
que notre victime ne nous connaisse pas, elle connaı̂t le ”complice” qui lui nous connaı̂t.
Enfin, si il n’y a pas de log sur notre complice et que l’on passe par un routeur ou un
fournisseur d’accès, ceux-ci auront des logs ! ! ! !
Conclusion
Pour réussir notre scan IDLE, il nous faut :
• Un ”complice” avec un port ouvert
• Il faut que les IPID de notre ”complice” augmente exactement de 1 à chaque envoie.
• Il faut peut ou pas de traffic vers notre ”complice” afin de garantir le séquencement
de l’évolution de son IPID. (De préférence un poste Windows...)

5.4 Exemple de mise en pratique


5.4.1 Trouver un ”complice”
En partant du principe où nous sommes dans un réseau maı̂trisé , nous scannons
notre réseau en utilisant le protocole ICMP (ping).

TD-Scan-de-ports(correction) Version 1.2a


5.4 Exemple de mise en pratique 35

Ensuite nous devons déterminer qui à un port ouvert. Pour cela nous scannons les
postes accessibles un par un pour ne retenir qu’un poste utilisant windows.

Ici notre complice sera un poste Windows XP SP2.

5.4.2 Réalisation du scan


Nous allons utiliser le port 445 de notre ”complice” pour scanner l’hôte distant
10.8.98.98. Pour cela nous utiliserons la commande nmap -PO -sI 10.8.98.240 :445
10.8.98.98

TD-Scan-de-ports(correction) Version 1.2a


5.4 Exemple de mise en pratique 36

Explication
• L’option-PO est obligatoire, afin de ne pas effectuer de ping scan vers notre victime
• L’option -sI indique que nous faisons un idle scan.
• 10.8.98.240 :445 indique l’adresse IP et le port du ”complice” à utiliser
• 10.8.98.98 indique l’adresse IP de la victime.
• l’information Idle scan using zombie 10.8.98.240 (10.8.98.240:445) ; class:
Incremental nous indique que notre ”complice” implémente biens ses IPID de 1
et non pas de façon aléatoire.

Rmq Ouverture du port 80 sur le poste instructeur au travers de la commande :


python -m SimpleHTTPServer 80

Question 39

Par binôme
— Donnez l’adresse IP du poste ”attaquant”
— Scanner le port 80 du poste instructeur sans faire apparaı̂tre cette adresse...

TD-Scan-de-ports(correction) Version 1.2a


Spécification des cibles
Découvertes des hôtes
Techniques de scan
Spécifications des ports et ordre de scan
Détection de service/Version
Script Scan
Détection de système d’exploitation
Temporisation et performance
Evasion pare-feu/IDS et Usurpation d’iden-
tité
Sortie/Output
Divers

6. Résumé des options

6.1 Spécification des cibles


Les cibles peuvent êtres spécifiées par des noms d’hôtes, des adresses IP, ou des
réseaux.

Option de scan Fonction


-iL <inputfilename> Lit la liste des hôtes/réseaux cibles à partir du fichier
-iR <numhost> Choisit les cibles au hasard
--exclude Exclut des hôtes/réseaux du scan
<host1[,host2][,host3],...
--excludefile <exclude_file> Exclut des hôtes/réseaux du scan à partir d’un
fichier

6.2 Découvertes des hôtes


6.3 Techniques de scan 38

Option de scan Fonction


-sL List Scan - Liste simplement les cibles à scanner
-sP Ping Scan - Ne fait que déterminer si les hôste sont
en lignes
-P0 Considère que tous les hôtes sont en ligne - évite la
découverte des hôtes
-PN considère que tous les hôtes comme étant connectés
-saute l’étape de découverte des hôtes
-PS/PA/PU [portlist] Découverte TCP SYN/ACK ou UDP des ports en
paramètre
-PE/PP/PM Découverte de type requête ICMP echo, timestamp
ou netmask
-PO [num de protocole] Ping IP (par type)
-n/-R Ne jamais résoudre les noms DNS/Toujours résoudre
(les cibles actives par défaut)
--dns-servers Spécifie des serveurs DNS particuliers
<ser1[,serv2],...>

6.3 Techniques de scan

-sS/sT/sA/sW/sM Scan TCP SYN/Connetc()/ACK/Window/Maimon


-sN/sF/sX Scan TCP Null, FIN et Xmas
-sU Scan UDP
--scanflags < flags> Personnalise les flags des scans TCP
-sI <zombie host[:probeport]> Idlescan (scan passif)
-sO Scan des protocoles supportés par la couche IP
-b <ftp relay host> Scan par rebond FTP
--traceroute Détermine une route vers chaque hôte
--reason Donne la raison pour laquelle tel port apparaı̂t à
tel état

6.4 Spécifications des ports et ordre de scan

-p <plage de ports> Ne scanne que les ports spécifiés


-F Fast - Ne scanne que les ports listés dans le fichier
nmap-services
-r Scan séquentiel des ports (par défaut dans le
désordre)
--top-ports< nombre> Scan <nombre> de ports parmis les plus courants
--port-ration <ration> Scan <ratio> pourcent des ports les plus courants

6.5 Détection de service/Version

TD-Scan-de-ports(correction) Version 1.2a


6.6 Script Scan 39

-sV Teste les ports ouverts pour déterminer le service


en écoute et sa version
--version-light Limite les tests aux plus probables pour une identi-
fication plus rapide
--version-intensity <niveau> De 0 (léger) à 9 (tout essayer)
--version-all Essaie un à un tous les test possibles pour la détec-
tion de version
--version-trace Affiche des informations détaillés du scan de versions
(pour débogage)

6.6 Script Scan

-sC Equivalent de --script=safe,intrusive


--script=<lua scripts> <lua scripts> est une liste de répertoires ou de
scripts séparés par des virgules
--script- passe des arguments aux scripts
args=<n1=v1,[n2=v2,...>
--scripts-trace Montre toutes les données envoyées ou reçues
--script-updatedb Met à jour la base de données de scripts. Seulement
fait si -sC ou --script à été aussi donné

6.7 Détection de système d’exploitation

-O Active la détection d’OS


--osscan-limit Limit la détection aux cibles prometteuse
--osscan-guess Detection de l’OS de façon plus agressive

6.8 Temporisation et performance


Les options qui prennent un argument de temps sont en millisecondes à moins que
vous ne spécifiez ’s’(secondes), ’m’(minutes), ou ’h’(heures) à la valeur.

TD-Scan-de-ports(correction) Version 1.2a


6.9 Evasion pare-feu/IDS et Usurpation d’identité 40

-T[0-5 Choisit une politique de temporisation (plus élevé,


plus rapide)
--min-hostgroup/max-hostgroup Tailles des groupes d’hôtes à scanner en parallèle
<msec>
--min-parallelism/max- Parallélisation des paquets de tests
parallelism <mec>
--min-rtt-timeout/max-rtt- Spécifie le temps d’aller-retour des paquets de tests
timeout/initial-rtt-timeout
<msec>
--min-rtt-timeout/max-rtt- Précise le round trip time des paquets de tests
timeout/initial-rtt-timeout
<time>
--max-retries<tries> Nombre de retransmissions des paquets de tests des
scans de ports
--host-timeout<msec> Délai d’expiration du scan d’un hôte
--scan-delay/-max-scan- Ajuste le delais entre les paquets de test
delay<time>

6.9 Evasion pare-feu/IDS et Usurpation d’identité

-f, --mtu<val> fragmente les paquets ( en spécifaint éventuellement


la MTU)
-D<decoy1,decoy2[,ME] Obscurci le scan avec des leurres
-S<IP_Adress> Usurpe l’adresse source
-e<iface> Spécifie une interface réseau
-b/--source-port<portnum> Utilise le numéro de port comme source
--data-lengt<num> Ajoute des données au hasard aux paquets émis
--ip-options<options> Envoi des paquets avec les options IP spécifiées
--ttl<val> Spécifie le champ TTL IP
--spoof-mac<adresse Usurpe une adresse MAC
mac,préfix ou nom du fabri-
cant>
--badsum Envoi des paquets TCP/UDP avec une somme de
contrôle erronnée

6.10 Sortie/Output

TD-Scan-de-ports(correction) Version 1.2a


6.11 Divers 41

-oN/-oX/-oS/-oG<file> Sortie daans le fichier en paramètre des résultats du


scan au format XML, s|<rIpt kIddi3 et grepable,
respectivement
-oA<Basename> Sortie dans les 3 formats majeurs en même temps
-v Nmap en mode verbeux (-vv encore plus verbeux)
-d[level] Sélectionne ou augmente le niveau de débogage (si-
gnificatif jusqu’à 9)
--packet-trace Affiche tous les paquets émis et reçus
--iflist Affiche les interfaces et les routes de l’hôte (pour
débogage)
--log-errors Journalise les erreurs/alertes dans un fichier au for-
mat normal
--append-output Ajout la sortie au fichier plutôt que de l’écraser
--resume<Filename> Reprend un
scan interrompu
--stylsheet<path/URL> feuille de styles XSL pour transformer la sortie XML
en HTML
--webxml Feuille de styles de référence Insecure.Org pourun
XML plus portable
--no_stylesheet Nmap n’associe pas la feuille de styles XLS à la
sortie XML

6.11 Divers

-6 Active le scan IPv6


-A Active la détection du système d’exploitation et des
versions
--datadir<dirname> Spécifie un dossier pour les fichiers de données Nmap
--send-eth/--send-ip Envoie des paquets en utilisant des trames Ethernet
ou des paquets IP
--privileged Suppose que l’utilisateur est entièrement privilégié
-V Affiche le numéro de version
--unprivileged Suppose que l’utilisateur n’a pas les privilèges
d’usage des raw socket
-h Affiche ce résumé de l’aide

TD-Scan-de-ports(correction) Version 1.2a


7. sources

Pour aller plus loin :


— https ://nmap.org/man/fr/man-nse.html
— http ://insecure.org/nmap/nse/
— https ://nmap.org/nsedoc/
— http ://resources.infosecinstitute.com/nmap-scripting-example/
— https ://openclassrooms.com

Vous aimerez peut-être aussi