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:
-
Șterge e-mailul de pe serverul de mail automat.
-
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ă |
Leave A Comment?