Sodinokibi Ransomware: une étude détaillée

Le ransomware Sodinokibi a été récemment évoqué dans les actualités, mais peu se plongent dans les détails de ce malware. Aujourd'hui, nous allons essayer de mieux connaître Sodinokibi, considérer les principes du ransomware pour identifier les vecteurs prioritaires pour protéger les systèmes d'information d'une nouvelle menace.



Auteurs du texte: Ravikant Tiwari et Alexander Koshelev

Que savons-nous de Sodinokibi?


Sodinokibi est très probablement propagé par les mêmes attaquants qui étaient connus pour les attaques de ransomwares de la famille GandCrab, qui, à en juger par les rapports sur les forums clandestins, ne se développeront plus.

Sodinokibi utilise la vulnérabilité Oracle WebLogic (CVE-2019-2725) pour accéder à l'ordinateur de la victime. Une fois dans le système, le malware essaie de s'exécuter avec des droits étendus afin d'accéder à tous les fichiers et ressources du PC sans restriction ...
Sodinokibi essaie de ne pas infecter les ordinateurs en Iran, en Russie et dans d'autres pays de l'ex-URSS.

Le programme de rançongiciel utilise les algorithmes AES et Salsa20 pour crypter les fichiers utilisateur. AES est utilisé pour crypter les clés de session, ainsi que les données envoyées au serveur de gestion.

Les fichiers utilisateur sont cryptés à l'aide de Salsa20.

Pour générer et distribuer des clés, Sodinokibi utilise l'algorithme Diffie-Hellman sur les courbes elliptiques.

Une fois sur la machine, le virus supprime instantanément tous les fichiers du dossier de sauvegarde.

À l'heure actuelle, le ransomware demande 0,32806964 BTC (≈ 2 500 $) pour restaurer l'accès aux fichiers cryptés. De plus, si la rançon n'est pas versée dans les 4 jours, les extorqueurs promettent de doubler le montant ...

Comment fonctionne Sodinokibi?


Nous avons étudié une instance de Sodinokibi dans notre laboratoire. Le ransomware a été emballé par un packer personnalisé. Dans le même temps, même après un déballage réussi, il n'y avait pas de lignes lisibles dans le code. De plus, le logiciel n’importe aucune bibliothèque système ni API. Par conséquent, les antivirus statiques qui utilisent des signatures basées sur des chaînes lisibles et des tables d'API importées auront beaucoup de mal à le détecter.

Les noms d'API et d'autres paramètres ont été déchiffrés pendant que le logiciel s'exécutait à l'aide de l'algorithme RC4. Afin de rendre la détection encore plus difficile pour les antivirus, ce ransomware exécute des opérations sur les chaînes à l'aide d'un hachage DJB plutôt que sur les chaînes elles-mêmes ...

Initialisation


Sodinokibi commence par créer une table d'importation dynamique. Tout d'abord, le programme est convaincu qu'il s'agit de la seule copie du système utilisant la méthode de vérification mutex. Après vérification, il déchiffre la configuration JSON à l'aide de RC4, qui est stockée dans le fichier programme et vérifie la valeur booléenne de la clé «exp». Si sa valeur est «vraie», Sodinokibi tente de lancer un exploit. Il en était ainsi dans notre échantillon, il a donc rempli la fonction d'exploitation des vulnérabilités




Configuration JSON déchiffrée

Le code qui exécute les vérifications d'exploit pour voir si la mise à jour du 11 septembre 2018 (KB4457138) a été installée sur l'ordinateur. Ce correctif corrige de nombreuses vulnérabilités ci-dessous. Et s'il ne se trouve pas sur la machine, Ransomware procède au lancement du shellcode 32 ou 64 bits, selon la plateforme sur laquelle le malware est exécuté. Nous pensons que le ransomware essaie d'élever les privilèges d'un administrateur à l'aide de CVE-2018-8440.


Extrait 1

La liste des vulnérabilités qui corrige KB4457138 corrige:

Le correctif KB4457138 corrige les vulnérabilités:

  • CVE-2018-8457, CVE-2018-8335, CVE-2018-8424, CVE-2018-8455, CVE-2018-8468, CVE-2018-8447, CVE-2018-8475, CVE-2018-8271, CVE- 2018-8440, CVE-2018-8464, CVE-2018-8469, CVE-2018-8421, CVE-2018-8442, CVE-2018-8367, CVE-2018-8443, CVE-2018-8465, CVE-2018- 8419, CVE-2018-8466, CVE-2018-8410, CVE-2018-8467, CVE-2018-8462, CVE-2018-8452, CVE-2018-8446, CVE-2018-8449, CVE-2018-8420, CVE-2018-8433, CVE-2018-8438, CVE-2018-8435, CVE-2018-8456, CVE-2018-8354, CVE-2018-8434, CVE-2018-8470, CVE-2018-8332, CVE- 2018-0965, CVE-2018-8315, CVE-2018-8439, CVE-2018-8392, CVE-2018-8425, CVE-2018-8393.


