Des voleurs répartis dans le monde entier

Cet article décrit notre analyse des principales familles de voleurs de logiciels malveillants, en dévoilant leurs méthodes de fonctionnement, leurs mises à jour récentes et leurs configurations. En comprenant le modus operandi de chaque famille, nous appréhendons mieux l'ampleur de leur impact et pouvons renforcer nos défenses en conséquence.

Des voleurs répartis dans le monde entier

Introduction

Cet article décrit notre analyse des principales familles de voleurs de logiciels malveillants pour Windows que nous avons identifiées, en dévoilant leurs méthodes de fonctionnement, leurs mises à jour récentes et leurs configurations. En comprenant le modus operandi de chaque famille, nous appréhendons mieux l'ampleur de leur impact et pouvons renforcer nos défenses en conséquence. En outre, nous examinerons notre télémétrie unique afin d'offrir un aperçu du volume actuel associé à ces familles de voleurs de logiciels malveillants les plus répandues.

L'atténuation de ce type de menace secrète nécessite une approche à multiples facettes conforme aux principes de la défense en profondeur. Nous décrirons également diverses techniques de détection, y compris l'utilisation de requêtes de chasse ES|QL et de règles Yara qui permettent aux organisations de se défendre de manière proactive contre ces attaques.

Vue d'ensemble de la télémétrie

Les données télémétriques présentées dans cet article englobent des informations recueillies auprès de sources internes et externes, ce qui permet de comprendre l'ensemble des activités liées aux menaces.

Notamment, entre 2022 et 2023, REDLINE est devenu le logiciel malveillant le plus répandu dans la nature, suivi de près par AGENT TESLA, VIDAR, puis STEALC. Il convient de souligner que cette période a été marquée par l'apparition de STEALC dans la nature, ce qui témoigne de l'évolution des menaces.

Au cours de la période suivante, qui s'étend de 2023 à 2024, l'activité d'AGENT TESLA a connu un pic notable, suivie de REDLINE, STEALC et VIDAR, ce qui reflète l'évolution des tendances en matière de prévalence et de distribution des logiciels malveillants.

Données télémétriques élastiques mai 2023 - mai 2024

Malgré les fluctuations de la prévalence générale des logiciels malveillants, AGENT TESLA a toujours maintenu sa position en tant que menace importante. Cette domination durable peut être attribuée à plusieurs facteurs, notamment son prix relativement bas et ses capacités séduisantes, qui attirent un large éventail d'acteurs de la menace, en particulier ceux qui opèrent avec des ressources ou une expertise limitées.

Il convient de noter qu'en raison de la base de METASTEALER sur REDLINE, certains échantillons de METASTEALER peuvent par inadvertance être classés dans la catégorie REDLINE.

Vue d'ensemble des principaux voleurs

REDLINE (VOLEUR DE REDLINE)

REDLINE a fait son apparition dans le paysage des menaces en 2020, en s'appuyant sur le courrier électronique comme méthode de distribution initiale ; il fonctionne sur un modèle de logiciel malveillant en tant que service (MaaS), ce qui le rend accessible à un large éventail d'acteurs de la menace. Son prix abordable et sa disponibilité dans les forums clandestins ont contribué à sa popularité auprès des cybercriminels.

Les dernières opérations de REDLINE impliquent de multiples vecteurs d'infection, notamment l'hameçonnage de courriels, les sites web malveillants hébergeant des applications apparemment légitimes et les tactiques d'ingénierie sociale. Nos chercheurs ont analysé un échantillon récent signalé par vx-underground indiquant une campagne ciblant les ingénieurs sur la plateforme de freelancing Fiverr. Cette tactique présente des risques importants, car elle peut conduire à la compromission d'entreprises par l'intermédiaire d'indépendants peu méfiants.

REDLINE est construit sur le cadre .NET, ce qui lui confère portabilité et facilité de mise en œuvre. Il dispose d'une série de fonctionnalités visant à recueillir des informations vitales sur le système et à extraire des données sensibles :

  • Acquisition d'informations sur le système :
  • Collecte des informations essentielles sur le système, telles que le nom d'utilisateur, la langue et le fuseau horaire.
  • Récupère les caractéristiques du matériel, notamment les informations relatives au processeur et à la carte graphique.
  • Surveille les processus en cours et identifie les navigateurs installés.
  • Extraction des données :
  • Cible les référentiels de données des navigateurs, extrait les mots de passe enregistrés, les détails des cartes de crédit, les cookies et les entrées de remplissage automatique.
  • Obtention des identifiants de connexion au VPN pour un accès non autorisé
  • Enregistre les informations d'identification des utilisateurs et l'historique des discussions sur des plateformes telles que Discord et Telegram.
  • Identifie et vole des portefeuilles de crypto-monnaies, ce qui peut compromettre des actifs numériques précieux :

