Contenu

Intro


Plateforme / Version outil

  • Kubernetes 1.28
  • Wazuh: Serveur & Agent 4.5.0

Plan d’attaque ⚔️

  1. Création d’un système SIEM Open-Source avec kustomize sur un cluster kubernetes (kubeadm)
  2. Tentative de brute-force avec l’outil hydra d’un des serveurs de mon cluster kube
  3. Être alerté de ces attaques sur un channel Mattermost spécifique

Installation Wazuh


Kustomize

Ayant déployé préalablement mon cluster Kubernetes, j’ai opté pour du Kustomize en utilisant le repo officiel Github de Wazuh: https://github.com/wazuh/wazuh-kubernetes.git

1
2
3
git clone https://github.com/wazuh/wazuh-kubernetes.git
cd wazuh-kubernetes
kubectl apply -k envs/local-env/

Dashboard

  • Une fois déployé, je récupère l’EXTERNAL-IP du service dashboard pour rajouter une entrée locale dans mon /etc/hosts.
  • Ainsi j’accède à la page d’accueil de Wazuh Server:

Dashboard

  • Actuellement j’ai déployé 11 agents sur chacun de mes serveurs, qui me permettent de recueillir tous les fichiers de logs relatifs à des enjeux de sécurité.

  • La vue d’ensemble d’un serveur en particulier:

Scénario


Brute-Force

  • Pour tester de lever une alerte, il faut par exemple simuler une tentative d’attaque avec hydra
J’utilise Hydra afin de simuler des tentatives de connexion ssh avec un utilisateur non existant, avec une série de 20 mots de passe aléatoires, récupérés depuis le fichier rockyou.txt, sur un des serveurs en question
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
$ sudo hydra -l badguy -P rockyou.txt 192.168.122.224 ssh
[sudo] password for admin: 
Hydra v9.5 (c) 2023 by van Hauser/THC & David Maciejak - Please do not use in military or secret service organizations, or for illegal purposes (this is non-binding, these *** ignore laws and ethics anyway).

Hydra (https://github.com/vanhauser-thc/thc-hydra) starting at 2024-03-31 19:11:52
[WARNING] Many SSH configurations limit the number of parallel tasks, it is recommended to reduce the tasks: use -t 4
[DATA] max 16 tasks per 1 server, overall 16 tasks, 20 login tries (l:1/p:20), ~2 tries per task
[DATA] attacking ssh://192.168.122.224:22/
1 of 1 target completed, 0 valid password found
Hydra (https://github.com/vanhauser-thc/thc-hydra) finished at 2024-03-31 19:12:27

Observabilité

  • En allant sur Security Events j’applique un rule.id à 5710 et je peux retrouver mes tentatives:

Events
SSH tries

Alerting


  • Lever des alertes dans Wazuh est une chose, mais être notifié à l’extérieur en est une autre, et est primordial. J’ai choisi mattermost comme cible de réception d’alertes.

  • Process:

    1. Création d’un channel #wazuh-alerts dans mattermost
    2. Création d’un webhook dans mattermost. Liaison avec le channel #wazuh-alerts
    3. Configuration du fichier wazuh/wazuh_managers/wazuh_conf/worker.conf pour ajouter la section integration avec le webhook mattermost et la section localfile en précisant le /var/log/auth,log des serveurs agents en question :
    1
    2
    3
    4
    5
    6
    
     <integration>
      <name>slack</name>
      <hook_url>https://mattermost.example.com/hooks/your-webhook-token</hook_url>
      <rule_id>5710</rule_id>
      <alert_format>json</alert_format>
     </integration>
    
    • Ici, je précise la rule_id 5710 qui concerne l’authentication_failed ssh:
    • en me connectant à mon POD, je peux retrouver la liste des rules Wazuh:
    1
    2
    
     root@wazuh-manager-worker-0:/var/ossec/ruleset/rules# ll | grep ssh
     -rw-r----- 1 root wazuh  19149 Aug  4  2023 0095-sshd_rules.xml
    
    • à l’intérieur du fichier 0095-sshd_rules.xml, je retrouve la 5710 que je veux matcher:
     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    
      <rule id="5710" level="5">
        <if_sid>5700</if_sid>
        <match>illegal user|invalid user</match>
        <description>sshd: Attempt to login using a non-existent user</description>
        <mitre>
          <id>T1110.001</id>
          <id>T1021.004</id>
          <id>T1078</id>
        </mitre>
        <group>authentication_failed,gdpr_IV_35.7.d,gdpr_IV_32.2,gpg13_7.1,hipaa_164.312.b,invalid_login,nist_800_53_AU.14,nist_800_53_AC.7,nist_800_53_AU.6,pci_dss_10.2.4,pci_dss_10.2.5,pci_dss_10.6.1,tsc_CC6.1,tsc_CC6.8,tsc_CC7.2,tsc_CC7.3,</group>
      </rule>
    
    • En relancant un coup de hydra je reçois bien mes alertes sur Mattermost:

    #wazuh-alerts

Conclusion


Wazuh fait bien évidemment bien plus que des analyses de tentatives de connexions SSH, mais c’était le but recherché dans ce post court et concis. Étant toujours en train de découvrir l’outil, suites à venir dans d’autres posts.

Liens utiles