Charges utiles des logiciels malveillants & Beacons : Comment les communications malveillantes démarrent
Comprendre les balises des logiciels malveillants et savoir comment les bloquer peut contribuer à renforcer la sécurité de votre organisation. Une balise, également connue sous le nom de charge utile, est un exécutable ou un programme qui communique avec un cyber-attaquant par le biais d'un canal de communication. Du point de vue de l'acteur de la menace, la gestion des balises est la base de sa campagne malveillante. Selon le type et la capacité d'une balise, c'est le moyen par lequel un acteur de la menace peut obtenir une ligne directe dans votre réseau, maintenir cette ligne de communication et réaliser ses buts et objectifs illégaux.
Par exemple, l'attaque de la chaîne d'approvisionnement de SolarWinds impliquait un acteur insaisissable qui utilisait des balises ou des charges utiles. Comme l'ont montré plusieurs rapports d'analyse postérieurs à l'incident, il s'agissait d'une attaque sophistiquée en plusieurs étapes dans laquelle le logiciel malveillant Sunspot a d'abord été utilisé pour compromettre le fournisseur. Ensuite, Sunburst a ouvert une porte dérobée sur les clients du fournisseur. Après avoir été exécuté avec succès, il a été utilisé pour livrer le dropper Teardrop à mémoire seule, suivi du chargeur Raindrop et de la balise Cobalt Strike. Chaque charge utile avait un objectif et un ensemble de capacités uniques.
Étapes courantes d'une séquence d'attaque par un logiciel malveillant
Dans les cas d'activités malveillantes impliquant une vulnérabilité, qu'il s'agisse de l'utilisateur final ou du système, la séquence d'attaque suit généralement le chemin suivant :

Il est utile de comprendre ces phases du point de vue de l'acteur de la menace. En apprenant comment les attaquants obtiennent leurs communications malveillantes pour le commandement et le contrôle, nous pouvons également construire une défense contre eux. Prenons chaque étape séparément.
Infrastructure de l'attaquant
Du côté de l'attaquant, il y aura un auditeur de commande et de contrôle pour recevoir et traiter les communications de toutes les machines victimes compromises par la charge utile correspondante. L'auditeur sera soutenu par des serveurs web, des systèmes de messagerie, des DNS, des systèmes d'alerte et des serveurs d'attaque, qui hébergent les outils utilisés dans la campagne de lutte contre la menace.
Les communications du pirate en dehors de son infrastructure seront probablement anonymisées, c'est-à-dire qu'elles passeront par une série de serveurs mandataires afin de dissimuler sa véritable identité. En voici un exemple :

Pour les attaques plus sophistiquées, les acteurs de la menace peuvent également déployer des infrastructures distribuées dédiées à leurs campagnes spécifiques. Cela leur permet de mettre en place ou de démanteler rapidement l'infrastructure sur plusieurs sites géographiques, selon les besoins. Le système de noms de domaine (DNS) est un élément important de cette infrastructure. Un attaquant peut utiliser le DNS pour envoyer des communications malveillantes à son infrastructure, mais aussi pour exfiltrer (c'est-à-dire voler) des données.
Parallèlement à la mise en place de l'infrastructure, les ressources humaines responsables de la planification, du déploiement et de la gestion de la campagne malveillante seront probablement présentes. La plupart des campagnes de lutte contre les menaces sont soutenues par toute une équipe et une infrastructure ; il est peu probable qu'elles soient le fait d'une seule personne.
La répartition suivante montre un exemple d'équipe de campagne d'attaque. Notez à quel point elle ressemble à l'équipe d'une société de services informatiques typique.

Pour les acteurs de la menace, le processus consistant à sécuriser leur propre infrastructure tout en échappant à la détection dans le réseau de la victime est appelé sécurité opérationnelle. Les auteurs de menaces sophistiquées ont tendance à privilégier une sécurité opérationnelle élevée. Et pour y parvenir, ils utiliseront toute une série de techniques d'évasion et d'obscurcissement.
vulnérabilité
Une vulnérabilité est simplement une faiblesse inhérente à un système informatique ou à des technologies connexes qu'un acteur de la menace cherche à exploiter. Cette vulnérabilité peut provenir soit de la source (le vendeur de l'équipement), soit de la destination (typiquement un utilisateur final). Par exemple, en 2017, la vulnérabilité SMBv1 de Microsoft a été exploitée avec succès par des attaquants de ransomware à l'échelle mondiale. Voici un aperçu du rapport détaillé de cette vulnérabilité :

