2.1.6. Moteur CTI, moteur RetroHunt et moteur ActiveHunt

2.1.6.1. Présentation

Le moteur CTI comprend les parties :

L'interface de configuration est décrite dans l'Ecran `Admin-GCenter- CTI Configuration` de la legacy web UI.


2.1.6.2. Module CTI

Le module CTI de la solution utilise les indices de compromission LastInfoSec afin de générer des alertes.
Le module CTI permet :
  • de rechercher à posteriori parmi les métadonnées si les indices de compromission de la base CTI correspondent à des mouvements malveillants

  • de générer des règles Suricata dans le module Sigflow sur la base des indices de compromission afin de lever des alertes

Note

Il est nécessaire d'avoir une licence supplémentaire pour activer ce module. Il n'est donc pas activé nativement dans la solution.


2.1.6.3. Configuration du moteur CTI

La base d'indices de compromission doit être mise à jour de façon quotidienne dans l'idéal afin d'obtenir les derniers indices ajoutés par les équipes R&D de Gatewatcher.
La rétention des indices est de 7 jours par défaut, ce qui est aussi la valeur maximale possible.
Le moteur CTI doit être activé pour générer des alertes pour les menaces de type APT (Advanced Persistent Threat (voir l'Ecran `Admin-GCenter- CTI Configuration` de la legacy web UI).

2.1.6.4. Moteur RetroHunt

Ce moteur va permettre de rechercher parmi l'ensemble des métadonnées présentes dans la solution si ces dernières correspondent ou non à des indices de compromission.
Si tel est le cas, alors une alerte sera levée dans les différents tableaux de bord d'affichage d'alertes : NDR et Kibana.
L'idée est que si un fichier malveillant n'a pas été détecté comme tel par Malcore lors de son analyse (trop récent pour la base antivirale Malcore par exemple) alors si l'un des indices correspond au hash du fichier en question dans les métadonnées, une alerte sera levée.

Note

La corrélation des indices et des métadonnées dépendra du temps de rétention des données configuré sur le GCenter.

L'analyse de correspondance entre les indices et les métadonnées se déclenche lors de la mise à jour de la base des indices.
Il n'est donc possible de déclencher l'analyse de correspondance manuellement qu'en mettant à jour les indices de compromissions manuellement.
La mise à jour des indices de compromissions peut se faire de 3 manières différentes :
  • mise à jour manuelle avec le package cti.gwp

  • mise à jour Online : la récupération des indices de compromissions est effectuée toutes les heures en se basant sur le package mis en ligne par Gatewatcher

  • mise à jour Local : la récupération des indices de compromissions est effectuée toutes les heures en se basant sur le package présent dans le dépôt local.

Note

Afin d'optimiser la mise en place de la mise à jour des indices de compromissions en mode Local, il est nécessaire que le dépôt local récupère le package cti.gwp toutes les heures.
Sinon la mise à jour ainsi que la recherche de correspondance ne seront effectuées que selon la fréquence de récupération du package sur le dépôt local.

2.1.6.5. Moteur ActiveHunt

Ce moteur va permettre de générer une source de règles Suricata disponible pour le module Sigflow sur la base des indices de compromission.
Cette source pourra ensuite être ajoutée à la politique de sécurité (ruleset) attribuée au GCap afin de lever des alertes sur le trafic analysé.
Ce moteur se positionne sur du temps réel contrairement au moteur Retrohunt ci-dessus qui lui recherche des correspondance dans le passé.
Les règles générées sont mises à jour en même temps que la base des indices de compromission est mise à jour, tous les jours si possible.

Note

Contrairement au moteur RetroHunt, les alertes générées sont de type Suricata et seront donc disponible dans les tableaux de bord Sigflow.


2.1.6.6. Événements générés générés par le moteur RetroHunt

Les événements générés par le moteur RetroHunt sont des alertes.
Celles-ci sont affichées :

2.1.6.6.1. Exemple d'alerte RetroHunt dans la webui

../../_images/ALERTE-11.PNG

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


2.1.6.7. Exemple d’événement RetroHunt

 {
 "_index": "retrohunt-2023.10.18-000171",
 "_type": "_doc",
 "_id": "6BESQ4sBeBoubSygpp1s",
 "_version": 1,
 "_score": 1,
 "_source": {
   "flow_id": 1540796205479447,
   "@timestamp": "2023-10-18T13:56:14.789Z",
   "kill_chain_phases": [],
   "gcenter": "gcenter-xxx.domain.local"
   "signature": "RetroHunt - Host - malware/Unknown - Hajime - GW Lab Test - 00135350-1810-2023-34db-1319151da1fd",
   "src_ip": "X.X.X.X",
   "event_type": "retrohunt",
   "case_id": "00135350-1810-2023-edb7-7f8f1e4fccb9",
   "ioc_tags": [
     "trojan.generickd.34055387 (b)",
     "linux/hajime.a trojan",
     "e32/agent.cd",
     "linux.hajime.bc",
     "backdoor.hajime.linux.129",
     "linux/hajime.75930",
     "unix.malware.agent-6626471-0",
     "linux/hajime.nsnlw",
     "hajime",
     "elf.mirai.43048.gc",
     "trojan.elfarm32.hajime.fbhtfi",
     "trojan.linux.hajime",
     "trojan.generickd.34055387"
   ],
   "families": [
     "Hajime"
   ],
   "targeted_platforms": [
     "linux"
   ],
   "risk": "Suspicious",
   "categories": [
     "malware"
   ],
   "campaigns": [],
   "@version": "1",
   "threat_actor": [
     "GW Lab Test"
   ],
   "timestamp_detected": "2023-10-18T08:08:31.112Z",
   "ioc_value": "im.a.very.bad.doma.in",
   "external_links": [
     {
       "source_name": "URLHaus Abuse.ch",
       "url": "https://urlhaus.abuse.ch/url/2269068/"
     }
   ],
   "gcap": "gcap-xxxxxxxxx.domain.local",
   "uuid": "19fe0b3d-05fb-433a-ada0-f246e284d9bd",
   "dest_port": 80,
   "ioc_id": "00135350-1810-2023-34db-1319151da1fd",
   "ttp": [],
   "targeted_sectors": [],
   "meta_data": {
     "cwe": [],
     "ssdeep": "1536:87vbq1lGAXSEYQjbChaAU2yU23M51DjZgSQAvcYkFtZTjzBht5:8D+CAXFYQChaAUk5ljnQssL",
     "descriptions": [],
     "usageMode": "hunting",
     "filetype": "ELF 32-bit LSB executable, ARM, EABI5 version 1 (GNU/Linux)",
     "size": 78.3984375,
     "tslh": "T16D7312E017B517CC1371A8353BED205E9128223972AE35302E97528DF957703BAB2DBE"
   },
   "type": "cti",
   "ioc_creation_date": "2023-10-18T13:53:50+00:00",
   "timestamp_analyzed": "2023-10-18T13:56:14.789Z",
   "targeted_organizations": [],
   "matched_event_type": "http",
   "ioc_updated_date": "2023-10-18T13:53:50+00:00",
   "severity": 1,
   "matched_event": "cf7cf312-883b-4b84-a530-fea8d49b294c",
   "community_id": "1:oPgJrwIH53r44+0TfDB+7uhzL50=",
   "vulnerabilities": [],
   "targeted_countries": [],
   "timestamp_package": "2023-10-18T13:53:50.696659+0000",
   "description": "IOC matching first tests",
   "relations": [
     "0e3cc27b-7999-48ce-8484-dc12b325a355"
   ],
   "": 0.5,
   "dest_ip": "X.X.X.X",
   "src_port": 59338,
   "tlp": "green",
   "usage_mode": "hunting",
   "ioc_type": "Host"
 },
 "fields": {
   "signature": [
     "RetroHunt - Host - malware/Unknown - Hajime - GW Lab Test - 00135350-1810-2023-34db-1319151da1fd"
   ],
   "usage_mode": [
     "hunting"
   ],
   "description": [
     "IOC matching first tests"
   ],
   "type": [
     "cti"
   ],
   "uuid": [
     "19fe0b3d-05fb-433a-ada0-f246e284d9bd"
   ],
   "meta_data.ssdeep": [
     "1536:87vbq1lGAXSEYQjbChaAU2yU23M51DjZgSQAvcYkFtZTjzBht5:8D+CAXFYQChaAUk5ljnQssL"
   ],
   "src_ip": [
     "172.17.0.6"
   ],
   "ioc_updated_date": [
     "2023-10-18T13:53:50.000Z"
   ],
   "community_id": [
     "1:oPgJrwIH53r44+0TfDB+7uhzL50="
   ],
   "event_type": [
     "retrohunt"
   ],
   "ioc_tags": [
     "trojan.generickd.34055387 (b)",
     "linux/hajime.a trojan",
     "e32/agent.cd",
     "linux.hajime.bc",
     "backdoor.hajime.linux.129",
     "linux/hajime.75930",
     "unix.malware.agent-6626471-0",
     "linux/hajime.nsnlw",
     "hajime",
     "elf.mirai.43048.gc",
     "trojan.elfarm32.hajime.fbhtfi",
     "trojan.linux.hajime",
     "trojan.generickd.34055387"
   ],
   "flow_id": [
     1540796205479447
   ],
   "case_id": [
     "00135350-1810-2023-edb7-7f8f1e4fccb9"
   ],
   "@version": [
     "1"
   ],
   "external_links.url": [
     "https://urlhaus.abuse.ch/url/2269068/"
   ],
   "categories": [
     "malware"
   ],
   "meta_data.usageMode": [
     "hunting"
   ],
   "matched_event_type": [
     "http"
   ],
   "dest_port": [
     80
   ],
   "severity": [
     1
   ],
   "targeted_platforms": [
     "linux"
   ],
   "meta_data.filetype": [
     "ELF 32-bit LSB executable, ARM, EABI5 version 1 (GNU/Linux)"
   ],
   "": [
     0.5
   ],
   "meta_data.size": [
     78.39844
   ],
   "gcenter": [
     "gcenter-int-128-dag.gatewatcher.com"
   ],
   "meta_data.tslh": [
     "T16D7312E017B517CC1371A8353BED205E9128223972AE35302E97528DF957703BAB2DBE"
   ],
   "matched_event": [
     "cf7cf312-883b-4b84-a530-fea8d49b294c"
   ],
   "ioc_value": [
     "im.a.very.bad.doma.in"
   ],
   "ioc_id": [
     "00135350-1810-2023-34db-1319151da1fd"
   ],
   "ioc_type": [
     "Host"
   ],
   "families": [
     "Hajime"
   ],
   "timestamp_detected": [
     "2023-10-18T08:08:31.112Z"
   ],
   "external_links.source_name": [
     "URLHaus Abuse.ch"
   ],
   "src_port": [
     59338
   ],
   "threat_actor": [
     "GW Lab Test"
   ],
   "@timestamp": [
     "2023-10-18T13:56:14.789Z"
   ],
   "ioc_creation_date": [
     "2023-10-18T13:53:50.000Z"
   ],
   "dest_ip": [
     "172.17.0.4"
   ],
   "tlp": [
     "green"
   ],
   "risk": [
     "Suspicious"
   ],
   "gcap": [
     "gcap-int-129-dag.gatewatcher.com"
   ],
   "timestamp_analyzed": [
     "2023-10-18T13:56:14.789Z"
   ],
   "timestamp_package": [
     "2023-10-18T13:53:50.696Z"
   ],
   "relations": [
     "0e3cc27b-7999-48ce-8484-dc12b325a355"
   ],
   "description.keyword": [
     "IOC matching first tests"
   ]
 }
}

2.1.6.7.1. Structure des données des logs RetroHunt

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.6.7.1.1. La partie entête des logs RetroHunt

La partie entête contient :

{
 "_index": "retrohunt-2023.10.18-000171",
 "_type": "_doc",
 "_id": "6BESQ4sBeBoubSygpp1s",
 "_version": 1,
 "_score": 1,
Tableau partie entête des logs Machine learning

Champ

Requis

Description

Valeurs ou exemple

_index

Oui

Index interne

retrohunt-2023.10.18-000171

_type

Oui

type par défault

_doc

_id

Oui

identifiant interne

6BESQ4sBeBoubSygpp1s

_version

Oui

version interne

1

_score

Oui

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

1


2.1.6.7.1.2. La partie source des logs Machine learning

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

  "flow_id": 1540796205479447,
  "@timestamp": "2023-10-18T13:56:14.789Z",
  "kill_chain_phases": [],
  "gcenter": "gcenter-xxx.domain.local"
  "signature": "RetroHunt - Host - malware/Unknown - Hajime - GW Lab Test - 00135350-1810-2023-34db-1319151da1fd",
  "src_ip": "X.X.X.X",
  "event_type": "retrohunt",
  "case_id": "00135350-1810-2023-edb7-7f8f1e4fccb9",
  "ioc_tags": [
    "trojan.generickd.34055387 (b)",
    "linux/hajime.a trojan",
    "e32/agent.cd",
    "linux.hajime.bc",
    "backdoor.hajime.linux.129",
    "linux/hajime.75930",
    "unix.malware.agent-6626471-0",
    "linux/hajime.nsnlw",
    "hajime",
    "elf.mirai.43048.gc",
    "trojan.elfarm32.hajime.fbhtfi",
    "trojan.linux.hajime",
    "trojan.generickd.34055387"
  ],
  "families": [
    "Hajime"
  ],
  "targeted_platforms": [
    "linux"
  ],
  "risk": "Suspicious",
  "categories": [
    "malware"
  ],
  "campaigns": [],
  "@version": "1",
  "threat_actor": [
    "GW Lab Test"
  ],
  "timestamp_detected": "2023-10-18T08:08:31.112Z",
  "ioc_value": "im.a.very.bad.doma.in",
  "external_links": [
    {
      "source_name": "URLHaus Abuse.ch",
      "url": "https://urlhaus.abuse.ch/url/2269068/"
    }
  ],
  "gcap": "gcap-xxxxxxxxx.domain.local",
  "uuid": "19fe0b3d-05fb-433a-ada0-f246e284d9bd",
  "dest_port": 80,
  "ioc_id": "00135350-1810-2023-34db-1319151da1fd",
  "ttp": [],
  "targeted_sectors": [],
  "meta_data": {
    "cwe": [],
    "ssdeep": "1536:87vbq1lGAXSEYQjbChaAU2yU23M51DjZgSQAvcYkFtZTjzBht5:8D+CAXFYQChaAUk5ljnQssL",
    "descriptions": [],
    "usageMode": "hunting",
    "filetype": "ELF 32-bit LSB executable, ARM, EABI5 version 1 (GNU/Linux)",
    "size": 78.3984375,
    "tslh": "T16D7312E017B517CC1371A8353BED205E9128223972AE35302E97528DF957703BAB2DBE"
  },
  "type": "cti",
  "ioc_creation_date": "2023-10-18T13:53:50+00:00",
  "timestamp_analyzed": "2023-10-18T13:56:14.789Z",
  "targeted_organizations": [],
  "matched_event_type": "http",
  "ioc_updated_date": "2023-10-18T13:53:50+00:00",
  "severity": 1,
  "matched_event": "cf7cf312-883b-4b84-a530-fea8d49b294c",
  "community_id": "1:oPgJrwIH53r44+0TfDB+7uhzL50=",
  "vulnerabilities": [],
  "targeted_countries": [],
  "timestamp_package": "2023-10-18T13:53:50.696659+0000",
  "description": "IOC matching first tests",
  "relations": [
    "0e3cc27b-7999-48ce-8484-dc12b325a355"
  ],
  "": 0.5,
  "dest_ip": "X.X.X.X",
  "src_port": 59338,
  "tlp": "green",
  "usage_mode": "hunting",
  "ioc_type": "Host"
},
Tableau partie source

Champ

Requis

Description

Valeurs ou exemple

@timestamp

Oui

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

"2023-10-18T13:56:14.789Z"

"@version"

oui

version du document

1

@"case_id"

oui

Numéro d’identification interne

"00135350-1810-..."

Alert type dans webui

Oui

Type de menace

APT

"campaigns"

oui

Nom de la campagne

"categories"

oui

catégorie de la menace

malware

"community_id"

oui

Id unique pour correler l'élèment entre les différents équipements de sécurité

1:oPgJrwIH53r44+0TfDB+7uhzL50=

"description"

oui

champ description sur la menace

IOC matching first test

"dest_ip"

Oui

Adresse IP de destination

x.x.x.x

"dest_port"

Non

Port de destination

80

"event_type"

Oui

type d’évènement

retrohunt

"external_links"

Non

voir le Tableau récapitulatif des compteurs de catégorie "external_links"

"families"

oui

famille de la menace

Hajime

"flow_id"

Oui

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

1540796205479447

"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 ou nom domaine qui est affiché

"ioc_creation_date"

oui

Indice of Compromission ; date de création dans la base

"2023-10-18T13:53:50+00:00"

"ioc_id"

oui

Indice of Compromission : identifiant

"00135350-1810-2023-34db-1319151da1fd"

"ioc_tags"

oui

Indice de Compromission : étiquette

"trojan.generickd.34055387 (b)"
"linux/hajime.a trojan"
"e32/agent.cd"

"ioc_type"

oui

Indice de Compromission : type

"Host"

"ioc_updated_date"

oui

Indice de Compromission : date de mise à jour

"2023-10-18T13:53:50+00:00"

"ioc_value"

oui

Indice de Compromission : valeur

"im.a.very.bad.doma.in"

"kill_chain_phases"

oui

phases de la chaîne de frappe

"matched_event"

oui

événement qui a correspondu

cf7cf312-883b-4b84...

"matched_event_type"

oui

type d'événement qui a correspondu

http

"meta_data"

oui

voir le Tableau récapitulatif des compteurs : catégorie "meta_data"

NA

"probability"

oui

probabilité

0.5

"relations"

oui

relations

0e3cc27b-7999-...

"risk"

oui

résultat de l’évaluation du risque de la menace

Suspicious

"severity"

Oui

Code du résultat de l’analyse

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

"signature" (ou Signature ou Description dans Webui)

oui

intitulé de la menace

"RetroHunt - Host - malware/Unknown - Hajime - GW Lab Test - 00135350-1810-2023-34db-1319151da1fd"

"src_ip"

Oui

Adresse IP source

X.X.X.X

"src_port"

Oui

Port source

59338

"targeted_countries"

oui

Pays ciblés

"targeted_organizations"

oui

organisations ciblées

"targeted_platforms"

oui

plateformes visées

linux

"targeted_sectors"

oui

Secteurs d’activité ciblés

"threat_actor"

oui

Acteurs de cette menace

"timestamp analyzed"

Oui

Date et heure de la dernière analyse du fichier

2023-10-18T13:56:14.789Z

"timestamp detected"

Oui

Date et heure de la première capture du fichier

2022-09-08T09:21:22.223Z

"timestamp_package"

Oui

Date et heure de la mise a jour des sources CTI

2023-10-18T13:53:50.696659+0000

"tlp"

oui

Traffic Light Protocol (4 couleurs suivant la limitation de la divulgation)

green. cela signifie "La divulgation limitée, les bénéficiaires peuvent la diffuser au sein de leur communauté."

"ttp"

oui

Trusted Third-Party, tiers de confiance

"type"

Oui

Type d’événement

"cti"

"usage_mode"

oui

mode d'utilisation

hunting

"uuid"

Oui

Identifiant unique de l’alerte

19fe0b3d-05fb-433a...

"vulnerabilities"

oui

vulnérabilités

Tableau récapitulatif des compteurs : catégorie "external_links"

Champ

Requis

Description

Valeurs ou exemple

"source_name"

oui

Nom de la source

"URLHaus Abuse.ch"

"descriptions"

oui

description

"url"

oui

URL

"https://urlhaus.abuse.ch/url/2269068/

Tableau récapitulatif des compteurs : catégorie "meta_data"

Champ

Requis

Description

Valeurs ou exemple

"cwe"

oui

Common weakness enumeration

"Descriptions"

oui

description

oui

"usageMode"

oui

Usage de cet IOC

hunting

"filetype":

oui

Type de fichier

ELF 32-bit LSB executable, ARM, EABI5 version 1 (GNU/Linux)

"size"

oui

Taille

78.3984375

"ssdeep"

oui

Hash calculé par ssdeep

1536:87vbq1lGAXSEYQjbChaAU..

"s"

oui

T16D7312E017B517CC1371A8...


2.1.6.7.1.3. La partie champs des logs RetroHunt

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.6.8. Visualisation de l'état de CTI

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


2.1.6.9. Mise à jour de CTI

Il y a des mises à jour (Updates) pour le moteur CTI.
Ces mises à jour peuvent se faire de façon manuelle ou planifiée via GUM.