Comment le rançongiciel Ryuk qui attaque les entreprises



Ryuk est l'une des options de ransomware les plus connues de ces dernières années. Depuis sa première apparition à l'été 2018, il a dressé une liste impressionnante de victimes , notamment dans le milieu des affaires, qui est la principale cible de ses attaques.

1. Informations générales


Ce document contient une analyse de l'option de rançongiciel Ryuk, ainsi que le chargeur de démarrage responsable du téléchargement du malware sur le système.

Le rançongiciel Ryuk est apparu pour la première fois à l'été 2018. L'une des différences entre Ryuk et les autres ransomwares est qu'il vise à attaquer les environnements d'entreprise.

À la mi-2019, des groupes de cybercriminalité ont attaqué un grand nombre de sociétés espagnoles à l'aide de ce crypteur.


Figure.


Figure
1: Extrait d'El Confidencial concernant l'attaque par rançongiciel Ryuk [1] 2: Extrait d'El País à propos d'une attaque par un ransomware Ryuk [2]
Cette année, Ryuk a attaqué un grand nombre d'entreprises dans différents pays. Comme vous pouvez le voir dans les figures ci-dessous, l'Allemagne, la Chine, l'Algérie et l'Inde ont le plus souffert.

En comparant le nombre de cyberattaques, nous pouvons voir que des millions d'utilisateurs ont été affectés par Ryuk et l'énorme quantité de données a été compromise, entraînant de graves dommages économiques.


Figure. 3: Illustration de l'activité mondiale de Ryuk.


Figure. 4:16 pays les plus touchés par Ryuk


Fig. 5: Nombre d'utilisateurs attaqués par le rançongiciel Ryuk (en millions)

Selon le principe habituel de fonctionnement de ces menaces, ce rançongiciel, une fois le cryptage terminé, montre à la victime une notification de rançon, qui doit être payée en bitcoins à l'adresse spécifiée pour restaurer l'accès aux fichiers cryptés.

Ce malware a changé depuis sa première apparition.
Une variante de cette menace analysée dans ce document a été découverte lors d'une tentative de lancement d'une attaque en janvier 2020.

En raison de sa complexité, ce malware est souvent attribué à des cybercriminels organisés, également appelés groupes APT.

Une partie du code Ryuk a une ressemblance notable avec le code et la structure d'un autre cryptographe Hermes bien connu, avec lequel ils ont un certain nombre de fonctions identiques. C'est pourquoi Ryuk était initialement associé au groupe nord-coréen Lazarus, qui à l'époque était soupçonné d'être derrière le rançongiciel Hermes.

Par la suite, le Falcon X de CrowdStrike a noté que Ryuk avait été créé par WIZARD SPIDER [4].

Il existe des preuves à l'appui de cette hypothèse. Tout d'abord, ce rançongiciel a été annoncé sur le site Web exploit.in, qui est un marché russe bien connu des logiciels malveillants et était auparavant associé à certains groupes APT russes.
Ce fait exclut la théorie selon laquelle Ryuk pourrait être développé par le groupe Lazarus APT, comme cela ne correspond pas à la façon dont le groupe agit.

De plus, Ryuk a été présenté comme un chiffreur qui ne fonctionnera pas sur les systèmes russe, ukrainien et biélorusse. Ce comportement est déterminé par la fonction trouvée dans certaines versions de Ryuk, où il vérifie la langue du système dans lequel ce chiffreur s'exécute et arrête son fonctionnement si le système est russe, ukrainien ou biélorusse. Enfin, lors d'une analyse experte d'une machine piratée par le groupe WIZARD SPIDER, plusieurs «artefacts» ont été découverts qui auraient été utilisés dans le développement de Ryuk en tant que variante du rançongiciel Hermes.

D'autre part, les experts Gabriela Nicolao et Luciano Martins ont suggéré que le cryptographe pourrait avoir été développé par l'équipe CryptoTech APT [5].
Cela découle du fait que quelques mois avant l'apparition de Ryuk, ce groupe a posté des informations sur le forum du même site selon lequel il avait développé une nouvelle version du rançongiciel Hermès.

Plusieurs utilisateurs du forum se sont demandé si CryptoTech avait vraiment créé Ryuk. Après cela, ce groupe s'est défendu et a déclaré qu'il avait des preuves qu'il avait développé 100% de ce crypteur.

2. Caractéristiques


