TD Scan de Ports (Correction) PDF
TD Scan de Ports (Correction) PDF
TD Scan de Ports (Correction) PDF
nmap
15 janvier 2016
Support avec
correction
There’s a difference between knowing the path and wal-
king the path
Morpheus
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
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
7 sources . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
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
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
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,...).
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 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
2. Mise en œuvre
— 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.
Question 3
Quel est l’utilité d’effectuer une requête ICMP à destination de la machine cible ?
Solution 3 Cela évite de scanner des systèmes éteints et accélère donc le scan.
Question 4
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.
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
Solution 6 FQDN : Full Qualified Domain Name ( Nom de domaine complet) Ce sont
des requêtes DNS PTR émises par le poste contrôleur :
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 :
Question 7
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
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.
Question 9
# nmap 15.0.0.80
Solution 9
Question 10
Quel filtre d’affichage devez-vous définir dans Wireshark pour lister les ports en
écoute ?
Question 11
Que constatez-vous ?
Question 12
Question 13
Solution 13 Pour tenter d’éviter la détection par les IDS. L’option -r supprime l’aléa.
Question 14
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 :
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.
— 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
Question 17
Effectuez un scan UDP des ports 135 à 139 de la machine Windows 7. Quels ports
sont ouverts ?
Question 18
Que répond la machine Windows lorsqu’elle est sollicitée sur le port UDP 136 ?
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
Solution 19 La commande :
#Nmap -O 15.0.0.80
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 ?
Question 21
# nmap -O adresse_de_la_cible
C’est un Windows 7 :
Question 22
Question 23
Question 24
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 ?
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
Question 28
Question 29
lancez les scripts de la catégorie safe sur ce même serveur. Que constatez-vous ?
Solution 29 Les résultats sont beaucoup plus détaillés, mais cela a nécessité presque
une minute.
Question 30
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
Question 32
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 ?
Question 34
Question 35
Question 36
Question 37
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.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....
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...)
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.
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.
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...
6.10 Sortie/Output
6.11 Divers