Recherche de site Web

Nmap - Options et types d'analyse dans Nmap


Nmap est probablement l'outil de reconnaissance le plus célèbre parmi les Pentesteurs et les Hackers. C'est essentiellement un scanner de ports qui vous aide à analyser les réseaux et à identifier les différents ports et services disponibles dans le réseau, tout en fournissant également des informations supplémentaires sur les cibles, y compris les noms DNS inversés, les suppositions sur le système d'exploitation, les types d'appareils et les adresses MAC. Il est également très utile lors de l'audit des réseaux !

La syntaxe minimale de Nmap est :

$ nmap [FLAGS] [IP]

Notez que vous devrez parfois également l'exécuter avec les privilèges sudo pour effectuer certains types de scans particuliers.

Commutateurs Nmap

Nmap est un outil de scan de réseau puissant et performant qui permet de personnaliser nos scans à l'aide de drapeaux passés via la ligne de commande. Certains des drapeaux importants sont :

  • -h : Afficher une page de résumé d'aide
  • -sS : Effectuer un scan SYN TCP
  • -sU : Effectuer une analyse UDP
  • -sV : Sonde les ports ouverts pour déterminer les informations sur le service/la version
  • -O : Activer la détection du système d'exploitation
  • -v : Activer la verbosité. Vous pouvez même définir le niveau de verbosité comme suit :

    • -vv : Niveau de verbosité 2. Le niveau minimum de verbosité recommandé pour l'utilisation.
    • -v3 : Niveau 3 de verbosité. Vous pouvez toujours spécifier le niveau de verbosité en indiquant un chiffre comme ceci.
  • -oA : Même sortie Nmap en formats « normal », XML et grepable. Cependant, vous pouvez spécifier le format de votre choix avec :

    • -oN : Rediriger la sortie normale vers un nom de fichier donné
    • -oX : Produire une sortie dans un format XML propre et la stocker dans un fichier donné
    • -oG : Produire une sortie « grepable » et la stocker dans un fichier. Format obsolète car les utilisateurs se tournent maintenant vers des sorties XML.
  • -A : Active la numérisation « agressive ». Actuellement, cela permet la détection du système d'exploitation (-O), l'analyse des versions (-sV), l'analyse par script (-sC) et le traceroute (-traceroute)
  • -p : Spécifiez les ports à scanner. Il peut s'agir d'un seul port ainsi que d'une plage de ports. Par exemple :

    • nmap -p 80 127.0.0.0.1 : Cela scanne le port 80 sur l'hôte local
    • nmap -p 1-100 127.0.0.1 : Cela scanne les ports de 1 à 100 sur localhost
    • nmap -p- 127.0.0.1 : Cela scanne tous les ports sur l'hôte local

Types de scan dans Nmap

Nmap prend en charge de nombreux types de scans différents. Cependant, les plus populaires sont :

1. Analyses de connexion TCP (-sT)

Dans ce type de scan, Nmap envoie un paquet TCP à un port avec le drapeau SYN activé. Dans ce scénario, deux choses peuvent se produire :

  • La cible répond avec un paquet RST qui signifie que le port est fermé.
  • La cible ne répond pas du tout, probablement à cause d'un pare-feu qui bloque tous les paquets entrants, auquel cas le port sera considéré comme filtré
  • La cible répond avec un paquet TCP avec les drapeaux SYN/ACK activés, ce qui indiquerait que le port est ouvert, puis Nmap répondrait avec un paquet TCP avec le drapeau ACK activé et compléterait ainsi la poignée de main TCP en trois étapes.

Ce n'est pas une technique de scan très fiable car il est facile de configurer une règle de pare-feu pour répondre avec des paquets RST ou pour supprimer tous les paquets entrants. De plus, cette méthode est extrêmement lente car elle attend que la totalité de la poignée de main TCP en trois voies soit effectuée.

2. SYN « Scans à demi-ouvert » (-sS)

Les scans SYN, également connus sous le nom de « Half-Open » ou « Scan furtif », sont une amélioration par rapport à la méthode précédente. Dans la méthode précédente, où nous renvoyions un paquet TCP avec le drapeau ACK activé après avoir reçu un paquet SYN/ACK, nous enverrions maintenant un paquet RST. Cela empêche le serveur de tenter à plusieurs reprises de faire les requêtes et réduit considérablement le temps de scan.

Cette méthode est une amélioration par rapport aux précédentes parce que :

  • Ils sont plus rapides
  • Ils pourraient être capables de contourner certains pare-feu primitifs
  • Souvent, les scans SYN ne sont pas enregistrés par les applications fonctionnant sur les ports, car la plupart des applications commencent à enregistrer une connexion uniquement après qu'elle a été entièrement établie, ce qui n'est pas le cas avec les scans SYN.

Cependant, il n'est pas conseillé d'exécuter des scans SYN sur des environnements de production car cela pourrait perturber certaines applications instables. Il est également à noter que les scans SYN nécessitent également des privilèges sudo car ils doivent créer des paquets bruts.

En fait, lorsqu'il est exécuté avec des privilèges sudo, nmap utilise par défaut les scans SYN, sinon il utilise par défaut le scan TCP.

3. Analyses UDP (-sU)

Les scans UDP sont beaucoup moins fiables que les deux précédents car les connexions UDP sont sans état par nature. Cela signifie qu'il n'y a pas de « mécanisme de retour » comme pour TCP. UDP fonctionne selon le principe « Tirer et oublier », ce qui signifie qu'il envoie des paquets destinés à des cibles sur certains ports en espérant qu'ils atteignent leur destination. Cela met l'accent davantage sur la vitesse que sur la qualité. Cependant, l'absence de mécanisme de retour rend difficile l'identification des ports ouverts.

