Démystifier les techniques de ransomware à l'aide d'assemblages .Net : Une attaque en plusieurs étapes
Dans la première partie de cette série, nous avons examiné des exemples de capacités de programmation qui peuvent être utilisées par les ransomwares dans leurs techniques malveillantes. Dans la deuxième partie, nous avons également examiné les principes fondamentaux du cadre logiciel .Net de Microsoft et des assemblages associés EXE et DLL afin de comprendre comment ces capacités sont rendues possibles.
Dans cette dernière partie, nous combinerons tout ce qui a été discuté jusqu'à présent dans un ensemble de charges utiles mises en scène afin de démontrer les principes fondamentaux d'une attaque par charges utiles en plusieurs étapes.
Charge utile et configuration de l'attaque
Nous commençons par présenter les charges utiles qui seront utilisées pour l’attaque. Toutes les capacités précédentes, y compris les nouvelles, seront prises en compte pour créer les charges utiles en phase. Cela vise à démontrer globalement comment les différentes tactiques et techniques que nous avons observées jusqu’à présent peuvent être assemblées, comme c’est généralement le cas des ransomwares.
Nous allons utiliser les charges utiles suivantes :
- Application EXE initiale : Charge utile du stager
- EXE principal du ransomware : charge utile de l'étape 1
- 2e DLL principale du ransomware : charge utile de l'étape 2
L'utilisation de plusieurs charges utiles pour accomplir différentes tâches dans cet exemple d'attaque constitue une attaque en plusieurs étapes. Si vous vous reportez à la série précédente sur les charges utiles des logiciels malveillants et les balises, la deuxième partie a abordé plus en détail les types de charges utiles malveillantes. J'y ai expliqué la différence entre une charge utile en escalier et des types de charges utiles en escalier. En résumé, un stager est une application exécutable initiale souvent plus petite qui peut servir de téléchargeur, de dropper et/ou de charge utile pour un fichier de charge utile principal plus performant et souvent plus gros, appelé stage. L'objectif de la charge utile de la scène est d'installer la scène principale. Dans cet exemple d'attaque, en utilisant l'échelonnement des charges utiles tel que décrit ci-dessus, les différentes charges utiles auront les différentes tâches suivantes :
La charge utile du Stager EXE aura les effets suivants :
- Techniques d'évasion
- Télécharge deux fichiers "texte" sur le disque. Ces fichiers sont en fait des EXE et des DLL.
- Lancez ledeuxième fichier EXE
- L'organisateur quitte ensuite
- Ledeuxième EXE en cours d'exécution (étape 1) charge la DLL (étape 2).
Les charges utiles Stage-1 EXE et Stage-2 DLL exécutent ensuite les actions malveillantes suivantes du ransomware :
- Techniques d'évasion
- Découverte
- Manipulation des processus
- Enumération des lecteurs et des fichiers
- Cryptage des fichiers
Stager : Exécutable initial de la charge utile (EXE)
L'attaque commence avec notre charge utile initiale, le stager livré à la machine de la victime. Il s'agit souvent de techniques d'ingénierie sociale telles que l'hameçonnage. Une fois que la charge utile initiale est livrée et exécutée, elle commence à exécuter la série d'instructions malveillantes.
Evasion
Il attendra d'abord un certain temps sans effectuer aucune action. Il s'agit d'une technique d'évasion conçue pour déjouer l'analyse des menaces pesant sur les machines virtuelles. Ensuite, il télécharge un exécutable bien connu sur Internet, tel qu'une application de bloc-notes. Il s'agit d'un leurre et d'une autre tactique d'évasion pour éviter d'être détecté.

D'autres techniques peuvent consister à vérifier les clics de souris ou les répertoires de documents pour trouver des fichiers associés à l'utilisation normale d'un système informatique, par opposition à une machine virtuelle en bac à sable utilisée pour l'analyse des menaces.
Downloader, dropper et loader
Une fois que ces premières actions d'évasion ont été exécutées, la charge utile initiale (stager) exécute à nouveau une troisième action de mise en veille. Il attendra à nouveau pendant une durée déterminée avant de passer à la série d'instructions suivante, qui consistera à télécharger les fichiers de la charge utile de l'étape. Ces fichiers sont hébergés à distance par l'attaquant, comme indiqué ci-dessous.

