SharpViewStateKing y la anatomía de un marco de implante sigiloso
Detection stack
- AIDR
- Alert
- ETL
- Query
Resumen
El Centro Canadiense de Ciberseguridad identificó SharpViewStateKing como un marco de implante modular diseñado para apuntar sigilosamente a entornos ASP.NET. Al abusar de los parámetros ViewState comprometidos, el marco ejecuta complementos completamente en memoria, lo que le permite operar de manera efectivamente sin estado y evadir la detección tradicional basada en archivos. Su tráfico HTTP y HTTPS encriptado ayuda aún más a que la actividad se mezcle con las comunicaciones web legítimas.
Investigación
La investigación comenzó después de que los analistas encontraran un web shell en un servidor Microsoft IIS expuesto al público. El examen de la telemetría del endpoint y la memoria de procesos mostró que el implante usó complementos C# generados dinámicamente para realizar acciones como la subida de archivos, la ejecución de comandos remotos y el reconocimiento del host. Los investigadores confiaron en la plataforma Assemblyline para descompilar el bytecode de C# y exponer la lógica interna del marco.
Mitigación
Los defensores deben reconstruir cualquier host potencialmente afectado y reemplazar las claves de encriptación y validación asociadas con aplicaciones ASP.NET. También es crítico parchear las vulnerabilidades relevantes, incluidas aquellas que afectan a SharePoint mencionadas en el informe. Monitorizar los procesos hijos lanzados por el IIS w3wp.exe puede ayudar a descubrir actividad no autorizada conectada al implante.
Respuesta
Si se identifica actividad de SharpViewStateKing, las organizaciones deben revisar la telemetría de EDR y NDR en busca de signos de movimiento lateral, incluyendo la creación de nuevas cuentas o el despliegue de herramientas como SoftEther VPN. Se deben considerar expuestas todas las contraseñas y credenciales vinculadas al sistema comprometido y cambiarlas inmediatamente. Los equipos de seguridad también deben confirmar si las exclusiones de Microsoft Defender fueron modificadas sin autorización.
Flujo de Ataque
Detecciones
Posible Actividad Remota de Impacket SecretDump (via zeek)
Vista
Posible Explotación de Servidor Web o WebApp [Windows] (via cmdline)
Vista
Modificación Sospechosa de Exclusiones de Defender via WMIC (via cmdline)
Vista
Posible Actividad de Impacket SecretDump (via audit)
Vista
Detección de Plugins de Ejecución Remota y Borrado de Rastro [Windows Sysmon]
Vista
Detectar Anomalías en Peticiones HTTP de SharpViewStateKing [Servidor web]
Vista
Detección de Ejecución de Comandos Sigilosos vía Ventanas Ocultas [Creación de Procesos de Windows]
Vista
Ejecución de Simulación
Prerequisito: La Verificación Previa de Telemetría y Línea de Base debe haber sido superada.
Fundamento: 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 las TTP identificadas y apuntar a generar la telemetría exacta esperada por la lógica de detección. Ejemplos abstractos o no relacionados llevarán a un diagnóstico incorrecto.
-
Narrativa del Ataque y Comandos: Un adversario ha identificado una aplicación ASP.NET vulnerable y planea desplegar el marco SharpViewStateKing para mantener la persistencia e interceptar datos de sesión. Para hacer esto, el atacante envía una serie de peticiones HTTP que utilizan los
__VIEWSTATEand__SCROLLPATHparámetros para entregar una carga útil de explotación. Al usar estos parámetros específicos, el atacante intenta mezclarse con el tráfico estándar de ASP.NET, esperando evadir la detección basada en firmas que solo busca rutas tradicionales de shells web. -
Script de Prueba de Regresión:
# Script de simulación para activar la regla de detección SharpViewStateKing $targetUri = "http://localhost/Login.aspx" # Payload 1: Probando la detección del parámetro __VIEWSTATE Write-Host "[*] Simulando intento de explotación con __VIEWSTATE..." $payload1 = "__VIEWSTATE=MZ................[Simulated_Malicious_Payload]" Invoke-WebRequest -Uri "$targetUri?$payload1" -Method Get # Payload 2: Probando la detección del parámetro __SCROLLPATH Write-Host "[*] Simulando intento de explotación con __SCROLLPATH..." $payload2 = "__SCROLLPATH=/etc/passwd" Invoke-WebRequest -Uri "$targetUri?$payload2" -Method Get Write-Host "[+] Simulación completa. Verificar SIEM por alertas." -
Comandos de Limpieza:
# No se requiere limpieza específica ya que estas son solicitudes HTTP GET sin estado. # Sin embargo, si se dejaron caer archivos durante un ataque real, deben eliminarse. Write-Host "[*] Limpieza de simulación: No se crearon artefactos persistentes."