Techniques d'évasion C2 : Comprendre la randomisation JA3/S et l'étourdissement du chiffrement

28 janvier 2021
Joshua St. Hilaire
Director of Security Research
Techniques d'évasion C2 : Comprendre la randomisation JA3/S et l'étourdissement du chiffrement

JA3 a gagné en popularité au sein de la communauté de la sécurité pour signaler facilement les outils connus ou malware à l'aide d'une signature qui peut être générée facilement à partir des valeurs TLS (Transport Layer Security) utilisées lors des communications qui emploient ce type de cryptage. Bien que les signatures JA3 soient faciles à utiliser et semblent constituer un moyen simple pour les défenseurs de détecter les communications malveillantes, elles peuvent tout aussi facilement être altérées pour échapper à la détection et se fondre dans le trafic TLS/SSL normal.

Dans ce billet, nous allons commencer à découvrir certaines des méthodes mises en œuvre dans la nature par les serveurs et les agents de commande et de contrôle (C2) pour échapper à la détection. Nous nous concentrerons sur les techniques d'évasion utilisées par des cadres C2 bien connus qui utilisent plusieurs techniques pour échapper à la détection. En ce qui concerne les signatures JA3 en particulier, les développeurs de ces outils ont fait des efforts pour éviter la détection. En outre, il est clairement établi que ces mêmes techniques d'évasion sont activement utilisées par malware pour contourner la détection.

Démêler JA3/S : un abécédaire

Tout d'abord, résumons brièvement ce qu'est JA3 et pourquoi il peut être utilisé pour détecter le trafic malveillant. JA3 est une méthode d'empreinte digitale de la poignée de main TLS qui a été publiée pour la première fois par John Althouse, Jeff Atkinson et Josh Atkins de Salesforce en 2017. Le trafic Internet qui met en œuvre TLS transmet des valeurs les unes aux autres dans le but d'établir une connexion sécurisée. Les valeurs suivantes sont utilisées pour former un hachage JA3 (SSLVersion, Cipher, SSLExtension, EllipticCurve, EllipticCurvePointFormat) et pour le hachage JA3S(SSLVersion,Cipher,SSLExtension). Ces valeurs sont transmises en clair avant le chiffrement afin que le client et le serveur sachent quel type de chiffrement peut être utilisé. Elles constituent la base de ce qui est utilisé pour former un hachage JA3/S. Ces valeurs peuvent être utilisées pour identifier certains types de trafic malveillant lorsqu'elles sont fiables. Pour une explication plus complète, vous pouvez consulter l'article original de SalesForce.

Comprendre la randomisation JA3/S et le Cipher-Stunting

Comme indiqué précédemment, une partie de la signature JA3/S est dérivée du chiffrement. La liste de chiffrement est transmise lors de la négociation client/serveur. L'image d'une capture de paquet ci-dessous en est un exemple.

Figure 1 : Liste de chiffrement transmise lors de l'appel du client TLS

Au cours de ce processus, le serveur choisit le cryptogramme le plus élevé qui est pris en charge par les deux extrémités de la connexion. Cela signifie que pour chaque connexion établie entre un site endpoint et un serveur, la signature JA3/S devrait être la même et donner lieu à la même signature JA3/S. Cependant, en utilisant la randomisation JA3/S, le serveur choisira un algorithme de chiffrement aléatoire dans la liste des algorithmes de chiffrement pris en charge. En utilisant un chiffrement différent, le hachage JA3/S dérivé de ces valeurs sera différent.

Pour échapper à la détection, les auteurs de malware devront modifier les valeurs TLS utilisées, qui sont à la base de la signature JA3. Ce faisant, ils peuvent réussir à contourner la détection. Un moyen facile d'y parvenir est de choisir au hasard une suite de chiffrement. Cette technique est connue sous le nom de randomisation JA3/S.

Une tendance croissante : JA3/S dans les cadres C2

L'équipe de recherche d'Akamai a partagé ses observations à ce sujet. En résumé, les conclusions de leurs recherches montrent que les empreintes TLS ont bondi de 18 652 empreintes distinctes au niveau mondial en août 2018 à plus de 1,3 milliard fin février 2019. Cela suggère qu'à la suite des recherches et de l'intérêt porté par la communauté de la sécurité aux empreintes JA3/S, les auteurs de malware et les contrôleurs de bot ont mis en œuvre des techniques pour contourner les signatures TLS.

La randomisation JA3/S/Cipher-Stunting a également commencé à se glisser dans les Frameworks C2 comme Empire à partir de la version 3.0 master selon le changelog de Github. L'image ci-dessous montre le code source d'Empire GitHub, qui met en évidence un exemple de la façon dont la randomisation JA3 peut être réalisée.

Figure 2 : Randomisation de la signature JA3 par l'utilisation d'un choix aléatoire dans une liste de chiffrements

Échapper à la détection : Plus d'une approche

Comme pour toutes les nouvelles techniques utilisées par la communauté de la sécurité pour identifier les menaces, les attaquants ont toujours été prompts à changer de tactique pour contourner les stratégies de détection. Alors que nous avons vu des outils de l'équipe rouge utiliser la randomisation JA3 pour déjouer la détection, il existe d'autres méthodes pour faire de même. Comme le dit l'adage, "il y a plus d'une façon d'écorcher un chat". Par exemple, l'usurpation d'identité JA3 peut être réalisée en imitant les valeurs TLS des navigateurs courants ou même en utilisant le client HTTPS du système d'exploitation sous-jacent pour contourner la détection.

Conclusion : Le défi de la détection

