2.1.12. Moteur Yara

2.1.12.1. Introduction

2.1.12.1.1. Pour quels types de menaces ce moteur est-il conçu ?

Le moteur Yara permet de détecter les logiciels malveillants à l'aide de règles.


2.1.12.1.2. Comment ce moteur détecte-t-il les menaces ?

Lorsqu'un fichier reconstruit par GCap est soumis au moteur de Yara, il est analysé et comparé à chacune des règles de Yara.
Les règles Yara définissent un certain nombre de variables qui contiennent des modèles trouvés dans un échantillon de logiciel malveillant.
Lorsque le moteur Yara trouve une correspondance entre le flux réseau analysé et la définition d'une règle, une alerte est émise et classée comme logiciel malveillant de la même manière que pour le moteur Malcore.

2.1.12.1.3. Comment fonctionne le moteur Yara dans le GCenter ?

Le moteur :


2.1.12.1.3.1. Données saisies du moteur Yara

Le flux du réseau est dupliqué sur le réseau par un TAP et les fichiers sont reconstruits par le GCap.
La reconstruction du fichier est configurée par les règles de reconstruction du fichier utilisées par le moteur de détection GCap (voir le paragraphe Configurer les règles de reconstruction de fichier via le profil GCap).
Yara a besoin des règles Yara pour s'exécuter.
Ces règles sont définies dans un ensemble de règles spécifique.
Cet ensemble de règles doit être téléchargé via l'Ecran `Yara`.

Note

Pour plus d'informations sur les règles de Yara, voir le site https://yara.readthedocs.io/en/stable/writingrules.html
Pour valider les règles, il est possible d'utiliser le validateur (https://yaravalidator.manalyzer.org/).
Pour télécharger un ensemble de règles Yara, cliquer sur ce lien yara_ruleset_example.yara.

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