REDLINE utilise une technique d'obscurcissement des chaînes pour entraver l'analyse et échapper à la détection basée sur des chaînes comme yara en construisant dynamiquement les chaînes au moment de l'exécution à partir d'un tableau de caractères :

Sa configuration est structurée dans une classe statique, contenant quatre champs publics : IP, ID, Message, et une clé XOR. Les contenus des champs IP et ID sont cryptés à l'aide d'un cryptage XOR, puis encodés en base64 comme indiqué ci-dessous :

METASTEALER

METASTEALER est apparu en 2022, initialement présenté comme un dérivé de REDLINE, avec des fonctionnalités supplémentaires. Nos analystes de logiciels malveillants ont récemment rencontré un échantillon de METASTEALER dans le cadre d'une campagne se faisant passer pour Roblox, précédemment signalée par le CERT sous le nom d'Orange Polska.

METASTEALER est principalement développé à l'aide du cadre .NET, ce qui facilite sa compatibilité avec les environnements Windows et sa mise en œuvre. Certaines versions utilisent des méthodes d'obscurcissement, notamment en masquant le flux de contrôle du logiciel malveillant et en le rendant plus difficile à détecter ou à analyser.

Cet exemple de METASTEALER utilise l'obfuscateur AGILE.NET, en particulier sa méthode d'obfuscation des appels de proxy. Cette technique est utilisée pour dissimuler l'invocation directe d'une fonction originale en introduisant une couche d'abstraction supplémentaire. Au lieu d'invoquer directement la fonction, AGILE.NET génère une méthode proxy qui invoque ensuite la fonction originale. Cette complexité supplémentaire complique la tâche des analystes de code qui doivent discerner la séquence des actions.

En regardant le code ci-dessus, nous pouvons voir que la méthode Delegate11.smethod_0 appelle un Delegate11.delegate11_0 qui n'est pas initialisé, ce qui introduit une ambiguïté lors de l'analyse statique car les analystes ne peuvent pas déterminer quelle méthode sera réellement exécutée.

Au moment de l'exécution, le logiciel malveillant initialisera le délégué. en appelant la méthode Class4.smethod_13 dans le constructeur de la classe Delegate11, cette méthode construit un dictionnaire de valeurs symboliques, où chaque clé représente la valeur symbolique d'un délégué (par exemple, 0x040002DE), et sa valeur correspondante représente la valeur symbolique de la méthode originale à exécuter. Ce dictionnaire est construit à partir d'une séquence d'octets stockés dans le fichier binaire, ce qui permet une résolution dynamique des invocations de méthodes pendant l'exécution.

Ensuite, il génère une méthode dynamique pour le délégué et l'exécute à l'aide de la fonction smethod_0.

Toutes les chaînes importantes de la configuration, comme l'adresse IP et le port du C2, sont cryptées. Le logiciel malveillant possède une classe appelée Strings qui est appelée au début de l'exécution pour décrypter toutes les chaînes en une seule fois, un processus impliquant une combinaison de codage Base64, de décryptage XOR et de décryptage AES CBC.

Dans un premier temps, les paramètres AES, tels que AES KEY et AES IV, sont décryptés. Dans l'exemple fourni, les adresses AES KEY et AES IV sont d'abord décodées en base64. Ensuite, ils sont soumis à un décryptage XOR à l'aide d'une clé XOR prédéterminée, suivi de deux étapes consécutives de décodage base64.

La classe Strings contient des tableaux d'octets qui sont déchiffrés à l'aide de l'algorithme AES CBC après avoir été inversés, puis ajoutés à la liste Strings.Array. Par la suite, lorsque le logiciel malveillant a besoin de chaînes de caractères spécifiques, il y accède en indexant cette liste. Par exemple String.get(6).

STEALC

