Que sont les DGA et comment les détecter?

Les algorithmes de génération de domaine (DGA) sont une classe d'algorithmes qui génèrent périodiquement et dynamiquement un grand nombre de noms de domaine. En règle générale, les domaines sont utilisés par les logiciels malveillants et les botnets comme points de rendez-vous pour faciliter le rappel vers les serveurs de commande et de contrôle de l'acteur malveillant. Les DGA permettent aux logiciels malveillants de générer des dizaines de milliers de domaines par jour, la grande majorité d'entre eux non enregistrés. Le nombre énorme de domaines non enregistrés est utilisé pour masquer les domaines enregistrés, permettant aux botnets infectés d'échapper à la détection et à la dissuasion par des systèmes de détection de sécurité basés sur la signature ou la réputation IP.

La première famille de logiciels malveillants connue à utiliser un DGA était Kraken en 2008. Plus tard cette année-là, le ver Conflicker a poussé la tactique DGA à la notoriété. Même après 10 ans, il est encore possible de trouver Conflicker ou l'une de ses variantes sur certains des réseaux actuels.

Parallèlement à la prolifération croissante des logiciels malveillants, l'utilisation des DGA est devenue plus répandue.

Les objectifs de la détection DGA

Étant donné que l'activité DGA est un indicateur considérable de compromis, il devient essentiel de détecter de telles activités sur votre réseau. Il existe trois niveaux de détection DGA, chaque niveau suivant étant corrélé à une augmentation de la gravité. La détection à des niveaux ultérieurs est plus difficile, mais plus critique.

Si un DGA est détecté, cela signifie qu'un ou plusieurs de vos systèmes ont été infectés par des logiciels malveillants basés sur DGA et sont devenus des botnets. Certaines actions doivent être prises. Le premier objectif est d'identifier les systèmes affectés, de les nettoyer correctement ou de les mettre en quarantaine pour éviter l'escalade.

L'objectif suivant est de déterminer si un nom de domaine DGA donné est enregistré. Si le domaine est enregistré, il est devenu un serveur Command & Control actif qui présente un grand risque pour votre réseau. Les systèmes infectés, désormais des botnets, peuvent utiliser ces serveurs pour appeler leur domicile et recevoir des commandes de l'attaquant malveillant. Par conséquent, le deuxième composant d'un système de détection DGA efficace est la capacité de différencier les domaines enregistrés des domaines non enregistrés.

Par exemple, un DGA peut générer 1000 domaines, à partir de xyzwer1, xyzwer2…. à xyzwer1000. Le pirate n'a besoin d'enregistrer qu'un seul domaine, c'est-à-dire xyzwer500, pas les 999 autres domaines. Si le domaine enregistré et son adresse IP associée peuvent être identifiés, les informations peuvent être utilisées pour bloquer le canal de communication entre le système ciblé et le serveur Command & Control. De plus, les informations doivent être propagées à tous les autres systèmes de prévention ou de détection en place pour empêcher le rappel vers ce serveur à partir de n'importe quel système du réseau.

Le dernier objectif mais le plus critique d'un système de détection DGA est de déterminer si le rappel a réussi avec les domaines enregistrés et si le contact a été établi entre le (s) système (s) infecté (s) et le serveur Command & Control. Si une telle activité est détectée, certains dommages ont peut-être déjà été causés. Le logiciel malveillant de votre réseau a peut-être été mis à jour ou un nouveau logiciel malveillant a été installé. Des données sensibles peuvent avoir été exfiltrées.

Comment fonctionne la détection DGA?

L'activité DGA est détectée en capturant et en analysant les paquets réseau, généralement en cinq étapes générales.

Étape 1 - Détecter l'application DNS
La détection commence via une requête DNS et / ou des messages de réponse. Le DNS est un protocole Internet fondamental et la plupart des pare-feu ont pour politique d'autoriser le trafic DNS sortant sur son port réservé 53. Cependant, un pirate peut profiter du port 53 pour envoyer son trafic sans respecter le format de message DNS standard. Cette attaque s'appelle le tunneling DNS. Un moteur d'inspection approfondie des paquets (DPI) est recommandé pour identifier plus précisément les applications DNS.

