ransomware
Recherche sur les menaces

Sophos découvre un ransomware abusant du nom “Sophos”

Les attaquants utilisent parfois des noms d’entreprises de sécurité dans leurs malwares.

Mise à jour du 24 juillet : cet article a été mis à jour avec des informations supplémentaires sur la méthode de chiffrement utilisée par le ransomware et d’autres détails sur ce dernier, ainsi qu’une preuve de concept (PoC) pour déchiffrer les fichiers concernés si le mot de passe utilisé était récupéré ou attaqué par force brute. 

Récemment, lors d’une consultation classique de VirusTotal à la recherche de malwares intéressants et de nouvelles variantes de ransomware à l’aide de nos règles de chasse aux menaces, un analyste de Sophos X-Ops a découvert un nouvel exécutable de ransomware qui semblait utiliser “Sophos” dans l’interface utilisateur du panneau alertant que les fichiers ont bien été chiffrés (voir ci-dessous) et aussi “.sophos” comme extension pour les fichiers chiffrés.

Les équipes des SophosLabs ont immédiatement investigué et commencé à développer une règle de détection ciblée pour les produits de sécurité Endpoint de Sophos, mais précisons tout de même qu’une règle comportementale préexistante (avec l’aide de Sophos CryptoGuard) a empêché le ransomware de causer des dommages lors des tests. Cette règle de détection ciblée a été publiée comme indiqué dans la section “Détection” ci-dessous.

ransomware

L’exécutable du ransomware lui-même, compilé à l’aide de MinGW et contenant des bibliothèques Rust liées, semble étonnamment ‘ancien’ par rapport aux fonctionnalités qu’il propose. Dans la plupart des incidents de ransomware actuels, les acteurs malveillants qui développent ce malware créent un outil qui est explicitement et exclusivement conçu dans le but de chiffrer les fichiers, sans inclure beaucoup d’autres fonctionnalités. La plupart des ransomwares que nous traitons aujourd’hui sont des exécutables à usage unique qui n’apportent pas beaucoup de fonctionnalités supplémentaires, voire aucune.

Les diverses indications disponibles et les enregistrements de VirusTotal sur ces fichiers semblent indiquer, et notre analyse d’ailleurs le confirme, que l’un des échantillons aurait la capacité de lancer bien d’autres actions, allant donc au-delà du chiffrement des fichiers, ce qui est plutôt inhabituel. Le ransomware semble également mettre l’accent sur des méthodes permettant à la cible de communiquer avec l’attaquant, lesquelles ne sont plus utilisées par la plupart des groupes de ransomware aujourd’hui : à savoir les emails et la plateforme de messagerie instantanée Jabber.

En fait, les capacités de l’un de ces fichiers se rapprochent davantage d’un RAT (Remote Access Trojan) généraliste avec la capacité de chiffrer des fichiers et de générer des demandes de rançon, s’éloignant ainsi d’un exécutable de ransomware actuel. Ces fonctionnalités incluent le piratage du pilote du clavier afin d’enregistrer les frappes sur ce dernier (keystroke logging) et l’analyse du système à l’aide de commandes WMI. Comme beaucoup d’autres ransomwares, il exclut une liste de répertoires qui empêcheraient le système de démarrer ou qui contiendraient des fichiers sans importance s’ils étaient chiffrés. Le ransomware vérifie également les paramètres de langue du système et refuse de s’exécuter s’il est configuré pour utiliser la langue russe.

L’autre échantillon connu possède moins de fonctionnalités de type non-ransomware. Cependant, les deux se connectent via Internet à une adresse de serveur ‘command-and-control’. La connexion fait référence à une adresse sur le dark web via Tor (.onion), mais les échantillons de ransomware que nous avons analysés n’établissent pas réellement de connexion Tor.

De plus, les deux échantillons contiennent une adresse IP hardcodée (celle à laquelle nous avons vu les échantillons se connecter). L’adresse est associée depuis plus d’un an à la fois aux attaques ‘command-and-control’ de Cobalt Strike et aux attaques automatisées qui tentent d’infecter les ordinateurs connectés à Internet avec un logiciel de cryptominage.

ransomware

Les données historiques impliquent fortement l’adresse C2 utilisée par le ransomware dans une activité malveillante antérieure.

Utilisation de la console du ransomware

Les deux échantillons sont destinés à être exécutés via la ligne de commande Windows. Lorsqu’il est exécuté dans l’application d’invite de commande Windows, le ransomware demande à l’utilisateur (“utilisateur” désigne ici le cybercriminel qui déploie ce dernier, et non le propriétaire de l’ordinateur) d’entrer une série d’informations qui configure son comportement et le contenu de la demande de rançon qui sera éventuellement envoyée.

