Aller au contenu

🚨 Utilisation des événements de sécurité

alt text

📝 Introduction

Les événements de sécurité (détection de programmes malveillants, système d'exploitation non autorisé, etc.) sont associées à des actions telles que la mise en quarantaine d'appareils et l'envoi d'alertes par courriel par exemple. Ils peuvent être déclenchés soit par PacketFence directement soit pas des applications tierces.

🎯 Objectif

Dans cet artcile, nous allons utiliser les événements de sécurité :

  • pour du profilage de matériel afin de bloquer les consoles de jeux.
  • pour mettre en quarantaine un périphérique si son antivirus est désactivé.

🛡️ Profilage de matériel

Prérequis

Avant de s'attaquer à la configuration des événéments de sécurité, vous devez avoir activé le module Fingerbank. Si ce n'est pas déjà fait, vous pouvez suivre ce mode opératoire Configuration de Fingerbank

Configuration de PacketFence

Rendez-vous sur Événements de sécurité et cliquez sur Nouvel événement de sécurité.

alt text

Renseignez les éléments suivants :

alt text
alt text

J'ai nommé l'identifiant de cet événement 3000009 étant donné que les règles de blocage exsistantes se basaient sur la série 300000X.

Si ce n'est pas déjà fait, pensez à configurer une email afin d'être notifié.

Résultat attendu : si un utilisateur connecte une console de jeux sur le réseau, ce terminal doit être isolé du réseau et afficher un message expliquant le blocage.

🧪 Expérience

Pour réaliser cet expérience, j'ai connecté la Nintendo Swith de mes filles au réseau de mon lab. Et ça juste marche.

alt text

Sur PacketFence, en se rendant sur l'appareil en question, nous pouvons constater l'événement de sécurité :

alt text

Si vous avez configuré une alerte par mail, vous recevez alors un email vous informant du blocage de l'appareil.

alt text

Merci FingerBank ! J'oserai même dire "finger(bank) in the noise".

Plus loin avec FingerBank

FingerBank permet de récupérer une base gigantesque de périphériques. On peut ainsi faire du profilage sur un matériel spécifique ou sur une famille de matériel comme l'exemple ci-dessus. Vous pouvez consulter la (très) longue liste des appareils dans Conformité > Appareils. Cela peut être pratique pour bloquer par exemple des points d'accès Wifi rebelles.

alt text

🛡️ Mise en quarantaine d'un matériel

Introduction

Cet expérience est partie de la question suivante qui m'a été posée par un lecteur : comment mettre en quarantaine un terminal, maîtrisé et autorisé par PacketFence, quand l'antivirus est désactivé ?

PacketFence est "agent less". Il ne peut pas deviner si l'antivirus sur le terminal est actif ou pas. Pour cela il faut mettre en place une application tierce capable de générer un requête sur l'API de PacketFence.

Au départ, j'ai pensé mettre en place un script powershell qui relève l'état de l'antivirus. C'est simple mais ça n'était pas très "secure". Je me suis alors rabattu sur l'XDR open source Wazuh.

Configuration de PacketFence

Je me suis rendu dans Evénements de sécurité et une règle portant l'identifiant 3000006 était déjà présente. J'ai modifiée celle-ci au niveau des actions.

alt text
alt text

Déclenchement manuel de l'événement avec curl

À partir de là, j'ai un peu galéré pour comprendre comment déclencher cet événement. Finalement, j'ai trouvé la solution en faisant un peu de reverse-engineering. Pour cela, je me suis rendu sur Appareils > l'appareil en question > Événements de sécurité. En bas de la page, nous pouvons déclencher manuelle un événement de sécurité. Cela est plutôt pratique pour tester.

alt text

J'ai pu ainsi récupérer la requête sur l'API déclenchant l'événement de sécurité. Alors comment ça marche ?

  1. Il faut d'abord récupérer un token. Exemple avec la commande curl (et la commande jq pour un affichage propre) :
    Récupération du token
    curl -k -X POST "https://IP_PACKET_FENCE:1443/api/v1/login" \
    -H  "accept: application/json" \
    -H  "Content-Type: application/json" \
    -d "{\"username\":\"admin\",\"password\":\"VOTRE_PASSWORD\"}" | jq .
    
  2. Une fois le token récupéré, il suffit de passer cette requête en utilisant l'adresse MAC du terminal visé
    Déclenchement de l'événement de sécurité 3000006
    curl -k -X 'PUT' \          
      'https://IP_PACKET_FENCE:1443/api/v1/node/ac:e0:10:xx:xx:xx/apply_security_event?' \
      -H 'accept: application/json' \
      -H 'Authorization: Bearer TOKEN_RECUPERE' \
      -H 'Content-Type: application/json' \
      -d '{                          
      "security_event_id": "3000006"     
    }'
    
    Si tout s'est bien passé, vous avez reçu un mail et vous devez voir l'événement de sécurité sur l'appareil concerné.