Lorsqu'un paquet UDP est envoyé à un port cible, il peut y avoir trois scénarios :

  • Habituellement, aucune réponse n'est reçue, auquel cas nmap marque le port comme ouvert|filtré. Si aucune réponse n'est encore reçue, il envoie un autre paquet UDP pour vérifier de nouveau et si encore une fois aucune réponse n'est reçue, il marque le port comme ouvert|filtré et passe à la suite.
  • Il peut recevoir une réponse UDP, ce qui est très rare. Dans un tel scénario, le port est marqué comme ouvert
  • Si le port est fermé et qu'il reçoit une requête d'écho ICMP en retour, cela signifie que le port est inaccessible.

Analyses spéciales dans Nmap

À part ceux-ci, certains types de scans moins populaires qui sont encore « plus furtifs » qu'un scan TCP SYN. Ceux-ci sont les suivants :

1. Scans TCP Null (-sN)

Dans les scans TCP Null, les paquets TCP envoyés n'ont aucun des drapeaux activés. Selon la RFC, dans de telles circonstances, la cible doit répondre avec un RST si le port est fermé.

2. Scans TCP FIN (-sF)

Ceci est très similaire au scan TCP Null sauf que, au lieu d'envoyer un paquet TCP complètement vide, il envoie un paquet avec le drapeau FIN activé, qui est utilisé pour fermer proprement une connexion. En conséquence, la cible doit répondre par un RST pour les ports fermés conformément à la RFC.

3. Scans TCP Xmas (-sX)

Les scans TCP Xmas sont également très similaires aux deux dernières techniques de scan, à l'exception du fait qu'ils utilisent des paquets TCP avec les drapeaux PSH, URG et FIN activés. Comme pour les deux derniers types de scans, celui-ci s'attend également à recevoir des paquets RST pour les ports fermés conformément à la RFC.

Limitations

Comme ces analyses sont de nature similaire, elles ont également des résultats similaires à ceux des analyses UDP. Dans ce cas, nous ne pouvons avoir que les trois réponses suivantes :

  • ouvert|filtré : Lorsqu'aucune réponse n'est reçue, le port est alors catégorisé ainsi car aucune réponse ne peut signifier que deux choses :

    • Le port est ouvert
    • Le port est protégé derrière un pare-feu donc filtré
  • filtré : Lorsque le port est protégé derrière un pare-feu qui renvoie un ping ICMP
  • fermé : Lorsqu'il reçoit un paquet RST

Il convient également de noter que, bien que le RFC 793 impose que les hôtes réseau répondent aux paquets malformés avec un paquet TCP RST pour les ports fermés, et ne répondent pas du tout pour les ports ouverts, certains systèmes rejettent cette convention. Ce comportement est surtout observé sur les serveurs Microsoft Windows et certains appareils CISCO où tous les paquets malformés sont supprimés par défaut.

Analyse d'un réseau pour détecter des hôtes avec Nmap

L'une des choses les plus importantes à faire lors de la connexion à un réseau est d'obtenir une liste de tous les hôtes actifs sur le réseau avant de procéder à d'autres explorations. Cela peut être fait via un « balayage Ping », ce qui, comme le nom l'indique, consiste à envoyer un paquet ICMP à toutes les adresses IP du réseau et à attendre les réponses. Les hôtes qui répondent avec un paquet ICMP sont considérés comme actifs dans ce cas.

Vous pouvez spécifier vos plages d'adresses IP cibles en utilisant des tirets ou via CIDR comme suit :

$ nmap -sn 192.168.0.1-254

Ou,

$ nmap -sn 192.168.0.0/24

Le drapeau -sn supprime toute analyse de port et oblige nmap à se fier uniquement aux paquets ICMP echo (ou aux requêtes ARP si exécuté avec les privilèges superutilisateur) pour identifier les hôtes actifs sur le réseau. Il envoie également un paquet TCP SYN au port 443 de la cible et une requête TCP ACK (TCP SYN si exécutée avec les privilèges superutilisateur) au port 80 de la cible.

Moteur de Scripting Nmap

Le moteur de script Nmap (NSE) est un ajout puissant à Nmap qui nous permet d'étendre encore davantage ses fonctionnalités. Écrit en Lua, nous pouvons l'utiliser pour écrire nos scripts et automatiser beaucoup de notre travail, comme tester des vulnérabilités et les exploiter.

Il existe de nombreuses catégories disponibles. Certaines catégories utiles incluent :

  • safe : - N’affectera pas la cible
  • intrusif : - Pas sûr : susceptible d'affecter la cible
  • vuln : - Scanner les vulnérabilités
  • exploit : - Essayer d'exploiter une vulnérabilité
  • auth : - Tentative de contourner l'authentification pour les services en cours d'exécution
  • brute : - Essayez de forcer les identifiants pour les services en cours d'exécution
  • découverte:- Tentative d'interroger les services en cours d'exécution pour obtenir des informations supplémentaires sur le réseau (

Pour exécuter un script, nous devons le spécifier comme --script=<nom-du-script>

Vous pouvez également spécifier plusieurs scripts à exécuter en même temps en séparant les noms de scripts comme --script=<nom-du-script1>,<nom-du-script2>

Certains scripts nécessitent également un argument qui peut être spécifié avec --script-args <args>

Certains scripts ont des menus d'aide intégrés auxquels on peut se référer avec :

$ nmap --script-help <script-name>

Vous pouvez trouver une liste complète de scripts ici.

Conclusion

Nmap dispose de beaucoup de documentation gratuite et bien rédigée. Vous pouvez trouver beaucoup d'informations sur les options, les scripts et bien plus encore sur leur site officiel. Vous pouvez expérimenter avec les différentes options et scripts et voir comment leurs sorties diffèrent dans différents environnements.