Blog

RETOUR
Comment Custocy détecte les attaques DGA ?

Pendant notre dernier Sprint, l’équipe scientifique de Custocy a implémenté une solution pour la détection de communications malveillantes dites de type « DGA » (Domain Generation Algorithm) dont le but est de dissimuler des attaques de types « Commande et contrôle ». Je vous explique en quoi ça consiste et ce que ça change pour la sécurité de votre système d’information.

Imaginons qu’un attaquant cherche à établir un lien avec votre ordinateur afin de le contrôler à distance pour copier de l’information ou pour prendre des copies de votre écran. Pour ce faire, il doit établir une communication entre son ordinateur et le vôtre et démarrer un dialogue. Son ordinateur est situé à une certaine adresse sur Internet, représentée par un nom de domaine (www.evil_attacker.com).

Le DGA, une technique difficile à détecter

L’attaquant a réussi à placer un virus sur votre ordinateur et il va maintenant chercher à prendre le contrôle de votre ordinateur à partir de son nom de domaine www.evil_attacker.com. Quand un nom de domaine est suspecté de malveillance, il est répertorié et l’on peut facilement reconnaitre et neutraliser l’attaque en interdisant tout contact avec ce domaine suspect. Les listes de domaines suspects sont alors partagées entre systèmes de sécurité et www.evil_attacker.com ne pourra plus nuire à personne. C’est ici qu’intervient la technique DGA « Domain Generation Algorithm », un programme qui génère à la volée des milliers de noms de domaines en une fraction de seconde. L’attaquant utilise un DGA pour générer une multitude de faux noms de domaines et parmi tous ces faux noms, il en existe un bien réel qui héberge son programme malveillant. Malheureusement votre ordinateur infecté connait aussi le vrai nom de domaine parmi tous les faux et va chercher à se connecter sur le nom de domaine malicieux. Pour déjouer l’attaque, on doit retrouver l’adresse URL malveillante parmi des milliers de noms de domaines générés aléatoirement. De plus, le domaine malveillant ainsi que tous les faux noms peuvent changer tous les jours. C’est la version moderne du problème ancestral de la recherche d’une aiguille dans une botte de foin.

Et si les réseaux de neurones étaient la solution ?

Pour vous donner un exemple, voici un faux nom de domaine généré par un DGA qui s’appelle Tovar :

6fugn11ppz46e1e51xcia3brj0.org

L’œil humain reconnait bien la différence avec un vrai nom de domaine :

custocy.com

Alors ne serait-il pas possible d’entrainer une machine à reconnaître les vrais noms de domaines des faux ? Bien sûr ! D’ailleurs ceci a été le sujet de nombreuses recherches sur les dix dernières années. En commençant d’abord à reconnaitre des mots tirés du langage commun ou des suites de trois lettres que l’on retrouve communément dans notre langage naturel. C’est au final les réseaux de neurones (what else?) qui prendront le dessus dans la détection de faux noms de domaines et notamment deux architectures de réseaux de neurones que sont les réseaux à mémoire (LSTM) et les réseaux convolutifs (CNN). Sans trop entrer dans le détail, les réseaux à mémoire sont excellents pour analyser des suites d’éléments comme des lettres ou des mots*; ils savent quelles lettres il faut garder en mémoire pour distinguer le vrai du faux. Les réseaux convolutifs nous viennent de l’analyse d’image et sont excellents pour extraire des groupes d’informations utiles, dans notre cas des groupes de plusieurs lettres. Ces deux types de réseaux de neurones ont radicalement amélioré la reconnaissance de noms de domaines générés par des DGA.

Problème réglé ?

Pas tout à fait. Malheureusement le merveilleux outil qui permet de générer des « fake » vidéos d’Obama ou de rajeunir vos photos est aussi utilisé par les cybercriminels. Cet outil s’appelle le réseau de neurones antagoniste et il peut être utilisés pour contrer nos outils de détection. Revenons à notre réseau de neurones qui détecte des faux noms de domaines. Ce réseau de neurones est entrainé dans notre laboratoire sur des données étiquetées : des vrais noms de domaines (par exemple custocy.com) et des faux noms de domaines (6fugn11ppz46e1e51xcia3brj0.org). Un réseau de neurones ne répond pas Oui ou Non. Il fournit un pourcentage de certitude par rapport à la légitimité de chaque nom de domaine analysé. l est pénalisé quand il se trompe et s’ajuste pour faire de meilleures prédictions.

Quand il remonte plusieurs fois des pourcentages mitigés, cela indique une difficulté à classifier les données. Une fois en production, en conditions réelles, le cumul de résultats incertains sur un laps de temps donné nous signale qu’il y a un problème.

Imaginez maintenant que l’on mette en face de notre réseau de neurones, un autre réseau de neurones antagoniste cette fois-ci. Ce réseau de neurones antagoniste va donner des noms de domaines à notre premier réseau et être puni quand notre réseau de neurones réussi à faire la différence entre le vrai et le faux ! Alors nous assistons à une course à l’armement où nous essayons de produire des réseaux de neurones qui s’adaptent plus rapidement que les antagonistes malveillants.

Pourquoi multiplier les couches d’intelligence

La solution Custocy a cependant un atout caché. Nous surveillons en temps réel les échanges de flux dans les réseaux que nous protégeons. Disons que nous regardons de près les conversations entre les ordinateurs. Mais nous surveillons également le changement de comportement du réseau de neurones au cours du temps. Dans le cas d’une attaque DGA, une conversation malicieuse pourrait échapper à la vigilance de nos réseaux de neurones qui nous indiqueraient alors « je ne sais pas trop mais je ne pense pas que ce nom de domaine soit faux ». Le flux échapperait alors à notre surveillance. Toutefois, si au bout de quelques milliers d’échanges établis en l’espace d’une poignée de minutes, notre réseau de neurones remonte plusieurs fois d’affilée des scores bas et incertains notre solution serait suffisamment intelligente pour observer ce changement de comportement. Cette baisse de performance du réseau de neurones est détectée par un autre algorithme, situé à un niveau supérieur de notre solution. Une sorte d’ « algorithme en chef » qui lève immédiatement une alerte.

En bref, nous détectons les attaques grâce à nos algorithmes d’intelligence artificielle mais aussi en observant leurs changements de comportements. Cette double approche nous permet ainsi de filtrer davantage de menaces, sans créer plus d’alertes pour vos équipes, puisque tout ce processus de détection, supervision et correction des résultats se fait au sein de Custocy Engine : le moteur de notre solution.

*Les réseaux de neurones utilisent des chiffres et non des lettres pour s’entrainer mais on peut facilement convertir les lettres de l’alphabet en valeurs numériques grâce à une technique qui s’appelle « word embedding ».