Automatisation Kali avec Bash et Python

Kali LinuxKali LinuxBeginner
Pratiquer maintenant

💡 Ce tutoriel est traduit par l'IA à partir de la version anglaise. Pour voir la version originale, vous pouvez cliquer ici

Introduction

Dans ce laboratoire, vous apprendrez à automatiser des tâches dans Kali Linux en utilisant des scripts Bash et Python au sein de l'environnement de la machine virtuelle (VM) LabEx. L'accent est mis sur la rationalisation des tâches d'audit de sécurité répétitives, telles que l'analyse réseau avec Nmap et l'analyse des journaux. Vous créerez des scripts, définirez des permissions, planifierez des tâches automatisées avec des tâches Cron (Cron jobs), et testerez leur exécution. Conçu pour les débutants, ce laboratoire fournit des instructions détaillées, étape par étape, pour développer des compétences fondamentales en automatisation dans un conteneur Kali Linux. Lorsque vous ouvrirez le terminal, vous serez automatiquement connecté au shell du conteneur Kali Linux, prêt à commencer à vous exercer.

Configuration de l'environnement et installation des outils

Dans cette première étape, vous configurerez votre environnement de travail à l'intérieur du conteneur Kali Linux et installerez les outils nécessaires pour le laboratoire. Il s'agit d'une étape fondamentale pour vous assurer que vous disposez de tous les logiciels requis pour les tâches d'automatisation telles que l'analyse réseau et l'analyse des journaux.

Lorsque vous ouvrirez le terminal dans la VM LabEx, vous serez automatiquement connecté au shell du conteneur Kali Linux. Il n'est pas nécessaire de démarrer manuellement le conteneur ou d'entrer dans le shell ; l'environnement est déjà configuré pour vous.

Commençons par mettre à jour la liste des paquets et installer des outils essentiels tels que nmap pour l'analyse réseau et python3 pour le scripting. Ces outils sont essentiels pour les tâches à venir. Exécutez les commandes suivantes dans le terminal pour mettre à jour le système et installer les paquets requis. Appuyez sur Entrée après chaque commande :

apt update
apt install -y nmap python3

Ces commandes actualiseront la liste des paquets et installeront nmap et python3 s'ils ne sont pas déjà présents. L'installation peut prendre quelques instants, veuillez donc patienter jusqu'à ce qu'elle soit terminée. Vous verrez une sortie indiquant la progression du téléchargement et de l'installation.

Une fois l'installation terminée, vérifiez que nmap est installé en vérifiant sa version. Exécutez cette commande :

nmap --version

La sortie attendue ressemblera à ceci (les numéros de version peuvent varier) :

