2.1.4. Moteur malicious Powershell detect

2.1.4.1. Introduction

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

Le moteur Malicious Powershell detect permet de détecter et d'analyser les scripts powershell malveillants.
PowerShell est un langage de programmation pour les administrateurs système Windows.
Pour cette raison, ses capacités à contrôler une machine Windows sont très nombreuses, ce qui en fait un outil très populaire dans l'exploitation d'une machine compromise.
Ainsi, un attaquant l'utilisera généralement pour maintenir l'accès à la machine ou en extraire des informations, avant de passer à une autre machine.
Un script powershell peut donc être utilisé pour maintenir une porte dérobée sur la machine, afin de permettre à l'attaquant d'agir plus tard, ou de télécharger directement en mémoire un logiciel malveillant et de l'exécuter.
Un script powershell peut être offusqué pour éviter d'être détecté par les signatures et compliquer son analyse.
Il existe de nombreuses techniques d'offuscation pour les scripts powershell, toutes utilisant des méthodes inhérentes au langage.
En raison de sa nature, un script powershell malveillant est difficile à détecter pour les raisons suivantes :
  • il s'agit d'un outil très courant dans les fermes de PC ou de serveurs Windows

  • il ne passe pas nécessairement par un fichier

  • souvent offusqué pour éviter la détection de la signature

  • des utilisations légitimes de PowerShell peuvent être considérées comme des comportements malveillants.


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

La détection des scripts powershell malveillants s'effectue en plusieurs étapes :

  1. La première étape consiste à analyser le format, en recherchant un obscurcissement du script powershell.
    Les scripts malveillants sont généralement obscurcis et les scripts légitimes ne sont pas censés l'être ; cette étape permet d'éviter les faux positifs.
  2. La deuxième étape consiste à scanner le contenu du script powershell à la recherche de commandes potentiellement malveillantes.
    Cette étape permet de neutraliser les techniques d'obscurcissement les plus courantes pour caractériser la menace.

2.1.4.1.3. Comment fonctionne le moteur Malicious Powershell detect dans le GCenter?

Le moteur :


2.1.4.1.3.1. Données saisies du moteur Malicious Powershell detect

Le flux 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 du GCap. (se référer à la procédure Configurer les règles de reconstruction de fichier via le profil GCap).
Tout paquet passant par le réseau sera soumis à une recherche de modèles intelligents afin d'identifier ceux qui sont susceptibles de contenir un script powershell malveillant.
Ces paquets sont ensuite extraits et envoyés au GCenter pour une analyse plus approfondie par le moteur Malicious Powershell.
Les fichiers portant l'extension .ps1 seront également extraits pour analyse.
Une fois l'analyse terminée, si un script powershell malveillant a été identifié, une alerte est émise avec toutes les informations collectées.
Actuellement, la gestion des obscurcissements dans la deuxième étape ne sera possible que pour un ensemble défini de techniques, mais cela n'empêchera pas la détection de scripts powershell malveillants dont la technique d'obscurcissement n'a pas pu être identifiée.
Pour que le moteur soit opérationnel, une première mise à jour de la «Threat DB» devra avoir lieu.

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

