Salut les jeunes pentesters ! On continue aujourd’hui notre voyage au pays de Nmap :D. Si vous avez manqué l’article sur le bypass de firewall lors de votre scan nmap, jettez y un œil il y a certainement des choses à apprendre pour vous.
Dans cet article, il sera question des scripts NSE intégrés à l’outil nmap sur Kali Linux.
- Les scripts NSE dans Nmap, c’est quoi ?
- Les différents types de scripts NSE
- Les catégories de scripts NSE
- Exécuter tous les scripts d’une catégorie
- Exécuter des scripts avec le caractère générique *
- Lancer un unique script NSE
- Lancer plusieurs scripts NSE à la fois
- Exécuter ses propres scripts NSE
- Faire une combinaison de toutes les méthodes abordées ci-haut
- Mettre à jour la base de NSE
- Conclusion
Les scripts NSE dans Nmap, c’est quoi ?
Nmap Script Engine (NSE) est un moteur de plus de 600 scripts nmap. Il fait partie des fonctionnalités les plus puissantes et flexibles de Nmap. Il permet d’écrire vos propres scripts dans le langage de programmation Lua; et éventuellement de partager ces scripts avec d’autres utilisateurs de Nmap.
NSE a été conçu pour être polyvalent et permettre des fonctionnalités étendues, par exemple: l’énumération DNS, l’attaque brute force, la découverte fine du réseau; la détection de versions avancés, la détection et l’exploitation de vulnérabilités, la détection de backdoors…etc.
Avant d’utiliser un script NSE, pensez à ces recommandations:
- N’exécutez pas de scripts de tiers sans les examiner d’un œil critique ou seulement si vous faites confiance aux auteurs. En effet, ces scripts ne sont pas exécutés en mode sandbox, et peuvent donc endommager votre système de manière inattendue ou malveillante ou envahir votre vie privée.
- Deuxièmement, bon nombre de ces scripts peuvent éventuellement s’exécuter en tant que script de pré-règle ou d’après règle. Compte tenu de cela, il est recommandé d’utiliser une pré-règle à des fins de cohérence.
- Nmap utilise la base de données scripts/script.db pour déterminer les scripts et les catégories par défaut disponibles.
Pour voir l’emplacement de tous les scripts NSE disponibles, exécutez l’utilitaire de localisation sur le terminal, comme ceci: locate *.nse
Les différents types de scripts NSE
Il existe quatre types de scripts NSE à savoir. Il s’agit des scripts de:
- pré-règle(prerule): sont des scripts qui s’exécutent avant l’une des opérations d’analyse de Nmap. Ils sont exécutés lorsque Nmap n’a pas encore recueilli d’informations sur une cible.
- hôte (hostrule): sont des scripts exécutés après que Nmap ait effectué des opérations normales telles que la découverte d’hôte; l’analyse de port; la détection de version et la détection du système d’exploitation contre un hôte cible.
- service: sont des scripts exécutés sur des services spécifiques en écoute sur un hôte cible.
- après règle (postrule): sont des scripts exécutés après que Nmap ait analysé tous ses hôtes cibles.
Les catégories de scripts NSE
Les scripts NSE sont regroupés en treize (13) catégories que l’on peut trouver de manière documentée ici.

nmap NSE scan: auth
Cette catégorie de script regroupe toutes sortes de scripts ayant rapport avec l’authentification et l’escalation de privilège.
ex: smb-enum-users est un script qui fait l’énumération des utilisateurs présents sur un système Windows distant.

nmap NSE scan: broadcast
Il s’agit de la catégorie des scripts de collecte d’information à partir d’une diffusion dans le réseau.
ex: broadcast-pim-discovery qui se charge de découvriri les routeurs fonctionnant sous le protocol PIM (Protocol Independant Multicast).

nmap NSE scan: brute
C’est une catégorie de scripts conçus pour faire du bruteforce.
ex: ftp-brute permet de faire du bruteforce de mot de passe sur un serveur FTP

nmap NSE scan: default
Il s’agit des scripts Nmap populaires. On l’utilise en utilisant -sC avec la commande Nmap.
ex: address-info permet d’avoir des informations relatives aux adresses IPV4, IPV6 ou MAC si elles sont disponibles.

nmap NSE scan: discovery
C’est un groupe de scripts destinés à la découverte de réseau, de services et d’applications.
ex: bitcoin-info permet d’extraire des informations de version et de nœud d’un serveur Bitcoin.