L'organisateur procède ensuite au téléchargement de deux fichiers texte "notepadlog0120231224.txt" and “notepadlog0120231513.txt.” La phase suivante est indiquée en rouge dans l'exemple ci-dessous.
Remarquez que les liens de téléchargement des fichiers de charge utile sont en fait obscurcis à l'aide de l'encodage base64, qui a été présenté comme la quatrième technique dans la première partie de cette série.

La charge utile initiale convertit à la volée la base64 en liens de téléchargement originaux.
Les deux fichiers texte téléchargés sont en réalité un exécutable (EXE) et une bibliothèque de liens dynamiques (DLL), déguisés en fichiers texte. Il s'agit des charges utiles des étapes 1 et 2 de cet exemple d'attaque de ransomware en plusieurs étapes. Lorsque les téléchargements sont réussis, ces fichiers sont renommés en fonction de leur type d'origine.

La charge utile stager lance alors la charge utile exécutable stage-1 pour lancer l'attaque du ransomware proprement dite. La mise en scène a maintenant atteint son objectif et se termine une fois que la charge utile de l'étape 1 est chargée dans la mémoire et commence à fonctionner. Ainsi, comme nous l'avons vu dans la première technique de la première partie de cette série, la charge utile de l'étape initiale est le téléchargeur et le distributeur de la charge utile EXE de l'étape 1 et de la charge utile DLL de l'étape 2, et le chargeur uniquement de la charge utile de l'étape 1. La charge utile DLL sera chargée en tant que charge utile de niveau 2 par la charge utile EXE de niveau 1 en cours d'exécution, d'où une attaque par charge utile à plusieurs niveaux.
Stage-1exécutable (EXE)
Unefois que l'exécution a été transmise à l'exécutable de l'étape 1, celui-ci se met d'abord en veille pendant une durée déterminée, comme indiqué ci-dessous.

Il supprime ensuite le fichier de charge utile "payload_initial_stager.exe" du système de fichiers afin d'éliminer toute preuve. Dans l'exemple ci-dessous, le fichier a été supprimé et ne se trouve plus dans le répertoire.

La charge utile de l’étage 1 est maintenant prête à exécuter son ensemble d’actions pour poursuivre le reste de l’attaque.
Découverte
Ensuite, il exécute des techniques de découverte sur le système infecté. Ces techniques de découverte permettent à un acteur de la menace d'en savoir un peu plus sur le système infecté. La découverte aide l'opérateur de la menace à prendre certaines décisions cruciales en matière de sécurité opérationnelle afin d'assurer le succès global de l'attaque. Dans cet exemple, la charge utile de l'étape 1 vérifie la liste des processus. Parmi les processus susceptibles de présenter un intérêt, citons les processus de détection et de réponse des points finaux (EDR), d'antivirus ou de machines virtuelles. Ils permettent de comprendre la probabilité de détection de la charge utile.

Sur la base des résultats des informations de découverte, un acteur de la menace peut prendre d'importantes décisions en matière de sécurité opérationnelle. Par exemple, si un processus EDR bien connu est détecté sur le système ou si la charge utile détecte des processus de machines virtuelles, il est possible de demander à la charge utile de quitter le système pour éviter d'être détectée.

L'acteur de la menace peut également décider d'employer d'autres techniques d'évasion pour échapper au CED ou même tenter d'utiliser d'autres moyens pour mettre fin au processus de CED.
La découverte aide également à déterminer la valeur du système compromis. Par exemple, s’agit-il d’un serveur de base de données de production ou d’un système de paiement avec des données clients précieuses ? Plus le système est crucial pour une entreprise, plus il est probable qu’une rançon soit payée pour celui-ci.
Manipulation de processus : Binaires "Vivre sans terre" (LotL)
Un autre ensemble d’informations utiles concerne les informations liées au système, telles que le système d’exploitation, la localisation de la langue, ainsi que les correctifs et mises à jour installés ou manquants du système. Ce type d’information peut aider à planifier des attaques supplémentaires telles que les exploits de vulnérabilité.
Si le processus EDR n'a pas été trouvé, la charge utile se poursuivra car l'acteur de la menace peut être sûr de pouvoir traiter d'autres processus. Ainsi, après avoir vérifié les informations relatives au processus, la charge utile exécutable de l'étape 1 utilise une technique de survie et lance une invite de commande Windows distincte, comme le montre l'exemple ci-dessous.

Après le lancement de l’invite de commande, la charge utile lui transmet certaines commandes Windows pour qu’elles s’exécutent. Cette commande génère des informations système telles que le type de système, les informations du processeur, la disponibilité et les correctifs rapides. Un instantané de la sortie est montré en texte rouge dans l’exemple ci-dessous.