Il est clair qu'avec toutes les techniques qui peuvent être utilisées par les praticiens de la sécurité pour détecter la "méchanceté", les attaquants s'adapteront rapidement pour continuer à opérer sans être détectés. Il devient difficile d'identifier les cadres C2 avec des signatures JA3 lorsque le cadre met en œuvre la randomisation JA3/S ou une autre technique. Les outils et techniques de sécurité utilisés par les défenseurs doivent être très flexibles et pouvoir s'adapter rapidement aux changements. Si ce n'est pas le cas, C2 continuera à échapper à la détection et à opérer sous le radar des professionnels de la cybersécurité. Les signatures JA3, même sans altération, sont un indicateur peu fiable d'activité malveillante et les techniques décrites dans l'article les rendent encore moins fiables en raison de la facilité avec laquelle elles peuvent être manipulées.

Dans cette optique, les signatures JA3 peuvent être utilisées comme indicateur supplémentaire de compromission, mais il ne faut pas s'y fier outre mesure en raison de leur faible fidélité et de la facilité avec laquelle elles peuvent être falsifiées. Les détections basées sur les signatures ne sont valables que si les données qui les sous-tendent sont dignes de confiance et si elles sont bien tenues à jour. Idéalement, la détection des C2 doit utiliser une stratégie de détection de réseau à multiples facettes, agile et capable de se généraliser. Bien entendu, cette approche nécessite un investissement beaucoup plus important, mais elle s'avérera très rentable à long terme.

Jetez un coup d'œil à mon deuxième blog où j'examine une méthode connue sous le nom de profils C2 malléables.

Foire aux questions

Qu'est-ce que JA3 et comment permet-il de détecter le trafic malveillant ?

JA3 est une méthode d'empreinte digitale de la poignée de main TLS, qui implique la capture et le hachage de valeurs spécifiques transmises pendant la poignée de main (SSLVersion, Cipher, SSLExtension, EllipticCurve, et EllipticCurvePointFormat). Ce hachage peut aider à identifier des outils malveillants connus ou malware en le comparant à une base de données de signatures JA3 connues.

Qu'est-ce que JA3S et en quoi est-il différent de JA3 ?

JA3S est similaire à JA3 mais se concentre sur la réponse du serveur pendant la poignée de main TLS. Il utilise des valeurs telles que SSLVersion, Cipher et SSLExtension pour créer son hachage. JA3 et JA3S sont tous deux utilisés pour identifier le trafic malveillant, mais JA3S prend en compte le point de vue du serveur.

Pourquoi l'empreinte digitale JA3/S est-elle considérée comme un indicateur de faible fidélité d'une activité malveillante ?

Les empreintes JA3/S sont considérées comme peu fidèles car les signatures peuvent être facilement manipulées. Les attaquants peuvent modifier les valeurs TLS pour échapper à la détection, ce qui fait qu'il n'est pas fiable de dépendre uniquement des empreintes JA3/S pour identifier les activités malveillantes.

Quelles sont les limites de l'utilisation des signatures JA3/S pour la détection des menaces ?

Les principales limites sont la facilité avec laquelle les attaquants peuvent randomiser ou imiter les valeurs JA3/S, ce qui fait qu'il est difficile de se fier uniquement à ces signatures pour une détection précise. Les signatures JA3/S doivent être utilisées comme des indicateurs supplémentaires plutôt que comme des méthodes de détection primaires.

Pourquoi est-il important que les outils de détection soient souples et adaptables ?

Les attaquants font constamment évoluer leurs techniques pour échapper à la détection. Si les outils de détection ne sont pas souples et adaptables, ils deviendront rapidement obsolètes et inefficaces, ce qui permettra aux activités malveillantes de passer inaperçues.

Comment la randomisation de JA3 aide-t-elle malware à échapper à la détection ?

La randomisation JA3 consiste à modifier la suite de chiffrement utilisée lors de la poignée de main TLS. En sélectionnant un algorithme de chiffrement aléatoire dans la liste des algorithmes de chiffrement pris en charge, le hachage JA3 change pour chaque connexion, ce qui rend difficile pour les outils de sécurité de détecter et de signaler de manière cohérente le trafic malveillant sur la base d'une signature JA3 statique.

Quelles sont les techniques couramment utilisées par les structures C2 pour échapper à la détection ?

Les techniques courantes comprennent la randomisation JA3/S, l'étourdissement du chiffrement (sélection aléatoire d'un chiffrement) et l'usurpation d'identité JA3 (imitation des valeurs TLS de navigateurs ou de systèmes d'exploitation courants). Ces méthodes permettent aux cadres C2 d'éviter d'être détectés en modifiant leurs empreintes TLS.

Comment l'adoption de la randomisation JA3/S a-t-elle évolué dans les cadres malware et C2 ?

Les recherches menées par Akamai ont montré une augmentation significative des empreintes TLS distinctes entre août 2018 et février 2019, ce qui indique que les auteurs de malware ont rapidement adopté les techniques de randomisation JA3/S pour contourner les méthodes de détection qui s'appuient sur des signatures JA3/S statiques.

Quelles sont les limites de l'utilisation des signatures JA3/S pour la détection des menaces ?

Une stratégie de détection des réseaux à multiples facettes comprenant l'analyse comportementale, la détection des anomalies et les méthodes basées sur les signatures peut améliorer la détection des communications C2. Cette approche nécessite des outils souples et adaptables, capables de répondre à l'évolution des techniques d'évasion.

Quel est le rôle d'une plateforme de détection et de réponse aux menaces dans un centre d'opérations de sécurité (SOC) ?

Une plateforme de détection et de réponse aux menaces est essentielle dans un SOC car elle intègre diverses méthodes de détection, fournit une analyse en temps réel et facilite une réponse rapide aux menaces. De telles plateformes améliorent la capacité du SOC à détecter et à atténuer les techniques d'évasion avancées telles que la randomisation JA3/S.