Comment utiliser les scripts de moteur de script NMAP (NSE) dans Linux

Comment utiliser les scripts de moteur de script NMAP (NSE) dans Linux

NMAP est un scanner de sécurité et un outil d'exploration populaire, puissant et multiplateforme. Il peut également vous aider à obtenir un aperçu des systèmes qui ont connecté votre réseau; Vous pouvez l'utiliser pour trouver toutes les adresses IP des hôtes en direct, scanner des ports ouverts et des services en cours d'exécution sur ces hôtes, et bien plus encore.

L'une des caractéristiques intéressantes de Nmap est le Moteur de script NMAP (NSE), ce qui lui apporte encore plus de flexibilité et d'efficacité. Il vous permet d'écrire vos propres scripts dans le langage de programmation LUA et de partager éventuellement ces scripts avec d'autres utilisateurs de NMAP là-bas.

Lire aussi: 29 exemples pratiques de commandes NMAP pour Linux

Il existe quatre types de scripts NSE, à savoir:

  • Scripts de prérulle - sont des scripts qui s'exécutent avant l'une des opérations de numérisation de NMAP, elles sont exécutées lorsque NMAP n'a pas encore recueilli aucune information sur une cible.
  • Scripts hôte - Les scripts sont-ils exécutés après que le NMAP a effectué des opérations normales telles que la découverte d'hôte, la numérisation du port, la détection de version et la détection du système d'exploitation contre un hôte cible.
  • Scripts de service - Les scripts sont-ils exécutés contre des services spécifiques écoutant sur un hôte cible.
  • Scripts post-trule - Les scripts sont-ils exécutés après que NMAP a scanné tous ses hôtes cibles.

Ensuite, ces scripts sont regroupés dans diverses catégories, y compris celles pour l'authentification (authentification), découvrir des hôtes (diffuser), Brute Force attaque pour deviner les références d'authentification (brute), en savoir plus sur un réseau (Découverte), provoquant un déni de service (dos), exploitant une certaine vulnérabilité (exploiter), etc. Un certain nombre de scripts appartiennent à la catégorie par défaut.

Note: Avant d'aller plus loin, vous devez prendre note de ces points clés:

  • N'exécutez pas les scripts de tiers sans les examiner de manière critique ou seulement si vous faites confiance aux auteurs. En effet.
  • Deuxièmement, bon nombre de ces scripts peuvent éventuellement fonctionner comme un pruule ou post-° scénario. Compte tenu de cela, il est recommandé d'utiliser une prérule à des fins de cohérence.
  • NMAP utilise le scripts / script.db base de données pour déterminer les scripts et catégories par défaut disponibles.

Pour voir l'emplacement de tous les scripts NSE disponibles, exécutez l'utilitaire Locate sur le terminal, comme ceci:

$ localiser *.NSE / usr / share / nmap / scripts / acarsd-info.nse / usr / share / nmap / scripts / adresse-info.NSE / USR / SHARE / NMAP / SCRIPTS / AFP-BRUTE.nse / usr / share / nmap / scripts / afp-ls.nse / usr / share / nmap / scripts / afp-path-vuln.nse / usr / share / nmap / scripts / afp-serverinfo.nse / usr / share / nmap / scripts / afp-showmount.nse / usr / share / nmap / scripts / ajp-uut.nse / usr / share / nmap / scripts / ajp-brute.NSE / USR / Share / Nmap / Scripts / Ajp-Headers.nse / usr / share / nmap / scripts / ajp-méthods.nse / usr / share / nmap / scripts / ajp-request.nse / usr / share / nmap / scripts / allseefeye-info.nse / usr / share / nmap / scripts / amqp-info.nse / usr / share / nmap / scripts / asn-query.NSE… 

Les scripts NSE sont chargés en utilisant le --scénario Flag, qui vous permet également d'exécuter vos propres scripts en fournissant des catégories, des noms de fichiers de script ou le nom des répertoires où se trouvent vos scripts.

La syntaxe pour l'activation des scripts est la suivante:

$ nmap -sc cible #load scripts par défaut ou $ nmap - nom de fichier de script | catégorie | répertoire | expression,… cible 

Vous pouvez afficher une description d'un script avec le --scénario option. De plus, vous pouvez transmettre des arguments à certains scripts via le --script-args et --script-args-file Options, la dernière est utilisée pour fournir un nom de fichier plutôt qu'un arg de ligne de commande.

Pour effectuer un scan avec la plupart des scripts par défaut, utilisez le -SC drapeau ou utilisation alternativement --script = par défaut comme montré.

