MISE À JOUR (30 juillet 2019) : En raison de la précipitation avec la publication de cette recherche - afin de mettre en garde contre cette menace dès que possible - nous avons déclaré par erreur qu'en « en raison de la valeur de clé codée en dur utilisée pour chiffrer la clé privée, il serait possible de déchiffrer les fichiers sans payer la rançon en changeant l'algorithme de chiffrement en un algorithme de déchiffrement ». Cependant, cette « clé codée en dur » est une clé publique RSA-1024, qui ne peut pas être facilement cassée, créant ainsi un décrypteur pour ce rançongiciel particulier est presque impossible. Chapeau à Alexey Vishnyakov de Positive Technologies qui a attiré notre attention sur cette inexactitude.

Après deux ans de déclin des rançongiciels visant Android, une nouvelle famille a émergé. Nous avons vu le rançongiciel, détecté par ESET Mobile Security comme Android/Filecoder.C, distribué via différents forums en ligne. En utilisant les listes de contact des victimes, il se propage davantage par SMS avec des liens malveillants. En raison d'un ciblage étroit et de failles dans l'exécution de la campagne et la mise en œuvre de son chiffrement, l'impact de ce nouveau rançongiciel est limité. Cependant, si les développeurs corrigent les failles et que les opérateurs commencent à cibler des groupes d'utilisateurs plus larges, le rançongiciel Android/Filecoder.C pourrait devenir une menace grave.

Android/Filecoder.C est actif depuis au moins le 12 juillet 2019. Dans le cadre de la campagne que nous avons découverte, Android/Filecoder.C a été distribué via des messages malveillants sur Reddit et le forum XDA Developers, un forum pour développeurs Android. Nous avons signalé l'activité malveillante aux développeurs XDA et à Reddit. Les messages postés sur le forum XDA Developers ont été rapidement supprimés; le profil malveillant était toujours en place sur Reddit au moment de la publication.

Android/Filecoder.C se propage par SMS contenant des liens malveillants, qui sont envoyés à tous les contacts de la liste de contacts de la victime.

Après que le rançongiciel envoie ce lot de SMS malveillants, il chiffre la plupart des fichiers utilisateur sur l'appareil et demande une rançon. En raison d'un chiffrement défectueux, il est possible de déchiffre les fichiers affectés sans aucune aide de l'attaquant.

Les utilisateurs d'ESET Mobile Security reçoivent un avertissement concernant le lien malveillant. S'ils ignorent l'avertissement et téléchargent tout de même l'application, la solution de sécurité le bloque.

Distribution

La campagne que nous avons découverte est basée sur deux domaines (voir la section IoCs ci-dessous), contrôlés par les attaquants, qui contiennent des fichiers Android malveillants à télécharger. Les attaquants attirent les victimes potentielles vers ces domaines en publiant ou en commentant des messages sur Reddit (Figure 1) ou sur les développeurs XDA (Figure 2).

La plupart du temps, les sujets des messages étaient liés à la pornographie. Cependant, nous avons aussi vu des sujets techniques utilisés comme appât. Dans tous les commentaires ou messages, les attaquants ont inclus des liens ou des codes QR pointant vers les applications malveillantes.

Figure 1 - Le profil Reddit de l'attaquant avec les messages et commentaires malveillants

Figure 2 - Certains des messages malveillants des attaquants sur le forum XDA Developers

Dans un lien partagé sur Reddit, les attaquants ont utilisé l'URL shortener bit.ly. Cette URL bit.ly a été créée le 11 juin 2019. Comme le montre la Figure 3, ses statistiques montrent qu'au moment d'écrire ces lignes, elle avait obtenu 59 clics de sources et pays variés.

Figure 3 - Statistiques pour le lien bit.ly partagé sur Reddit lors de la campagne de rançongicielgn

Diffusion

Comme nous l’avons mentionné précédemment, le rançongiciel Android/Filecoder.C se propage via SMS envoyés à l’ensemble de la liste de contacts de la victime.

Ces messages comprennent des liens vers le rançongiciel. Afin de susciter l’intérêt des victimes potentielles, le lien est faussement présenté comme menant vers une application censée utiliser les photos de la victime potentielle. C’est ce que nous montre la Figure 4.

Pour maximiser sa portée, le rançongiciel possède les 42 versions linguistiques du modèle de message, présenté à la Figure 5. Avant d'envoyer les messages, il choisit la version qui correspond au réglage de la langue de l'appareil victime. Pour personnaliser ces messages, le logiciel malveillant leur attribue le nom du contact.

Figure 4 - Un SMS avec un lien vers le rançongiciel; cette variante de langue est envoyée si la langue de l'appareil émetteur est l'anglais

Figure 5 - Un total de 42 versions linguistiques qi sont codées en dur dans le rançongiciel

Fonctionnalités