nmap NSE scan: dos
C’est le groupe de scripts qui permet d’effectuer des attaques Dos et/ou DDoS
ex: http-slowloris est un script pour tester la vulnérabilité de slowloris DoS.
nmap NSE scan: exploit
Cette catégorie de script permet de faire l’exploitation des services en se basant sur les CVE.
ex: ftp-proftpd-backdoor est script qui exploite le CVE 2015-3306 lié à un backdoor sur proftpd.

nmap NSE scan: external
Il s’agit des scripts qui reposent sur des services ou des données tiers.
ex: whois-domain permet de recueillir des informations relatives au nom de domaine de votre cible.

nmap NSE scan: fuzzer
Cette catégorie de scripts est utilisé pour effectuer des attaques acharnées contre des applications, des services ou des réseaux
ex: http-form-fuzzer est utilisé pour effectuer un simple fuzzing contre les formulaires trouvés sur les sites Web. Ce script essaie des chaînes et des nombres de longueur croissante et tente de déterminer si le fuzzing a réussi.

nmap NSE scan: intrusive
Il s’agit de tous les scripts qui exploitent votre cible de façon agressive. Les scripts de cette catégorie peuvent se retrouver dans une autre.
ex: tso-brute permet du bruteforce sur un compte TSO.
nmap NSE scan: malware
Il s’agit de la catégorie de scipts pour la détection et l’exploitation des malwares.
ex: smb-double-pulsar-backdoor est un script qui vérifie si votre cible a été attaquée par le backdoor Double Pulsar SMB.

nmap NSE scan: safe
Il s’agit d’un groupe de scripts NSE moins intrusifs qui font peu de bruit tout en faisant le scan du système distant.
ex: http-robots.txt est un script permettant de recueillir les entrées ayant l’attribut disallow dans le fichier robots.txt

nmap NSE scan: version
C’est un groupe de scripts dediés à la détection des versions des applications, logiciels et système d’exploitation de votre cible.
ex: skypev2-version se charge d’identifier la version de Skype V2

nmap NSE scan: vuln
C’est la catégorie de scripts relative à la détection et l’exploitation des vulnérabilités.
ex: http-vuln-cve2009-3960 est un script qui exploite le CVE 2009-3960.

Exécuter tous les scripts d’une catégorie
Pour exécuter tous les scripts d’une catégorie donnée, il suffit de taper la commande ci-après
nmap --script <name> host
avec <name> le nom d’une des catégories abordées ci-haut.

Exécuter des scripts avec le caractère générique *
Nmap vous permet également d’exécuter des scripts à l’aide de caractères génériques; ce qui signifie que vous pouvez choisir d’exécuter tous les scripts commençant par un caractère ou mot donné.
Dans notre exemple, nous exécuterons tous les scripts commençant par le mot http

Lancer un unique script NSE
C’est la solution parfaite lorsque vous savez déjà quel script va être utilisé. Si nous cherchons par exemple à vérifier l’existance d’un fichier robots.txt sur le serveur web, nous utiliserons le script http-robots.txt

Lancer plusieurs scripts NSE à la fois
Vous pouvez exécuter plusieurs scripts NSE à la fois en utilisant la syntaxe suivante:
nmap --script <scriptname>,<scriptname>, <host ip>
exemple: nmap --script http-feed,xmlrpc-methods scanme.nmap.org

Exécuter ses propres scripts NSE
NSE vous permet de créer et d’exécuter vos propres scripts localement sur votre machine Kali. Pour le faire, vous pouvez utiliser la syntaxe ci-après:
nmap --script =/votre-script scanme.nmap.org
avec /votre-script le chemin vers votre script NSE personnel.
Faire une combinaison de toutes les méthodes abordées ci-haut
Vous avez vu à quel point il est facile d’exécuter des scripts, des catégories et même vos propres scripts locaux. Maintenant, combinons-les tous en une seule commande, comme illustré dans l’exemple suivant:
nmap --script "vuln,safe,/mon/script and not ftp-\*" scanme.nmap.org
A travers cette commande, nous exécutons tous les scripts des catégories vuln et safe, un script personnel et tous les autres scripts ne commançant par le mot ftp.
Mettre à jour la base de NSE
Il est vraiment important de mettre fréquemment à jour la base de NSE afin de rester à jour avec scripts nouveaux et mis à jour. La mise à jour se fait quand vous tapez la commande ci-après:
nmap --script-updatedb

Conclusion
En dehors de son rôle traditionnel, Nmap dispose des scripts NSE qui permettent d’étendre son utilisation à d’autres fins encore plus intéressantes. Il existe toute une panoplie de script NSE, il vous revient donc de les utiliser en fonction du contexte dans lequel vous êtes.
Merci de m’avoir suivi. Enjoy Nmap !
One thought on “nmap – Introduction aux scripts NSE”