Étape 2 - Extraire les noms de domaine
Une fois qu'une application réseau est identifiée comme DNS, les noms de domaine dans les messages de requête et de réponse DNS doivent être extraits. Afin d'extraire le bon nom de domaine, le contenu du message DNS doit être analysé avec soin et un moteur DPI est requis pour effectuer cette tâche.

Étape 3 - Détectez tout DGA
Une analyse doit être effectuée sur les domaines extraits des messages DNS pour déterminer s'il s'agit de DGA. C'est peut-être l'étape la plus compliquée. Le défi est de réduire à la fois les faux positifs et les faux négatifs. Les mécanismes de détection ont considérablement évolué au cours des 10 dernières années.
Certains mécanismes sont basés sur l'entropie de Shannon relativement simple.
https://www.splunk.com/blog/2015/10/01/random-words-on-entropy-and-dns.html
Certains mécanismes sont basés sur des Ngrams plus sophistiqués tels que présentés par Fyodor lors de la conférence Hitb
Dernièrement, avec la vulgarisation de l'apprentissage automatique, ses méthodologies ont également été appliquées à la détection DGA. L'apprentissage automatique peut combiner les fonctionnalités de Ngrams, Shannon Entropy, ainsi que la longueur des noms de domaine pour influencer les décisions. Plusieurs modèles d'apprentissage automatique ont été essayés. Il y a un très bon article de blog de Jay Jacobs en 2014 décrivant le processus.
Voici un autre détecteur DGA open source basé sur l'apprentissage automatique avec Markov Chain:
https://github.com/exp0se/dga_detector

Étape 4 - Détecter les domaines DGA enregistrés
Afin de détecter si un nom de domaine DGA est enregistré, les réponses DNS doivent être vérifiées. Le simple suivi des requêtes DNS n'est pas suffisant - le système de détection doit suivre l'ensemble de la transaction pour faciliter la corrélation entre les informations.

Étape 5 - Détecter le trafic vers les domaines DGA enregistrés
Lorsque la plupart des systèmes de détection DGA existants se concentrent sur la détection si un nom de domaine est un domaine DGA, ils oublient souvent la dernière question, la plus importante: y a-t-il du trafic qui a été envoyé vers les domaines DGA enregistrés? Afin de détecter cela en temps opportun, la détection de domaine DGA doit être étroitement associée à l'inspection du trafic réseau. Les résultats doivent être renvoyés au moteur d'inspection de la circulation immédiatement avant tout dommage.

Étape 6 - Blocage du trafic vers les domaines DGA enregistrés
Bien que cela ne fasse pas techniquement partie de la détection, s'il y a une intégration avec un système de prévention tel qu'un pare-feu ou un IPS, une règle doit être insérée immédiatement pour bloquer tout le trafic vers les domaines enregistrés.

Un bon système de détection DGA doit effectuer les 5 étapes. Un excellent système de détection DGA devrait également inclure l'étape 6. Malheureusement, la plupart des systèmes de détection DGA s'arrêtent aujourd'hui à l'étape 3 ou à l'étape 4.

Conclusion
Étant donné que les DGA sont difficiles à détecter avec un système de détection ou de prévention basé sur la signature ou la réputation, ils sont devenus très populaires auprès des développeurs de logiciels malveillants.
Un système de détection intelligent est nécessaire pour effectuer la détection. Un excellent système de détection DGA doit extraire les informations de nom de domaine des transactions DNS, effectuer des analyses approfondies pour détecter l'état DGA, vérifier l'état d'enregistrement des domaines suspects, corréler avec l'inspection du trafic réseau pour évaluer le niveau de compromission et idéalement intégrer avec les systèmes de prévention pour éviter davantage. faire des compromis. Afin de réduire à la fois les faux positifs et les faux négatifs, un apprentissage automatique doit être sérieusement envisagé. Ce n’est qu’avec une intelligence complète et omniprésente à chaque étape que la menace peut être véritablement atténuée.

Ressources

Le référentiel dans Github par Andrey Abakumove contient des algorithmes pour générer des noms de domaine, ainsi que des dictionnaires de noms de domaine malveillants.

Remonter en haut