12/05/2024

Commandes et Système

Avec arsenal, créez un inventaire de vos commandes Linux favorites et gagnez en efficacité

I. Présentation

Dans cet article, je vous présente un outil dont je me sers de façon quotidienne : arsenal. Il s'agit d'un outil open source proposé par Orange Cyberdéfense. Cet outil permet de sauvegarder et de retrouver très rapidement et facilement vos lignes de commandes favorites.

Pour ma part, je l'utilise pour retrouver mes commandes et outils lors de mes missions d'audit et de test d'intrusion. Mais il peut être utilisé par tout un tas de métiers utilisant quotidiennement un système Linux et qui ont des tonnes de commandes, outils et paramètres à retenir. Là où je devais auparavant aller chercher dans mes notes personnelles ou une documentation pour retrouver une commande et les options exactes à utiliser, j'utilise maintenant arsenal de la manière suivante :

Pratique, n'est ce pas ?

II. Installation d'arsenal

Commençons par l'installation, arsenal peut être installé de plusieurs manières :

  • Installation depuis le Github :
git clone https://github.com/Orange-Cyberdefense/arsenal.git
cd arsenal
python3 -m pip install -r requirements.txt
./run

Pour aller plus vite, vous pouvez ajouter arsenal dans l'un des dossiers de votre PATH :

sudo ln -s /opt/arsenal/run /usr/bin/arsenal
  • Installation via python3-pip
python3 -m pip install arsenal-cli

Le binaire arsenal se trouvera alors dans ~/.local/bin, pensez bien à le rajouter dans votre PATH si ce n'est pas déjà fait.

Dans les deux cas, l'outil pourra être lancé depuis n'importe quel dossier avec la commande suivante :

arsenal

Pour aller encore plus vite, je me suis créé un alias de commande pour associer la commande "a" et la commande "arsenal", j'ai donc accès à toutes mes commandes avec une seule lettre. Pour ce faire, ajoutez cette ligne dans votre fichier ~/.bashrc (pour ceux qui utilisent bash bien sûr), puis rechargez votre terminal :

alias a=arsenal

Cette action peut être automatisée par le script addalias.sh fourni dans arsenal.

III. Retrouver ses commandes facilement avec arsenal

Par défaut, arsenal est fourni avec tout un tas de commandes plutôt orientées test d'intrusion (l'outil a été fait par/pour des pentester). Par exemple si vous souhaitez retrouver les commandes utilisant nmap (un scanner réseau), il suffit de lancer arsenal, puis de saisir "nmap" :

On peut ici voir plusieurs informations :

  • La première colonne est la plateforme cible de la commande (L pour Linux, W pour Windows), la seconde colonne la cible de la commande (local, reconnaissance, distante, etc.) et la troisième colonne la catégorie.
  • Les quatrième et cinquième colonnes contiennent l'outil utilisé et une courte description, puis l'on aperçoit la commande en question.

Ici, tous ces champs sont pris en compte lors de la recherche. Vous pouvez donc simplement saisir Linux pour avoir toutes les commandes sur la plateforme Linux ou recon pour avoir toutes les commandes liées à de la reconnaissance, mais également commencer à saisir votre commande de tête, il ne restera au bout de quelques lettres que les 2 ou 3 commandes qui correspondent à ce que vous avez saisi.

Ensuite, plusieurs paramètres peuvent être à saisir pour compléter la commande et la faire correspondre à votre contexte exact, ici un nom d’utilisateur et le nom d'une base de données cible par exemple :

Suite à cela, il suffit de taper la touche "Entrée" pour que la commande s'ajoute dans votre terminal. Vous pourrez ensuite vérifier une dernière fois que la commande générée est la bonne, puis exécuter la commande ! Plus besoin donc de se rappeler de la totalité des options de tous vos outils, arsenal le fait pour vous.

IV. Utiliser ses propres commandes

Les commandes de pentest, c'est bien gentil, mais cela doit assez peu vous intéresser si vous n'êtes pas pentester. Bonne nouvelle, vous pouvez intégrer à arsenal toutes vos commandes favorites et enlever les commandes préenregistrées.

