Wazuh – Scovare e prevenire attacchi ransomware – Part 2
Simuliamo un attacco di tipo ransomware sul nostro server e vediamo come Wazuh può aiutarci ad intercettare tale tipo di attacco.
La simulazione prevede:
- creazione di un utente fittizio my_user;
- creazione di un albero (directory e files) di test in /home/my_user/test_dir;
- attacco (crittografia dei files e cancellazione degli originali);
- 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.pybasedir = "/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:
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 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.