Lorsqu'une vulnérabilité d'un système ou d'un programme est découverte, elle peut être rendue publique ; dans ce cas, la vulnérabilité reçoit un numéro CVE (Common Vulnability and Exposures) standard. Il se peut aussi qu'il ne soit connu que de quelques personnes et qu'aucun correctif ne soit disponible ( " zero-day "). La phase de vulnérabilité peut également se référer à des vulnérabilités plus courantes de l'utilisateur final, généralement exploitées par l'ingénierie sociale, telles que le phishing et la malvertising. À ce stade, l'objectif global de l'acteur de la menace est d'exploiter la vulnérabilité et d'en faire une opportunité d'attaque réussie.
Attaquer ou exploiter
La phase suivante d'une attaque se produit lorsque l'auteur de la menace a accès à un morceau de code qu'il peut utiliser pour exploiter une vulnérabilité tout en contournant les contrôles de sécurité. Par exemple, en utilisant Metasploit Framework comme serveur d'attaque, un acteur de la menace a trouvé trois exploits disponibles pour la vulnérabilité Windows SMBv1, comme indiqué ici :

Ces vulnérabilités sont du type de celles exploitées par les tristement célèbres campagnes de ransomware WannaCry et NotPetya. Les exploits de ce type contiennent souvent à la fois le code d'exploitation de la vulnérabilité et un petit code de charge utile pour les communications malveillantes.
Un exploit est souvent séparé de la balise ou de la charge utile. Cependant, les deux sont communément regroupés sous le nom de shellcode. Une fois que l'exploit a accédé au système cible, il charge une petite balise ou une charge utile qui peut rappeler l'attaquant pour terminer l'attaque, un processus connu sous le nom de "payload staging" (mise en scène de la charge utile).
Balise ou charge utile
Comme indiqué ci-dessus, une balise ou une charge utile est un exécutable ou un programme qui communique avec l'attaquant via un canal de communication. Il peut être sécurisé par HTTPS ou utiliser un protocole en texte clair tel que le DNS. L'attaquant, en utilisant ce que l'on appelle une balise ou un rappel de charge utile, peut alors transférer d'autres charges utiles, souvent avec des capacités supplémentaires pour atteindre les objectifs visés.
Dans l'exemple ci-dessous, vous pouvez voir une charge utile Meterpreter sous la forme d'un EXE Windows à l'aide de msfvenom du Metasploit Framework :


Une fois qu'une telle charge utile est livrée et exécutée sur un système victime, elle crée silencieusement une connexion TCP inversée. La charge utile utilise le port par défaut 4444 depuis l'intérieur du réseau de la victime vers l'adresse IP de l'attaquant. Notez que l'exemple de charge utile ci-dessus aurait de grandes chances d'être détecté dans le monde réel, car il a été généré avec des valeurs par défaut et sans encodage. Il s'agit en fait d'un exemple académique.
Objectifs
Une fois qu'un attaquant exécute la balise ou la charge utile, il peut mettre en œuvre sa campagne de menaces. Il peut s'agir de voler des données, d'installer des ransomwares ou de provoquer d'autres types de perturbations.
Avant d'aller plus loin, voici un résumé des étapes que suivra un attaquant pour atteindre son objectif :
Étape 1 : Planifier la campagne et concevoir l'infrastructure correspondante, y compris les serveurs web, les serveurs de courrier électronique, l'infrastructure DNS et les serveurs d'attaque.
Étape 2 : Effectuer une reconnaissance des cibles et des systèmes sélectionnés.
Étape 3 : Sélectionner l'attaque ou la vulnérabilité la plus efficace à exploiter, en utilisant une combinaison d'humains et de systèmes.
Étape 4 : développer ou acquérir les outils d'exploitation correspondants, y compris les mécanismes de diffusion.
Étape 5 : mettre en place l'infrastructure d'attaque, y compris l'infrastructure de commande et de contrôle ( "listener"), pour recevoir les communications des balises inversées.
Étape 6 : Exécutez la campagne malveillante.
Étape 7 : Gérez la balise et les charges utiles afin d'éviter toute détection et de réaliser les objectifs de la campagne.
Présentation de l'attaque
Une fois que l'acteur de la menace a conçu et mis en œuvre l'infrastructure et la configuration correspondante, sa campagne malveillante est prête à commencer. Pour ce faire, l'acteur de la menace aura besoin de ses balises ou de ses charges utiles pour les exécuter à l'intérieur du réseau de la victime. Ils peuvent alors y accéder, s'y implanter et atteindre leurs objectifs.
Passons en revue quelques-unes des étapes importantes du point de vue d'un attaquant.
Pour commencer, voici comment générer la charge utile souhaitée :