Bibliothèque de liens dynamiques (DLL) de l'étape 2
Comme discuté dans les articles précédents, un fichier DLL contient du code informatique qui ne peut pas être exécuté seul. Ainsi, dans notre exemple, l’EXE de la phase 1 utilise aussi du code dans la DLL de la phase 2 pour terminer le reste du cycle d’attaque.
Charge utile DLL de l’étage 1 de chargement EXE
Une fois que la charge utile EXE de l'étape 1 a terminé ses actions, elle procède au chargement de la charge utile DLL de l'étape 2. La charge utile DLL contient le code qui sera utilisé pour les étapes finales de l'attaque, à savoir la vérification des lecteurs du système et le chiffrement des fichiers sélectionnés sur ces lecteurs.

Le code DLL effectue d’abord une vérification des disques pour trouver les disques sur le système infecté, en listant des informations utiles sur chacun. D’après l’affichage ci-dessus, les informations sur les disques du système qui sont prêts à être accessibles par rapport à ceux qui ne le sont pas, sont particulièrement intéressants. Cela permet de cibler les fichiers sur les bons disques pour le chiffrement et d’éviter les erreurs en tentant de fonctionner sur des disques en lecture seule ou inaccessibles.
Chiffrement
À ce stade, le chiffrement de la rançon est prêt à être exécuté. Le code de cryptage de la DLL de l'étape 2 vérifie d'abord la présence d'une liste de fichiers texte dans le répertoire. En effet, dans cette dernière démonstration, nous ne crypterons que des fichiers texte. La charge utile affiche ensuite tous les fichiers texte trouvés.

Les fichiers découverts sont alors cryptés par la charge utile. Les extensions de fichiers sont également remplacées par ".encrypted" pour afficher les fichiers texte cryptés.

Ci-dessous, nous pouvons également voir les images avant et après du répertoire où se trouvent les fichiers texte, montrant les changements après le cryptage.

Enfin, la note de rançon : elle avertit généralement l'utilisateur que ses fichiers ont été cryptés. Il leur indique également comment payer la rançon et obtenir la clé de déchiffrement pour décrypter les fichiers. Dans de nombreux cas, le paiement de la rançon ne garantit pas automatiquement l'accès à la clé de décryptage.

Remarquez que dans notre exemple, nous avons choisi de mettre tout le code de chiffrement dans un fichier DLL qui est devenu notre charge utile de niveau 2. Cela s’explique principalement par le fait que, comme expliqué dans les articles précédents, une DLL est un fichier bibliothèque, ce qui signifie qu’elle peut être réutilisée. Par exemple, si, en tant qu’attaquant, nous choisissions d’utiliser une charge utile EXE de niveau 1 complètement différente, peut-être en raison de nouvelles améliorations d’évasion à l’avenir, nous n’aurions pas à réécrire la partie chiffrement de notre code de charge utile pour finaliser cette nouvelle campagne d’attaque. Nous pouvons simplement associer notre nouvelle charge utile au fichier DLL de niveau 2 existant et faire charger la DLL par le nouvel EXE pour chiffrer les fichiers.
Atténuation contre les ransomwares
En fin de compte, les ransomwares utiliseront trois frontières principales : l'infection, l'exécution et la persistance.
Ils peuvent être classés dans les grandes catégories suivantes :
- Système de fichiers
- Registre
- Mémoire
- Réseau (distant et local - mouvement latéral)
Les défenseurs doivent donc s'efforcer d'acquérir les bons outils et de les utiliser de la bonne manière pour réduire efficacement les risques de sécurité. Dans la troisième partie de la série précédente sur les charges utiles et les balises des logiciels malveillants, vous trouverez une présentation plus détaillée des mesures d'atténuation de la défense en profondeur fondées sur la philosophie de la violation présumée et de la résilience cybernétique.
Cette série en trois parties a montré comment les différentes tactiques et techniques utilisées par les logiciels malveillants, et plus particulièrement les ransomwares, peuvent voir le jour. En comprenant ces différentes tactiques et techniques, les défenseurs peuvent être mieux placés pour évaluer leurs politiques et défenses cybernétiques existantes afin de trouver des contre-mesures efficaces.
Vous souhaitez en savoir plus sur la protection de votre organisation contre les ransomwares et les violations ? Contactez-nous dès aujourd’hui.