Nous commençons par le chargeur de démarrage, dont la tâche est d'identifier le système dans lequel il se trouve, afin que vous puissiez exécuter la version «correcte» du crypteur Ryuk.
Le hachage du chargeur de démarrage est le suivant:

MD5 A73130B0E379A989CBA3D695A157A495
SHA256 EF231EE1A2481B7E627921468E79BB4369CCFAEB19A575748DD2B664ABC4F469

L'une des caractéristiques de ce chargeur de démarrage est qu'il ne contient aucune donnée: les créateurs de ce malware n'ont inclus aucune information.

Parfois, ils contiennent des données erronées afin de faire croire à l'utilisateur qu'il est en train de lancer une application légitime. Cependant, comme nous le verrons plus tard, dans le cas où l'infection n'implique pas d'interaction avec l'utilisateur (comme c'est le cas avec ce chiffreur), les attaquants ne jugent pas nécessaire d'utiliser des métadonnées.


Figure. 6:

Exemple de métadonnées L'échantillon a été compilé au format 32 bits afin de pouvoir être exécuté sur des systèmes 32 bits et 64 bits.

3. Vecteur de pénétration


L'échantillon qui télécharge et lance Ryuk est entré dans notre système via une connexion à distance, et les paramètres d'accès ont été obtenus grâce à une attaque RDP préliminaire.


Figure. 7: Attack Registry Un

attaquant a réussi à se connecter à distance à un système. Après cela, il a créé un fichier exécutable avec notre exemple.
Ce fichier exécutable a été bloqué par une solution antivirus avant son lancement.


Figure. 8: blocage de l'échantillon



Fig. 9: Exemple de verrouillage

Lorsqu'un fichier malveillant était bloqué, l'attaquant tentait de télécharger une version cryptée du fichier exécutable, qui était également bloquée.


Figure. 10: Un ensemble d'échantillons qu'un attaquant a tenté d'exécuter

Enfin, il a essayé de télécharger un autre fichier malveillant via une console cryptée
PowerShell afin de contourner la protection antivirus. Mais il a également été bloqué.


Figure. 11: PowerShell avec le contenu malveillant bloqué


Fig. 12: PowerShell avec contenu malveillant bloqué

4. Bootloader


Lorsqu'il est exécuté, il écrit le fichier ReadMe dans le dossier % temp% , ce qui est typique de Ryuk. Ce fichier - une demande de rançon, contenant l'adresse e-mail du domaine protonmail, ce qui est assez courant dans cette famille de logiciels malveillants: msifelabem1981@protonmail.com




Fig. 13: Exigence de rachat

Pendant l'exécution du chargeur de démarrage, vous pouvez voir qu'il lance plusieurs fichiers exécutables avec des noms aléatoires. Ils sont stockés dans un dossier PUBLIC caché , mais si l'option "Afficher les fichiers et dossiers cachés" n'est pas active dans le système d'exploitation , ils resteront cachés. De plus, ces fichiers sont en 64 bits contrairement au fichier parent, qui est en 32 bits.




Figure. 14: Fichiers exécutables lancés par l'exemple

Comme vous pouvez le voir dans la figure ci-dessus, Ryuk lance icacls.exe, qui sera utilisé pour modifier toutes les ACL (liste de contrôle d'accès), garantissant ainsi l'accès et changeant les indicateurs.

Il obtient un accès complet sous tous les utilisateurs à tous les fichiers sur l'appareil (/ T) indépendamment des erreurs (/ C) et sans afficher de messages (/ Q).


Figure. Figure 15: Options d'exécution pour icacls.exe lancées par l'exemple

Il est important de noter que Ryuk vérifie quelle version de Windows est en cours d'exécution. Pour ce faire, il
vérifie la version à l'aide de GetVersionExW , dans laquelle il vérifie la valeur de l'indicateur lpVersionInformationindiquant si la version actuelle de Windows est ultérieure à Windows XP .





Selon que vous exécutez une version plus récente que Windows XP, le chargeur de démarrage écrit dans le dossier utilisateur local - dans ce cas, le dossier % Public% .


Figure. 17: Vérification de la version du système d'exploitation Le

fichier enregistré est Ryuk. Il le lance ensuite en passant sa propre adresse en tant que paramètre.


Figure. 18: Exécuter Ryuk via ShellExecute

La première chose que Ryuk fait est d'obtenir les paramètres d'entrée. Cette fois, il y a deux paramètres d'entrée (le fichier exécutable lui-même et l'adresse du dropper), qui sont utilisés pour supprimer leurs propres traces.




Figure. 19: Création d'un processus

Vous pouvez également voir que dès qu'il a lancé ses fichiers exécutables, il se supprime, ne laissant ainsi aucune trace de sa présence dans le dossier où il a été exécuté.


Figure. 20: suppression de fichiers

5. RYUK


5.1 Présence
Ryuk, comme les autres logiciels malveillants, essaie de rester sur le système aussi longtemps que possible. Comme indiqué ci-dessus, un moyen d'atteindre cet objectif est de créer et d'exécuter secrètement des fichiers exécutables. Pour cela, la pratique la plus courante consiste à modifier la clé de Registre CurrentVersion \ Run .
Dans ce cas, vous pouvez voir qu'à cette fin, le premier fichier exécutable VWjRF.exe
(le nom du fichier est généré de manière aléatoire) lance cmd.exe .




Figure. 21: Exécution du fichier VWjRF.exe

Ensuite, une commande RUN est entrée avec le nom " svchos"Ainsi, si vous souhaitez vérifier les clés de registre à tout moment, vous ne pouvez facilement pas remarquer ce changement, étant donné la similitude de ce nom avec svchost. Grâce à cette clé, Ryuk assure sa présence dans le système. Si le système n'a pas encore été infecté puis lorsque vous redémarrez le système, l'exécutable réessayera


Fig. 22: L'exemple garantit la présence de la clé de registre

Nous pouvons également voir que cet exécutable arrête les deux services:
" audioendpointbuilder ", qui, comme son nom l'indique, correspond au système audio,


Figure 23: Exemple d'arrêt du système audio

et du service samss, qui est un service de gestion de compte. L'arrêt de ces deux services est une caractéristique de Ryuk. Dans ce cas, si le système est connecté au système SIEM, le chiffreur essaie de cesser d'envoyer des avertissements à SIEM . Ainsi, il défend ses prochaines étapes, car certains services SAM ne pourront pas démarrer correctement leur travail après l'exécution de Ryuk.


Figure. 24: L'échantillon arrête le service Samss

5.2 Privilèges

D'une manière générale, Ryuk commence par un mouvement horizontal au sein du réseau ou est lancé par un autre programme malveillant, comme Emotet ou Trickbot , qui en cas d'escalade de privilèges transfère ces droits élevés au chiffreur.

À l'avance, en prélude au processus d'implémentation, nous voyons qu'il exécute le processus ImpersonateSelf , ce qui signifie que le contenu de sécurité du jeton d'accès sera transféré vers le flux, où il sera immédiatement reçu à l'aide de GetCurrentThread .


Figure. 25: Appeler ImpersonateSelf

Ensuite, nous voyons qu'il associera le jeton d'accès au flux. Nous voyons également que l'un des drapeaux est DesiredAccess , qui peut être utilisé pour contrôler l'accès que le flux aura. Dans ce cas, la valeur qu'edx recevra doit être TOKEN_ALL_ACESS, ou bien TOKEN_WRITE .




Figure. 26: Création d'un jeton de flux

Ensuite, il utiliseraSeDebugPrivilege fera un appel pour obtenir des droits de débogage de débogage par rapport au flux, à la suite de quoi, en spécifiant PROCESS_ALL_ACCESS , il pourra accéder à n'importe quel processus requis. Maintenant, étant donné que le chiffreur a déjà un flux préparé, il ne reste plus qu'à passer à l'étape finale.


Figure. 27: Appeler SeDebugPrivilege et la fonction d'escalade des droits

D'une part, nous avons LookupPrivilegeValueW, qui nous fournit les informations nécessaires sur les privilèges que nous voulons augmenter.


Figure. 28: Demander des informations sur les privilèges pour leur escalade

D'autre part, nous avons AdjustTokenPrivileges , qui nous permet d'obtenir les droits nécessaires à notre flux. Dans ce cas, le plus important est NewState.dont le drapeau accordera des privilèges.




Figure. Figure 29: Définition des droits pour le jeton

5.3 Déploiement

Dans cette section, nous allons montrer comment l'exemple exécute le processus de déploiement mentionné précédemment dans ce rapport.

Le principal objectif du processus de mise en œuvre, ainsi que l'escalade, est d'accéder aux clichés instantanés . Pour ce faire, il doit travailler avec le flux avec des droits supérieurs à ceux de l'utilisateur local. Dès qu'il obtient ces droits supérieurs, il supprimera les copies et apportera des modifications à d'autres processus afin de rendre impossible le retour à un point de restauration antérieur du système d'exploitation.

Comme c'est généralement le cas avec ce type de malware, il utilise CreateToolHelp32Snapshot pour terminer l'implémentation, il prend donc un instantané des processus en cours d'exécution et tente d'accéder à ces processus à l'aide d' OpenProcess . Dès qu'il a accès au processus, il ouvre également un jeton avec ses informations pour obtenir les paramètres du processus.


Figure.

Figure 30: Réception de processus d'un ordinateur Nous pouvons voir dynamiquement comment il reçoit une liste de processus en cours d'exécution dans la routine 140002D9C à l'aide de CreateToolhelp32Snapshot. Après les avoir reçus, il parcourt la liste, essayant d'ouvrir les processus un par un en utilisant OpenProcess jusqu'à ce qu'il puisse le faire. Dans ce cas, le premier processus qu'il a pu ouvrir était «taskhost.exe» .


Figure. 31: Exécution dynamique d'une procédure pour obtenir un processus

Nous pouvons voir qu'il lit ensuite le jeton du processus, il s'agit donc d' OpenProcessToken avec la " 20008 "


Fig. 32: Lecture des informations de jeton de processus

Il vérifie également que le processus dans lequel il sera incorporé n'est pas csrss.exe , explorer.exe, lsaas.exe ou qu'il dispose d'un ensemble d'autorisations d' autorité NT .


Figure. Figure 33: Processus exclus.

Nous pouvons voir dynamiquement comment il vérifie d'abord à l'aide des informations de jeton de processus dans 140002D9C pour savoir si le compte dont les droits sont utilisés pour exécuter le processus est un compte NT AUTHORITY .


Figure. 34: Vérification de NT AUTHORITY

Et plus tard, en dehors de la procédure, il vérifie qu'il ne s'agit pas de csrss.exe, explorer.exe ou lsaas.exe .


Figure. 35: Vérification de NT AUTHORITY

Après avoir pris un instantané des processus, ouvert les processus et vérifié qu'aucun d'entre eux n'est exclu, il est prêt à noter les processus qui seront implémentés en mémoire.

Pour ce faire, il réserve d'abord une région en mémoire ( VirtualAllocEx ), y écrit ( WriteProcessmemory ) et crée un flux ( CreateRemoteThread ). Pour utiliser ces fonctions, il utilise les PID des processus sélectionnés, qu'il avait précédemment obtenus à l'aide de CreateToolhelp32Snapshot .


Figure. 36: Embed Code

Ici, nous pouvons observer dynamiquement comment il utilise le processus PID pour appeler la fonction VirtualAllocEx.


Figure. Figure 37: Appel du

chiffrement VirtualAllocEx 5.4
Dans cette section, nous allons examiner une partie de cet exemple liée au chiffrement. Dans la figure suivante, vous pouvez voir deux routines appelées " LoadLibrary_EncodeString " et " Encode_Func ", qui sont responsables de l'exécution de la procédure de cryptage.


Figure. 38: Procédures de chiffrement

Dans un premier temps, nous pouvons voir comment il charge une chaîne qui sera ensuite utilisée pour désobscurcir tout ce qui est nécessaire: importations, DLL, commandes, fichiers et CSP.


Figure. 39: Chaîne de désobfuscation

La figure suivante montre la première importation qu'elle désobfusque dans le registre R4, LoadLibrary . Cela sera utilisé plus tard pour charger les DLL nécessaires. Nous pouvons également voir une autre ligne dans le registre R12, qui est utilisée avec la ligne précédente pour effectuer la désobfuscation.


Figure. 40: Désobfuscation dynamique

Il continue de charger des commandes qu'il exécutera plus tard pour désactiver les sauvegardes, les points de restauration et les modes de démarrage sans échec.


Figure. 41: Téléchargement des commandes

Ensuite, il charge l'emplacement où il déposera 3 fichiers: Windows.bat, run.sct et start.bat .








Figure. 42: Emplacements des fichiers

Ces 3 fichiers sont utilisés pour vérifier les privilèges de chaque emplacement. Si les privilèges requis ne sont pas disponibles, Ryuk arrête l'exécution.

Il continue de charger des lignes correspondant à trois fichiers. Le premier, DECRYPT_INFORMATION.html , contient les informations nécessaires à la restauration des fichiers. Le second, PUBLIC , contient la clé publique RSA.


Figure. 43: String DECRYPT INFORMATION.html

Troisièmement, UNIQUE_ID_DO_NOT_REMOVE , contient la clé chiffrée qui sera utilisée dans la prochaine routine pour effectuer le chiffrement.


Figure. 44: ID UNIQUE NE PAS SUPPRIMER Chaîne

Enfin, il charge les bibliothèques requises avec les importations requises et CSP ( Microsoft Enhanced RSAet fournisseur cryptographique AES ).


Figure. 45: Téléchargement des bibliothèques Une

fois la désobfuscation terminée, il procède aux actions requises pour le cryptage: itérer sur tous les lecteurs logiques, effectuer ce qui était chargé dans le sous-programme précédent, renforcer la présence dans le système, supprimer le fichier RyukReadMe.html, crypter, itérer tous les lecteurs réseau, en passant aux appareils découverts et à leur cryptage.
Tout commence par le téléchargement de " cmd.exe " et l'écriture de la clé publique RSA.


Figure. 46: Préparation du chiffrement

Il récupère ensuite tous les lecteurs logiques à l'aide de GetLogicalDrives et désactive toutes les sauvegardes, les points de récupération et les modes de démarrage sans échec.


Figure. 47: Désactivation des outils de récupération

Après cela, il renforce sa présence dans le système, comme nous l'avons vu ci-dessus, et écrit le premier fichier RyukReadMe.html dans TEMP .


Figure.

Figure 48: Publication d'une notification de rachat. Dans la figure suivante, vous pouvez voir comment il crée un fichier, télécharge le contenu et l'écrit:


Figure. Figure 49: Téléchargement et enregistrement du contenu d'un fichier

Afin de pouvoir effectuer les mêmes actions sur tous les appareils, il utilise
" icacls.exe " comme nous l'avons montré ci-dessus.


Figure. 50: Utilisation d'icalcls.exe

Et enfin, il commence à crypter les fichiers à l'exception des fichiers "* .exe", "* .dll", des fichiers système et d'autres emplacements spécifiés comme une liste blanche cryptée. Pour cela, il utilise des importations: CryptAcquireContextW (où l'utilisation d'AES et RSA est indiquée), CryptDeriveKey, CryptGenKey , CryptDestroyKey , etc. On tente également d'étendre son effet sur les périphériques réseau détectés à l'aide de WNetEnumResourceW, puis de les chiffrer.


Figure. 51: Cryptage des fichiers système

6. Importations et drapeaux connexes


Le tableau suivant répertorie les importations et les indicateurs les plus pertinents utilisés par l'échantillon:



7. CIO




Références
  • users \ Public \ run.sct
  • Menu Démarrer \ Programmes \ Démarrage \ start.bat AppData \ Roaming \ Microsoft \ Windows \ Start
  • Menu \ ProgrammesStartup \ start.bat




Rapport technique sur les rançongiciels Ryuk compilé par les experts du laboratoire antivirus de PandaLabs.

8. Références


1. “Everis y Prisa Radio sufren un grave ciberataque que secuestra sus sistemas.” Https: // www. elconfidencial.com/tecnologia/2019-11-04/ everis-la-ser-ciberataque-ransomware-15_2312019 /, Publicada el 04/11/2019.

2. «Un virus de origen ruso ataca a importantes empresas españolas». Https: //elpais.com/ tecnologia / 2019/11/04 / actualidad / 1572897654_ 251312.html, Publicada el 04/11/2019.

3. "Document VB2019: La vengeance de Shinigami: la longue queue du malware Ryuk." Https://securelist.com/ story-of-the-year-2019-cities-under-ransomware-siege / 95456 /, Publicada el 11 /

12/2019 4. «Big Game Hunting with Ryuk: Another Lucrativebased Ransomware». Https: // www. crowdstrike.com/blog/big-game-hunting-with-ryuk-another-lucrative-targeted-ransomware/, Publicada el 01/10/2019.

5. «Document VB2019: La vengeance de Shinigami: la longue queue du malware Ryuk.» Https: // www. virusbulletin.com/virusbulletin/2019/10/ vb2019-paper-shinigamis-revenge-long-tail-r

All Articles