Configurarea wazuh pentru interpretarea datelor analizei spam

Configurare noua (How To)

Situatie

Utilizand scriptul Python care “produce” datele, trebuie să învățăm Wazuh cum să le interpreteze. Fără acest pas, Wazuh va vedea doar niște rânduri de text.Noi vrem să extragem câmpuri precum from, subject și threat_level pentru a crea grafice și alerte. Această etapă se împarte în două: Decoder (cum citește datele) și Rule (ce decizie ia).

Solutie

Pasi de urmat

1. Configurarea Decoder-ului

Deoarece scriptul nostru scoate datele în format JSON, vestea bună este că Wazuh are un decoder nativ pentru JSON. Totuși, este bine să ne asigurăm că fișierul este monitorizat corect.

În agentul Wazuh (sau pe manager, dacă scriptul rulează acolo), editează /var/ossec/etc/ossec.conf și adaugă:

<localfile>
<log_format>json</log_format>
<location>/var/log/email_analysis.log</location>
</localfile>

2. Crearea Regulilor Custom

Vom edita fișierul /var/ossec/etc/rules/local_rules.xml de pe Wazuh Manager. Vom crea o ierarhie de alerte în funcție de severitatea detectată de scriptul Python.

<group name=”spam_analysis,”>

<rule id=”100010″ level=”0″>
<decoded_as>json</decoded_as>
<field name=”integration”>email_spam_analysis</field>
<description>Eveniment analiză email detectat.</description>
</rule>

<rule id=”100011″ level=”3″>
<if_sid>100010</if_sid>
<field name=”threat_level”>low</field>
<description>Email scanat: Nicio amenințare evidentă detectată ($(from)).</description>
</rule>

<rule id=”100012″ level=”10″>
<if_sid>100010</if_sid>
<field name=”threat_level”>high</field>
<description>Alertă: Email cu link-uri malițioase de la $(from)! Subiect: $(subject)</description>
<group>phishing,threat_intel,</group>
</rule>

<rule id=”100013″ level=”14″>
<if_sid>100010</if_sid>
<field name=”threat_level”>critical</field>
<description>URGENT: Atașament periculos detectat în email de la $(from)!</description>
<group>malware,incident_response,</group>
</rule>

</group>

3. Vizualizarea în Dashboard

După ce restartezi managerul (systemctl restart wazuh-manager), alertele vor începe să apară în secțiunea Security Events.

Ce poți vedea în prezentare:

  • Top Senderi: Cine trimite cele mai multe e-mailuri malițioase

  • Evoluția Amenințărilor: Câte atacuri de tip phishing vs malware au fost blocate săptămâna aceasta

  • Detalii Tehnice: Hash-ul fișierului detectat și scorul VirusTotal, vizibile direct în detaliile alertei.

4. Ultimul pas: Active Response

Wazuh poate face mai mult decât să te anunțe. Putem configura un Active Response care, în momentul în care regula 100013 (Critical) este declanșată, să ruleze un alt script care:

  1. Șterge e-mailul de pe serverul de mail automat.

  2. Adaugă IP-ul expeditorului într-un Blacklist la nivel de Firewall (iptables/pfsense).

1. Scriptul de carantină

Acest script Python va fi apelat de Wazuh când detectează un email critic. El se conectează înapoi la serverul de mail și mută mesajul periculos într-un folder separat pentru a proteja utilizatorul.

import imaplib
import sys
import json

# Datele de conectare (recomandat să fie în variabile de mediu)
IMAP_SERVER = ‘imap.gmail.com’
EMAIL_USER = ‘contul_tau@gmail.com’
EMAIL_PASS = ‘parola_ta_aplicatie’

def move_to_quarantine(subject_to_find):
try:
mail = imaplib.IMAP4_SSL(IMAP_SERVER)
mail.login(EMAIL_USER, EMAIL_PASS)
mail.select(“inbox”)

# Căutăm email-ul după subiect
result, data = mail.search(None, f'(SUBJECT “{subject_to_find}”)’)

if result == ‘OK’ and data[0]:
for num in data[0].split():
# Creăm folderul de carantină dacă nu există (depinde de server)
mail.create(“Quarantine”)
# Copiem mail-ul și îl ștergem din Inbox
mail.copy(num, “Quarantine”)
mail.store(num, ‘+FLAGS’, ‘\\Deleted’)

mail.expunge()
return True
except Exception as e:
print(f”Eroare la carantinare: {e}”)
return False

if __name__ == “__main__”:
# Wazuh trimite alerta prin stdin
alert_raw = sys.stdin.read()
if alert_raw:
alert = json.loads(alert_raw)
# Luăm subiectul din câmpul extras de decoder-ul JSON
email_subject = alert.get(‘data’, {}).get(‘subject’, ‘Unknown’)
move_to_quarantine(email_subject)

2. Raport de Analiză

În prezentarea ta, poți include un tabel care simulează output-ul final al sistemului. Acesta demonstrează “inteligența” soluției tale.

Raport de Incident #001

Câmp Valoare Detectată Status
Expeditor support-security@alert-verify.com Suspect (Domeniu nou)
Subiect Urgent: Modifică parola contului tău High Risk (Urgency tactics)
Link-uri http://bit.ly/fake-login-2024 Malicious (VirusTotal 42/70)
Atașament invoice_992.docm Critical (VBA Macros detected)
Acțiune Wazuh Active Response Triggered E-mail mutat în carantină

 

Tip solutie

Permanent

Voteaza

(5 din 8 persoane apreciaza acest articol)

Despre Autor

Leave A Comment?