Une fois que les victimes potentielles reçoivent le message texte incluant le lien vers l'application malveillante, elles doivent l'installer manuellement. Après le lancement de l'application, elle affiche tout ce qui est promis dans les messages qui la distribuent - le plus souvent, il s'agit d'un jeu de simulation de sexe en ligne. Cependant, ses principaux objectifs sont la communication C&C, la diffusion de messages malveillants et la mise en œuvre du mécanisme de chiffrement/déchiffrement.

Comme pour la communication C&C, le logiciel malveillant contient des adresses C&C et Bitcoin codées en dur dans son code source. Cependant, il peut aussi les récupérer dynamiquement. Ainsi, ceux-ci peuvent être modifiés à tout moment par l'attaquant, en utilisant le service gratuit Pastebin.

Figure 6 - Un exemple d'un ensemble d'adresses permettant au rançongiciel de récupérer les adresses C&C

Le rançongiciel a la capacité d'envoyer des messages texte, grâce à l'accès à la liste de contacts de l'utilisateur. Avant de chiffrer les fichiers, il envoie un message à chacun des contacts de la victime en utilisant la technique décrite dans la section « Diffusion » plus haut.

Ensuite, le rançongiciel passe en revue les fichiers sur le stockage accessible - c'est-à-dire tout le stockage de l'appareil sauf où résident les fichiers système - et chiffre la plupart d'entre eux (voir la section « Mécanisme de chiffrement des fichiers » ci-dessous). Une fois les fichiers chiffrés, le rançongiciel affiche sa note de rançon (en anglais) comme illustré à la Figure 7.

Figure 7. Une demande de rançon présentée par Android/Filecoder.C

Il est vrai que si la victime supprime l'application, le rançongiciel ne sera pas en mesure de déchiffrer les fichiers, comme indiqué dans la demande de rançon. Cependant, les fichiers peuvent toujours être récupérés, en raison d'un chiffrement défectueux (voir la section suivante). De plus, selon notre analyse, il n'y a rien dans le code du rançongiciel pour appuyer l'affirmation que les données affectées seront perdues après 72 heures.

Comme le montre la figure 8, la rançon demandée est partiellement dynamique. La première partie du nombre de bitcoins demandée est codée en dur - la valeur est 0,01 - tandis que les six chiffres restants sont l'ID utilisateur généré par le logiciel malveillant.

Cette pratique unique peut servir à identifier les paiements reçus. (Dans les rançongiciels visant Android, ce résultat est généralement obtenu en générant un portefeuille Bitcoin séparé pour chaque appareil chiffré.) Sur la base du taux de change récent d'environ 9 400 $US par bitcoin, les rançons dérivées se situeront entre 94 et 188 $US (en supposant que l'ID unique est généré de façon aléatoire).

Figure 8 – La méthode par laquelle le logiciel malveillant calcule la rançon

Contrairement aux rançongiciels sous Android classiques, Android/Filecoder.C n'empêche pas l'utilisation de l'appareil en verrouillant l'écran.

Comme le montre la Figure 9, au moment de la rédaction du présent document, l'adresse Bitcoin mentionnée, qui peut être modifiée dynamiquement mais qui était la même dans tous les cas que nous avons vus, n'a enregistré aucune transaction.

Figure 9 - L'adresse Bitcoin utilisée par les attaquants

Mécanisme de chiffrement des fichiers

Le rançongiciel utilise un chiffrement asymétrique et symétrique. Tout d'abord, il génère une paire de clés publiques et privées. Cette clé privée est chiffrée à l'aide de l'algorithme RSA avec une valeur codée en dur stockée dans le code et envoyée au serveur de l'attaquant. L'attaquant peut déchiffrer cette clé privée et, une fois que la victime a payé la rançon, envoyer cette clé privée à la victime pour lui permettre de déchiffrer ses fichiers

Lors du chiffrement des fichiers, le rançongiciel génère une nouvelle clé AES pour chaque fichier qui sera chiffré. Cette clé AES est ensuite chiffrée à l'aide de la clé publique et préfixée à chaque fichier chiffré, ce qui donne le modèle suivant : ( (AES)public_key + (File)AES ).seven

La structure des fichiers est illustrée à la figure 10.

Figure 10 - Aperçu de la structure des fichiers chiffrés

Le rançongiciel chiffre les types de fichiers suivants, en passant par des répertoires de stockage accessibles :