Le programme demande à la personne qui l’exécute d’entrer un “mot de passe chiffré (32 caractères)” suivi d’un “jeton“, d’une adresse email et d’une adresse de compte de messagerie instantanée Jabber. Une fois que l’utilisateur a entré ces informations, le programme invite l’utilisateur à sélectionner une option pour (1) chiffrer tous les fichiers sur le disque dur, (2) chiffrer une seule lettre de lecteur ou (3) quitter le programme.

ransomware

La console du ransomware invite le cybercriminel à ajouter ses informations de contact.

Si l’utilisateur choisit les options “single” ou “all“, lorsque le ransomware termine la tâche de chiffrement, il renomme les fichiers chiffrés en utilisant la valeur “jeton” dans le nom de fichier renommé. L’adresse email et l’adresse Jabber sont ajoutées à la demande de rançon, qui est une application HTML (fichier .hta) déposée dans n’importe quel répertoire où le chiffrement a eu lieu.

Le fichier .hta affiche simplement la demande de rançon, personnalisée avec l’adresse email et d’autres informations fournies par l’attaquant au début de l’attaque.

ransomware

Le fichier .hta a intégré les informations concernant l’email/l’ID Jabber.

ransomware

Le ransomware ajoute un identifiant de machine unique, l’adresse email saisie lors de l’installation et le suffixe “.sophos” à chaque fichier qu’il chiffre à la fin du processus.

ransomware

Les fichiers renommés par le ransomware ajoutent le suffixe .sophos.

Si le processus de chiffrement est stoppé avant qu’il ne soit terminé, le ransomware n’envoie pas de demande de rançon et ne remplace pas l’image du fond d’écran par celle récupérée sur le serveur d’images publiques.

Le ransomware récupère également un graphisme à partir d’un site Web proposant une bibliothèque d’images publiques et l’utilise pour changer le fond d’écran du bureau Windows en un écran qui affiche “Sophos”. Il est à noter que les logos, les couleurs ou la marque Sophos ne sont pas reproduits ici, mais à la place nous voyons apparaître un logo de type ‘cadenas vert’ et des instructions sur la manière avec laquelle la cible peut trouver et utiliser la demande de rançon pour contacter les attaquants.

ransomware

L’icône du fichier de ransomware semble correspondre à l’icône du cadenas utilisée dans le graphisme du fond d’écran affiché en haut de l’article.

Lorsqu’il est exécuté via la console, le ransomware génère une longue liste de ce qui semble être une journalisation de débogage (debug logging), indiquant le temps qu’il a fallu pour chiffrer chaque fichier qu’il a trouvé, en millisecondes.

ransomware

Le ransomware génère une journalisation de débogage dans la console lors de son exécution. Il signalera “SUCCESS” même lorsque Sophos Intercept X l’empêchera de chiffrer les fichiers.

Le test du ransomware a également révélé que ce dernier tentait de valider la permission donnée par l’utilisateur de l’utiliser lorsqu’il est exécuté sur un ordinateur connecté à Internet. Lors de nos tests, le ransomware était également capable d’effectuer des tâches de chiffrement lorsqu’il était exécuté sur un ordinateur non connecté à Internet.

Un ransomware qui vérifie sa propre validité

Les feuilles de propriétés des exécutables du ransomware indiquent qu’il s’agit respectivement des versions 0.0.8 et 0.0.9 du programme. Aucun exécutable n’est signé et les deux invitent à procéder à une élévation via le mécanisme UAC lorsqu’ils sont exécutés.

ransomware

Le comportement initial du ransomware est que l’utilisateur (encore une fois, “utilisateur” signifie cybercriminel) entre un “jeton“. Ce dernier effectue alors un profilage minimaliste du système concernant l’ordinateur, récupère l’adresse IP publique du réseau de la cible et exécute une requête HTTP POST au niveau de l’adresse IP 179.43.154.137 sur le port 21119/tcp qui transmet alors le “jeton“, et des informations de profilage concernant l’ordinateur. Le disque n’est pas chiffré.

ransomware

Informations de session HTTP POST lors de la vérification du “jeton” du ransomware

Si la valeur du “jeton” n’est pas acceptable pour le serveur, l’application affiche le message d’erreur “Votre jeton n’est pas valide !” au niveau de la console et l’application alors se ferme. Cependant, si le ransomware est exécuté sur un ordinateur hors ligne déconnecté d’Internet, ce dernier affiche “Utilisation locale du programme” et il continue à fonctionner, invitant l’utilisateur à entrer un mot de passe de 32 octets, les informations de contact qui sont intégrées dans la demande de rançon et ajoutées à chaque nom de fichier, et il commence alors à chiffrer.