La famille STEALC est un acteur majeur récent dans le domaine des voleurs,découvert par Sekoia en février. 2023 Ce logiciel malveillant a été annoncé pour la première fois dans un forum clandestin en janvier 2023 , où le développeur a mentionné une dépendance importante à l'égard de familles existantes telles que VIDAR, RACOON et REDLINE. Depuis cette date, notre équipe a observé quotidiennement de nouveaux échantillons de STEALC qui montrent des signes de popularité et d'adoption par les cybercriminels.

STEALC est implémenté en C et comprend des fonctionnalités telles que les importations dynamiques, l'obscurcissement des chaînes de caractères et divers contrôles anti-analyse avant d'activer ses capacités de vol de données. Afin de protéger le binaire et ses principales caractéristiques, STEALC crypte ses chaînes en utilisant une combinaison de Base64 + RC4 à l'aide d'une clé codée en dur intégrée dans chaque échantillon.

Il existe 6 fonctions distinctes utilisées pour les contrôles anti-analyse/anti-sandbox au sein de STEALC. En fonction du nombre de processeurs, STEALC s'arrêtera si le nombre de processeurs actifs est inférieur à 2.

STEALC effectue un test d'émulation/de bac à sable en utilisant une API Windows plus obscure (VirtualAllocExNuma) pour allouer une grande quantité de mémoire. Si l'API n'est pas mise en œuvre, le processus s'arrête.

Le logiciel malveillant effectue une autre vérification du bac à sable en lisant les valeurs de GlobalMemoryStatusEx. Après un décalage d'octets par rapport aux attributs collectés de la mémoire physique, si la valeur est inférieure à 0x457, l'échantillon s'arrête.

Le logiciel malveillant interrompt l'exécution si l'identifiant de la langue correspond à l'un des LangID suivants :

  • Russian_Russia (0x419)
  • Ukrainien_Ukraine (0x422)
  • Biélorusse_Belarus (0x423)
  • Kazakh_Kazakhstan (0x43f)
  • Ouzbek_Latin__Uzbekistan (0x443)

STEALC intègre également la vérification de l'émulation de Microsoft Defender, que nous avons observée dans de nombreux voleurs tels que LOBSHOT. STEALC se terminera si les valeurs suivantes codées en dur correspondent dans la couche d'émulation de Microsoft Defender avec le nom d'utilisateur JohnDoe et le nom de l'ordinateur HAL9TH.

L'une des vérifications anti-analyse les plus efficaces de STEALC est la date d'expiration. Cette valeur unique est placée dans la configuration du logiciel malveillant afin de garantir que le voleur ne s'exécutera pas après une date spécifique fixée par le constructeur. Cela permet aux logiciels malveillants de garder un profil plus bas en utilisant des délais plus courts dans les campagnes et en limitant l'exécution dans des environnements de type "bac à sable".

STEALC - Flux d'exécution

Après son exécution initiale, STEALC envoie l'identifiant matériel initial de la machine et reçoit une configuration du serveur C2 :

f960cc969e79d7b100652712b439978f789705156b5a554db3acca13cb298050efa268fb|done|tested.file|1|1|1|1|1|1|1|1|

Après cette demande, il enverra plusieurs requêtes pour recevoir une liste actualisée des navigateurs et des extensions de navigateurs ciblés. Vous trouverez ci-dessous un exemple de configuration du navigateur, qui contient le chemin du répertoire ciblé où les données sensibles sont stockées.

Google Chrome|\Google\Chrome\User Data|chrome|chrome.exe|Google Chrome Canary|\Google\Chrome SxS\User Data|chrome|chrome.exe|Chromium|\Chromium\User Data|chrome|chrome.exe|Amigo|\Amigo\User Data|chrome|0|Torch|\Torch\User Data|chrome|0|Vivaldi|\Vivaldi\User Data|chrome|vivaldi.exe|Comodo Dragon|\Comodo\Dragon\User Data|chrome|0|EpicPrivacyBrowser|\Epic Privacy Browser\User Data|chrome|0|CocCoc|\CocCoc\Browser\User Data|chrome|0|Brave|\BraveSoftware\Brave-Browser\User Data|chrome|brave.exe|Cent Browser|\CentBrowser\User Data|chrome|0|7Star|\7Star\7Star\User Data|chrome|0|Chedot Browser|\Chedot\User Data|chrome|0|Microsoft Edge|\Microsoft\Edge\User Data|chrome|msedge.exe|360 Browser|\360Browser\Browser\User Data|chrome|0|QQBrowser|\Tencent\QQBrowser\User Data|chrome|0|CryptoTab|\CryptoTab Browser\User Data|chrome|browser.exe|Opera Stable|\Opera Software|opera|opera.exe|Opera GX Stable|\Opera Software|opera|opera.exe|Mozilla Firefox|\Mozilla\Firefox\Profiles|firefox|0|Pale Moon|\Moonchild Productions\Pale Moon\Profiles|firefox|0|Opera Crypto Stable|\Opera Software|opera|opera.exe|Thunderbird|\Thunderbird\Profiles|firefox|0|

