Techniques d'évasion C2 : Comprendre les profils C2 malléables

26 avril 2021
Joshua St. Hilaire
Director of Security Research
Techniques d'évasion C2 : Comprendre les profils C2 malléables

Voici le deuxième article de notre série sur les techniques d'évasion en matière de commandement et de contrôle (C2), dans lequel je parle des profils C2 malléables. Consultez mon premier blog où j'examine une méthode connue sous le nom de JA3 signature randomization.

Les profils C2 malléables ont été largement adoptés et utilisés par les groupes de hackers et les groupes de menaces persistantes avancées (APT). Cobalt Strikeun cadre populaire utilisé par les pen-testers et les groupes de menaces persistantes avancées (APT). Il convient de noter que si les profils malléables sont familiers aux utilisateurs de Cobalt Strike , leur utilisation a commencé à s'étendre à d'autres frameworks C2. À l'heure où nous écrivons ces lignes, les profils malléables sont également utilisés dans Empire C2 depuis la version 3.4. Ce qui rend cette évolution encore plus intéressante, c'est que l'équipe d'Empire a récemment annoncé un partenariat avec Kali Linux, une distribution de test d'intrusion populaire, ce qui augmentera la prévalence de l'utilisation des profils malléables.

Profils malléables pour l'évasion

Les profils malléables pour le C2 permettent à l'acteur d'échapper non seulement à la détection sur le fil des outils de détection basés sur le réseau, mais aussi aux produits de sécurité endpoint . Le niveau de "malléabilité" permet aux opérateurs de Cobalt Strike non seulement de personnaliser entièrement la forme et le moment des balises C2, mais aussi de personnaliser les fonctions sur cible telles que l'injection de processus et les méthodes d'obscurcissement en mémoire. La sécurité opérationnelle est toujours une préoccupation lors de l'exécution d'agents dans un environnement cible. Ainsi, la surveillance de la sécurité du réseau est toujours un élément à prendre en compte pour maintenir la furtivité des commandes et des contrôles. Supposons que, lorsque des attaquants installent des agents sur des machines compromises au sein de votre réseau, le trafic généré par ces agents lorsqu'ils se connectent au serveur C2 utilise des user-agents, des URI ou d'autres artefacts identiques ou similaires qu'il est facile de repérer. Le risque de détection de ces activités serait exceptionnellement élevé si elles étaient connues à l'avance en raison de leur utilisation répétée. Il est donc nécessaire de transformer ou de modeler le trafic de manière à ce qu'il puisse se fondre dans le trafic "normal" attendu ou simplement utiliser de nouvelles valeurs à chaque exécution. L'une ou l'autre de ces approches permettrait d'échapper à la détection. Une autre motivation pour l'utilisation de profils malléables est le désir de tester des menaces connues. Si je peux configurer un agent et un serveur C2 de manière à ce qu'ils ressemblent exactement à ce qu'un site malware semble être sur le réseau ou sur une cible endpoint , je peux alors voir si ma pile de détection du réseau ou la surveillance de la sécurité endpoint est en mesure de signaler l'activité.

C'est là que la malléabilité entre en jeu. Il convient de passer en revue certaines des options offertes à l'opérateur pour personnaliser le C2. En outre, en résumé, nous parlerons de la façon dont ces options rendent la détection difficile, en particulier avec les stratégies de détection basées sur les signatures. Je séparerai le résumé des fonctionnalités entre le réseau et endpoint. Les options présentées ne doivent en aucun cas être considérées comme une liste exhaustive.

L'évasion par la personnalisation

Quel que soit le protocole réseau, par exemple HyperText Transfer Protocol (HTTP) ou HTTPS, les agents communiqueront avec les serveurs d'une manière spécifique. Si l'on utilise le protocole HTTP, de nombreux éléments d'une conversation HTTP peuvent être inspectés par les défenses de la couche réseau. Par exemple, les chaînes d'un en-tête HTTP qui sont suffisamment uniques peuvent être utilisées par les défenseurs pour détecter les connexions sur le fil. Des éléments tels que des agents utilisateurs uniques, des chaînes d'acceptation personnalisées et des valeurs de chemin d'accès uniques sont tous ouverts à l'inspection.

Avec les profils malléables, il suffit de reproduire les valeurs d'un programme légitime, telles que celles de l'en-tête HTTP, pour que la connexion semble identique à des connexions bénignes telles que l'agent de mise à jour de Microsoft Windows, par exemple. La capture d'écran ci-dessous montre une reconstruction Wireshark d'une session HTTP utilisant un profil malléableCobalt Strike Windows update.