".doc", ".docx", ".xls", ".xlsx", ".ppt", ".pptx", ".pst", ".ost", ".msg", ".eml", ".vsd", ".vsdx", ".txt", ".csv", ".rtf", ".123", ".wks", ".wk1", ".pdf", ".dwg", ".onetoc2", ".snt", ".jpeg", ".jpg", ".docb", ".docm", ".dot", ".dotm", ".dotx", ".xlsm", ".xlsb", ".xlw", ".xlt", ".xlm", ".xlc", ".xltx", ".xltm", ".pptm", ".pot", ".pps", ".ppsm", ".ppsx", ".ppam", ".potx", ".potm", ".edb", ".hwp", ".602", ".sxi", ".sti", ".sldx", ".sldm", ".sldm", ".vdi", ".vmdk", ".vmx", ".gpg", ".aes", ".ARC", ".PAQ", ".bz2", ".tbk", ".bak", ".tar", ".tgz", ".gz", ".7z", ".rar", ".zip", ".backup", ".iso", ".vcd", ".bmp", ".png", ".gif", ".raw", ".cgm", ".tif", ".tiff", ".nef", ".psd", ".ai", ".svg", ".djvu", ".m4u", ".m3u", ".mid", ".wma", ".flv", ".3g2", ".mkv", ".3gp", ".mp4", ".mov", ".avi", ".asf", ".mpeg", ".vob", ".mpg", ".wmv", ".fla", ".swf", ".wav", ".mp3", ".sh", ".class", ".jar", ".java", ".rb", ".asp", ".php", ".jsp", ".brd", ".sch", ".dch", ".dip", ".pl", ".vb", ".vbs", ".ps1", ".bat", ".cmd", ".js", ".asm", ".h", ".pas", ".cpp", ".c", ".cs", ".suo", ".sln", ".ldf", ".mdf", ".ibd", ".myi", ".myd", ".frm", ".odb", ".dbf", ".db", ".mdb", ".accdb", ".sql", ".sqlitedb", ".sqlite3", ".asc", ".lay6", ".lay", ".mml", ".sxm", ".otg", ".odg", ".uop", ".std", ".sxd", ".otp", ".odp", ".wb2", ".slk", ".dif", ".stc", ".sxc", ".ots", ".ods", ".3dm", ".max", ".3ds", ".uot", ".stw", ".sxw", ".ott", ".odt", ".pem", ".p12", ".csr", ".crt", ".key", ".pfx", ".der"

Cependant, il ne chiffre pas les fichiers dans les répertoires qui contiennent les chaînes suivantes : ".cache", "tmp", ou "temp".

Le rançongiciel laisse également les fichiers non chiffrés dont l'extension de fichier est .zip ou .rar si la taille du fichier est supérieure à 51 200 Ko/50 Mo, ainsi que les fichiers ".jpeg", ".jpg" et ".png" ayant une taille inférieure à 150 Ko.

La liste des types de fichiers contient quelques entrées sans rapport avec Android; par ailleurs, plusieurs extensions typiques d’Android n’y figurent pas, telles que ".apk", ".dex", ".so". Apparemment, la liste a été copiée à partir de l’infâme logiciel malveillant WannaCryptor, alias WannaCry.

Une fois les fichiers chiffrés, l'extension de fichier ".seven" est ajoutée au nom de fichier original, comme le montre la Figure 11.

Figure 11. Fichiers chiffrés avec l'extension “.seven”

Mécanisme de déchiffrement

Le code de déchiffrement des fichiers chiffrés est présent dans le rançongiciel. Si la victime paie la rançon, l'opérateur du rançongiciel peut le vérifier via le site Web illustré à la Figure 12 et envoyer la clé privée pour déchiffrer les fichiers.

Figure 12. Page Web de vérification des paiements de rançon

Comment rester en sécurité

  • Tout d'abord, maintenez vos appareils à jour. Idéalement, configurez-les pour qu'ils se mettent à jour automatiquement, afin de demeurer protégé même si vous n'êtes pas parmi les utilisateurs les plus expérimentés en matière de sécurité.
  • Si possible, tenez-vous en à Google Play ou à d'autres boutiques d’applications reconnues. Ces boutiques ne sont peut-être pas totalement exempts d'applications malveillantes, mais vous y courrez beaucoup moins de risques!
  • Avant d'installer une application, vérifiez ses évaluations et commentaires. Concentrez-vous sur les avis négatifs, car ils proviennent souvent d'utilisateurs légitimes, tandis que les commentaires positifs sont souvent créés par les attaquants.
  • Analysez les permissions demandées par l'application. Si elles semblent inadéquates pour les fonctions de l'application, évitez de télécharger cette dernière.
  • Utilisez une solution de sécurité mobile réputée pour protéger votre appareil.

Indicateurs de compromission (IoC)

Hash ESET detection name
B502874681A709E48F3D1DDFA6AE398499F4BD23 Android/Filecoder.C
D5EF600AA1C01FA200ED46140C8308637F09DFCD Android/Filecoder.C
B502874681A709E48F3D1DDFA6AE398499F4BD23 Android/Filecoder.C
F31C67CCC0D1867DB1FBC43762FCF83746A408C2 Android/Filecoder.C

Bitcoin address
16KQjht4ePZxxGPr3es24VQyMYgR9UEkFy

Servers
http://rich7[.]xyz
http://wevx[.]xyz
https://pastebin[.]com/raw/LQwGQ0RQ

Contact e-mail address
h3athledger@yandex[.]ru

Affected Android versions
Android 5.1 and above