2.1.4. Machine Learning

2.1.4.1. Présentation de l'algorithme DGA

Le GCenter embarque un moteur capable de détecter des noms de domaines ayant été générés par des DGA (Domain Generation Algorithm).
La présence de noms de domaines générés par DGA sur un réseau est un fort indicateur de compromission.
En effet, les logiciels malveillants peuvent utiliser des requêtes HTTP vers des noms de domaine générés automatiquement, afin de contacter leurs serveurs de commande et de contrôle (aussi appelés CnC, C&C ou C2).
Ces noms de domaine ont des propriétés différentes des noms de domaines légitimes.
Les approches classiques de détection comme les listes noires ne sont pas pertinentes dans le cas de domaines renouvelés en permanence.
Les simples calculs d'entropie génèrent une grande quantité de faux positifs.
L'interface graphique est décrite dans l'Ecran `Admin-GCenter- ML Management` de la legacy web UI.

2.1.4.1.1. Activation

Cette fonctionnalité est désactivée par défaut. Elle est activable depuis le menu ML Management dans l'interface web du GCenter (Ecran `Admin-GCenter- ML Management` de la legacy web UI).
Une fois activée, les noms de domaine présents dans les événements 'dns' capturés par le GCap sont analysés par le moteur de Machine Learning.
Celui-ci utilise la détection DGA ainsi que des informations contextuelles telles que les NXDomains pour générer des alertes.
Cela permet de lever des alertes sur des noms de domaines générés aléatoirement et répondant aux requêtes DNS.
Le Machine Learning est basé sur un modèle pré-entraîné, dont l'architecture est basée sur un réseau de neurones profond de type LSTM (Long Short Term Memory networks).

Note

En v102, seules des alertes sont générées par le moteur, contrairement en v101 où uniquement des métadonnées DNS étaient générées.


2.1.4.1.2. Listes d'exceptions White List / Black List

Des listes d'exceptions peuvent être mises en place afin de forcer le moteur à déclarer des noms de domaine comme sains (White List).
Une liste blanche (White List) permet de supprimer les alertes liées à des faux positifs récurrents.
À l'inverse, une liste noire (Black List) permet de lever une alerte pour un domaine qui n'aurait pas été détecté (faux négatif).

2.1.4.1.3. Affichage des alertes DGA

Les alertes DGA sont affichées dans l'interface web NDR ainsi dans les tableaux de bord Kibana dans la section ML.

Note

Le moteur de Machine Learning est nommé C&C dans l'interface web NDR.

Le moteur de Machine Learning enrichit les informations déjà fournies par le module Sigflow.
Ainsi pour un domaine n'étant pas détecté comme un domaine généré le champ `dga_probability` sera ajouté.
Une valeur proche de 0 indique une faible probabilité que le domaine ait été généré.
A contrario, une valeur proche de 1 indique qu'il y a de fortes chances que ce domaine soit le résultat d'une génération aléatoire.

Note

Si un GCap supervise plusieurs réseaux ou si plusieurs GCaps supervisent plusieurs réseaux, il est possible qu'un nom de domaine qui apparaît plusieurs fois ne génère qu'une seule alerte.


2.1.4.2. Événements générés

