Académique Documents
Professionnel Documents
Culture Documents
Sylvain Thomas
DGD-SI UGA
43 rue des Mathématiques
38 400 Saint-Martin-d’Hères
Résumé
Depuis un peu plus d’un an la DGD-SI de l’université Grenoble Alpes a mis en place un NDR
(Node Detection & Response). Nous nous proposons de faire un retour sur les raisons qui nous ont
amené à chercher à mettre en place un tel outil, comment nous avons fait le choix de Detect de
Vectra et enfin de partager notre premier retour d’expérience.
Mots-clefs
SIEM, EDR, NDR, compromission, attaque
1 Introduction
L’Université Grenoble Alpes (UGA) réunit 56 000 étudiants et 6 800 personnels. Ce qui représente
environ 10 000 postes de travail, 80 000 comptes informatiques et 26 000 adresses IP. Le tout
génère un trafic moyen de 15 Gbit/s de données en entrée/sortie de datacentre et de 5 Gbit/s en
entrée/sortie de campus. Étant donné la mixité des périmètres (laboratoires, composantes, services
centraux…) et de leurs fonctionnements ainsi que les flux de données générés, il serait illusoire de
croire que l’on a une parfaite maîtrise de l’usage de chacun de nos réseaux.
C’est fort de ce constat que le service Réseaux, Télécoms et Datacentres de la Direction Générale
Déléguée aux Systèmes d’Informations (DGD-SI) a cherché à se doter d’un outil qui permettra la
détection et la réponse d’usages abusifs de nos réseaux. Nous espérons ainsi pouvoir détecter
d’éventuelles compromissions de postes ou de comptes, attaques, accès illégitimes au sein de notre
système ou tout autre comportement anormal. Autant de détection qu’il nous est actuellement
difficile de détecter rapidement.
2 Recherche de la solution
L’aisance de la maintenabilité et de son exploitation sont des critères importants pour que la
solution soit pérenne dans le temps. L’étude de solutions et la mise en place sont possibles grâce à
l’alternance de Luisa mais l’équipe n’aura pas de renfort humain pour gérer ce nouvel outil.
Il existe de nombreuses solutions SIEM open source. Pour réaliser un premier tri, nous avons
regardé les avis d’utilisateurs et leur classement des logiciels. Ce tri nous a permis d’isoler cinq
solutions qui paraissaient intéressantes. Une recherche plus poussée a été menée sur chacune de ces
solutions pour voir celle qui correspondait le plus de nos critères et qui avait le plus d’avantages
(cf : Annexe 1 - Comparaison solutions SIEM open-source).
Deux de ces solutions sont sorties du lot, il s’agissait de Wazuh[1] et ELK (Suite Elastic :
Elasticsearch, Kibana, Beats et Logstash). Elles présentaient plus de fonctionnalités et leurs
communautés d’utilisateurs semblaient investies, ce qui signifie en général qu’il est possible de
trouver de la documentation et de l’aide en cas de besoin. Un déploiement sur une infrastructure de
test a été mené pour la solution Wazuh, pour avoir un meilleur aperçu des possibilités, du
fonctionnement et des paramétrages qu’il y aurait à effectuer. Assez rapidement, des problématiques
sur le paramétrage de la solution et la récupération de log sont arrivées. Les possibilités de la
solution étaient vastes, pas des plus intuitives, et sans formation adaptée, la prise en main risquait
d’être longue.
Comme précédemment une analyse des offres a été faites mais sur les solutions SIEM
commerciales. Nous avons également consulté nos différents intégrateurs présents au marché. Nous
avons ainsi pu affiner nos recherches sur 9 solutions (cf : Annexe 2 - Comparaison solutions
commerciales).
C’est lors de ces échanges avec nos intégrateurs que nous avons constaté que le SIEM n’était pas la
solution la plus adaptée car il s’agit de solutions qui demandent beaucoup de gestion en amont,
avant de pouvoir obtenir des résultats pertinents et fidèles à nos besoins. Notre besoin étant plutôt
ciblé sur un outil effectuant ce travail en amont sans nécessiter un investissement humain à temps
plein.
2.2.3 Recherches sur d’autres solutions
On nous a donc présenté un NDR (Network Detection & Response / Détection et Réponse à
Incident). Il s’agissait de Detect proposé par la société Vectra. Cette solution semblait répondre à
tous nos critères de base et apporter des fonctionnalités supplémentaires très intéressantes comme la
réponse automatique à incident. Les retours utilisateurs sur cette technologie sont très positifs. Cette
solution analyse tout le flux réseau et utilise de l’intelligence artificielle pour détecter les attaques
en faisant appel à de la corrélation d’évènement. Des réponses à incidents peuvent également être
paramétrées pour avoir une réaction automatisée à certaines attaques ou tentatives.
Cette présentation nous ayant particulièrement intéressés, nous avons décidé de rechercher des
technologies similaires pour avoir une comparaison. Nous avons donc trouvé deux technologies
similaires à comparer, Darktrace[3] et Cisco SecureX Threat Response. Darktrace[2] est le principal
concurrent de Detect et possède une plus grande communauté d’utilisateurs ; cependant Detect est
plus utilisé par les universités. Après quelques recherches sur ces deux technologies et les
comparaisons de leurs utilisateurs, nous en avons conclu que Detect correspondait mieux à nos
critères et nous avons pris la décision de réaliser un POC (Proof Of Concept / Preuve de concept) de
leur solution.
3.1 Fonctionnement
L’interface graphique de Detect est très ergonomique. Elle permet d’avoir une vision large et rapide
sur toutes les fonctionnalités. Le menu est facile d’accès avec des catégories simples de
Figure 2 - Menu de
l'interface graphique
Lors de la connexion à l’interface, nous arrivons sur le tableau de bord (Figure 3 - Tableau de bord).
Ce tableau de bord répond bien à sa fonctionnalité de rassembler la majorité des informations sur
des graphiques. Nous avons un aperçu sur les détections en fonction de leur criticité des postes
potentiellement compromis ainsi que sur les campagnes d’attaques en cours. Nous pouvons
visualiser les détections réparties par catégories et par type. Le second menu du tableau de bord
donne accès à la santé du système, par exemple l’état des capteurs et des interfaces, l’état du disque
et de la mémoire ainsi que la version actuelle du système.
Lorsque nous allons sur l’onglet Host nous pouvons avoir un aperçu des détections actives (Figure 4
- Graphique de détection des postes). Les postes sont placés en fonction de la menace et de la
certitude de l’évènement. Nous pouvons filtrer les éléments que nous souhaitons afficher.
Chaque élément présent sur ce graphique est ensuite listé. Il suffit de cliquer sur l’un d’entre eux
pour obtenir plus d’informations (Figure 5 - Information sur le poste). Outre le nom de la machine,
nous pouvons connaître la dernière adresse affectée à ce poste. Ces deux éléments permettent de
continuer à détecter tout évènement lié à ce poste même si un changement d’adresse IP a lieu. Le
compte du probable détenteur du poste, donc de celui qui se connecte sur celui-ci, est également
donné. De plus, grâce à l’intelligence artificielle et après un certain temps, Detect est capable
d’attribuer un niveau de privilège en fonction des connexions faites par l’utilisateur du poste. Plus
précisément, en fonction du nombre de services auxquels l’utilisateur se connecte et si ces services-
là sont accessibles par beaucoup d’autres utilisateurs ou non. Ce niveau va de 1 à 10, 10 étant le
niveau de privilège le plus élevé.
Au-delà des informations liées au poste, nous pouvons visualiser les détections faites concernant
celui-ci. Ici par exemple (Figure 6 - Informations sur les détections du poste) un évènement a été
retenu par Detect. Cette détection a été mise dans la catégorie Lateral, avec le type Ransomware
File Activity (Activité de type chiffrement malicieux de fichier), avec un niveau de menace évalué à
60/100 et de certitude à 95/100.
Les catégories, quant à elles, permettent de déterminer quelle est la phase d’attaque (Figure 7 -
Phases d'attaque). Il en existe cinq :
Le dernier onglet de la première partie du menu se nomme Detections. Ici nous allons retrouver
toutes les détections organisées en fonction de leur catégorie. Nous pouvons visualiser un graphique
des nouvelles détections, par jour, semaine ou mois, (Figure 9 - Graphique des détections) réparties
par catégorie. Cela permet, si nous le souhaitons, de nous focaliser sur une catégorie de détection en
particulier. Par exemple si l’on souhaite éliminer tout type de botnet sur notre réseau nous pouvons
ainsi visualiser tous les évènements de ce type. Grâce à cet onglet, nous pouvons également
observer toutes les détections catégorisées comme custom. C’est-à-dire, toutes les détections
correspondantes à un filtre personnalisé, nous verrons ces filtres par la suite.
Les onglets suivants permettent de gérer les détections et l’outil. Nous pouvons :
- créer des rapports personnalisés ;
- observer les statistiques du réseau (le trafic sur les interfaces, le nombre d’adresses IP) ;
- manager (gestion filtres, groupes d’adresses, sondes, utilisateurs, authentification) ;
- configurer (adresses internes, notifications, services, autres licences Detect) ;
- accéder aux documentations ;
- gérer notre compte utilisateur.
3.2 Exploitation
À présent que l’interface a été présentée, nous allons voir comment l’exploiter.
Lorsqu’une détection est faite sur une machine, nous obtenons son niveau de sévérité. Il est établi
en fonction du niveau de certitude et de menace. Il y a quatre niveaux, low, medium, high et critical.
Nous pouvons observer le détail de toutes les détections, chacune a son propre niveau de certitude
et de menace. Cependant, Detect fournit la liste des détections en cause de la sévérité (Figure 10 -
Liste des détections). En effet, une machine peut avoir plusieurs détections mais celles-ci ne sont
pas nécessairement toutes responsables du niveau de sévérité élevé. Ainsi nous savons sur quelles
détections se concentrer en priorité.
Si l’on va sur l’une des détections, nous pourrons avoir plus d’informations sur celle-ci. Nous
pourrons connaître l’adresse IP et le DNS de la machine concernée, les scores de certitude et de
Pour aider dans la communication il est possible d’envoyer un fichier PCAP (fichier de capture de
paquets) ou encore de partager une vue sur la page des détails de la détection comme on peut le voir
sur la Figure 12- Actions possibles. Pour faciliter la gestion, plusieurs outils sont en place. Tout
d’abord le Tag qui permettra d’étiqueter la détection, par exemple pour indiquer qu’une
investigation est en cours ou pour indiquer qu’elle fait partie d’un groupe. Il est possible de
rechercher les détections ainsi que les machines en fonction de leur tag. Ensuite il y a la partie Note
qui permet de réaliser des annotations, elles peuvent être utiles pour soi-même pour rajouter des
détails ou bien pour mettre des informations qui seront visibles par les autres utilisateurs de Detect
ce qui peut éviter de réaliser du travail en double. Enfin, Assign, celui-ci sert à assigner une
détection ou une machine à un utilisateur en particulier, cela peut être utile pour indiquer que
quelqu’un est déjà en train de travailler sur cette détection. Il est possible de générer une
notification mail lorsqu’une assignation a été faite.
Une fois l’investigation faite, une décision sur l’action menée devra être prise. Cinq actions sont
possibles, nous les retrouvons dans l’onglet Triage (Figure 13- Triage). S’il s’agissait d’une
compromission, d’un comportement anormal qui a été résolu nous choisirions l’option Mark as
Fixed. Cette option permet d’indiquer que le problème a été résolu, cela remettra les scores de la
détection à zéro. En revanche, si cette détection redevient active alors nous en serons informés et les
scores de détection se mettront à jour en conséquence. Mark as custom permet de l’associer à un
filtre existant. Cette action est prise si l’on considère le comportement de la machine comme
légitime, puisque cette détection précise ne sera plus prise en compte pour le calcul du score de la
machine. Create Whitelist Filter va cacher la détection et celle-ci ne sera plus prise en compte pour
Finalement, l’option sûrement la plus utilisée au début de l’utilisation de Detect est Create Custom
Filter, puisqu’il s’agit de la création de filtre. Cela identifiera la détection comme un comportement
légitime et n’impactera plus le score de la machine concernée. Lorsque l’on crée un filtre, nous
avons accès à un formulaire à remplir, qui est spécifique pour chaque type et catégorie de détection,
hormis la partie nommage et description du filtre. Pour un type External Remote Access par
exemple, nous devrons renseigner l’adresse IP ou DNS source qui devra correspondre (ou au
contraire celle(s) que l’on exclut). Il est également possible de filtrer en fonction de la sonde source.
S’il s’agit de scan de port, il faudra indiquer le port concerné, s’il s’agit d’anomalie de privilège on
pourra renseigner le compte utilisateur ou l’adresse IP source avec le service concerné... La création
de ces filtres permettra d’éviter ce que l’on pourrait considérer comme un faux positif, puisqu’un
comportement légitime à notre sens. Il s’agit donc d’une partie importante de l’outil. À noter qu’il
est possible de créer des filtres dans l’onglet Manage, il n’est pas nécessaire d’attendre une
détection pour créer un filtre personnalisé. Si l’on connaît un comportement spécifique légitime qui
déclenchera une détection par Detect, il est possible d’anticiper la détection de ce comportement en
appliquant un filtre.
La dernière action possible est lorsqu’il existe déjà un filtre qui pourrait s’appliquer, à une
exception près. Dans ce cas, par exemple une adresse IP destination supplémentaire, Detect
suggérera ce filtre en indiquant la modification à appliquer (l’ajout de l’adresse IP destination si
l’on reprend le même exemple).
3.5 Avantages
Après quelques mois d’utilisation, nous pouvons d’ores et déjà constater les différents avantages de
la solution nous concernant. Le premier élément est la simplicité de la mise en place. Il a suffi
d’envoyer le trafic que l’on souhaitait analyser au cerveau et de renseigner nos réseaux internes
pour avoir les premières données. Le fait que Detect puisse récupérer le trafic réseau
indépendamment du constructeur des équipements est également un point fort.
Nous constatons peu de faux positifs, d’autant qu’une certaine partie de ces faux positifs ne le sont
que pour nous. Il s’agit de machines particulières qui ont des comportements spécifiques étant
considérés comme anormaux en temps normal mais légitime pour nous. Par exemple, des outils de
supervision, de déploiement de paquets, des serveurs de stockages ou des postes de recherche qui
réalisent des expérimentations.
Pour traiter ces faux positifs qui sont des comportements légitimes dans notre cas, nous avons la
possibilité de définir des filtres, comme présenté dans le fonctionnement de la solution. Les filtres
peuvent être très fins, comme par exemple sur un protocole précis d’une machine en particulier.
Cette finesse dans le filtrage permet de ne pas légitimer plus d’éléments que nécessaire et ainsi
risquer de passer à côté d’un comportement anormal. Cette partie requiert de la gestion mais cela
permet par la suite de se focaliser sur les vrais positifs. De plus, même si ces détections sont
légitimes, nous avons ainsi une meilleure vision sur des usages particuliers de notre réseau.
Pour aider dans le traitement des détections, nous exploitons les tags, les annotations et la
possibilité d’assigner une détection à une personne. Grâce à cela, il y a un gain de temps sur la
gestion. On évite ainsi que plusieurs personnes travaillent sur la même détection sans s’en rendre
compte. De plus, les tags et annotations permettent un meilleur suivi de l’incident.
3.6 Limitations
Malgré les points positifs de la solution, nous avons constaté quelques limitations. Detect, de
Vectra, est payant mais cela ne nous donne pas pour autant accès à tous ses outils. Certains modules
supplémentaires sont sous licence qu’il faut payer indépendamment. Par exemple le module Stream
évoqué précédemment. De plus la licence générale est calculée par rapport au nombre d’IP
observées ce qui nous oblige à faire des choix dans les réseaux que l’on souhaite surveiller.
De par son fonctionnement, il s’agit d’une boîte noire sur laquelle nous avons peu de maîtrise. En
cas de problématique, il est difficile de réaliser du débogue par nous-mêmes puisque nous n’avons
pas accès aux logs du système. Pour les détections, nous ne connaissons pas de façon précise ce qui
les déclenche et comment les scores sont attribués. En effet, si ces données étaient connues cela
pourrait permettre à une personne malveillante de passer à travers les détections. Mais, en
contrepartie, nous n’avons pas non plus accès à ces données.
On a également pu constater que l’IA n’est pas forcément mise à jour lors de nouvelles failles (ex :
print nightmare) ce qui impliquerait de recourir au module stream pour pouvoir chercher les postes
atteints. A noter que les postes atteints remonteront dans un second temps lorsqu’ils commenceront
à explorer leur environnement.
4 Conclusion
Cela fait maintenant plusieurs mois que Detect de Vectra est en exploitation dans nos murs. De
l’avis général de l’équipe, il s’agit d’un très bon produit qui répond à ce que l’on recherchait.
L’accompagnement de Vectra ne s’est pas arrêté après le POC et ils sont toujours prêt à répondre à
nos questions.
Le cerveau, sur l’ensemble des sondes qui lui sont connectées, encaisse en moyenne plus 20 Gb/s de
trafic et ce sans broncher.
La période de nettoyage des faux positifs avec création de règles pour les gérer s’est passée
relativement facilement et l’outil permet de très bien le gérer. Nous sommes donc maintenant dans
une phase d’exploitation et cela se gère sans accaparer un temps plein parmi les membres de
l’équipe.
À notre grande satisfaction, nous n’avons pas découvert de catastrophe sur le réseau. Les
principales alertes sont liées à du minage de crypto-monnaie et des mauvaises configurations.
Nous pensons qu’il peut être intéressant d’approfondir l’utilisation de ce type d’outil pour avoir des
réseaux plus ouvert mais restant sur surveillance et ainsi passer moins de temps à gérer des
demandes d’ouverture d’accès. La plupart des tentatives sont encapsulées dans du 443, limitant