Analyse du code de chiffrement

En examinant la dernière version du malware (version 0.0.9), nous avons constaté qu’il intégrait une bibliothèque de chiffrement Rust AES (libaes) et utilisait AES-256 en mode CBC (Cipher-Block-Chaining). Le vecteur d’initialisation est hardcodé dans le binaire du malware (surligné en jaune dans la capture d’écran ci-dessous).

ransomware

Capture d’écran du code décompilé montrant le vecteur initial hardcodé concernant le chiffrement utilisé par le malware.

La clé de chiffrement est le mot de passe de 32 caractères entré au niveau de l’invite de commande lors de l’exécution du malware.  Le code du malware effectue un hachage SHA-256 du mot de passe et enregistre le hachage pour l’utiliser en tant que vérification de signature numérique qui sera ajoutée à chaque fichier chiffré.

ransomware

Le code décompilé concernant le hachage du mot de passe utilisé afin de créer une signature numérique.

Le malware comporte également une liste de dossiers et d’extensions de fichier à ignorer lors du chiffrement, ainsi qu’une liste de processus à ‘tuer’. Aucun des noms de dossier, des extensions de fichier ou des listes de processus n’est obfusqué de quelque manière que ce soit.

ransomware

Une liste de dossiers et d’extensions de fichier hardcodée dans le malware.

ransomware

Dossiers à ignorer Extensions de fichier à ignorer Processus à tuer
‘Boot’ ‘regtrans-ms’ ‘Oracle.exe’
‘FRST’ ‘tmp’ ‘Ocssd.exe’
‘KVRT_Data’ ‘ps1’ ‘Dbsnmp.exe’
‘KVRT2020_Data’ ‘joker’ ‘Synctime.exe’
‘PerfLogs’ ‘ini’ ‘Agntsvc.exe’
‘AdwCleaner’ ‘dll’ ‘Isqlplussvc.exe’
‘ProgramData’ ‘inf’ ‘Xfssvccon.exe’
‘$Recycle.Bin’ ‘ico’ ‘Mydesktopservice.exe’
‘$RECYCLE.BIN’ ‘bat’ ‘Ocautoupds.exe’
‘MSOCache’ ‘lnk’ ‘Encsvc.exe’
‘Documents and Settings’ ‘com’ ‘Firefox.exe’
‘Recovery’ ‘ani’ ‘Tbirdconfig.exe’
‘System Volume Information’ ‘adv’ ‘Mydesktopqos.exe’
‘SYSTEM.SAV’ ‘cpl’ ‘Ocomm.exe’
‘$Windows.~WS’ ‘cur’ ‘Dbeng50.exe’
‘$WINDOWS.~WS’ ‘rom’ ‘Sqbcoreservice.exe’
‘Thumbs’ ‘deskthemepack’ ‘Excel.exe’
‘Pagefile’ ‘diagcab’ ‘Infopath.exe’
‘Hyberfil’ ‘diagcfg’ ‘Msaccess.exe’
‘$WinREAgent’ ‘diagpkg’ ‘Mspub.exe’
‘Program Files’ ‘drv’ ‘Onenote.exe’
‘Program Files (x86)’ ‘log’ ‘Outlook.exe’
‘$WINDOWS.~BT’ ‘hlp’ ‘Powerpnt.exe’
‘Thumbs.db’ ‘icl’ ‘Steam.exe’
‘Windows.old’ ‘icns’ ‘Thebat.exe’
‘windows.old’ ‘ics’ ‘Thunderbird.exe’
‘Windows.old.000’ ‘idx’ ‘Visio.exe’
‘windows.old.000’ ‘ldf’ ‘Winword.exe’
‘AppData’ ‘mod’ ‘Wordpad.exe’
‘dev’ ‘mpa’ ‘Notepad.exe’
‘msc’ ‘Utweb.exe’
‘msp’ ‘Ut.exe’
‘theme’ ‘Sql.exe’
‘wpx’
‘lock’
‘mkp’
‘ocx’
‘msu’
‘nls’
‘msstyles’
‘nomedia’
‘prf’
‘rtp’
‘scr’
‘shs’
‘spl’
‘themepack’
‘key’
‘hta’
‘faust’
‘Devos’
‘sophos’
‘sys’

Après avoir généré la clé de chiffrement mais avant de tenter de chiffrer les fichiers, le malware :

  • Essaie de tuer tous les processus de sa liste hardcodée.
  • Tente de supprimer la corbeille en utilisant ‘cmd /Crd /s /q %systemdrive%\$Recycle.bin
  • Recherche les lecteurs réseau.