Si une vulnérabilité n'est pas détectée dans le système et que le processus continue de fonctionner en tant qu'utilisateur normal, la commande RUNAS sera utilisée pour démarrer une autre instance, mais avec des droits administratifs, et celle qui fonctionne actuellement avec des privilèges limités sera terminée. Le pseudocode complet est montré dans la capture d'écran ci-dessous.



Après que Sodinokibi a démarré avec succès en mode administrateur, le logiciel effectue une vérification préliminaire supplémentaire et clarifie la valeur de la clé «bro» dans la configuration JSON et découvre le pays de l'emplacement. Il n'essaiera pas d'infecter les ordinateurs des pays suivants, si ces paramètres d'emplacement ont été définis dans les paramètres de l'ordinateur.


Affiner les ID de langue

Liste des pays d'exception

  • Roumanie, Russie, Ukraine, Biélorussie, Estonie, Lettonie, Lituanie, Tadjikistan, Iran, Arménie, Azerbaïdjan, Géorgie, Kazakhstan, Kirghizistan, Turkménistan, Ouzbékistan, Tatarstan

* Note de l'éditeur: pour une raison inconnue, les auteurs soulignent spécifiquement les paramètres régionaux tatares en Russie

Après avoir réussi le test, le malware termine le processus mysql.exe (s'il était en cours d'exécution) afin d'accéder aux fichiers MySQL et de les crypter. Après cela, le ransomware supprime les clichés instantanés de Windows à l'aide de vssadmin et désactive également le système de récupération Windows à l'aide de bcdedit:

vssadmin.exe Delete Shadows /All /Quiet & bcedit /set {default}
recoveryenabled No & bcedit /set {default} bootstatuspolice ignorealfailures


Avant de crypter les fichiers utilisateur, Sodinokibi recherche tous les systèmes de fichiers, y compris les dossiers réseau, pour trouver les répertoires portant le nom de «sauvegarde» et les supprime définitivement. Il est intéressant de noter qu'avant de supprimer le répertoire lui-même, le malware remplace d'abord le contenu de tous ces dossiers par un ensemble aléatoire d'octets pour rendre la récupération impossible en principe. Heureusement, les fichiers Acronis Backup ne peuvent pas être supprimés si facilement, car ils sont protégés au niveau du noyau, spécifiquement pour empêcher les ransomwares de prendre de telles actions.

Génération de clés


Sodinokibi utilise le protocole Diffie-Hellman Elliptic Curve Generation and Exchange (ECDH). Les clés de session générées sont utilisées dans des algorithmes de chiffrement symétriques, et différents types de données sont chiffrés à l'aide de différentes méthodes - AES et Salsa20.

AES est utilisé pour crypter une clé privée à partir d'une paire de clés privées et publiques générées localement sur la machine utilisateur. Il crypte également les données lors de la transmission sur le réseau. Salsa20 est utilisé pour crypter les fichiers utilisateur.

Sodinokibi contient deux clés publiques différentes, dont l'une fait partie de la configuration JSON et la seconde est intégrée au binaire. Ces clés publiques seront utilisées pour crypter la clé privée créée sur la machine. Les étapes spécifiques de la génération et du chiffrement des clés sont les suivantes:

Étape 1. Génération d'une paire de sessions à partir d'une clé privée (secrète, aléatoire) et publique sur la machine locale.


Génération de clés privées et publiques locales

Le chiffrement de la clé privée de l'étape 1 se produit à l'aide de la clé publique de la configuration JSON

Étape 2. Générez une autre paire de clés privées et publiques.

Étape 3. En utilisant la clé privée de l'étape 2 et la clé publique (valeur de clé pk), une clé publique est générée à partir de JSON, et après le hachage, une clé symétrique est obtenue.


Générer une clé symétrique à l'aide d'une clé partagée

Étape 4. Génération d'un IV 16 bits (vecteur d'initialisation).

Étape 5. Chiffrez la clé privée générée à l'étape 1 à l'aide d'AES avec la clé et IV, qui ont été obtenues au cours des étapes 3 et 4.

Étape 6. Calcul de CRC32 pour la clé privée chiffrée, qui s'est avéré à l'étape 5.

Étape 7. Ajout de IV et CRC32 à la fin du tampon contenant la clé privée chiffrée de l'étape 5.

Étape 8. Sauvegarde du tampon dans le fichier associé avec l'offset (marqué «sk_key»).


Chiffrez la clé privée de l'étape 1 à l'aide des clés publiques de l'attaquant

