ACU-0001 (APT28) Ataques Usando CVE-2026-21509
Detection stack
- AIDR
- Alert
- ETL
- Query
Resumen
APT28 (rastreador UAC-0001) está explotando la recientemente divulgada vulnerabilidad de Microsoft Office CVE-2026-21509 para entregar cargas maliciosas contra objetivos del gobierno ucraniano y organizaciones de toda la UE. La intrusión comienza con un DOC armado que fuerza una solicitud WebDAV para extraer componentes adicionales, luego configura un secuestro de COM para ejecutar un cargador basado en DLL que lanza el marco Covenant. La actividad también aprovecha el almacenamiento en la nube legítimo como parte de su infraestructura de red. La campaña fue observada a finales de enero de 2026.
Investigación
El análisis de los archivos DOC maliciosos mostró que abrirlos en Office inicia una conexión WebDAV que descarga una DLL llamada EhStoreShell.dll junto con una imagen shellcode PNG. La DLL se hace persistente mediante un secuestro de registro COM CLSID, y una tarea programada llamada OneDriveHealth se utiliza para activar explorer.exe, el cual carga el objeto COM secuestrado. El cargador luego inicia Covenant, con el control del operador dirigido a través de puntos finales respaldados por Filen.
Mitigación
Aplique, sin demora, la actualización de Office de Microsoft que aborda CVE-2026-21509. Desactive o restrinja estrictamente el uso de WebDAV dentro de Office donde sea posible. Elimine el registro malicioso de CLSID y borre la tarea programada OneDriveHealth. Bloquee el acceso saliente a dominios de Filen e IP relacionadas, y controle los endpoints para la creación de los DLL y PNG descritos.
Respuesta
Alerta sobre la creación de EhStoreShell.dll, SplashScreen.png y cambios en la ruta de registro de CLSID secuestrado. Detecte e investigue la creación de tareas programadas que coincidan con OneDriveHealth. Correlacione la actividad del proceso de Office con conexiones salientes a dominios de Filen, ponga en cuarentena los documentos relacionados y realice un análisis forense completo de host en los sistemas afectados.
Flujo de Ataque
Detecciones
Ejecución Sospechosa de Taskkill (vía línea de comandos)
Ver
Schtasks apunta a Directorio / Binario / Script Sospechoso (vía línea de comandos)
Ver
Posible Secuestro de COM del Explorador (vía evento de registro)
Ver
Posible Abuso del Protocolo Handler Search / Search-MS URI (vía línea de comandos)
Ver
Comportamiento Potencialmente Sospechoso en la Creación, Ejecución, Eliminación de Tareas Programadas (vía creación de procesos)
Ver
Posible Infiltración / Exfiltración de Datos / C2 a través de Servicios / Herramientas de Terceros (vía proxy)
Ver
Posible Infiltración / Exfiltración de Datos / C2 a través de Servicios / Herramientas de Terceros (vía dns)
Ver
LOLBAS Regsvr32 (vía línea de comandos)
Ver
IOCs (DestinoIP) para detectar: Boletín CERT-UA: Ataques UAC-0001 (APT28) Usando CVE-2026-21509
Ver
IOCs (HashSha256) para detectar: Boletín CERT-UA: Ataques UAC-0001 (APT28) Usando CVE-2026-21509
Ver
IOCs (HashSha1) para detectar: Boletín CERT-UA: Ataques UAC-0001 (APT28) Usando CVE-2026-21509
Ver
IOCs (HashMd5) para detectar: Boletín CERT-UA: Ataques UAC-0001 (APT28) Usando CVE-2026-21509
Ver
IOCs (Emails) para detectar: Boletín CERT-UA: Ataques UAC-0001 (APT28) Usando CVE-2026-21509
Ver
IOCs (OrigenIP) para detectar: Boletín CERT-UA: Ataques UAC-0001 (APT28) Usando CVE-2026-21509
Ver
Detección de Secuestro de COM vía Modificación de Registro [Evento de Registro de Windows]
Ver
Conexiones de Red Maliciosas Relacionadas con Ataques Cibernéticos de APT28 [Conexión de Red de Windows]
Ver
Creaciones de Archivos Sospechosos Simulando una Extensión de Shell de Almacenamiento Mejorada [Evento de Archivo de Windows]
Ver
Ejecución de Simulación
Prerequisito: La verificación preliminar de Telemetría y Línea Base debe haber pasado.
Razonamiento: Esta sección detalla la ejecución precisa de la técnica del adversario (TTP) diseñada para activar la regla de detección. Los comandos y narrativas DEBEN reflejar directamente los TTP identificados y apuntar a generar la telemetría exacta esperada por la lógica de detección. Los ejemplos abstractos o no relacionados llevarán a errores de diagnóstico.
-
Narrativa y Comandos de Ataque:
Un adversario ha obtenido acceso inicial en la máquina de la víctima y desea lograr persistencia y ejecución de código sigilosa. Seleccionan un CLSID raramente utilizado{D9144DCD-E998-4ECA-AB6A-DCD83CCBA16D}que es poco probable que sea referenciado por software legítimo. Usando PowerShell (T1218.010), escriben la ruta de la DLL maliciosa en el subclaveInProcServer32, opcionalmente estableciendo un valorThreadingModela"Both"para satisfacer los requisitos de carga de COM. Después del registro, cualquier aplicación legítima que intente instanciar este objeto COM cargará la DLL controlada por el atacante, la cual puede invocar posteriormenterundll32.exe(T1218.009) para ejecutar una carga útil que contacte la infraestructura de C2 del atacante (T1584.001). -
Script de Prueba de Regresión:
# ------------------------------- # Simulación de Secuestro COM (T1546.015) # ------------------------------- $clsid = '{D9144DCD-E998-4ECA-AB6A-DCD83CCBA16D}' $regPath = "HKLM:SoftwareClassesCLSID$clsidInProcServer32" # Asegúrese de que la clave exista New-Item -Path $regPath -Force | Out-Null # Establezca el valor predeterminado en una ruta de DLL maliciosa (suponga que la DLL ya está en el disco) $maliciousDll = "C:Tempevil.dll" Set-ItemProperty -Path $regPath -Name '(Default)' -Value $maliciousDll # OPCIONAL: establecer ThreadingModel en Both (algunos objetos COM lo requieren) Set-ItemProperty -Path $regPath -Name 'ThreadingModel' -Value 'Both' Write-Host "[+] Secuestro de registro creado para CLSID $clsid apuntando a $maliciousDll" -
Comandos de Limpieza:
# ------------------------------- # Limpieza de Simulación de Secuestro COM # ------------------------------- $clsid = '{D9144DCD-E998-4ECA-AB6A-DCD83CCBA16D}' $regPath = "HKLM:SoftwareClassesCLSID$clsid" # Elimine todo el árbol de claves de CLSID if (Test-Path $regPath) { Remove-Item -Path $regPath -Recurse -Force Write-Host "[+] Secuestrado CLSID $clsid eliminado del registro." } else { Write-Host "[*] CLSID $clsid no presente; nada que limpiar." }