Automatiser les scans avec Nmap

NmapBeginner
Pratiquer maintenant

Introduction

Dans ce laboratoire, vous allez apprendre à automatiser les scans Nmap à l'aide de scripts shell et de la planification cron. Le laboratoire commence par la création d'un simple script shell, scan.sh, contenant une commande de scan SYN Nmap ciblant 192.168.1.1. Vous allez ensuite rendre le script exécutable en utilisant chmod +x scan.sh et le lancer depuis le terminal.

Le laboratoire se poursuit en étendant le script pour inclure plusieurs scans à l'aide d'un éditeur de texte. Enfin, vous allez planifier le script pour qu'il s'exécute automatiquement à l'aide de cron, le configurer avec crontab -e, et vérifier l'exécution automatisée dans le terminal Xfce.

Créer un script de scan avec echo "nmap -sS 192.168.1.1" > scan.sh

Dans cette étape, nous allons créer un simple script shell qui exécute un scan Nmap. Ce script servira de base pour automatiser des scans plus complexes plus tard. Nous allons utiliser la commande echo pour écrire la commande Nmap dans un fichier nommé scan.sh.

Commençons par comprendre ce que fait echo. La commande echo imprime simplement ses arguments sur la sortie standard. Nous pouvons rediriger cette sortie vers un fichier en utilisant l'opérateur >.

La commande Nmap que nous allons utiliser est nmap -sS 192.168.1.1. Analysons-la :

  • nmap : C'est la commande pour exécuter le scanner Nmap.
  • -sS : Cette option spécifie un scan SYN, qui est une manière discrète de scanner les ports. C'est également connu sous le nom de "scan semi-ouvert" car il ne termine pas la mainmise TCP.
  • 192.168.1.1 : C'est l'adresse IP cible que nous voulons scanner. Il s'agit d'une adresse IP privée commune, mais vous devrez peut-être l'adapter selon votre configuration réseau.