Chiffrez la clé privée de l'étape 1 à l'aide de la clé publique contenue dans le fichier binaire.

Étape 9. Répétez les étapes 2 à 7 en utilisant une autre clé publique qui a été incorporée dans le fichier binaire à l'étape 3.

Étape 10. Enregistrement du tampon dans un fichier mappé avec un décalage en mémoire (marque «0_key»)
sk_key, 0_key et pk_key sont écrits dans le registre en conséquence, en fonction des droits d'accès reçus par le programme ...

HKLM \ SOFTWARE \ recfg \ sk_key ou HKCU \ SOFTWARE \ recfg \ sk_key
HKLM \ SOFTWARE \ recfg \ 0_key ou HKCU \ SOFTWARE \ recfg \ 0_key
HKLM \ SOFTWARE \ recfg \ pk_key ou HKCU \ SOFTWARE \ recfg \ pk_key

Clé secrète chiffrée dans le registre
Génération de clés pour des fichiers individuels avec Salsa20

Étape 11. Générez une nouvelle paire à partir de la clé publique et privée.

Étape 12. Générez une clé partagée en utilisant la clé publique de session créée à l'étape 2 et hachez pour obtenir la clé symétrique suivante nécessaire pour générer les clés dans Salsa20.

Étape 13. Installation d'une clé de 256 bits (32 octets) dans Salsa20

Étape 14. Générez un IV 8 bits pour les clés Salsa20

Étape 15. Génération de clés Salsa20

Étape 16. Utilisation de Salsa20 key_state pour crypter les fichiers utilisateur avec Salsa20.


Génération de clés Salsa20 pour chaque fichier
Répétez les étapes 11 à 16 pour chaque fichier chiffré.

Illustration du chiffrement et du déchiffrement


Pour mieux comprendre comment les clés sont générées et transmises entre les ordinateurs de l'attaquant et de la victime, vous devez comprendre comment fonctionne l'algorithme Diffie Hellman - cela est facile à faire par l'illustration.

Processus de cryptage



Échange de clés de courbe elliptique Diffie-Hellman (ECDH)


Une description détaillée du processus de cryptage à Sodinokibi

Afin de décrypter les données, les clés privées de l'attaquant seront nécessaires. Mais ils ne sont publiés nulle part et il est donc impossible de restaurer des fichiers.