Les événements générés par le moteur Machine Learning sont des alertes.
Celles-ci sont affichées :
  • Dans l'interface principale nommée WEB UI du GCenter dans l'éran `Alerts` (l'interface principale nommée WEB UI est décrite dans la Présentation de l'interface graphique WEB UI).
    Pour visualiser les alertes; il faut sélectionner le filtre `C&C` et ainsi visualiser la liste des alertes : voir la présentation de l'Ecran `Alerts` de la web UI.
    En cliquant sur une alerte, les informations détaillées de cette alerte sont affichées : voir Exemple d'alerte DGA dans la webui.
  • Dans l'interface Kibana UI
    Pour visualiser les alertes; il faut sélectionner le filtre `C&C` et ainsi visualiser la liste des alertes : voir la présentation de l'Ecran `Alerts` de la web UI.
    En cliquant sur une alerte, il faut sélectionner sur la commande `Alert details` puis sélectionner la flèche à gauche de l'alerte.
    L'interface affiché est l'interface nommée Kibana UI (décrite dans la Présentation de l'interface graphique Kibana).
    Les informations détaillées de cette alerte sont visualisables en format tableau ou jason (voir Exemple de log Machine Learning).

2.1.4.2.1. Exemple d'alerte DGA dans la webui

../../_images/ALERTE-10.PNG

Les compteurs sont détaillées dans la Structure des données des logs Machine learning.


2.1.4.2.2. Exemple de log Machine Learning

{
"_index": "machine_learning-2023.10.16-000169",
"_type": "_doc",
"_id": "UQ0COYsBeBoubSyguUoF",
"_version": 1,
"_score": 1,
"_source": {
  "dest_port": 53,
  "@version": "1",
  "domain_name": "nvtcvimt.com",
  "flow_id": 2099102182782245,
  "timestamp_detected": "2023-10-16T15:00:09.568Z",
  "@timestamp": "2023-10-16T15:02:41.646Z",
  "type": "machine_learning",
  "dest_ip": "78.46.218.253",
  "gcenter": "gcenter-int-128-dag.gatewatcher.com",
  "probability": 0.9998979282169229,
  "timestamp_analyzed": "2023-10-16T15:02:41.646Z",
  "src_ip": "192.168.56.104",
  "src_port": 1025,
  "event_type": "dga",
  "severity": 1,
  "gcap": "gcap-int-129-dag.gatewatcher.com",
  "matched_event": "0ebe7d76-ce3b-4623-bdd1-6aa4838b4149",
  "uuid": "819423ea-d328-4c40-a998-eb022e813b19"
},
"fields": {
  "severity": [
    1
  ],
  "probability": [
    0.99989796
  ],
  "gcenter": [
    "gcenter-int-128-dag.gatewatcher.com"
  ],
  "matched_event": [
    "0ebe7d76-ce3b-4623-bdd1-6aa4838b4149"
  ],
  "type": [
    "machine_learning"
  ],
  "uuid": [
    "819423ea-d328-4c40-a998-eb022e813b19"
  ],
  "timestamp_detected": [
    "2023-10-16T15:00:09.568Z"
  ],
  "src_ip": [
    "192.168.56.104"
  ],
  "src_port": [
    1025
  ],
  "domain_name": [
    "nvtcvimt.com"
  ],
  "event_type": [
    "dga"
  ],
  "@timestamp": [
    "2023-10-16T15:02:41.646Z"
  ],
  "flow_id": [
    2099102182782245
  ],
  "dest_ip": [
    "78.46.218.253"
  ],
  "@version": [
    "1"
  ],
  "gcap": [
    "gcap-int-129-dag.gatewatcher.com"
  ],
  "timestamp_analyzed": [
    "2023-10-16T15:02:41.646Z"
  ],
  "dest_port": [
    53
  ]
}
}

2.1.4.2.3. Structure des données des logs Machine learning

Les logs sont composés de différentes parties :

  • la partie entête

  • la partie source définie par "_source"

  • la partie champs définie par "_fields"


2.1.4.2.3.1. La partie entête des logs Machine learning

La partie entête contient :

{
"_index": "machine_learning-2023.10.16-000169",
"_type": "_doc",
"_id": "UQ0COYsBeBoubSyguUoF",
"_version": 1,
"_score": 1,
Tableau partie entête des logs Machine learning

Champ

Requis

Description

Valeurs ou exemple

_index

Oui

Index interne

machine_learning-2023.10.16-000169

_type

Oui

type par défault

_doc

_id

Oui

identifiant interne

UQ0COYsBeBoubSyguUoF

_version

Oui

version interne

1

_score

Oui

pertinence de la réponse par rapport à la requête

1


2.1.4.2.3.2. La partie source des logs Machine learning

La partie source définie par "_source" contient :

"_source": {
  "dest_port": 53,
  "@version": "1",
  "domain_name": "nvtcvimt.com",
  "flow_id": 2099102182782245,
  "timestamp_detected": "2023-10-16T15:00:09.568Z",
  "@timestamp": "2023-10-16T15:02:41.646Z",
  "type": "machine_learning",
  "dest_ip": "x.x.x.x",
  "gcenter": "gcenter-xxx.domain.local",
  "probability": 0.9998979282169229,
  "timestamp_analyzed": "2023-10-16T15:02:41.646Z",
  "src_ip": "x.x.x.x",
  "src_port": 1025,
  "event_type": "dga",
  "severity": 1,
  "gcap": "gcap-xxx.domain.local",
  "matched_event": "0ebe7d76-ce3b-4623-bdd1-6aa4838b4149",
  "uuid": "819423ea-d328-4c40-a998-eb022e813b19"
},
Tableau partie source des logs Machine learning

Champ

Requis

Description

Valeurs ou exemple

@timestamp

Oui

Timestamp du traitement de l'alerte par le GCenter (correspond au passage dans logstash)

2023-10-16T15:02:41.646Z

@version

oui

version du document

1

Alert Type dans webui

Oui

type d'alerte

C&C

Description (dans webui)

oui

Champ description sur la menace. Uniquement présent dans la web ui

Les adversaires peuvent établir dynamiquement des connexions avec l’infrastructure de commandement et de contrôle pour échapper aux détections et aux correctifs courants. ...

dest_ip (ou IP dans webui)

Oui

Adresse IP de destination

x.x.x.x

dest_port (ou PORTs dans webui)

Non

Port de destination

53

domain_name

oui

Nom de domaine

nvtcvimt.com

event_type

Oui

Type d’événement

dga

flow_id

Oui

Identifiant unique du flux. Permet de retrouver le fileinfo associé

2,099,102,182,782,245

gcap

Oui

Nom du gcap associé à l’alerte

gcap-xxx.domain.local

gcenter

Oui

Nom du GCenter associé à l’alerte.

gcenter-xxx.domain.local

Hostname (webui)

oui

Nom de l’hôte de l’émetteur de la menace

en cas absence du hostname, c'est son IP qui est affiché

matched_event

oui

0ebe7d76-ce3b-4623-bdd1-6aa4838b4149

MITRE ASSOCIATIONS

oui

Catégorie MITRE de la menace

Command and Control : Dynamic Resolution

Name dans webui

Oui

somme des informations des champs event_type + domain_name

DGA:vmfyaxnse.com

probability

oui

Probabilité que cela soit la menace indiquée

0.9998979282169229

severity

Oui

Code du résultat de l’analyse.

Compris entre 0 et 3.
0=clean, 1=infected, 2=suspicious, 3=Other

src_ip (ou IP dans webui)

Oui

Adresse IP source détectée par Sigflow

X.X.X.X

src_port (ou PORTs dans webui)

Oui

Port source détecté par Sigflow

1025

timestamp analyzed

Oui

Date et heure de la dernière analyse du fichier

2023-10-16T15:02:41.646Z

timestamp detected

Oui

Timestamp de la capture du fichier par le Gcap

Oct 16, 2023 @ 17:00:09.568

type

Oui

Type d’événement

machine_learning

uuid ou id

Oui

Identifiant unique de l’alerte

819423ea-d328-4c40-a998-eb022e813b19


2.1.4.2.3.3. La partie champs des logs Machine learning

La partie champs définie par "fields" contient les même compteurs que dans la partie source: se référer à la section partie source.


2.1.4.3. Visualisation de l'état de Machine Learning

La visualisation de l'état courant du moteur est donnée dans l'Ecran `Health checks` de la web UI.


2.1.4.4. Mise à jour de Machine Learning

Le moteur ne reçoit pas de mise à jour.


2.1.4.5. Configuration de Machine Learning

Le moteur n'est pas configurable mais ce moteur doit être activé pour détecter des DGA (C&C) (voir l'Ecran `Admin-GCenter- ML Management` de la legacy web UI).