Déclenchement automatique avec Wazuh

Afin d'être le plus générique possible, j'ai utilisé un poste de travail sous Windows 10 Pro et l'antivirus fourni avec Windows defender.

Je ne vais pas rentrer dans les détails mais expliquer le principe. J'écrirai plus tard un article sur Wazuh.

Une fois le serveur Wazuh installé sur une VM et l'agent déployé sur le poste client Windows, j'ai configuré Wazuh pour remonter que l'agent remonte les événements de Windows Defender.

J'ai ensuite configuré l'"active response" de Wazuh pour appeler un script python présent sur le serveur Wazuh. Ainsi si un programme ou un utilisateur désactive l'antivirus, l'agent Wazuh déclenche la règle 62152 sur le serveur Wazuh qui exécute alors le script Python permettant de déclencher l'événement de sécurité 3000006 sur PacketFence.

Voici l'ordonnancement : 1. Désactivation de l'antivirus Windows defender sur la machine cliente. 2. Règle 62152 déclenchée sur le serveur, elle-même déclenchant l'exécution du script. 3. Le serveur Wazuh passe l'id de l'agent Wazuh au script 4. Avec cet id, le script parse, à travers l'API de Wazuh, l'inventaire (stocké sur le serveur Wazuh) des adresses MAC de la machine concernée. 5. Le script teste la présence sur PacketFence, à travers également son API, des adresses MAC relevées ci-dessus.

Déclenchement de l'événement de sécurité 3000006
curl -k -X 'POST' \
  'https://IP_PACKET_FENCE:1443/api/v1/nodes/search?' \
  -H 'accept: application/json' \
  -H 'Content-Type: application/json' \
  -H 'Authorization: Bearer TOKEN_RECUPERE' \
  -d '{
  "cursor": 0,
  "fields": [
    "mac",
    "status"
    ],
  "query": {
    "op": "and",
    "values": [
      {
        "op": "and",
        "values": [
          {
            "field": "mac",
            "op": "contains",
            "value": "bc:e0:10:a7:67:49"
          }
        ]
      }
    ]
  }
}' 
6. Si une adresse MAC existe, il déclenche alors l'événement de sécurité sur PacketFence en se basant sur cette adresse MAC.

Et ça fonctionne.

alt text

J'ai remarqué que le périphérique est vu comme un matériel "Phone, Tablet or Wearable/Windows Phone" alors que c'est un PC portable ASUS.

Ensuite, après une bonne journée et demi dessus, je me suis arrêté là. Pour aller jusqu'au bout, il me faudrait également générer une action de sortie d'événement de sécurité lors de la réactivation de l'antivirus. Qui plus est, cette configuration ne remonte pas d'alerte si l'antivirus a été desactivé avant sa connexion au réseau.

On pourrait également se passer de Wazuh et utiliser une console centrale gérant les antivirus qui déclencherait elle-même un événement de sécurité sur PacketFence.

Conclusion

Autant la configuration du profilage matériel fût simple à mettre en place autant le déclenchement des événements de sécurité par une application tierce ne fut pas aisée. Mais une fois le fonctionnement compris, on peut entrevoir les nombreuses possibilités que nous offre ce module. D'ailleurs, on poussera encore un peu plus loin l'usage de ce dernier dans le prochain article. J'ai par ailleurs pu enfin pratiquer Wazuh et l'outil est formidable. J'essaierai de trouver du temps pour écrire quelques articles dessus. En attendant vous pouvez consulter les vidéos de Xavki sur ce sujet.