Ensuite, il commence le processus de chiffrement des fichiers. Le mot de passe de 32 caractères entré lors du lancement du malware est utilisé comme clé AES pour tous les fichiers chiffrés sur le système ciblé. La plupart des codes de ransomware génèrent de nouvelles clés de session pour chaque fichier, afin de rendre la récupération des fichiers plus difficile.

ransomware

Le sous-programme de chiffrement du malware.

La méthode de chiffrement varie en fonction de la taille du fichier à chiffrer. Pour les fichiers inférieurs à 6,4 mégaoctets, le malware crée un nouveau fichier, écrit la valeur SHA256 de la clé au début du fichier, puis lit le fichier à chiffrer par blocs de 0x100000 octets. Il chiffre chaque bloc en utilisant AES-256 en mode CBC, et en ajoutant le résultat au fichier nouvellement créé. Une fois terminé, il supprime le fichier d’origine.

Pour les fichiers plus volumineux, au lieu de créer un nouveau fichier, le malware modifie le fichier d’origine. Il lit le fichier par blocs de 0x320000 octets pour le chiffrement, en remplaçant le contenu d’origine, puis ajoute le SHA256 de la clé à la fin du fichier.

Un prototype du processus de déchiffrement

Étant donné que le processus de chiffrement utilise une clé unique (qui est le mot de passe fourni), le déchiffrement des fichiers est simple, si vous connaissez le mot de passe. Vous trouverez ci-dessous le code Python d’un script simple permettant de déchiffrer un fichier lorsque le mot de passe est connu.

from malduck import aes
import sys
from hashlib import sha256

# arg 1 is password
# arg 2 is filename to decrypt
# arg 3 is outputfile

data = open(sys.argv[2],"rb").read()

key = bytes(sys.argv[1],"utf-8")
#print(key)
IV = b"wA3XnNVGS1NJ72eI"

if len(data) < 6400000:
    print("Small file")
    sig = data[:32]
    data = data[32:]
else:
    print("Big File")
    sig = data[-32:]
    data = data[:-32]

m = sha256()
m.update(key)
if m.digest() == sig:
    print("good key")

out =aes.cbc.decrypt(key,IV,data)

open(sys.argv[3],"wb").write(out)

Par exemple, le fichier openssh.zip a été chiffré à l’aide du malware avec le mot de passe “2222222222222222222222222222222”.  Pour déchiffrer à l’aide du script Python ci-dessus (enregistré sous decrypt.py), la ligne de commande suivante est utilisée :

python decrypt.py 22222222222222222222222222222222 "openssh.zip.[[CLAcwPCc]].[[a@bc.com]].sophos" openssh.zip

ransomware

Un fichier chiffré ; le texte en surbrillance est le hachage SHA256 du mot de passe.

ransomware

Le fichier déchiffré.

ransomware

Une chronologie retraçant la protection, la découverte et la détection du ransomware.

Détection

Les produits Sophos Intercept X bloqueront l’exécution et les comportements malveillants de ce ransomware en utilisant les signatures suivantes :

  • CryptoGuard : bloque de manière proactive les tentatives de chiffrement du ransomware lors de l’exécution en fonction du moteur publié en mai 2017.
  • Impact_6a : détection comportementale à l’exécution (runtime) bloquant l’activité malveillante à l’étape ‘Impact’ publiée en octobre 2020.
  • Troj/Ransom-GXS : détection anti-malware de type pré-exécution du fichier malveillant publiée le 18 juillet 2023.
  • Mal/Generic-R : détection de réputation empêchant l’exécution du malware, publiée le 17 juillet 2023.
  • Détection basée sur la réputation pour C2 IP : bloque l’accès à 179.43.154.137, le C2 associé au malware, publiée le 18 juillet 2023.

Ces échantillons n’ont été observés que dans un référentiel public de malwares, mais n’ont pas été vus en cours d’utilisation par un attaquant. Sophos continuera à surveiller l’utilisation de ce ransomware sur le terrain.

Sophos a publié un article KB traitant de ce ransomware. X-Ops a publié des IOC relatifs à ce malware sur le Github des SophosLabs.

Remerciements

Sophos X-Ops souhaite remercier Yusuf Arsan Polat, Anand Ajjan et Ronny Tijink pour leur aide dans l’identification et l’analyse des échantillons. Les SophosLabs remercient également @malwrhunterteam pour nous avoir alertés à ce sujet.

Billet inspiré de Sophos Discovers Ransomware Abusing “Sophos” Name, sur le Blog Sophos.