Il est en effet possible de rajouter ses propres fichiers de commande au sein du dossier ~/.cheats ou du dossier my_cheats/ présent dans le dossier d'arsenal. Tout fichier .md (Markdown) créé dans ces dossiers sera parcouru par arsenal. Attention, un formatage est bien sûr à respecter, au risque de faire planter arsenal au lancement (vous vous en apercevrez vite ;-)) .

Prenons un exemple : je souhaite enregistrer les commandes pour manipuler des archives tar, car les options me sortent souvent de la tête . Il conviendra de définir un fichier .md semblable à celui-ci (cet exemple est déjà intégré à arsenal) :

# tar
% archive
#plateform/linux #target/local #cat/UTILS 

## Create a tar containing files
```
tar cf <name>.tar <files>
```

## Extract the files from a tar
```
tar xf <tar_file>
```

## Create a tar with Gzip compression
```
tar czf <name>.tar.gz <files> 
```

## Extract a tar using Gzip
```
tar xzf <targz_file>
```

Je vous propose avec l'image ci-dessous une correspondance entre le contenu du fichier .md ci-dessus et le résultat dans arsenal dans l'image ci-dessous :

Une chose à rajouter, vous pouvez (et c'est le plus pratique) ajouter des variables pour vos options. Par exemple, le nom du groupe et de la VM à supprimer dans la commande Azure Cloud suivante :

az vm delete -g MyRG -n MyLinuxVM --yes

Pour cela, il faut mettre l'élément concerné entre chevrons (< >), exemple sous format arsenal :

# az
% cloud
#plateform/Azure #target/remote #cat/UTILS 

## delete VM (with name and group specified)
```
az vm delete -g <groupeName> -n <VMName> --yes
```

Voici le résultat dans l'outil :

Encore mieux, vous pouvez mettre des valeurs pré-saisies dans ces variables. C'est par exemple pratique si vous utilisez les mêmes valeurs dans 90% des cas, mais qu'il arrive que ces valeurs changent. On utilisera alors un pipe ( | ):

# az
% cloud
#plateform/Azure #target/remote #cat/UTILS 

## delete VM (with the name MyLinuxVM in the group MyRG)
```
az vm delete -g <groupeName|ServeursWindows> -n <VMName|VM_Windows_01> --yes
```

Vous verrez alors que vos variables de commande sont déjà remplies, mais que vous êtes toujours libre de les modifier via arsenal. Enfin pour enlever les nombreuses commandes pré-enregistrées dans arsenal, il vous suffit de renommer le dossier "cheats" par défaut :

  • Si vous avez installé arsenal via git : il se trouvera à la racine du répertoire d'installation (par exemple /opt/arsenal/cheats)
  • Si vous l'avez installé via pip : il se trouvera dans /home/<username>/.local/lib/python3.<X>/site-packages/arsenal/data/.

Un renommage en cheatsOLD suffira par exemple. Pensez cependant à parcourir les fichiers .md par défaut pour vous habituer à la syntaxe des commandes et récupérer celles qui vous intéressent.

V. Conclusion

Arsenal est un outil ultra pratique pour ceux qui travaillent la majorité de leur temps en ligne de commande, sa conception fait qu'il est simple et rapide d'utilisation, même si la création de vos propres cheats (fichiers Markdown) peut prendre du temps au départ. Je vous recommande vivement de l'essayer !

N'hésitez pas à partager votre avis et poser vos questions dans les commentaires ou sur notre discord ! 🙂

author avatar
Mickael Dorigny Co-founder
Co-fondateur d'IT-Connect.fr. Auditeur/Pentester chez Orange Cyberdéfense.
Partagez cet article Partager sur Twitter Partager sur Facebook Partager sur Linkedin Envoyer par mail

1 commentaire sur “Avec arsenal, créez un inventaire de vos commandes Linux favorites et gagnez en efficacité

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.