À ce stade, STEALC recueille un large éventail d'informations sur les victimes. Ces informations sont ensuite formatées, encodées en Base64, puis envoyées au serveur C2 par le biais de requêtes POST en utilisant des champs de données de formulaire.

  • ID du matériel
  • Informations sur le produit Windows OS
  • Informations sur le processeur / la mémoire vive
  • Nom d'utilisateur / nom d'ordinateur
  • Heure du système local / fuseau horaire / lieu de résidence de la victime
  • Disposition du clavier
  • Vérification de la batterie (utilisée pour déterminer s'il s'agit d'un ordinateur portable ou non)
  • Résolution du bureau, informations sur l'affichage
  • Programmes installés, processus en cours

En ce qui concerne la composante "vol", STEALC exploite les configurations reçues afin de collecter diverses informations précieuses :

  • Browser cookies
  • Données de connexion
  • Données web
  • Historique
  • Portefeuilles de crypto-monnaies

STEALC offre également d'autres options de configuration, notamment :

  • Données Telegram
  • Discord
  • Tox
  • Pidgin
  • Vapeur
  • Courriels Outlook
RedLine StealerLe voleur de métaStealc
Première observation dans la nature202020222023
Langue sourceC#C#C
Taille moyenne (sans emballage)253 KB278 KB107 KB
Obfuscation des chaînes de caractères ? Algo ?OuiOuiOui (RC4 personnalisé + base64)

Détection

Pour tirer pleinement parti des capacités de détection énumérées ci-dessous pour ces menaces avec Elastic Security, il est essentiel d'intégrer Elastic Defend et Windows.

ES|QL queries

La liste suivante de chasses et de requêtes de détection peut être utilisée pour détecter les activités des voleurs :

  • Identifie des exécutables non fiables ou non signés effectuant des requêtes DNS vers des domaines Telegram ou Discord, ce qui peut indiquer des tentatives de communication de commande et de contrôle.

    from logs-endpoint*
    | where (process.code_signature.trusted == false or process.code_signature.exists == false)
    | where dns.question.name in ("api.telegram.com", "cdn.discordapp.com",
                                    "discordapp.com", "discord.com","discord.gg","cdn.discordapp.com")
    | stats executable_count = count(*) by process.executable, process.name, dns.question.name
    | sort executable_count desc
  • Détecte les activités suspectes ciblant les fichiers et les configurations des portefeuilles cryptographiques stockés sur les systèmes Windows.

    from logs-endpoint.events.file-*
    | where @timestamp > now() - 14 days
    | where host.os.type == "windows"
    and event.category == "file"
    and event.action == "open" 
    and (
      file.path rlike """C:\\Users\\.+\\AppData\\Roaming\\.+\\(Bitcoin|Ethereum|Electrum|Zcash|Monero|Wallet|Litecoin|Dogecoin|Coinbase|Exodus|Jaxx|MyEtherWallet|MetaMask)\\.*"""
      or file.path rlike """C:\\ProgramData\\.+\\(Bitcoin|Ethereum|Electrum|Zcash|Monero|Wallet|Litecoin|Dogecoin|Coinbase|Exodus|Jaxx|MyEtherWallet|MetaMask)\\.*"""
    )
    | keep process.executable, process.name, host.id, file.path, file.name
    | stats number_hosts = count_distinct(host.id), unique_files = count_distinct(file.name) by process.executable
    | where number_hosts == 1 and unique_files >= 3
    | sort number_hosts desc
  • Surveille l'accès aux données sensibles du navigateur, telles que les cookies, les données de connexion et l'historique de navigation, ce qui peut indiquer des activités de logiciels malveillants voleurs d'informations.

    from logs-endpoint.events.file-*, logs-windows.sysmon_operational-default-*
    | where @timestamp > now() - 14 days
    | where host.os.type == "windows"
    and event.category == "file"
    and event.action in ("open", "modification")
    and (
      file.path rlike "C:\\\\Users\\\\.+\\\\AppData\\\\Local\\\\(Google\\\\Chrome\\\\User Data\\\\.*|Google\\\\Chrome SxS\\\\User Data\\\\.*|Chromium\\\\User Data\\\\.*|Amigo\\\\User Data\\\\.*|Torch\\\\User Data\\\\.*|Vivaldi\\\\User Data\\\\.*|Comodo\\\\Dragon\\\\User Data\\\\.*|Epic Privacy Browser\\\\User Data\\\\.*|CocCoc\\\\Browser\\\\User Data\\\\.*|BraveSoftware\\\\Brave-Browser\\\\User Data\\\\.*|CentBrowser\\\\User Data\\\\.*|7Star\\\\7Star\\\\User Data\\\\.*|Chedot\\\\User Data\\\\.*|Microsoft\\\\Edge\\\\User Data\\\\.*|360Browser\\\\Browser\\\\User Data\\\\.*|Tencent\\\\QQBrowser\\\\User Data\\\\.*|CryptoTab Browser\\\\User Data\\\\.*|Opera Software\\\\Opera Stable\\\\.*|Opera Software\\\\Opera GX Stable\\\\.*)\\\\(Default|Profile \\\\d+)\\\\(Cookies|Login Data|Web Data|History|Bookmarks|Preferences|Visited Links|Network Action Predictor|Top Sites|Favicons|Shortcuts)"
      or file.path rlike "C:\\\\Users\\\\.+\\\\AppData\\\\Roaming\\\\Mozilla\\\\Firefox\\\\Profiles\\\\.*\\\\(cookies.sqlite|logins.json|places.sqlite|key4.db|cert9.db)"
      or file.path rlike "C:\\\\Users\\\\.+\\\\AppData\\\\Roaming\\\\Moonchild Productions\\\\Pale Moon\\\\Profiles\\\\.*\\\\(cookies.sqlite|logins.json|places.sqlite|key3.db|cert8.db)"
      or file.path rlike "C:\\\\Users\\\\.+\\\\AppData\\\\Roaming\\\\Thunderbird\\\\Profiles\\\\.*\\\\(cookies.sqlite|logins.json|key4.db|cert9.db)"
    )
    | keep process.executable, process.name, event.action, host.id, host.name, file.path, file.name
    | eval process_path = replace(process.executable, "([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}|ns[a-z][A-Z0-9]{3,4}\\.tmp|DX[A-Z0-9]{3,4}\\.tmp|7z[A-Z0-9]{3,5}\\.tmp|[0-9\\.\\-_]{3,})", "")
    | eval process_path = replace(process_path, "[cC]:\\\\[uU][sS][eE][rR][sS]\\\\[a-zA-Z0-9\\.\\-_\\$~ ]+\\\\", "C:\\\\users\\\\user\\\\")
    | eval normalized_file_path = replace(file.path, "[cC]:\\\\[uU][sS][eE][rR][sS]\\\\[a-zA-Z0-9\\.\\-_\\$~ ]+\\\\", "C:\\\\users\\\\user\\\\")
    | stats number_hosts = count_distinct(host.id) by process.executable, process.name, event.action, normalized_file_path, file.name, host.name
    | where number_hosts == 1
    | sort number_hosts desc

Règles YARA

Conclusion

En conclusion, il est essentiel de reconnaître que ces menaces de logiciels malveillants représentent des risques importants pour les entreprises comme pour les particuliers. Leur prix abordable les rend accessibles non seulement aux cybercriminels sophistiqués, mais aussi aux petits délinquants et aux script kiddies. Cette accessibilité souligne la démocratisation de la cybercriminalité, où même des personnes ayant des compétences techniques limitées peuvent déployer des logiciels malveillants.

La suite complète de fonctions de sécurité d'Elastic offre aux organisations et aux particuliers les outils dont ils ont besoin pour se défendre efficacement contre les attaques de logiciels malveillants. De la détection avancée des menaces à la surveillance en temps réel, en passant par les capacités de réaction.

Partager cet article