Les événements produits par le moteur Malicious Powershell detect sont des alertes.
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 ne visualiser que les alertes, sélectionner le filtre moteur `Malicious Powershell` puis valider.
      Voir la présentation de l'Ecran `Alerts` de la WebUI.
      ../../_images/GCE103_POWERSHELL_ALERT_06.PNG
    • Cliquer sur l'alerte sélectionnée.
      La fenêtre `Alert details` est affichée.
      Les informations détaillées de cette alerte sont affichées dans l'Exemple d'alerte Malicious Powershell detect dans la WebUI.
      Les compteurs affichés sont indiqués dans l'annexe Structure des données du journal de bord du moteur.
    • Si le mode `Group by name` est activé, le nom des alertes agrégées et leur nombre sont affichés.
      Cliquer sur un groupe d'alertes pour en afficher la liste.
    • Lorsque le mode `Group by name` est désactivé, 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.
  • Dans l'interface nommée Kibana UI :
    • Dans l'écran `Alerts` de la WebUI, sélectionner le filtre moteur `Malicious Powershell` puis valider.
      Voir la présentation de l'Ecran `Alerts` de la WebUI.
      ../../_images/GCE103_POWERSHELL_ALERT_06.PNG
    • Après avoir sélectionné l'alerte, cliquer sur la commande `Open powershell engine analytics` du menu `Actions`.
      Kibana est ouvert dans la catégorie `Malicious Powershell` de la section `Alerts ` : dans l'onglet `Overview`, la base de données affiche toutes les alertes.
      ../../_images/GCE103_POWERSHELL_ALERT_02.PNG
      L'interface affichée est l'interface nommée Kibana UI (décrite dans l'Interface graphique Kibana).
    • Cliquer sur l'onglet `Messages` (1).

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

    Note

    L'interface KibanaUI est également accessible sans filtre via l'icône `Hunting` sur la barre de menu de gauche dans la WebUI.


2.1.4.2.1. Exemple d'alerte Malicious Powershell detect dans la WebUI

../../_images/GCE103_POWERSHELL_ALERT_08.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'Exemple d'une alerte exportée.

2.1.4.2.2. Structure des données des logs Malicious Powershell

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.4.2.2.1. La partie en-tête des logs Malicious Powershell

La partie en-tête contient :

"_index": "engines_alerts-2024.12.04-000030",
"_id": "0KIEkpMBe7GX5B2fI_RU",
"_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.4.2.2.2. La partie source des logs Malicious Powershell

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.

"malicious_powershell": {
  "sample_id": "12-04-2024T14:12:40_03afe38854c8443db03807bcc51cf935_gcap.gatewatcher.com",
  "score_details": {
    "InvokeRestMethod": 0,
    "StreamWriter": 0,
    "CharInt": 6,
    "AddContent": 0,
    "InvokeExpression": 100,
    "StrCat": 4,
    "StreamReader": 0,
    "SystemIOFile": 0,
    "InvokeWebRequest": 0,
    "StrJoin": 6,
    "WebClientInvokation": 20,
    "StrReplace": 0,
    "SetContent": 0,
    "GetContent": 0,
    "FmtStr": 8,
    "StartBitsTransfer": 0,
    "Base64": 188
  },
  "proba_obfuscated": 0.6,
  "score": 332,
  "id": "b5c38e2159f80a5a3076a353360cb5f1"
},
"event": {
  "created": "2024-12-04T14:12:44.750657+0000",
  "dataset": "alert",
  "module": "malicious_powershell_detect",
  "severity": 1,
  "kind": "alert",
  "category": [
    "network",
    "intrusion_detection"
  ],
  "id": "081d78f9-81f2-4408-84bf-2c8d6a8e5939"
},
"@version": "1",
"source": {
  "port": 33698,
  "ip": "x.y.z.A",
},
"ecs": {
  "version": "8.6.0"
},
"observer": {
  "log_format_version": "1.0.0",
  "hostname": "gcenter.domain",
  "vendor": "gatewatcher",
  "gcap": {
    "ingress": {
      "interface": {
        "name": "monvirt"
      }
    },
    "hostname": "gcap",
    "version": "2.5.x."
  },
  "product": "gcenter",
  "uuid": "fc1e66e3-a397-5eb4-9277-754be778f317",
  "version": "2.5.x"
},
"destination": {
  "port": 9999,
  "ip": "x.A.V.X"
},
"@timestamp": "2024-12-04T14:12:44.750Z",
"network": {
  "protocol": "unknown",
  "transport": "tcp",
  "timestamp": "2024-12-04T14:11:36.408774+0000",
  "flow_id": 2227663757209674

2.1.4.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.4.3. Gestion du moteur

2.1.4.3.1. Visualisation de l'état du moteur

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


2.1.4.3.2. Mise à jour du moteur

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


2.1.4.3.3. Configuration du moteur

L'interface de configuration permet d'activer le moteur :


2.1.4.4. Analyse des alertes

Les alertes sont affichées sur un écran spécifique 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 Powershell detect est décrite dans l'Analyse des alertes Malicious Powershell detect.