Dans ce cas, la charge utile est générée pour communiquer en utilisant un domaine(app12.webcoms-meetings.com, (LHOST dans la première ligne verte) qui imite certains logiciels de réunion et de collaboration à distance pour le système d'exploitation Windows. Une vérification montre que le domaine se résout à l'adresse IP contrôlée par l'attaquant.

À partir de là, l'attaquant choisit un mécanisme de distribution pour son entrée initiale dans la cible. Dans cet exemple, ils ont choisi d'utiliser le spear phishing, une sorte d'attaque par ingénierie sociale qui amène un utilisateur peu méfiant à télécharger ce qu'il croit être une mise à jour de son logiciel pour les réunions à distance. L'attaquant a mis en place un domaine correspondant (courriel et web) et une infrastructure de site web pour soutenir cette méthode de diffusion par ingénierie sociale, comme le montre le schéma ci-dessous :

L'attaquant espère que l'utilisateur peu méfiant téléchargera et exécutera la charge utile. Ou, si l'utilisateur visite le site d'hameçonnage, la charge utile peut être exécutée automatiquement par le biais d'un téléchargement de type "drive-by-download". Quoi qu'il en soit, la charge utile déguisée se trouve maintenant sur l'ordinateur de l'utilisateur et est prête à être exécutée, comme le montre l'illustration ci-dessous :

Une fois que la charge utile est en cours d'exécution, elle rappelle silencieusement le système de commande et de contrôle de l'attaquant. Un auditeur sera déjà opérationnel du côté de l'attaquant pour recevoir les communications de rappel. Dans l'exemple ci-dessous, un gestionnaire ou auditeur de charge utile, exploit/multi/handler, a été mis en place du côté de l'attaquant pour recevoir des communications de la charge utile reverse_tcp s'exécutant sur la machine de la victime via le domaine malveillant app12.webcoms-meetings.com.

Une fois que la balise atteint l'infrastructure de l'attaquant, l'auditeur ou le gestionnaire concerné reçoit la connexion et la charge utile initiale peut télécharger une charge utile principale beaucoup plus importante, connue sous le nom de Stage. On peut le voir ci-dessous avec le message "sending stage (175174) to 203.0.113.1". La machine victime se trouve derrière un pare-feu NAT dont l'adresse IP externe est 203.0.113.1. La charge utile de l'attaquant dans cet exemple est le polyvalent Metasploit Meterpreter.

Une fois que la balise initiale a téléchargé la charge utile principale, elle est prête à poursuivre le reste de l'attaque. Une fois l'exécution réussie, le contrôle du programme est transmis à la charge utile principale (Stage) afin de fournir un shell à l'attaquant. Tout cela se passe en mémoire et fait appel à des techniques d'injection de code. La capture d'écran suivante montre l'attaquant ayant un accès direct au clavier de la machine de la victime. L'attaquant peut exécuter la commande "dir" et voir tous les fichiers du dossier de téléchargements de l'utilisateur.

À partir de là, l'attaquant effectue une reconnaissance interne (aka "discovery") sur la machine de la victime. L'attaquant peut alors obtenir les informations du compte et du répertoire de la victime. Par exemple, le nom d'utilisateur enregistré pour la machine compromise est "ama". Ils peuvent même effectuer une capture d'écran du bureau Windows du système cible, comme illustré ici :

À ce stade, l'attaquant peut également balayer le réseau interne pour découvrir d'autres systèmes. La capture d'écran suivante montre un balayage du réseau interne par le protocole de résolution d'adresses (ARP). Cela sera utile pour les mouvements latéraux, décrits plus loin.

L'attaquant peut également effectuer des actions plus malveillantes telles que l'exfiltration (le vol) d'un fichier Project_Progress.pdf de la machine de la victime. Comme indiqué ci-dessous, ils peuvent également télécharger Mimikatz, un outil malveillant permettant de voler les informations d'identification des utilisateurs. Les attaquants ont besoin d'informations d'identification avec des privilèges élevés pour effectuer des actions au niveau du système et des mouvements latéraux à l'intérieur d'un réseau.

L'exemple ci-dessous montre comment l'attaquant peut exécuter l'outil de vidage d'informations d'identification Mimikatz téléchargé pour visualiser les hachages de mots de passe sur la machine Windows compromise.

Une autre étape critique pour l'attaquant est la création d'un itinéraire de retour vers la machine victime, même après qu'elle ait été redémarrée par l'utilisateur. C'est là que la technique de la persistance entre en jeu. Les attaquants disposent de plusieurs moyens pour y parvenir, notamment l'exécution automatique de charges utiles inversées et de portes dérobées persistantes.
Comme indiqué ci-dessous, l'attaquant choisit d'exécuter un module de persistance post-exploit, qui implique un script Visual Basic (VBScript) placé dans le dossier Windows Temp de l'utilisateur connecté, UoPfNwo.vbs. L'attaquant installe ensuite une entrée dans le registre Windows pour permettre au script de s'exécuter automatiquement après le démarrage de la machine.

L'attaquant s'est maintenant assuré que son script de charge utile peut se connecter à son auditeur, même si la machine est redémarrée. Cependant, les fichiers du disque peuvent désormais être détectés par une analyse antivirus (AV) du système de fichiers.
Enfin, l'attaquant voudra nettoyer toutes les preuves potentielles. Pour ce faire, ils peuvent supprimer les fichiers et entrées malveillants d'origine, et chiffrer ou même mélanger des fichiers malveillants avec des fichiers système légitimes. Pour brouiller davantage les pistes, ils peuvent également supprimer les copies d'ombre et les journaux du système.
Analyse et preuves scientifiques de l'attaque
Je vais maintenant passer en revue les premières réponses aux incidents (RI) et l'analyse de base des éléments spécifiques de l'attaque. Cela vous permettra de mieux comprendre certaines actions malveillantes.
Analyse du réseau et du DNS
En commençant par l'analyse des communications réseau de la machine victime, l'IP interne (10.1.1.81) a établi une connexion TCP sur le port distant 443 avec le nom DNS de l'attaquant extérieur. Il s'agit d'une communication de commandement et de contrôle.


Ensuite, en analysant les composants typiques impliqués dans une hiérarchie de résolution DNS normale, nous pouvons décomposer le processus de l'attaquant :
- Tout d'abord, l'auteur de la menace a enregistré un domaine : webcoms-meetings.com.
- Le domaine pointe vers l'adresse IP 203.0.113.123.
- L'attaquant utilise le nom de sous-domaine app12.webcoms-meetings.com pour diriger le trafic des charges utiles sur les machines compromises vers son centre de commande et de contrôle.

Les acteurs de la menace peuvent également tenter d'exfiltrer des données en utilisant le DNS. Par exemple, ils peuvent utiliser des enregistrements DNS TXT ou même des informations uniques codées sur leurs victimes dans le cadre d'une supposée requête DNS sortante. Ces requêtes seront reçues par le serveur DNS faisant autorité sous le contrôle de l'attaquant. Un serveur DNS faisant autorité reçoit et répond aux requêtes DNS pour un domaine spécifique.
Les acteurs de la menace peuvent également utiliser des algorithmes de génération de domaines (DGA) pour générer automatiquement des milliers de domaines chaque jour. Avec cette technique, une machine infectée dispose d'un code intégré (c'est-à-dire d'un algorithme) pour générer et tenter de se connecter à un certain nombre de domaines générés au cours d'une période donnée. Par exemple, il peut essayer de se connecter à 1 000 domaines générés toutes les 24 heures jusqu'à ce que l'un d'entre eux réussisse. L'attaquant enregistrera ensuite quelques-uns de ces domaines chaque jour et les maintiendra en activité pendant de courtes périodes.
Ces domaines recevront probablement des communications malveillantes de temps à autre. Cette technique, popularisée par la famille de logiciels malveillants Conficker, rend difficile la création d'une liste de refus en tant que "kill switch". Pour échapper davantage à la détection et maintenir leur résilience, les acteurs les plus sophistiqués utilisent également une infrastructure distribuée qui combine des proxys, des redirecteurs et des équilibreurs de charge.
Analyse du système
La plupart des opérations typiques de post-exploitation des charges utiles ou des balises impliquent la manipulation des processus Windows, qui se déroulent entièrement en mémoire. Un attaquant disposant d'une capacité de manipulation de processus peut lancer de nouveaux processus sur la machine victime. Il peut s'agir d'un shell interactif natif (Windows cmd.exe) qui permet à l'attaquant d'utiliser les commandes natives de Windows. L'attaquant peut également lancer des processus de manière non interactive, comme illustré ici :

Sur la machine victime, un vidage de processus (illustré ci-dessous) montre les processus nouvellement créés avec leurs identifiants respectifs, 2624 et 1972, tous deux en cours d'exécution.

La possibilité de lancer de nouveaux processus est très utile. L'attaquant peut démarrer un nouveau processus sans méfiance, comme notepad.exe, puis y faire migrer son processus de charge utile malveillante d'origine en utilisant l'injection de code / DLL. Il s'agit d'une technique qui permet de faire passer un processus malveillant pour un processus légitime ; j'y reviendrai plus en détail dans la deuxième partie de cette série.
L'attaquant, dans le cadre de son évasion post-exploitation, fait migrer le processus malveillant d'origine, web1_meeting_update.exe (2472), vers un nouveau processus notepad.exe (1768), comme le montre l'illustration ci-dessous.

Sur l'ordinateur de la victime, le processus malveillant d'origine, PID 2472, a été transféré et s'exécute désormais sous le nom de notepad.exe avec l'ID de processus 1768. Comme indiqué ci-dessous, seul le nouveau processus est désormais en cours d'exécution.

Grâce à la technique de persistance précédente, le dossier Temp de Windows (voir ci-dessous) montre à la fois le VBScript utilisé et les clés d'exécution automatique correspondantes qui ont été créées dans le registre pour le script malveillant.

Une première analyse statique du fichier de charge utile exécutable malveillant d'origine montre qu'il présente plusieurs facteurs de risque associés. Par exemple, il charge certaines bibliothèques Windows (DLL) intéressantes, en particulier celles utilisées pour les communications réseau. Une analyse correspondante de la mémoire et de la dynamique affichera le comportement suspect d'un processus notepad.exe établissant des connexions réseau.

Conclusions
Dans cet article, j'ai abordé quelques-unes des considérations et des actions typiques d'une campagne de menaces et des communications malveillantes qui y sont associées. J'espère que cela vous permettra de mieux comprendre comment et pourquoi un acteur de la menace utilise certaines techniques.
Nous pouvons résumer le cycle d'attaque qui conduit à une communication malveillante en trois phases :
- Entrée initiale
- Exécution
- Commande et contrôle
Une bonne façon d'aborder les stratégies d'atténuation est d'appliquer la philosophie de l'hypothèse de la brèche. En d'autres termes, il faut partir du principe que l'attaquant est déjà sur place et que, par conséquent, vos principaux objectifs de sécurité doivent être la détection et l'endiguement. En outre, vos résultats en matière de sécurité doivent inclure au moins la visibilité, l' alerte et le confinement automatisés(segmentationzéro confiance). J'aborderai les techniques d'atténuation plus en détail dans la troisième et dernière partie de cette série de blogs.
Dans le prochain article, deuxième partie de cette série, j'examinerai plus en détail les balises et les charges utiles et j'expliquerai pourquoi un acteur de la menace peut choisir un type plutôt qu'un autre. Je me pencherai également sur certaines des techniques avancées utilisées par les attaquants pour se soustraire à la loi et s'y soustraire.