Figure 1 : Cobalt Strike Profil malléable de Windows Update

Il convient de souligner que des transformateurs de données sont disponibles pour coder les données avant leur transmission. Cela n'est peut-être pas évident, mais l'Uniform Resource Identifier (URI) qui suit la requête HTTP GET dans la capture d'écran ci-dessus est codé en base 64 avant la transmission, puis décodé du côté du serveur. La liste suivante énumère les transformations de données disponibles sur Cobalt Strike.

Tableau 1 : Cobalt Strike transformation des données

En outre, plusieurs transformations peuvent être combinées. Ainsi, base64 et masque, par exemple, peuvent être superposés pour renforcer l'OPSEC.

Même dans les cas où HTTPS est utilisé, des valeurs peuvent encore être manipulées, comme les certificats SSL (Secure Sockets Layer). Le certificat SSL suivant est utilisé par les profils de mise à jour Windows mentionnés précédemment :

Outre le contrôle précis de la manière dont les connexions apparaissent sur le fil, les valeurs temporelles qui contrôlent le moment où le client se connecte au serveur C2 peuvent également être manipulées par le biais de profils malléables. Des valeurs telles que la gigue et le délai permettent aux attaquants de modifier l'intervalle de temps entre les connexions C2.

Endpoint malléable

La malléabilité n'est pas seulement utilisée lorsque l'agent envoie des données sur le réseau, mais aussi lorsqu'il contrôle les caractéristiques en mémoire, la manière dont il s'injecte dans les processus et les tâches de post-exploitation. Cela permet d'échapper à la détection et à la réponse (EDR) de endpoint et à la détection antivirus. L'exemple ci-dessous montre quelques options relatives au comportement de l'agent sur le site cible endpoint qui peuvent être définies dans des profils malléables.

Figure 2 : Exemple d'options malléables liées à endpoint dans le profil Cobalt Strike havex.

Le bloc stage permet de contrôler la manière dont l'agent se charge en mémoire. Des éléments tels que le nom, la date de compilation, les autorisations de mémoire, l'obscurcissement ainsi que le type de chargeur peuvent être spécifiés. Souvent, les analystes qui recherchent un code malveillant chargé dans un processus vérifient d'abord les segments de mémoire et se concentrent sur les segments chargés avec l'autorisation RWX dans les segments de mémoire suspects.

Les options d'injection de processus permettent de modeler le contenu injecté. Vous pouvez remplir les données à l'aide d'options de transformation, définir la méthode d'allocation et contrôler les autorisations. Enfin, vous pouvez également contrôler les tâches de post-exploitation en choisissant différents noms de tuyaux à utiliser, en utilisant l'injection intelligente et en spécifiant les emplacements de spawn. C'est très utile pour contourner et tester les solutions EDR. Pour un aperçu plus complet, vous pouvez consulter le guide en ligne Cobalt Strikes.

Défis pour les défenseurs

Le fait de permettre une telle granularité pour contrôler les communications C2 et le comportement de mise en scène fait de la défense et de la détection à l'aide de signatures une tâche difficile. Il convient également de souligner que si Cobalt Strike permet la malléabilité depuis un certain temps, d'autres cadres C2 populaires tels qu'Empire C2 adoptent également des profils malléables. Ceci, associé au fait que leur utilisation augmente dans les intrusions récentes des acteurs APT et ransomware, rend la tâche des défenseurs de plus en plus complexe.

Les technologies de défense des réseaux et de endpoint devront soit avoir des signatures rapidement mises à jour, soit utiliser d'autres moyens d'investigation pour détecter les commandes et les contrôles qui ne reposent pas sur des schémas répétés dans les données ou même sur des séquences temporelles qui correspondent à l'activité de balisage.

Foire aux questions

Qu'est-ce qu'un profilé C2 malléable et comment est-il utilisé dans le site Cobalt Strike?

Les profils C2 malléables (Command and Control) de Cobalt Strike permettent aux opérateurs de personnaliser le comportement et l'apparence de leur trafic C2. Cette personnalisation permet d'échapper à la détection par les outils de sécurité basés sur le réseau et sur endpoint . Les opérateurs peuvent modifier les en-têtes HTTP, les agents utilisateurs, les URI et même la synchronisation des balises C2 pour que le trafic se fonde dans le trafic réseau normal ou imite les communications logicielles légitimes, telles que celles de l'agent de mise à jour Windows.

Pourquoi les profils C2 malléables sont-ils utiles aux attaquants ?