image
Processus de décryptage (le secret de l'attaquant est sa clé privée)

image
Le processus simplifié de décryptage des fichiers utilisateur est illustré ci-dessous.

Cryptage de fichiers sur les disques durs locaux et les dossiers réseau


Pour crypter les fichiers utilisateur, Sodinokibi utilise des ports d'achèvement d'E / S et lance plusieurs flux de cryptage, mais pas plus de deux fois le nombre de cœurs de processeur sur la machine, associant ces flux à un port d'E / S spécialement créé. Ces threads utilisent la fonction API GetQueuedCompletionStatus Win pour attendre qu'un paquet arrive sur le port d'E / S avant de démarrer le chiffrement de fichiers.

Dès que les flux sont créés et attendent que les paquets d'E / S arrivent, Sodinokibi commence à trier les fichiers utilisateur sur tous les lecteurs locaux et dans tous les dossiers réseau, à l'exception des CD-ROM et RAMDISK et à les affecter aux ports d'achèvement d'E / S correspondants. Pour tous les fichiers qui ne tombent pas dans la liste des exceptions dans les noms des dossiers, fichiers et extensions, la fonction AddFileToIoCompletionPort est appelée, puis PostQueuedCompletionStatus.Cela transmet l'exécution au flux de chiffrement, qui attend des informations sur le port d'achèvement d'E / S pour démarrer le chiffrement des fichiers.

La fonction AddFileToIoCompletionPort génère également une clé Salsa20 unique pour chaque fichier à chiffrer et transmet la clé Salsa20 au flux de chiffrement avec d'autres métadonnées qui doivent être enregistrées après le chiffrement à l'aide du paramètre lpOverlapped de la fonction API PostQueuedCompletionStatus Win.

Après avoir traité les fichiers dans chaque répertoire, à l'exception de l'exception, un fichier est créé avec une demande de rançon. Lorsque les fichiers à chiffrer sont épuisés, les threads entrent en boucle et attendent que le nombre total de fichiers chiffrés et renommés atteigne le nombre total de fichiers transférés vers le port d'achèvement des E / S.

Enfin, le système définit un indicateur qui indique qu'il n'y a plus de fichiers à chiffrer et envoie plusieurs paquets d'E / S signalant la fin du processus. Grâce à cela, l'arrêt des flux de chiffrement supplémentaires qui attendaient des données est atteint.

image

Liste des dossiers d'exception

  • "$ windows. ~ bt"
  • "Intel"
  • "Fichiers programme (x86)"
  • "Fichiers programme"
  • "Msocache"
  • "$ recycle.bin"
  • "$ windows. ~ ws"
  • "Navigateur Tor"
  • "Boot"
  • "Informations sur le volume du système"
  • "Perflogs"
  • Google
  • "Données d'application"
  • "Windows"
  • "Programdata"
  • "Windows.old"
  • "Appdata"
  • "Mozilla"
  • Exceptions de fichier
  • "Bootfont.bin"
  • "Boot.ini"
  • "Ntuser.dat"
  • "Desktop.ini"
  • "Iconcache.db"
  • Ntldr
  • "Ntuser.dat.log"
  • "Thumbs.db"
  • "Bootsect.bak"
  • "Ntuser.ini"
  • "Autorun.inf"
  • Exceptions d'extension
  • "Themepack"
  • Ldf
  • Scr
  • Icl
  • "386"
  • "Cmd"
  • "Ani"
  • "Adv"
  • "Thème"
  • "Msi"
  • "Rtp"
  • "Diagcfg"
  • "Msstyles"
  • "Bin"
  • Hlp
  • Shs
  • Drv
  • "Wpx"
  • "Deskthemepack"
  • "Bat"
  • "Rom"
  • "Msc"
  • "Lnk"
  • Cabine
  • "Spl"
  • "Ps1"
  • "Msu"
  • Ics
  • "Clé"
  • "Msp"
  • "Com"
  • Sys
  • "Diagpkg"
  • "Nls"
  • "Diagcab"
  • Ico
  • "Lock"
  • "Ocx"
  • "Mpa"
  • "Cur"
  • Cpl
  • "Mod"
  • Hta
  • "Exe"
  • "Icns"
  • "Prf"
  • "Dll"
  • "Nomedia"
  • Idx

Le flux de cryptage suppose la lecture du contenu du fichier, le cryptage, la réécriture dans le même fichier, l'ajout de métadonnées, y compris la clé privée de session cryptée, avec la partie publique d'ECDH pour chaque fichier et le vecteur d'initialisation Salsa20 utilisé pour crypter le fichier.

Après cela, le flux renomme le fichier, en ajoutant au nom un nom généré de manière aléatoire. Les fichiers sont chiffrés avec l'algorithme Salsa20 à l'aide de la fonction EncryptAndWrite.

Voici un exemple d'appel de la fonction EncryptingThreadRoutine.

image
Structure des fichiers après cryptage

image
Structure de fichiers cryptés

Activité réseau


Une fois le processus de cryptage terminé, le ransomware prépare les données à envoyer au serveur de gestion. Les données incluent divers champs de la configuration JSON, des informations système et des clés de chiffrement. Les données préparées sont également écrites dans le registre sous la clé "[HKLM | HKCU] \ SOFTWARE \ recfg \ stat" avant d'être chiffrées par AES et envoyées au serveur de l'attaquant ...

image

Données réseau



Le nom de domaine se compose de: sochi-okna23 [.] Ru + une partie de l'adresse 1

  • "Wp-content"
  • "Statique"
  • "Contenu"
  • "Inclure"
  • "Téléchargements"
  • "Nouvelles"
  • "Données"
  • "Admin"

et une partie de l'adresse 2

  • "Images"
  • "Images"
  • "Image"
  • "Temp"
  • "Tmp"
  • "Graphique"
  • "Atouts"
  • Photos
  • "Jeu"

image
Génération d'URL

Demande de rançon


Sodinokibi dispose d'un modèle pour créer une demande de rachat, qui laisse de la place aux données des utilisateurs. Ils remplacent automatiquement le nom, l'ID utilisateur (uid - description ci-dessus) et la clé. La demande de rançon est placée dans chaque répertoire, sans compter les exceptions.

image

Décryptage


image

Il n'existe aucun moyen gratuit de décrypter les données de ce ransomware, et la seule façon de récupérer les données est d'utiliser le service de décryptage fourni par l'attaquant. Allez-y en suivant les instructions de la demande de rançon ...

image

Conclusion


Nous vous recommandons d'utiliser une protection anti-ransomware avancée et de maintenir vos systèmes antivirus à jour. Tous les produits Acronis contiennent une protection renforcée contre les ransomwares et peuvent vous protéger contre une telle attaque, minimisant le risque de perte de données.

La cyberprotection est contenue dans la solution personnelle Acronis True Image 2019, ainsi que dans les systèmes d'entreprise Acronis Backup, qui sont accompagnés d'un module anti-malware basé sur l'intelligence artificielle appelé Acronis Active Protection. Grâce à cela, les deux systèmes sont en mesure de protéger les utilisateurs de Sodinokibi.

Source: https://habr.com/ru/post/fr462567/


All Articles