
En février 2016, Internet a été secoué par une épidémie provoquée par le nouveau trojan ransomware Locky (Trojan-Ransom.Win32.Locky dans les verdicts de Kaspersky Lab). La propagation du malware est toujours active à ce jour. Les solutions de Kaspersky Lab ont détecté des tentatives d’infection chez des utilisateurs répartis dans 114 pays.
L’analyse de l’échantillon a démontré qu’il s’agissait d’un tout nouveau représentant d’une classe de ransomware créé à partir de zéro. Que représente Locky et comment s’en protéger ?
Propagation
Pour diffuser le trojan, les individus malintentionnés organisent des envois massifs de spams avec des downloaders malveillants en pièce jointe.
Au début, les spams malveillants contenaient un fichier doc en pièce jointe. Ce fichier renfermait une macro qui téléchargeait le trojan Locky depuis un serveur distant, puis qui l’exécutait.
Message tiré des premières diffusions avec le document malveillant en pièce jointe
Extrait du code de la macro
Les solutions de Kaspersky Lab détectent les fichiers avec les macros malveillantes sous les verdicts Trojan-Downloader.MSWord.Agent et HEUR:Trojan-Downloader.Script.Generic.
Signalons que pour des raisons de sécurité, l’exécution automatique des macros est désactivée dans les versions récentes de la suite MS Office. Toutefois, la pratique nous montre que bien souvent, les utilisateurs activent les macros manuellement, même dans des documents d’origine inconnue, ce qui provoque de fâcheuses conséquences.
La diffusion du spam malveillant se maintient. En revanche, la pièce jointe n’est plus un fichier doc, mais bien une archive zip qui contient un ou plusieurs scripts obfusqués en langage JavaScript. Les messages sont rédigés principalement en anglais, mais il existe des versions bilingues.
Message en anglais avec une archive jointe
Message en anglais et en allemand avec une archive jointe
La victime doit exécuter les scripts manuellement.
Contenu de l’archive jointe au message
Extrait d’un script de l’archive
Une fois exécuté, le script télécharge le trojan Locky depuis un serveur distant, puis l’exécute.
Kaspersky Lab classe ces téléchargeurs par script sous les verdicts Trojan-Downloader.JS.Agent et HEUR:Trojan-Downloader.Script.Generic.
Répartition géographique des attaques
D’après les données de KSN, des attaques de Locky ont été enregistrées dans 114 pays.
Top 10 des pays
Pays | Nombre d’utilisateurs attaqués |
France | 469 |
Allemagne | 340 |
Inde | 267 |
Etats-Unis | 224 |
République Sud-Africaine | 182 |
Italie | 171 |
Mexique | 159 |
Brésil | 156 |
Chine | 126 |
Vietnam | 107 |
Signalons que ces statistiques ne portent que sur les détections du trojan en lui-même. Elles ne tiennent pas compte des détections aux différentes étapes de l’attaque (spam malveillant et downloader).
Répartition géographique Trojan-Ransom.Win32.Locky (nombre d’utilisateurs attaqués)
Cette carte illustre bien que pratiquement aucune région n’est épargnée par le trojan. Nous pouvons déduire la liste des pays pris pour cible en premier lieu par les individus malintentionnés en consultant la liste des langues sur la page du paiement de la rançon (voir ci-après).
Fonctionnement du trojan
Le trojan Locky est un fichier exécutable d’environ 100 Ko. Le malware a été programmé en C++ avec STL et il a été compilé dans MS Visual Studio. Une fois exécuté, il se copie dans %TEMP%\svchost.exe et supprime de sa copie le flux NTFS Zone.Identifier (pour éviter que Windows n’affiche, lors du lancement du fichier, un avertissement sur le fait que le fichier a été téléchargé depuis Internet et qu’il pourrait être dangereux). Ensuite, le trojan s’exécute depuis %TEMP%.
Une fois lancé, le trojan vérifie si les clés de la base de registre ci-dessous sont présentes et contrôle leur contenu.
Chemin | Type | Valeur |
HKEY_CURRENT_USER\Software\Locky\id | REG_SZ | Identifiant de l’infection |
HKEY_CURRENT_USER\Software\Locky\pubkey | REG_BINARY | Clé publique RSA au format MSBLOB |
HKEY_CURRENT_USER\Software\Locky\paytext | REG_BINARY | Texte affiché pour la victime |
HKEY_CURRENT_USER\Software\Locky\completed | REG_DWORD | Etat (chiffrement terminé ou non) |
Si les clés de la base de registre contiennent déjà des données (ce qui sera le cas si le malware avait déjà été exécuté mais que son fonctionnement avait été interrompu), Locky les lit et poursuit l’infection.
S’il s’agit de la première exécution, le trojan réalise les opérations suivantes :
- Il contacte le serveur de commande et signale l’infection.
- Il obtient du serveur la clé publique RSA-2048 ainsi que l’identifiant d’infection et il les enregistre dans la base de registre.
- Il envoie au serveur les informations relatives à la langue du système d’exploitation infecté, obtient le texte avec les demandes des individus malintentionnés qui sera présenté à la victime et l’enregistre dans la base de registre.
- Il chiffre les fichiers portant certaines extensions sur les disques locaux.
- Il supprime les clichés instantanés (shadow copies) des fichiers.
- Il s’inscrit dans le démarrage automatique (HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run).
- Il recherche les fichiers portant certaines extensions sur les disques réseau (y compris les ressources fichier réseau auxquelles aucune lettre de disque n’est associée) et les chiffre.
- Il affiche à la victime les demandes des individus malintentionnés.
- Il termine son processus et se supprime lui-même.
Extrait du code pour l’obtention d’informations sur la langue du système
Chiffrement des fichiers
Le malware recherche les fichiers à chiffrer selon une liste définie d’extensions.
Liste des extensions de fichiers à chiffrer
Pour chaque fichier qu’il trouve, Locky génère une nouvelle clé de 128 bits et chiffre le contenu du fichier à l’aide d’un algorithme AES-128 en mode CTR. Le fichier chiffré reçoit un nom au format <ID de 16 caractères hexadécimaux><16 caractères hexadécimaux aléatoires>.locky. La structure suivante se retrouve à la fin du fichier :
Structure que Locky place à la fin du fichier chiffré
Dans la syntaxe du langage C, cette structure peut être décrite de la manière suivante :
1 2 3 4 5 6 7 8 9 |
struct file_data { uint32_t start_marker; //Signature du début de la structure = 0x8956FE93 char id[16]; //ID de l'infection uint8_t aes_key[256]; //Clé AES, chiffrée selon RSA-2048 uint32_t name_marker; //Signature AES chiffrée du début du nom (= 0xD41BA12A après déchiffrement) uint8_t orig_name[520]; //Nom original du fichier chiffré selon AES WIN32_FILE_ATTRIBUTE_DATA attr; //Attributs d'origine du fichiers chiffrés selon AES }; |
Description de la structure ajoutée dans la syntaxe du langage C
Demandes des individus malintentionnés
Quand les fichiers ont été chiffrés, le malware présente à la victime les demandes des individus malintentionnés.
Demandes des individus malintentionnés en anglais
Demandes des individus malintentionnés en allemand
Le message contient l’adresse du « serveur secret » des individus malintentionnés où ils ont stocké les informations relatives à la rançon à payer pour obtenir le programme de déchiffrement. Les quatre liens du message mènent vers le même site dans le réseau Tor.
Lors de la première vague de diffusion de Locky, le design de la page de paiement ressemblait à ceci :
Page de Locky reprenant les conditions de paiement pour le programme de déchiffrement (ancienne version)
Les individus malintentionnés proposaient sur cette page de payer le programme de déchiffrement des fichiers de la victime en bitcoins. Ils expliquaient où et comment obtenir cette cryptodevise.
Par la suite, le design et le contenu de la page ont changé. A l’heure actuelle, elle prend en charge plus de 200 langues (liste déroulante) et ressemble à ceci :
Page de paiement de la rançon de Locky (version actuelle)
L’analyse du code source de cette page permet de voir la liste complète des langues prises en charge. Il est évident que les individus malintentionnés dirigent les attaques du trojan ransomware contre ces pays. Il est intéressant de constater que le russe et les langues des pays de la CEI ne figurent pas dans la liste. Pour une raison quelconque, les individus malintentionnés ne tentent pas d’attaquer les utilisateurs des pays correspondants, ce qui est confirmé par les statistiques de KSN.
Liste des langues prises en charge par la page de paiement de la rançon de Locky
Communication avec le serveur de commande
Le code du trojan compte entre une et trois adresses IP du serveur de commande. Qui plus est, le malware intègre un algorithme de création d’adresses de serveur de commande (DGA, domaine generation algorithm) en fonction du jour, du mois et de l’année. Cet algorithme génère 6 adresses de serveur de commande par jour. La capture d’écran ci-dessous reprend le pseudocode qui illustre l’algorithme DGA de Locky.
Pseudocode de l’algorithme de génération d’adresses du serveur de commande Locky
L’interaction avec le serveur de commande s’opère selon le protocole HTTP. Le trojan envoie une requête POST à une adresse du genre http://<cnc_url>/main.php, les données transmises sont chiffrées selon un algorithme symétrique simple.
Penchons-nous un instant sur les types de paramètres qui peuvent être transmis.
-
Notification de l’infection et demande de la clé.
id=<id de l’infection>
&act=getkey&affid=<id du partenaire, contenue dans le corps du trojan>
&lang=<langue du système>
&corp=<version entreprise ou non du système d’exploitation>
&serv=<version serveur ou non du système d’exploitation>
&os=<version du système d’exploitation>
&sp=<version du service pack du système d’exploitation>
&x64=<version du système>A en croire le paramètre affid, Locky est diffusé dans le cadre d’un partenariat.
-
Envoi de la liste des chemins chiffrés.
id=<id de l’infection>
&act=report&data=<liste des chemins>Pour chaque disque traité, le trojan envoie au serveur une liste de tous les chemins d’accès à tous les fichiers chiffrés.
-
Envoi des statistiques sur chaque disque traité
id=<id de l’infection>
&act=stats&path=<chemin d’accès>
&encrypted=<nombre de fichiers cryptés>
&failed=<nombre d’erreurs>
&length=<longueur totale des fichiers chiffrés>
Signalons que le malware collecte des statistiques très précises sur chaque infection. Les familles de ransomwares que nous avons analysées par le passé n’étaient pas aussi méticuleuses.
Résistance
Les solutions de Kaspersky Lab offrent une protection contre le trojan ransomware Locky à toutes les étapes de l’attaque :
- Le module antispam détecte les fichiers envoyés par les propagateurs du trojan.
- Les scripts de téléchargement sont détectés par les signatures statiques et heuristiques des antivirus courrier et fichiers sous les verdicts Trojan-Downloader.MSWord.Agent, Trojan-Downloader.JS.Agent, HEUR:Trojan-Downloader.Script.Generic.
- Le fichier exécutable du trojan est détecté par les signatures de l’antivirus fichiers sous le verdict Trojan-Ransom.Win32.Locky.
- Les versions inconnues de Locky sont détectées de façon proactive par le module » System Watcher » sous le verdict PDM:Trojan.Win32.Generic.
Prévention des infections
Locky est un trojan ransomware traditionnel. Son organisation interne et son principe de fonctionnement n’affichent aucune différence majeure par rapport aux autres familles de ransomware. Ce qui attire l’attention des chercheurs, c’est la diffusion active et géographiquement étendue de ce malware. D’après les données de KSN, les solutions de Kaspersky Lab ont déjoué des attaques de Locky dans plus de 100 pays. Aucun autre trojan ransomware n’avait jamais attaqué autant de pays simultanément.
Afin de ne pas devenir la prochaine victime de Locky, vous devez prendre les mesures de prévention suivantes :
- Ne pas ouvrir les pièces jointes de messages électroniques provenant d’expéditeurs inconnus.
- Créer régulièrement des copies de sauvegarde des fichiers et les conserver sur des disques durs amovibles ou dans le cloud.
- Maintenir les bases antivirus, le système d’exploitation et les applications installées à jour.
- Dans le cadre de la gestion des dossiers partagés, créer un dossier réseau distinct pour chaque utilisateur.
Vous trouverez ici de plus amples informations sur les mesures de protection contre les trojans ransomwares.
Locky, un ransomware international
fodil boualem
thanks
BERKACHE TAHAR
Comment decrypter les fichiers et dossiers infectés par Locky?