NSE est un outil extrêmement polyvalent qui fait partie intégrante de nmap et permet aux utilisateurs de créer des scripts pour faire leurs propres scans. Nous pouvons noter que NSE possède une documentation extrêmement complète sur le site https://nmap.org/book/nse.html ce qui en fait un outil utilisable au sein d’une entreprise. La première version de nmap est sortie en septembre 1997 et était seulement composée d’un fichier en C d’approximativement 2000 lignes. Le 21 mai 2012, la version 6 est sortie, celle-ci fait 54 Mo, contient plus de 3500 fingerprints, plus de 8000 détecteurs de version et plus de 300 scripts NSE préconfigurés.
Nmap met à notre disposition un certain nombre de scripts, ceux-ci sont contenus dans le dossier /usr/share/nmap/scripts/ . Ils permettent d’effectuer de multiples actions comme la détection de vulnérabilité, de portes dérobées, etc.
Leur extension est .nse, tous les scripts que nous désirons créer pour nmap devront posséder cette extension. Les noms des programmes sont (généralement) assez explicites, un simple grep permet de retrouver un script en fonction de ce qu’on cherche (html scripts, cve, …).
Les scripts sont écrits en langage lua.
Les scripts NSE permettent d’effectuer les tâches qui seront détaillées par la suite, par clarté et pour éviter une traduction bancale, nous donnerons le nom des tâches en anglais.
Base de nmap
Nmap possède un système de détection de versions, celui-ci est efficace et peut reconnaître des milliers de services différents grâce à des signatures et des expressions régulières. Cependant, il n’est pas parfait. Parfois, il y a besoin de plusieurs tests distincts pour déterminer une version. La documentation nous dit “Nmap could also recognize more SNMP services if it tried a few hundred different community names by brute force.”. Pour résumer, nmpa peut détecter les versions, mais pas assez. C’est pour cela que c’est maintenant avec NSE que nous le faisons. En effet, celui-ci le fait facilement. Plus de documentation sur cette possibilité ici : https://nmap.org/book/nse-vscan.html
Lorsque des 0-day ou autres vulnérabilités sont découvertes, l’objectif est de vérifier le plus rapidement possible que notre systems n’y est pas vulnérable. Nmap ne permet pas cela de façon simple en l’état. Cependant, NSE oui. Par exemple, leur site nous apprend que le jour ou le bug Heartbleed est apparu et à compromis la sécurité de centaine de milliers d’ordinateurs dans le monde, nmap a créé le ssl-hertbleed 2 jours après. Nmap permet ainsi de faire une veille sur l’apparition et la détection de nouvelles failles.
Une fois de plus nmap est limité dans son utilisation. Les nouveaux vers étant suffisamment efficaces pour laisser des backdoors dans les systèmes, un nouvelle outils était nécessaire. NSE permet de les détecter. Grâce à NSE, la backdoor Double Pulsar, créé par la NSA a pu être détectée.
En tant que script, NSE peut être utilisé pour automatiser l’exploitation de vulnérabilités. Le fait de pouvoir créer nos propre scripts (et modifier ceux existants) en fait un outil de choix pour les pentesters, cela reste cependant moins orienté que Metasploit.
NSE est impressionnant par sa documentation. Son site ne paie pas de mine à premier vue. Cependant, en s’y penchant plus en profondeur, nous y trouvons une documentation extrêmement claire et détaillée. Cela permet de faire de nmap avec NSE, un outil très qualitatif. Certains DMs ont pu nous présenter des outils, qui même s’ils semblaient efficaces, étaient si mal ou faiblement documentés, que leurs utilisations présentaient trop de complexité pour être réellement exploitables. Nous sommes ici dans la situation inverse, avec un outil gratuit, documenté et très efficace.