Locky, un ransomware international

Contenu

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.

Locky, un ransomware international

Message tiré des premières diffusions avec le document malveillant en pièce jointe

Locky, un ransomware international

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.

Locky, un ransomware international

Message en anglais avec une archive jointe

Locky, un ransomware international

Message en anglais et en allemand avec une archive jointe

La victime doit exécuter les scripts manuellement.

Locky, un ransomware international

Contenu de l’archive jointe au message

Locky, un ransomware international

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

map_1_fr

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 :

  1. Il contacte le serveur de commande et signale l’infection.
  2. Il obtient du serveur la clé publique RSA-2048 ainsi que l’identifiant d’infection et il les enregistre dans la base de registre.
  3. 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.
  4. Il chiffre les fichiers portant certaines extensions sur les disques locaux.
  5. Il supprime les clichés instantanés (shadow copies) des fichiers.
  6. Il s’inscrit dans le démarrage automatique (HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run).
  7. 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.
  8. Il affiche à la victime les demandes des individus malintentionnés.
  9. Il termine son processus et se supprime lui-même.

Locky, un ransomware international

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.

Locky, un ransomware international

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 :

Locky, un ransomware international

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 :

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.

Locky, un ransomware international

Demandes des individus malintentionnés en anglais

Locky, un ransomware international

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 :

Locky, un ransomware international

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 :

Locky, un ransomware international

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.

Locky, un ransomware international

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.

Locky, un ransomware international

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.

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

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

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

Posts similaires

Il y a 2 commentaires
  1. fodil boualem

    thanks

  2. BERKACHE TAHAR

    Comment decrypter les fichiers et dossiers infectés par Locky?

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *