Wazuh – Scovare e prevenire attacchi ransomware – Part 2

Published by Lello on

Simuliamo un attacco di tipo ransomware sul nostro server e vediamo come Wazuh può aiutarci ad intercettare tale tipo di attacco.

La simulazione prevede:

  1. creazione di un utente fittizio my_user;
  2. creazione di un albero (directory e files) di test in /home/my_user/test_dir;
  3. attacco (crittografia dei files e cancellazione degli originali);
  4. alerting e triggering di Wazuh per intercettare l’attacco.

Procediamo con la preparazione dell’ambiente; di seguito verrà utilizzata una distribuzione CentOS 8 su cui è stata effettuata un’installazione all-in-one di Wazuh server (Manager e API server) e Elastic Stack (Open Distro for Elasticsearch, che include Elasticsearch, Filebeat, Kibana con il plugin di Wazuh).

# useradd my_user
# su - my_user
# mkdir /home/my_user/test_dir

Modifichiamo anche la configurazione di Wazuh:

<syscheck>
   ...
   <directories check_all="yes" whodata="yes">/home/my_user/test_dir</directories>
   ...
</syscheck>

Verifichiamo che la regola dell’audit per la cartella /home/my_user/test_dir sia applicata:

# auditctl -l | grep wazuh_fim
-w /home/my_user/test_dir -p wa -k wazuh_fim

Grazie al parametro whodata, Wazuh utilizzerà un’integrazione con il kernel del sistema operativo (auditing) per analizzare in real time i cambiamenti dei file, inclusi altri dettagli su chi e come sono state effettutale le modifiche; vengono messe a disposizione di Wazuh nuovi campi che ci aiuteranno a capire come si sta evolvendo l’infezione. Potete trovare il dettaglio di questi campi a questo indirizzo.

Dopo avere riavviato il manager di Wazuh, utilizziamo un piccolo script python (che potete scaricare da questo indirizzo) che creerà 10 directory e 20 files all’interno della directory di test:

# cd /home/my_user
# mkdir test_dir
# wget https://wazuh.com/resources/blog/detect-ransomware-with-wazuh/wazuh-ransomware-poc.py
# # Modificate il file wazuh-ransomware-poc.py
    basedir = "/home/vagrant/test"
    basedir = "/home/my_user/test_dir"
# python3 wazuh-ransomware-poc.py prepare

All’interno di Kibana, possiamo vedere come Wazuh si sia già “accorto” della creazione di file e directory nel nostro ambiente di test:

Wazuh Ransomware - 1

Procediamo ora alla simulazione dell’attacco; lo script precedente procederà all’encrypt di ogni file all’interno della struttura di test, rimuovendo i files originali:

# python3 wazuh-ransomware-poc.py attack

Su Kibana potremo vedere il risultato dell’operazione di crittografia, osservando la presenza di due tipi di alert distinti: added e deleted.

Wazuh Ransomware - 2

Wazuh ha dunque rilevato correttamente l’evento che è stato generato durante l’attacco in questa simulazione, anche se risulta abbastanza diffile per un utente capire quando è in corso l’attacco.

Una volta che siamo sicuri che Wazuh identifichi correttamente l’evento, procediamo con l’alerting. A tal fine utilizzeremo utilizzeremo le funzionalità di Alerting di OpenDistro (alternative free e opensource a Elastic, rilasciato sotto licenza Apache2); tali funzionalità ci permetteranno di avvisare un operatore dell’infezione in corso ed eventualmente cercare di mettere in pratica una serie di regole (trigger) per bloccare l’evento.

← Wazuh – Scovare e prevenire attacchi ransomware – Part 1

Wazuh – Scovare e prevenire attacchi ransomware – Part 3 →