Nmap version 7.91 ( https://nmap.org )
Platform: x86_64-pc-linux-gnu
Compiled with: liblua-5.3.6 openssl-1.1.1n libpcre-8.39 libpcap-1.10.1 nmap-libdnet-1.12 ipv6
Compiled without:
Available NSE scripts: 609

Cela confirme que nmap est installé et prêt à être utilisé. Ensuite, vérifiez si python3 est installé en exécutant :

python3 --version

La sortie attendue sera similaire à ceci (les numéros de version peuvent varier) :

Python 3.9.2

Cela vérifie que python3 est disponible pour les tâches de scripting. Avec ces outils installés, vous avez préparé l'environnement du conteneur Kali Linux pour les tâches d'automatisation dans les étapes suivantes. Cette étape garantit que toutes les opérations ultérieures peuvent être effectuées sans problèmes liés à l'absence de logiciels.

Création d'un script Bash pour les analyses Nmap

Maintenant que votre environnement est configuré avec les outils nécessaires, créons un script Bash pour automatiser les analyses Nmap. Le scripting Bash est un moyen puissant d'automatiser les tâches répétitives sous Linux, et dans cette étape, vous apprendrez à écrire un script simple pour exécuter une analyse Nmap sur localhost.

Un script Bash est un fichier texte brut contenant une série de commandes que le shell exécute. Cela vous permet de gagner du temps en exécutant plusieurs commandes avec une seule exécution. Puisque vous êtes déjà dans le shell du conteneur Kali Linux (automatiquement connecté lorsque vous ouvrez le terminal), vous pouvez commencer à travailler directement.

Créons un script nommé nmap_scan.sh dans le répertoire /root. Suivez attentivement ces instructions pour créer et enregistrer le script. Exécutez la commande suivante pour ouvrir l'éditeur de texte nano et créer un nouveau fichier :

nano /root/nmap_scan.sh

Cela ouvre l'éditeur nano. Maintenant, tapez ou collez le contenu suivant dans l'éditeur :

#!/bin/bash
echo "Starting Nmap scan on localhost..."
nmap localhost
echo "Scan completed."

Comprenons ce script. La ligne #!/bin/bash indique qu'il s'agit d'un script Bash. Les commandes echo affichent des messages dans le terminal pour vous informer du début et de la fin de l'analyse. La commande nmap localhost exécute une analyse de base sur votre machine locale, ce qui est une cible sûre à des fins d'apprentissage.

Pour enregistrer le fichier dans nano, appuyez sur Ctrl+O, puis sur Entrée pour confirmer le nom de fichier /root/nmap_scan.sh. Après avoir enregistré, appuyez sur Ctrl+X pour quitter l'éditeur. Vous reviendrez à l'invite de commande du terminal.

Maintenant, vérifiez que le fichier a été créé avec succès en listant le contenu du répertoire /root. Exécutez cette commande :

ls -l /root

Vous devriez voir une sortie similaire à celle-ci :

-rw-r--r-- 1 root root  85 Oct 12 10:15 nmap_scan.sh

Cela confirme que le fichier nmap_scan.sh existe dans le répertoire /root. Dans l'étape suivante, vous rendrez ce script exécutable et le testerez. Pour l'instant, vous avez créé avec succès votre premier script d'automatisation pour l'analyse réseau.

Création d'un script Python pour l'analyse des journaux

Après avoir créé un script Bash pour les analyses Nmap, écrivons maintenant un script Python pour automatiser l'analyse des journaux. L'analyse des journaux est une tâche courante dans l'analyse de sécurité, où vous extrayez des informations spécifiques des fichiers journaux. Python est idéal pour cela en raison de sa simplicité et de ses puissantes capacités de traitement de texte.

Dans cette étape, vous créerez un script Python nommé log_parser.py dans le répertoire /root pour analyser un exemple de fichier journal. Puisque vous êtes déjà dans le shell du conteneur Kali Linux (automatiquement connecté lorsque vous ouvrez le terminal), vous pouvez procéder directement aux tâches.

Tout d'abord, créons un exemple de fichier journal à analyser. Exécutez la commande suivante pour créer un fichier nommé sample.log dans le répertoire /root avec quelques entrées de journal factices :

echo -e "2023-10-12 10:00:00 INFO System started\n2023-10-12 10:01:00 ERROR Connection failed\n2023-10-12 10:02:00 INFO User logged in" > /root/sample.log

Vérifiez que le fichier a été créé en listant le contenu du répertoire /root :

ls -l /root

Vous devriez voir une sortie similaire à celle-ci :

-rw-r--r-- 1 root root 112 Oct 12 10:20 sample.log

Maintenant, créons le script Python. Ouvrez l'éditeur nano pour créer un nouveau fichier nommé log_parser.py en exécutant :

nano /root/log_parser.py

Dans l'éditeur nano, tapez ou collez le contenu suivant :

#!/usr/bin/env python3
print("Starting log parsing...")
with open('/root/sample.log', 'r') as file:
    for line in file:
        if 'ERROR' in line:
            print(line.strip())
print("Log parsing completed.")

Ce script commence par #!/usr/bin/env python3 pour spécifier qu'il doit s'exécuter avec Python 3. Il ouvre le fichier /root/sample.log, le lit ligne par ligne et n'imprime que les lignes contenant le mot ERROR. Les instructions print fournissent des informations sur le début et la fin du processus d'analyse.

Pour enregistrer le fichier, appuyez sur Ctrl+O, puis sur Entrée pour confirmer le nom de fichier /root/log_parser.py. Après avoir enregistré, appuyez sur Ctrl+X pour quitter l'éditeur.

Vérifiez la création du fichier en listant à nouveau le contenu du répertoire /root :

ls -l /root

Vous devriez voir une sortie similaire à celle-ci :

-rw-r--r-- 1 root root 112 Oct 12 10:20 sample.log
-rw-r--r-- 1 root root 150 Oct 12 10:22 log_parser.py

Cela confirme que les deux fichiers sont en place. Dans l'étape suivante, vous rendrez ce script exécutable avec le script Bash de l'étape précédente. Pour l'instant, vous avez créé avec succès un script Python pour l'analyse des journaux.

Définition des permissions pour les scripts

Avec les scripts Bash nmap_scan.sh et Python log_parser.py créés dans le répertoire /root, l'étape suivante consiste à les rendre exécutables. Sous Linux, les scripts ont besoin de permissions d'exécution pour être exécutés directement depuis le terminal. Cette étape vous guidera à travers la définition des permissions correctes pour les deux scripts.

Les permissions de fichier sous Linux contrôlent qui peut lire, écrire ou exécuter un fichier. Par défaut, les fichiers nouvellement créés n'ont pas de permissions d'exécution, vous devez donc les accorder explicitement à l'aide de la commande chmod. Puisque vous êtes déjà dans le shell du conteneur Kali Linux (automatiquement connecté lorsque vous ouvrez le terminal), vous pouvez procéder directement.

Tout d'abord, vérifiez les permissions actuelles des fichiers dans le répertoire /root en exécutant :

ls -l /root

Vous devriez voir une sortie similaire à celle-ci :

-rw-r--r-- 1 root root  85 Oct 12 10:15 nmap_scan.sh
-rw-r--r-- 1 root root 150 Oct 12 10:22 log_parser.py

Notez qu'il n'y a pas de x dans la chaîne de permissions (par exemple, -rw-r--r--), ce qui signifie que les fichiers ne sont pas encore exécutables. Changeons cela en ajoutant des permissions d'exécution aux deux scripts. Exécutez les commandes suivantes :

chmod +x /root/nmap_scan.sh
chmod +x /root/log_parser.py

Ces commandes utilisent chmod +x pour ajouter des permissions d'exécution pour tous les utilisateurs aux fichiers spécifiés. Maintenant, vérifiez les permissions mises à jour en listant à nouveau les fichiers :

ls -l /root

Vous devriez voir une sortie similaire à celle-ci :

-rwxr-xr-x 1 root root  85 Oct 12 10:15 nmap_scan.sh
-rwxr-xr-x 1 root root 150 Oct 12 10:22 log_parser.py

Notez le x dans les permissions (par exemple, -rwxr-xr-x), ce qui indique que les fichiers sont maintenant exécutables. Cette étape est cruciale car sans permissions d'exécution, vous ne pouvez pas exécuter les scripts directement. Dans l'étape suivante, vous testerez ces scripts pour vous assurer qu'ils fonctionnent comme prévu.

Test de l'exécution des scripts

Maintenant que vous avez créé et défini les permissions d'exécution pour nmap_scan.sh et log_parser.py dans le répertoire /root, il est temps de les tester pour vous assurer qu'ils fonctionnent comme prévu. Tester manuellement les scripts avant de les automatiser est une bonne pratique pour détecter toute erreur ou problème. Puisque vous êtes déjà dans le shell du conteneur Kali Linux (automatiquement connecté lorsque vous ouvrez le terminal), vous pouvez procéder directement.

Commençons par tester le script Bash pour les analyses Nmap. Exécutez la commande suivante pour exécuter le script :

/root/nmap_scan.sh

Vous devriez voir une sortie similaire à celle-ci (les résultats exacts de Nmap peuvent varier en fonction de l'environnement) :

Starting Nmap scan on localhost...
Starting Nmap 7.91 ( https://nmap.org ) at 2023-10-12 10:30 UTC
Nmap scan report for localhost (127.0.0.1)
Host is up (0.00010s latency).
Not shown: 1000 closed ports
PORT   STATE SERVICE
Nmap done: 1 IP address (1 host up) scanned in 0.05 seconds
Scan completed.

Cette sortie confirme que le script nmap_scan.sh s'exécute avec succès et effectue une analyse de base sur localhost. Ensuite, testons le script Python pour l'analyse des journaux. Exécutez la commande suivante :

/root/log_parser.py

Vous devriez voir une sortie similaire à celle-ci :

Starting log parsing...
2023-10-12 10:01:00 ERROR Connection failed
Log parsing completed.

Cette sortie confirme que le script log_parser.py s'exécute avec succès et analyse le fichier /root/sample.log pour afficher les lignes contenant ERROR. En exécutant manuellement ces scripts, vous avez vérifié qu'ils fonctionnent comme prévu. Dans la dernière étape, vous apprendrez comment automatiser leur exécution à l'aide des tâches Cron.

Planification des scripts avec les tâches Cron

Dans cette dernière étape, vous apprendrez comment automatiser l'exécution de vos scripts nmap_scan.sh et log_parser.py à l'aide des tâches Cron. Cron est un planificateur de tâches basé sur le temps sous Linux qui vous permet d'exécuter des scripts ou des commandes à des intervalles spécifiés. Il s'agit d'une compétence clé pour automatiser les tâches répétitives en matière d'audit de sécurité. Puisque vous êtes déjà dans le shell du conteneur Kali Linux (automatiquement connecté lorsque vous ouvrez le terminal), vous pouvez procéder directement.

Pour planifier des tâches, vous devez modifier le fichier crontab, qui contient la liste des tâches planifiées pour l'utilisateur actuel. Ouvrez l'éditeur crontab en exécutant la commande suivante :

crontab -e

Cela ouvrira le fichier crontab dans un éditeur de texte, probablement nano. Si vous êtes invité à choisir un éditeur, sélectionnez nano en entrant le numéro correspondant et en appuyant sur Entrée. Faites défiler jusqu'en bas du fichier et ajoutez les lignes suivantes pour planifier l'exécution de vos scripts toutes les 5 minutes :

*/5 * * * * /root/nmap_scan.sh >> /root/nmap_scan.log 2>&1
*/5 * * * * /root/log_parser.py >> /root/log_parser.log 2>&1

Décomposons cette configuration. */5 * * * * signifie que la tâche s'exécutera toutes les 5 minutes. Les cinq champs représentent respectivement la minute, l'heure, le jour du mois, le mois et le jour de la semaine. Les chemins /root/nmap_scan.sh et /root/log_parser.py spécifient les scripts à exécuter, et >> redirige leur sortie vers les fichiers journaux /root/nmap_scan.log et /root/log_parser.log pour une consultation ultérieure. Le 2>&1 garantit que les messages d'erreur sont également capturés dans les fichiers journaux.

Pour enregistrer les modifications dans nano, appuyez sur Ctrl+O, puis sur Entrée pour confirmer. Après avoir enregistré, appuyez sur Ctrl+X pour quitter l'éditeur. Vous reviendrez à l'invite du terminal, et vous pourriez voir un message comme :

crontab: installing new crontab

Cela confirme que les tâches Cron ont été planifiées. Pour vérifier que les tâches sont ajoutées, listez les entrées crontab actuelles en exécutant :

crontab -l

Vous devriez voir une sortie similaire à celle-ci :

*/5 * * * * /root/nmap_scan.sh >> /root/nmap_scan.log 2>&1
*/5 * * * * /root/log_parser.py >> /root/log_parser.log 2>&1

Cela confirme que vos scripts sont planifiés pour s'exécuter toutes les 5 minutes. Notez qu'en raison de l'environnement du conteneur, le démon Cron pourrait ne pas s'exécuter en continu pendant cette session de laboratoire, mais le processus de configuration reste le même. Vous avez maintenant terminé la configuration de l'automatisation pour vos scripts.

Résumé

Dans ce laboratoire, vous avez appris les bases de l'automatisation dans Kali Linux en utilisant les scripts Bash et Python. Vous avez commencé par configurer votre environnement et installer les outils nécessaires tels que Nmap et Python. Ensuite, vous avez créé un script Bash pour automatiser les analyses Nmap et un script Python pour l'analyse des journaux. Vous avez défini les permissions d'exécution pour ces scripts, testé leur fonctionnalité et, enfin, les avez planifiés pour qu'ils s'exécutent automatiquement à l'aide des tâches Cron. Ces compétences constituent une base solide pour l'automatisation des tâches répétitives en cybersécurité et en administration système au sein d'un environnement de conteneur Kali Linux contrôlé.