Eprouvez votre antivirus avec un cryptolocker (maitrisé)
Les modèles d’attaques informatiques ont évolué ces dernières années. Les cryptolockers sont devenus le fer de lance de beaucoup de pirates.
Votre éditeur d’antivirus vous assure que vous être protégé contre ces nouvelles menaces ? OK, prouvez-le avant d’être bloqué par une vraie attaque.
Parlons cryptolocker
Le principe de base d’un cryptolocker est assez simple : chiffrer les fichiers cibles (souvent .doc, .txt, .odt etc...) et demander ensuite une rançon. Un ransomware n’a rien à gagner à détruire l’OS sous-jacent, donc les fichiers systèmes sont rarement touchés.
On va donc chiffrer le maximum de fichiers puis demander de payer (souvent en Bitcoin ou d’autres cryptomonnaies) pour obtenir la clé de déchiffrement.
Ces menaces sont très sérieuses, de grands groupes ont du y faire face récemment et sont parfois restés paralysés plusieurs jours.
Détecter un cryptolocker
Le souci est que nous sommes aujourd’hui dans un monde avec des malwares toujours plus perfectionnés et discrets. De nos jours, on exploite en grosse partie la puissance des moteurs heuristiques sur les antivirus. Ces moteurs détectent un comportement anormal ou dangereux plutôt que simplement un binaire identifié au préalable (signature).
Le but du test que je vous propose aujourd’hui consiste justement à éprouver les performances de ce moteur, que ce soit sur sa vitesse de détection, de réaction (blocage de l’attaque) et sa remédiation.
Ransomware as a service
Pour effectuer ces tests, nous allons utiliser un petit outil open source :
Ce petit script en python permet de simuler le fonctionnement de base d’un cryptolocker.
Il va vous permettre de démarrer un serveur local, qui servira à recueillir les informations sur le chiffrement (Adresse IP, clés de chiffrement, etc.).
Il permet aussi de créer le script qui sera utilisé pour le chiffrement, et de le compiler pour le rendre portable.
Pourquoi ce projet est intéressant ?
Dans un premier temps, l’intérêt est déjà qu’il est complètement inoffensif :
- Il ne se propage pas sur votre réseau
- Vous pouvez déchiffrer les données
- Il est open source, vous pouvez voir ou modifier le code
- il fonctionne sur tous les OS, car il ne nécessite que Python 3
Ensuite, le modèle d’attaque est d’autant plus digne d’intérêt qu’il est réaliste, l’utilisation d’un script en python en mode "standalone" permet de simuler un cas concret : une librairie tierce disponible sur pip par exemple, qui serait malveillante.
Cela permet aussi de vérifier que votre antivirus réagit sur face à des attaques qui ne sont pas des binaires.
Télécharger et mettre en place les prérequis
Cloner le repository
Si vous avez le client Git installé, vous pouvez directement cloner le repository via le client Git :
git clone [email protected]:leonv024/RAASNet.git
Si vous n’avez pas le client Git, vous pouvez aussi directement télécharger le fichier compressé en zip depuis le repository.
Installer les prérequis
Sur le PC sur lequel vous voulez tester le script, il est nécessaire d’avoir au préalable Python 3 d’installé, ainsi que le client pip3.
Pour ces installations, je vous invite à vous rendre sur les pages de documentations associées pour voir comment les installer en fonction de votre contexte OS :
- Python 3 : https://docs.python.org/fr/3/using/index.html
- PIP 3 : https://pip.pypa.io/en/stable/installing/
Une fois ces étapes réalisées, il est nécessaire d’installer les prérequis :
pip install -r ./requirements.txt
Sous Windows, il est nécessaire d’installer un paquet supplémentaire pour la gestion des fenêtres :
pip install image
Démarrer l’application
Une fois les prérequis installés, vous pouvez démarrer l’application :
python3 ./RAASNet.py
Une fois que c’est fait, vous devrez créer un compte, il n’est pas nécessaire d’avoir une adresse mail valide pour ce compte.
Ensuite, vous pouvez démarrer le serveur, ce dernier vous permettra de recueillir les informations lorsqu’un chiffrement commence.
Attention : Si vous ne démarrez pas le serveur, vous n’aurez pas la clé de déchiffrement !
Initier le payload d’attaque
Maintenant que nous avons préparé le socle de notre attaque. La prochaine étape sera donc de créer le script d’attaque.
Pour ce faire, nous allons donc cliquer sur "Generate Payload". Ensuite, vous pouvez sélectionner les options de votre attaque :
- La liste des fichiers cibles
- Le répertoire de base pour l’attaque
- La méthode de chiffrement à utiliser
- Afficher ou non une fenêtre à la fin pour indiquer que le contenu est chiffré
Une fois la configuration terminée, cliquez simplement sur "Generate" pour créer deux scripts :
- payload.py : Ce script est votre charge d’attaque à proprement parler
- decrypt.py : ce script permet de déchiffrer les fichiers après l’attaque
C’est l’heure du popcorn !
Maintenant que vous avez tout préparé, c’est le moment le plus marrant : lancer l’attaque !
Ici 3 points à surveiller sur votre antivirus :
- la détection ou non de l’attaque
- la vitesse de détection
- la possibilité de remédier ou non : l’antivirus sait-il restaurer les fichiers chiffrés ?
Pour lancer l’attaque, une simple commande :
python3 payload.py
Selon la méthode de chiffrement que vous avez choisi et le volume de données, le chiffrement prendra de quelques secondes à plusieurs minutes.
L’intérêt ici est de voir si votre antivirus réagit ou non au chiffrement, via son moteur heuristique.
Pour que le test soit le plus cohérent, n’hésitez pas à varier le mode d’attaque, par exemple en lançant le chiffrement depuis une clé USB et en mettant le serveur à distance.
De plus, pour être sûr de déclencher votre antivirus, il ne faut pas hésiter à mettre un peu de volume de fichier (quelques milliers) pour s’assurer que le volume est suffisant pour le faire réagir.
Et en binaire ?
RAASNet vous permet aussi de convertir les scripts python en binaires classiques. Y compris en remplaçant l’icône de base.
En agissant ainsi, vous pouvez reproduire des modèles d’attaque classiques, par exemple, une facture PDF par mail, un exécutable en exécution automatique sur une clé USB, un téléchargement depuis un site tiers, etc.
L’idée une fois de plus est de reproduire des attaques classiques et d’observer la réaction (ou non) de votre antivirus.
Pour terminer
Que votre antivirus ait détecté ou non l’attaque, il faut rester pragmatique.
En fonction du vecteur utilisé, il peut être normal que votre antivirus ait considéré l’action comme légitime, c’est pourquoi il ne faut pas hésiter à déporter la charge virale sur une simple clé USB par exemple.
De plus, ce malware est volontairement inconnu et inoffensif, donc le risque est maîtrisé.
Toutefois, cela reste un test simple et intéressant à faire pour éprouver la réaction de votre antivirus.
Pour ma part, mon antivirus personnel a détecté le comportement anormal au bout de quelques fichiers chiffrés et a rétabli le contenu.
Comments ()