$ nmap -sc scanme.nmap.org ou $ nmap --Script = ScanMe par défaut.nmap.org ou $ nmap - script par défaut ScanMe.nmap.org 
Échantillon de sortie
Démarrer Nmap 7.01 (https: // nmap.org) à 2017-11-15 10:36 IST NMAP SCAN RAPPORT pour SCANME.nmap.org (45.33.32.156) L'hôte est en place (0.0027s latence). Non illustré: 999 Ports filtrés Port State Service 80 / TCP Open HTTP | _HTTP-Title: Allez-y et ScanMe! NMAP FAIT: 1 adresse IP (1 hôte Up) scanné en 11.74 secondes 

Pour utiliser un script dans le but approprié, vous pouvez, tout d'abord, obtenir une brève description de ce qu'elle fait réellement, par exemple, HTTP-Headers.

$ nmap - Script-help http-headers scanme.nmap.org 
Échantillon de sortie
Démarrer Nmap 7.01 (https: // nmap.org) à 2017-11-15 10:37 IST HTTP-Headers Catégories: Discovery Safe https: // nmap.org / nsedoc / scripts / http-headers.HTML effectue une demande de tête pour le dossier racine ("/") d'un serveur Web et affiche les en-têtes HTTP renvoyés. 

Chargement des scripts NSE pour effectuer des analyses NMAP

Vous pouvez sélectionner ou charger des scripts pour effectuer une analyse dans différentes méthodes expliquées ci-dessous.

Utilisation du nom du script

Une fois que vous savez ce que fait un script, vous pouvez effectuer un scan en utilisant. Vous pouvez utiliser un script ou entrer une liste de noms de script séparés par des virgules. La commande ci-dessous vous permettra de visualiser les en-têtes HTTP configurés sur le serveur Web à l'hôte cible.

$ nmap - script http-headers scanme.nmap.org 
Scanner les en-têtes HTTP
Démarrer Nmap 7.01 (https: // nmap.org) à 2017-11-15 10:39 IST NMAP SCAN RAPPORT pour SCANME.nmap.org (45.33.32.156) L'hôte est en place (0.Latence 27S). Non illustré: 996 Ports fermé State State Service 22 / TCP Open SSH 80 / TCP Open HTTP | HTTP-Headers: | Date: Mer, 15 novembre 2017 05:10:04 GMT | Serveur: Apache / 2.4.7 (Ubuntu) | ACCEPTAGES: octets | Varie: accepter le codage | Connexion: Fermer | Type de contenu: texte / html | | _ (Type de demande: tête) 179 / TCP Filtré BGP 31337 / TCP Open Elite NMAP Fait: 1 adresse IP (1 hôte Up) scanné en 20.96 secondes 

Utilisation de catégories

Vous pouvez également charger des scripts à partir d'une catégorie ou d'une liste de catégories séparées par des virgules. Dans cet exemple, nous utilisons tous les scripts dans la catégorie par défaut et diffusion pour effectuer un scan sur l'hôte 192.168.56.1.

$ nmap - par défaut de script, diffusion 192.168.56.1 
Scanner un hôte

Utilisation de * Wildcard

Ceci est utile lorsque vous souhaitez sélectionner les scripts avec un modèle de nom de don. Par exemple pour charger tous les scripts avec des noms commençant par ssh, Exécutez la commande ci-dessous sur le terminal:

$ nmap - script "ssh- *" 192.168.56.1 
Chargez des scripts à l'aide de wilkcards-

Utilisation d'expressions booléennes

Vous pouvez également sélectionner des scripts en utilisant des expressions booléennes que vous pouvez construire en utilisant le et, ou, et pas les opérateurs. Et les noms dans une expression booléenne peuvent être une catégorie, un nom de fichier de scénario.db, ou à tous.

La commande suivante chargera les scripts des catégories par défaut ou de diffusion.

$ nmap - Script "par défaut ou diffusion" 192.168.56.dix 

Ce qui équivaut à:

$ nmap - par défaut de script, diffusion 192.168.56.dix 

Pour charger tous les scripts omettant ceux dans le vuln catégorie, exécutez cette commande sur le terminal.

$ nmap - script "pas vuln" 192.168.56.dix 

La commande suivante semble un peu compliquée mais il est facile à comprendre, il sélectionne les scripts dans les catégories par défaut ou diffusées, laissant les noms avec des noms commençant par SSH-:

$ nmap - script "(par défaut ou diffusion) et non ssh- *" 192.168.56.dix 

Surtout, il est possible de combiner des catégories, des noms de scripts, un répertoire contenant vos scripts personnalisés ou une expression booléenne pour charger des scripts, comme ceci:

$ nmap - Script Broadcast, vuln, ssh-uth-mothods, / path / to / personnalisé / scripts 192.168.56.dix 

Passer des arguments aux scripts NSE

Vous trouverez ci-dessous un exemple montrant comment passer les arguments aux scripts avec le -script-args option:

$ nmap - script mysql-audit - script-args "mysql-audit.nom d'utilisateur = 'root', \ mysql-audit.mot de passe = 'password_here', mysql-audit.filename = 'nselib / data / mysql-cis.Audit'" 

Pour passer un numéro de port, utilisez le -p Option NMAP:

$ nmap -p 3306 - script mysql-audit - script-args "mysql-audit.nom d'utilisateur = 'root', \ mysql-audit.mot de passe = 'password_here', mysql-audit.filename = 'nselib / data / mysql-cis.Audit'" 

La commande ci-dessus exécute un audit de la configuration de sécurité du serveur de base de données MySQL contre les parties du Cis mysql v1.0.2 référence. Vous pouvez également créer vos propres fichiers d'audit personnalisés utiles pour d'autres audits MySQL.

C'est tout pour le moment. Vous pouvez trouver plus d'informations sur la page NMAP Man ou consulter l'utilisation de NSE.

Pour commencer par la rédaction de vos propres scripts NSE, consultez ce guide: https: // nmap.org / livre / nse-tutorial.html

Conclusion

Nmap est un outil vraiment puissant et utile dont chaque système ou administrateur réseau a besoin dans son arsenal de sécurité - NSE y ajoute simplement plus d'efficacité.

Dans cet article, nous vous avons présenté le Moteur de script NMAP et a regardé comment trouver et utiliser les différents scripts disponibles dans différentes catégories. Si vous avez des questions, n'hésitez pas à nous réécrire via le formulaire de commentaire ci-dessous.