Les événements générés par le moteur Yara ne sont que des alertes.
Les événements générés par le moteur Yara sont inclus dans les alertes Malcore.
Celles-ci sont affichées :
  • dans l'interface principale nommée Web UI du GCenter dans l'écran `Alerts`
    L'interface principale nommée Web UI est décrite dans la Présentation de la WebUI.
    • Pour filtrer les alertes Yara, taper `name:"Yara Rule Matched"` dans le champ de recherche puis valider.

    • Utiliser le sélecteur `Group by name` pour visualiser le nombre d'alertes différentes.
      Le nom des alertes agrégées et leurs numéros sont affichés.
      ../../_images/GCE103_YARA_ALERT_01.png
    • Cliquer sur un groupe d'alertes pour en afficher la liste, si besoin.

    • Désactiver le sélecteur `Group by name`.
      Des informations différentes sur la source et la destination sont affichées pour chaque alerte.
      `Tags` et `Notes` sont également visibles et modifiables.
      Les différentes `Actions` d'accès rapide sont disponibles pour chaque alerte.
    • Cliquer sur une alerte.
      Les informations détaillées de cette alerte sont affichées dans l'Exemple d'alerte Yara dans la WebUI.
  • Dans l'interface nommée Kibana UI
    • Pour visualiser toutes les alertes Yara :

    • Dans l'interface principale WebUI, cliquer sur l'icône `Hunting`.
      L'interface principale nommée Web UI est décrite dans la Présentation de la WebUI.
    • Cliquer sur l'onglet `Malcore` (2) de la catégorie `Alerts` (1).

    • Sélectionner l'onglet `Overview` (3).

    • Sélectionner l'intervalle de temps (4) pour afficher les données.
      ../../_images/GCE103_YARA_ALERT_02.PNG
      Voir la présentation de l'Ecran `Alerts` de la WebUI.
    • Pour filtrer les alertes Yara dans Kibana, entrer la commande `event.module : "malcore" and malcore.state : "Yara Rule Matched"` (5) dans le champ de recherche.

    • Valider avec le bouton `Refresh` (6).

      ../../_images/GCE103_YARA_ALERT_03.PNG
    • Pour consulter des informations sur une alerte spécifique :

    • Après avoir sélectionné l'alerte, cliquer sur la commande `Open malcore file transaction` du menu `Actions`.
      Kibana est ouvert dans l'onglet `Malcore` de la section `Alerts ` : dans l'onglet `Overview` la base de données est filtrée sur le paramètre `file.hash.sha256` (7).
      L'interface affichée est l'interface nommée Kibana UI (décrite dans l'Interface graphique Kibana).
      ../../_images/GCE103_YARA_ALERT_04.PNG
    • Cliquer sur l'onglet `Messages` (8).

      ../../_images/GCE103_YARA_ALERT_05.PNG
    • Cliquer sur l'icône (9) à gauche de l'alerte.
      Le document développé s'affiche.
      ../../_images/GCE103_YARA_ALERT_06.PNG
      Les informations détaillées de cette alerte peuvent être consultées sous forme de tableau ou au format json (voir la Structure des données des logs Yara).

Un exemple est donné dans la partie source des logs Yara.


2.1.12.2.1. Exemple d'alerte Yara dans la WebUI

../../_images/GCE103_ALERTS_DETAILS-2.PNG
La présentation des détails de l'écran `Alert details` est disponible dans la Fenêtre `Alert details`.
Les compteurs sont donnés dans l'annexe Structure des données du journal de bord du moteur.

2.1.12.2.2. Structure des données des logs Yara

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

  • la partie en-tête

  • la partie source définie par "_source"

  • la partie champs définie par "_fields"

Ces informations sont affichées dans l'écran `Expanded document` de Kibana.


2.1.12.2.2.1. La partie en-tête des logs Yara

La partie en-tête contient :

"_index": "engines_alerts-2025.02.04-000001",
"_id": "odx80JQB3WGd7COqasTr",
"_version": 1,
"_score": 0,

Les informations détaillées sont données dans le tableau (Compteurs de la partie en-tête des journaux).


2.1.12.2.2.2. La partie source des logs Yara

La partie source est définie par "_source" dans les logs.

Note

Les données affichées dans la WebUI (fenêtre de détails des alertes) font partie des données affichées dans le document étendu de l'interface Kibana.
Toutes les données peuvent être exportées vers un SIEM via syslog (un exemple d'alerte exportée est présenté).
Les informations détaillées sont données dans le tableau (Compteurs de la partie en-tête des journaux).

L'exemple donné ici est un exemple de Kibana.

"@version": "1",
"source": {
  "ip": "192.168.122.15",
  "port": 53,
  "mac": "00:11:22:33:44:55"
},
"network": {
  "protocol": "dns",
  "tx_id": 193630,
  "flow_id": 2201432362562192,
  "transport": "udp",
  "timestamp": "2025-02-04T10:22:36.248783+0000"
},
"destination": {
  "ip": "8.8.8.8",
  "port": 53,
  "mac": "00:55:44:33:22:11"
},
"@timestamp": "2025-02-04T10:22:36.248Z",
"event": {
  "dataset": "alert",
  "created": "2025-02-04T10:22:36.248783+0000",
  "kind": "alert",
  "severity": 1,
  "module": "active_cti",
  "category": [
    "network",
    "intrusion_detection"
  ],
  "id": "d79bff72-01b6-4639-979c-efcb5e6faf23"
},
"sigflow": {
  "payload": "3+YBAAABAAAAAAAADjkyNzU4LWNvaW5iYXNlA2NvbQAAAQAB",
  "signature_id": 1300000773,
  "metadata": {
    "risk": [
      "highly suspicious"
    ],
    "signature_severity": [
      "2"
    ],
    "ioc": [
      "fffc7e75-cb75-4210-a244-669cba3cae06"
    ],
    "updated_at:": [
      "2025_02_04"
    ],
    "created_at:": [
      "2025_02_04"
    ]
  },
  "gid": 1,
  "action": "allowed",
  "rev": 0,
  "stream": 0,
  "payload_printable": ".............92758-coinbase.com.....",
  "signature": "Active CTI - Host - Unknown/Unknown - Unknown family - Unknown threat actor - fffc7e75-cb75-4210-a244-669cba3cae06",
  "category": "Active CTI"
},
"flow": {
  "bytes_toclient": 10843280,
  "pkts_toclient": 96815,
  "bytes_toserver": 7551648,
  "pkts_toserver": 96816,
  "start": "2025-02-04T10:20:39.242320+0000"
},
"ecs": {
  "version": "8.6.0"
},
"dns": {
  "query": [
    {
      "rrname": "92758-coinbase.com",
      "rrtype": "A",
      "tx_id": 193630,
      "opcode": 0,
      "type": "query",
      "id": 57318
    }
  ]
},
"observer": {
  "product": "gcenter",
  "vendor": "gatewatcher",
  "gcap": {
    "hostname": "gcap1000-s-2.mgmt.qa.gatewatcher.fr",
    "ingress": {
      "interface": {
        "name": "monvirt"
      }
    },
    "version": "2.5.4.0-rc9"
  },
  "hostname": "gcent9100r2.mgmt.qa.gatewatcher.fr",
  "uuid": "72cbafc7-7306-5382-96d2-203a730252a8",
  "version": "2.5.3.103",
  "log_format_version": "1.0.0"
}

2.1.12.2.2.3. Liste des compteurs de l'alerte

Note

Les compteurs de l'alerte sont visibles :

  • dans l'écran `Alert details` de la WebUI

  • dans l'écran `Expanded document` de Kibana

  • dans l'export vers le SIEM

Les informations détaillées sont données dans le tableau (Compteurs de la partie source des journaux).


2.1.12.3. Gestion du moteur

2.1.12.3.1. Visualisation de l'état du moteur

L'état du moteur est affiché dans l'Ecran `Health checks`.


2.1.12.3.2. Mise à jour du moteur

Le moteur est mis à jour à chaque nouvelle version du GCenter.


2.1.12.3.3. Configuration du moteur

L'interface de gestion est utilisée :

  • pour activer le moteur

  • pour charger un ensemble de règles de Yara

Pour plus d'informations sur la procédure, voir le Réglage du moteur Yara.
L'interface de gestion est décrite dans l'Ecran `Yara`.

2.1.12.4. Analyse des alertes

Les alertes sont affichées sur un écran spécifique est décrit dans l'Ecran `Alerts` de la WebUI.
La procédure générale de l’analyse des alertes est décrite dans l'Utilisation des tableaux de bord NDR.
La procédure spécifique de l’analyse des alertes Yara est décrite dans l'Analyse des alertes Yara.