Maintenant, créons le script. Ouvrez votre terminal dans le répertoire ~/projet (si vous n'y êtes pas déjà) et exécutez la commande suivante :

echo "nmap -sS 192.168.1.1" > scan.sh

Cette commande créera un fichier nommé scan.sh dans votre répertoire ~/projet et écrira la commande Nmap dedans.

Pour vérifier que le fichier a été créé correctement, vous pouvez utiliser la commande cat pour afficher son contenu :

cat scan.sh

Vous devriez voir la sortie suivante :

nmap -sS 192.168.1.1

Cela confirme que le script a été créé avec la bonne commande Nmap.

Rendre le script exécutable avec chmod +x scan.sh

Dans cette étape, nous allons rendre le script scan.sh exécutable. Par défaut, les nouveaux fichiers créés sous Linux n'ont pas les autorisations d'exécution. Nous devons explicitement accorder cette autorisation pour pouvoir exécuter le script.

La commande chmod est utilisée pour changer les autorisations d'un fichier ou d'un répertoire. L'option +x ajoute l'autorisation d'exécution au fichier spécifié.

Dans votre terminal, accédez au répertoire ~/projet (si vous n'y êtes pas déjà) et exécutez la commande suivante :

chmod +x scan.sh

Cette commande ajoutera l'autorisation d'exécution au fichier scan.sh.

Pour vérifier que le script est maintenant exécutable, vous pouvez utiliser la commande ls -l pour lister les autorisations du fichier.

ls -l scan.sh

Vous devriez voir une sortie similaire à celle-ci :

-rwxr-xr-x 1 labex labex 25 Oct 26 10:00 scan.sh

Le x dans la chaîne -rwxr-xr-x indique que le fichier est maintenant exécutable. Plus précisément, le premier rwx se réfère aux autorisations du propriétaire (lecture, écriture, exécution), le second r-x se réfère aux autorisations du groupe, et le troisième r-x se réfère aux autorisations des autres.

Maintenant que le script est exécutable, nous pouvons l'exécuter dans l'étape suivante.

Exécuter le script avec./scan.sh

Dans cette étape, nous allons exécuter le script scan.sh que nous avons créé et rendu exécutable dans les étapes précédentes.

Pour exécuter le script, nous utilisons le préfixe ./. Cela indique au shell d'exécuter le script situé dans le répertoire courant.

Dans votre terminal, assurez-vous d'être dans le répertoire ~/projet et exécutez la commande suivante :

./scan.sh

Vous devriez voir la sortie de Nmap dans votre terminal. La sortie variera selon que l'hôte cible (192.168.1.1) est accessible et quels services sont en cours d'exécution sur celui-ci. Si la cible n'est pas accessible, vous pouvez voir un message comme "L'hôte semble être éteint". Si la cible est accessible, vous verrez une liste des ports ouverts et d'autres informations sur la cible.

Note importante : L'adresse IP 192.168.1.1 est une adresse de passerelle par défaut commune. Si cette n'est pas l'adresse correcte d'un dispositif sur votre réseau, le scan peut ne pas produire de résultats utiles. Vous pouvez remplacer 192.168.1.1 par l'adresse IP d'un dispositif sur votre réseau que vous souhaitez scanner. Cependant, assurez-vous d'avoir la permission de scanner la cible. Scanner des réseaux sans autorisation est illégal et contraire à l'éthique.

Étant donné que la sortie de nmap peut varier considérablement selon le réseau et la cible, nous ne pouvons pas vérifier directement la sortie de manière fiable. Cependant, nous pouvons vérifier que la commande a été exécutée en vérifiant l'historique des commandes.

Ajouter plusieurs scans au script dans l'éditeur de texte Xfce

Dans cette étape, nous allons ajouter plus de commandes de scan Nmap à notre script scan.sh en utilisant l'éditeur de texte Xfce. Cela nous permettra d'effectuer plusieurs scans avec une seule exécution de script.

Tout d'abord, ouvrez le fichier scan.sh dans l'éditeur de texte Xfce. Vous pouvez le faire en cliquant droit sur le bureau, en sélectionnant "Ouvrir un terminal ici", puis en tapant la commande suivante :

nano scan.sh

Cela ouvrira le fichier scan.sh dans l'éditeur de texte nano.

Actuellement, le script contient une seule ligne :

nmap -sS 192.168.1.1

Ajoutons une autre commande de scan. Par exemple, nous pouvons ajouter un scan de ping (-sn) pour vérifier si un autre hôte est actif :

nmap -sS 192.168.1.1
nmap -sn 192.168.1.2

Vous pouvez ajouter autant de commandes de scan que vous le souhaitez. Par exemple, ajoutons un scan de détection de version (-sV) à la première cible :

nmap -sS -sV 192.168.1.1
nmap -sn 192.168.1.2

Maintenant, le script effectuera tout d'abord un scan SYN avec détection de version sur 192.168.1.1, puis un scan de ping sur 192.168.1.2.

Note importante : N'oubliez pas de remplacer 192.168.1.1 et 192.168.1.2 par les adresses IP des dispositifs de votre réseau que vous souhaitez scanner, et assurez-vous d'avoir la permission de les scanner.

Pour enregistrer les modifications, appuyez sur Ctrl+X, puis Y pour confirmer, puis Entrée pour enregistrer le fichier.

Maintenant, lorsque vous exécutez le script en utilisant ./scan.sh, il exécutera toutes les commandes Nmap que vous avez ajoutées.

Planifier un scan avec cron à l'aide de crontab -e

Dans cette étape, nous allons planifier notre script scan.sh pour qu'il s'exécute automatiquement en utilisant cron. cron est un planificateur de tâches basé sur le temps dans les systèmes d'exploitation similaires à Linux. Il vous permet de planifier des commandes ou des scripts pour qu'ils s'exécutent à des moments, dates ou intervalles spécifiques.

Pour planifier une tâche avec cron, nous utilisons la commande crontab. La commande crontab -e ouvre le fichier crontab dans un éditeur de texte (généralement nano dans l'environnement LabEx).

Dans votre terminal, tapez la commande suivante :

crontab -e

Si c'est la première fois que vous utilisez crontab, vous pouvez être invité à sélectionner un éditeur. Sélectionnez nano en choisissant le numéro correspondant.

Le fichier crontab contient une liste de tâches cron, chacune sur une ligne séparée. Chaque ligne est composée de six champs :

minute heure jour_du_mois mois jour_de_la_semaine commande
  • minute : La minute de l'heure à laquelle la tâche s'exécutera (0 - 59).
  • heure : L'heure de la journée à laquelle la tâche s'exécutera (0 - 23).
  • jour_du_mois : Le jour du mois à laquelle la tâche s'exécutera (1 - 31).
  • mois : Le mois de l'année à laquelle la tâche s'exécutera (1 - 12).
  • jour_de_la_semaine : Le jour de la semaine à laquelle la tâche s'exécutera (0 - 6, où 0 est dimanche).
  • commande : La commande à exécuter.

Par exemple, pour exécuter le script scan.sh chaque minute, ajoutez la ligne suivante au fichier crontab :

* * * * * /home/labex/project/scan.sh

Cette ligne signifie :

  • * : Chaque minute
  • * : Chaque heure
  • * : Chaque jour du mois
  • * : Chaque mois
  • * : Chaque jour de la semaine
  • /home/labex/project/scan.sh : La commande à exécuter (le chemin complet vers notre script)

Important : En général, il n'est pas recommandé d'exécuter des scans chaque minute dans un scénario réel, car cela peut surcharger le réseau et les dispositifs cibles. Dans le cadre des tests dans ce laboratoire, exécuter le script chaque minute est acceptable.

Pour enregistrer les modifications, appuyez sur Ctrl+X, puis Y pour confirmer, puis Entrée pour enregistrer le fichier.

Vous devriez voir un message comme "crontab : installation d'un nouveau crontab". Cela signifie que la tâche cron a été planifiée avec succès.

Les tâches cron s'exécutent généralement en arrière-plan sans afficher de sortie. Pour voir la sortie du script scan.sh, vous pouvez la rediriger vers un fichier. Par exemple, pour rediriger la sortie vers un fichier nommé scan.log dans votre répertoire ~/projet, vous pouvez modifier l'entrée de la tâche cron comme suit :

* * * * * /home/labex/project/scan.sh > /home/labex/project/scan.log 2>&1

La partie > /home/labex/project/scan.log redirige la sortie standard vers le fichier scan.log, et 2>&1 redirige l'erreur standard vers le même fichier.

Vérifier l'automatisation dans le terminal Xfce

Dans cette étape, nous allons vérifier que le script scan.sh est exécuté automatiquement par cron. Puisque nous avons planifié le script pour qu'il s'exécute chaque minute, nous devrions voir des preuves de son exécution.

Si vous avez redirigé la sortie du script vers un fichier (par exemple, scan.log), vous pouvez vérifier le contenu de ce fichier pour voir si le script a été exécuté. Dans votre terminal, tapez la commande suivante :

tail /home/labex/project/scan.log

Cette commande affichera les dernières lignes du fichier scan.log. Si le script s'exécute correctement, vous devriez voir la sortie des scans Nmap dans le fichier, mise à jour chaque minute.

Si vous n'avez pas redirigé la sortie vers un fichier, vous n'aurez pas de fichier scan.log. Dans ce cas, vous pouvez en créer un maintenant et rediriger la sortie de la tâche cron vers celui-ci. Éditez le crontab à nouveau :

crontab -e

Et changez l'entrée de la tâche cron pour :

* * * * * /home/labex/project/scan.sh > /home/labex/project/scan.log 2>&1

Enregistrez le fichier crontab. Ensuite, attendez une ou deux minutes et vérifiez à nouveau le fichier scan.log en utilisant tail /home/labex/project/scan.log.

Si vous ne voyez toujours aucune sortie, il peut y avoir un problème avec le script ou la tâche cron. Vérifiez attentivement les points suivants :

  • Assurez-vous que le script scan.sh est exécutable (chmod +x scan.sh).
  • Assurez-vous que l'entrée de la tâche cron est correcte dans le fichier crontab (crontab -l pour lister les tâches cron).
  • Assurez-vous d'utiliser le chemin complet vers le script dans l'entrée de la tâche cron (/home/labex/project/scan.sh).
  • Vérifiez s'il y a des erreurs dans le script lui-même.

Important : Comme la tâche cron s'exécute chaque minute, le fichier scan.log va rapidement grandir. Vous pouvez vouloir supprimer la tâche cron après avoir vérifié qu'elle fonctionne correctement pour éviter de saturer l'espace disque. Vous pouvez supprimer la tâche cron en éditant le fichier crontab (crontab -e) et en supprimant la ligne que vous avez ajoutée.

Résumé

Dans ce laboratoire, nous avons appris à automatiser les scans Nmap à l'aide de scripts shell et de cron. Tout d'abord, nous avons créé un simple script shell nommé scan.sh contenant une commande de scan SYN Nmap ciblant une adresse IP spécifique. Nous avons ensuite utilisé chmod +x scan.sh pour rendre le script exécutable, ce qui nous a permis de l'exécuter directement à partir du terminal.

Ensuite, nous avons étendu le script pour inclure plusieurs scans à l'aide d'un éditeur de texte. Enfin, nous avons planifié le script pour qu'il s'exécute automatiquement à l'aide de cron, configuré une tâche cron avec crontab -e et vérifié l'automatisation dans le terminal Xfce. Cela a démontré comment automatiser les tâches de scan réseau pour une surveillance régulière ou des évaluations de sécurité.