Wazuh – Pro-active response – Examples

Published by Lello on

In questo post vedremo come Wazuh possa reagire in maniera pro-attiva (nel momento in cui l’evento accade) ad un tentativo di attacco di tipo brute-force. Analizzeremo due casi:

  • come bloccare un attacco di tipo brute force tramite script win_route-null;
  • come bloccare un attacco di tipo brute-force verso la pagina di login di un CMS (WordPress/Joomla), tramite un firewall perimetrale.

Active response per attacco di tipo Brute force

Abbiamo analizzato l’evento relativo ad un attacco RDP di tipo brute-force; tale attacco attiva la regola con ID 60204 (Multiple Windows Logon Failures) con level 10. Utlizzeremo queste informazioni per bloccare questi tipi di attacco nel momento in cui tale evento viene rilevato.

Nel file di configurazione di Wazuh ( /var/ossec/etc/ossec.conf) esiste la definizione del comando win_route-null (comando che aggiunge l’indirizzo IP dell’attaccante alla null route) che utilizzeremo per bloccare l’indirizzo IP della macchina che ha generato l’evento:

  <command>
    <name>win_route-null</name>
    <executable>route-null.cmd</executable>
    <expect>srcip</expect>
    <timeout_allowed>yes</timeout_allowed>
  </command>

Creiamo una regola di active-response (sempre all’interno del file di configurazione di Wazuh) che attivi il comando route-null sull’agent che ha generato l’evento con ID 60204, bloccando l’indirizzo IP dell’attaccante per 600sec:

<active-response>
    <disabled>no</disabled>
    <command>win_route-null</command>
    <location>local</location>
    <rules_id>60204</rules_id>
    <timeout>600</timeout>
</active-response>

Questa è una Stateful response, in quanto dopo 600sec viene ripristinato lo stato precedente (l’indirizzo IP bloccato può nuovamente accedere).

Una volta definita l’active-response, riavviamo Wazuh Manager per attivare l’active -response.

Active-response con blocco IP su firewall OPNSense

In questo esempio metteremo in atto una serie di contromisure per bloccare l’evento con ID 31510 (tentativo di accesso brute-force verso la pagina di login del CMS) in atto. In particolare, bloccheremo l’indirizzo IP dell’attaccante tramite il firewall OPNSense (firewall perimetrale) in maniera totalmente automatica.

Sul server web è installato l’agent di Wazuh che invia i file di log (access e error) al Manager.

Prima di procedere, verificate che l’indirizzo della vostra LAN sia in white list sia su Wazuh che su OPNSense.

Nel nostro firewall perimetrale:

  • creiamo un alias con il nome wazuh-active-response; in questo alias finiranno tutti gli indirizzi IP che vorremo bloccare per la nostra rete;
  • creiamo una regola nella WAN interface che blocchi gli indirizzi IP inseriti nell’alias wazuh-activeresponse.
  • creiamo l’utente wazuh-user ed abilitiamo per tale utente le API (maggiori informazioni su come creare l’utente e la chiave relativa alle API la potete trovare a questo link).

Una volta configurato il nostro firewall, nella directory /var/ossec/active-response/bin/ scarichiamo il file opnsense-ban.sh:

# wget https://raw.githubusercontent.com/cloudfence/opnsense-wazuh/master/opnsense-ban.sh -O /var/ossec/active-response/bin/opnsense-ban.sh
# chmod +x /var/ossec/active-response/bin/opnsense-ban.sh

Modifichiamo all’interno del file opnsense.ban.sh le variabili relative alla chiave API dell’utente creato precedentemente e l’url del firewall da richiamare:

  • api.key dell’utente (KEY=”XXXXXXXXXXXXXXXXXXXXXXXXXX”)
  • api.secret (SECRET=”XXXXXXXXXXXXXXXXXXXXXXXXX”)
  • url a cui richiamare l’alias creato (URL=”https://192.168.xxx.xxx/api/firewall/alias_util/add/wazuh_activeresponse”)

Modifichiamo il file di configurazione di ossec per definire il comando e l’active -response che deve essere attivata:

  <command>
    <name>opnsense-ban</name>
    <executable>opnsense-ban.sh</executable>
    <expect>srcip</expect>
  </command>
  ...
  <active-response>
    <command>opnsense-ban</command>
    <location>server</location>
    <rules_id>31510</rules_id>
  </active-response>

Testiamo se il file di configurazione modificato è corretto:

# /var/ossec/bin/ossec-analysisd -t

Riavviamo Wazuh Manager per attivare le modifiche precedenti.

Ora, quando il nostro server Web con il CMS installato, genera un evento con ID 31510, tale evento viene inoltrato al server Wazuh; Wazuh effettua il parsing dell’evento e richiama il comando opnsense-ban.sh, accodando l’indirizzo IP all’alias wazuh-active-response e quindi bloccandolo definitivamente.

Questa modifica è di tipo Stateless, in quanto l’ambiente viene modificato in maniera permanente.

Vi suggerisco inoltre di controllare (ed eventualmente svuotare) periodicamente l’alias wazuh-active-response del firewall OPNSense, in quanto tende a crescere esponenzialmente con il passare del tempo.

← Wazuh – Pro-active response

Wazuh – Scovare e prevenire attacchi ransomware – Part 1 →