13/05/2024

PowerShell

Under The Wire, un wargame pour apprendre PowerShell

I. Présentation

Dans cet article, nous allons découvrir Under the Wire, une plateforme gratuite qui héberge plusieurs wargames pour apprendre PowerShell en s'amusant. Oui, je vous assure, on peut s'amuser avec PowerShell.

Les wargames sont des jeux appréciés, car ils permettent d'apprendre en jouant, c'est-à-dire qu'il y a une réelle portée éducative derrière un wargame. Celui que l'on va découvrir aujourd'hui s'appelle Under the Wire et il a pour objectif de vous faire progresser en PowerShell !

Cet article est disponible au format vidéo :

Précédemment, nous avions également vu le module PowerShell Koans pour progresser en PowerShell en répondant à différentes questions et exercices. PowerShell Koans est dans un style totalement différent, mais vous pouvez le tester gratuitement aussi :

II. Comment fonctionne Under the Wire ?

Under the Wire propose un ensemble de missions découpées en plusieurs quêtes dont l'objectif est de vous permettre d'apprendre de nouvelles commandes PowerShell. A chaque fois, vous devez la ou les commandes PowerShell permettant de récolter une ou plusieurs informations. Ainsi, vous allez pouvoir progresser en trouvant la réponse à l'énigme de chaque quête.

Actuellement, il y a 5 wargames accessibles :

  • Century
  • Cyborg
  • Groot
  • Oracle
  • Trebek

A chaque fois, il y a 15 quêtes à accomplir pour arriver à la fin d'un jeu. Pour chaque quête, on vous explique quelle information vous devez récupérer, et cette information sert de mot de passe pour accéder à la quête suivante. Ce qui signifie que vous devez traiter les quêtes dans l'ordre, et surtout, si vous n'arrivez pas à vous connecter à la quête suivante, c'est probablement que votre réponse est incorrecte.

III. Découverte du jeu Century

Pour accéder à un jeu, comme à celui nommé Century, par exemple, vous devez accéder au Slack d'Under the Wire pour récupérer le nom d'utilisateur et le mot de passe d'accès. Ceci permet d'accéder à la quête 0 pour commencer à jouer !

Pour accéder à l'environnement, vous devez établir une connexion SSH. Vous pouvez utiliser PuTTY, un outil équivalent, ou le client SSH intégré à Windows. Pour utiliser le client SSH de Windows, il suffit d'utiliser la syntaxe suivante (en indiquant le nom d'utilisateur récupéré depuis le Slack du projet :

ssh century.underthewire.tech -l utilisateur
# ou 
ssh [email protected]

Une fois connecté, vous pouvez accéder à la quête n°1, ou au niveau 1, si vous préférez. Pour vous roder un peu sur le sujet, nous allons solutionner ensemble les premiers niveaux.

A. Century 1

Pour le premier niveau, la consigne est la suivante : "The password for Century2 is the build version of the instance of PowerShell installed on this system.". Soit en français : "Le mot de passe pour Century2 est le numéro de build de la version PowerShell installée sur ce système."

Pour obtenir cette information, nous devons donc rechercher comment obtenir le numéro de version en PowerShell. Car oui, ici, tout doit être fait en ligne de commande PowerShell. Nous pouvons obtenir l'information via la variable prédéfinie $PSVersionTable.

Cette commande retourne le résultat suivant :

On nous demande le numéro de build, donc la réponse ce sera "10.0.14393.5582" (à ne pas confondre avec PSVersion). Cela signifie que cette valeur va nous servir de mot de passe pour accéder au niveau 2.

Nous pouvons quitter Century 1 :

exit

B. Century 2

Nous devons établir une connexion SSH, sur le même hôte, mais cette fois-ci avec le nom d'utilisateur "century2". Le mot de passe correspond à la réponse du niveau précédent, à savoir "10.0.14393.5582".

ssh century.underthewire.tech -l century2

Voilà qui est fait !

Prenons connaissance de l'énoncé du niveau 2 : "The password for Century3 is the name of the built-in cmdlet that performs the wget like function within PowerShell PLUS the name of the file on the desktop.". Ce qui nous donne en français : "Le mot de passe pour Century3 est le nom du cmdlet intégré qui exécute la fonction wget dans PowerShell PLUS le nom du fichier présent sur le Bureau."

Ce qui signifie que nous devons collecter 2 informations pour constituer le mot de passe.

  • Le prompt est déjà positionné sur le Bureau, donc il suffit de lister le contenu du répertoire actuel afin d'obtenir le nom du fichier : "443"
Get-ChildItem
  • En ce qui concerne le nom de la commande qui sert à effectuer l'équivalent d'un "wget" en PowerShell, il s'agit du cmdlet "Invoke-WebRequest". Nous pouvons le vérifier car il y a un alias pour wget.
Get-Alias wget

Voici en image :

Ainsi, la réponse au niveau 2 est : "invoke-webrequest443" (sans les majuscules, sinon ça ne fonctionne pas pour se connecter à Century 3).

C. Century 3

Nous allons pouvoir nous connecter à Century 3, toujours sur le même principe :

ssh century.underthewire.tech -l century3

Cette fois-ci, voici l'information à récupérer pour accéder au niveau suivant : "The password for Century4 is the number of files on the desktop.". En français : "Le mot de passe pour Century4 est le nombre de fichiers sur le bureau.".

Nous devons compter le nombre de fichiers sur le Bureau de la session. Il y en a suffisamment pour que ce soit pénible de compter manuellement. Ahah. Tant mieux, car notre objectif est d'utiliser PowerShell ! Nous pouvons obtenir l'information de plusieurs façons, dont celles-ci :

(Get-ChildItem).count
Get-ChildItem | Measure-Object

Nous avons la réponse pour accéder au niveau suivant : "123".

A vous de jouer pour la suite !

IV. Conclusion

Au total, il y a un peu plus de 70 niveaux à effectuer si vous faites tous les jeux disponibles sur Under the Wire ! C'est assez varié au niveau des informations à rechercher (il y aussi une partie Active Directory / GPO) et le joueur doit faire l'effort de tout faire en PowerShell pour atteindre l'objectif de chaque niveau.

author avatar
Florian BURNEL Co-founder
Ingénieur système et réseau, cofondateur d'IT-Connect et Microsoft MVP "Cloud and Datacenter Management". Je souhaite partager mon expérience et mes découvertes au travers de mes articles. Généraliste avec une attirance particulière pour les solutions Microsoft et le scripting. Bonne lecture.
Partagez cet article Partager sur Twitter Partager sur Facebook Partager sur Linkedin Envoyer par mail

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.