Les profils C2 malléables sont avantageux pour les attaquants car ils permettent d'éviter la détection par les outils de sécurité. En personnalisant le trafic pour qu'il paraisse normal ou qu'il imite le trafic légitime, les attaquants peuvent éviter de déclencher des alertes de sécurité. En outre, ces profils permettent de tester les mesures de sécurité en simulant les comportements connus de malware et en évaluant l'efficacité des mécanismes de détection.

Comment les profils malléables améliorent-ils la sécurité opérationnelle lors des tests de pénétration ou des attaques ?

Les profils malléables renforcent la sécurité opérationnelle en rendant plus difficile l'identification et le blocage du trafic C2 malveillant par les défenseurs. En personnalisant le trafic pour qu'il ressemble à des communications logicielles légitimes ou en variant les modèles de trafic, les attaquants peuvent rester furtifs et réduire le risque de détection. Ceci est particulièrement important lors de l'installation et de la gestion d'agents sur des machines compromises au sein d'un réseau cible.

Comment les profils malléables affectent-ils la sécurité de endpoint ?

Sur les terminaux, les profils Malleable peuvent contrôler les caractéristiques en mémoire, les méthodes d'injection de processus et les tâches de post-exploitation. Ces capacités permettent d'échapper aux outils de détection et de réponse (EDR) de endpoint et aux logiciels antivirus en personnalisant la façon dont le code malveillant est chargé et se comporte en mémoire, ce qui le rend plus difficile à détecter à l'aide des méthodes conventionnelles.

Comment l'utilisation de profils malléables complique-t-elle la détection des activités de balisage ?

Les profils malléables compliquent la détection des activités de balisage en permettant aux attaquants de rendre aléatoires les intervalles de temps (gigue et délai) entre les communications C2. Cette randomisation rend difficile l'identification par les outils de défense du réseau de modèles réguliers de balisage, qui sont souvent utilisés pour détecter des systèmes compromis communiquant avec un serveur C2.

Comment les profils C2 malléables se répandent-ils dans d'autres cadres ?

Les profils C2 malléables, popularisés à l'origine par Cobalt Strike, ont commencé à être adoptés par d'autres frameworks C2 comme Empire C2, qui a inclus cette fonctionnalité à partir de la version 3.4. Cette expansion est en partie due au partenariat d'Empire avec Kali Linux, qui a accru la prévalence et l'utilisation des profils malléables parmi les testeurs de pénétration et cybercriminels .

Quels sont les éléments spécifiques du trafic C2 qui peuvent être personnalisés à l'aide des profils malléables ?

Grâce aux profils malléables, les opérateurs peuvent personnaliser divers éléments du trafic C2, notamment les en-têtes HTTP (par exemple, les agents utilisateurs, les chaînes d'acceptation), les URI, les certificats SSL et les valeurs temporelles (par exemple, la gigue et le retard). Ces personnalisations permettent au trafic malveillant de se fondre dans le trafic normal ou d'apparaître unique pour chaque opération, ce qui rend la détection plus difficile.

Quels défis les profils malléables posent-ils aux défenseurs ?

Les profils malléables posent des problèmes importants aux défenseurs en compliquant la détection du trafic malveillant. Les méthodes traditionnelles de détection basées sur les signatures perdent de leur efficacité car le trafic personnalisé ne correspond pas aux schémas malveillants connus. Les défenseurs doivent s'appuyer sur des techniques de détection plus sophistiquées et adaptatives, telles que l'analyse basée sur le comportement et la détection des anomalies, pour identifier les activités suspectes.

Comment les profils malléables affectent-ils la sécurité de endpoint ?

Dans Cobalt Strike, les opérateurs peuvent personnaliser divers aspects du comportement de endpoint , notamment les autorisations de mémoire du code chargé, la méthode d'injection de processus, le remplissage des données, les méthodes d'allocation et les tâches de post-exploitation telles que l'injection intelligente et la spécification des emplacements de spawn. Ces options font qu'il est difficile pour les outils de sécurité d'identifier les activités malveillantes sur la base d'indicateurs communs.

Pourquoi est-il essentiel pour les centres opérationnels de sécurité (SOC) de disposer d'une plateforme robuste de détection et de réponse aux menaces lorsqu'ils ont affaire à des profils malléables ?

Compte tenu des techniques d'évasion avancées permises par les profils malléables, il est crucial pour les SOC de disposer d'une plateforme robuste de détection et de réponse aux menaces. Une telle plateforme peut fournir une analyse en temps réel, une détection basée sur le comportement et une détection avancée des anomalies afin d'identifier et de répondre aux menaces sophistiquées qui échappent aux méthodes traditionnelles basées sur les signatures. Cela permet d'améliorer la posture de sécurité globale et de réagir rapidement et efficacement aux intrusions potentielles.