
Micro-postmortem reproducible de incidente para Microsoft SharePoint local "ToolShell" (CVE-2025-53770): instantánea ATT&CK, tabla de "registros que importan", tres búsquedas (KQL/SPL/Sigma), comunicaciones de las primeras 4 horas, datos de muestra y figuras. Diseñado para triaje rápido; sin datos de la organización; SharePoint Online fuera de alcance.
Este kit realiza el triaje de la campaña de día cero “ToolShell” de mediados de 2025 contra Microsoft SharePoint Server local (on-premises); SharePoint Online queda fuera de alcance. Proporciona búsquedas (hunts), comunicaciones y figuras reproducibles de extremo a extremo sin depender de datos externos.
Por qué existe este repositorio: acelerar el triaje de los analistas con detecciones reproducibles y comunicaciones ejecutivas alineadas.
Técnicas destacadas: T1190 (Exploit Public-Facing Application), T1059.001 (PowerShell), T1505.003 (Web Shell), T1078 (Valid Accounts), T1027 (Obfuscated/Complicated Files), T1003 (OS Credential Dumping), T1082 (System Information Discovery), T1021 (Remote Services), T1071 (Application Layer Protocol), T1567 (Exfiltration Over Web Services).

hunts/w3wp_powershell_encodedcommand.kql · SPL · Sigma: Detecta PowerShell codificado generado desde el worker de IIS.hunts/sharepoint_webshell_filecreate.kql · SPL · Sigma: Identifica archivos .aspx inesperados dentro de las raíces web de SharePoint.hunts/dns_newly_seen_post_iis_anomaly.kql · · : Revela dominios DNS de baja prevalencia tras anomalías de IIS y procesos hijo de IIS sospechosos.samples/example_events.json para ver entradas representativas de Seguridad de Windows 4688, Sysmon 11 y DNS alineadas con cada búsqueda (incluye ruido benigno).Account de la cuenta de servicio del grupo de aplicaciones, CommandLine que contiene -enc, con 3 coincidencias maliciosas y 1 nota de script de administración benigno..aspx bajo \inetpub\wwwroot\wss\VirtualDirectories\80\Layouts\ durante la hora del ataque y una entrada de despliegue benigna.cdn-msupdate.example, toolshare-sync.example vinculados a la IP del host de IIS con <5 consultas totales en 24h, más un dominio CDN corporativo benigno ignorado por los umbrales.comms/first_4h.md para ver plantillas listas para enviar y marcadores de posición.figures/decision-tree.png refleja la lógica ASCII del paquete de comunicaciones.Investigación de proveedores:
index=*, SecurityEvent, Sysmon) para que coincidan con los modelos de datos locales (por ejemplo, m365:security, wineventlog).Account, ClientIP, TargetFilename) con alias específicos del entorno o esquemas normalizados (por ejemplo, user, ip_src, file_path).ago(24h) o las ventanas más tempranas para que coincidan con la retención de la flota y la latencia de detección.| Fase | Señal | Fuente de registro | Campos clave | Patrón de ejemplo |
|---|
| Capa web/IIS | Blobs __VIEWSTATE de gran tamaño, POST inusuales a /_layouts/*, UA poco comunes, ráfagas de 500/404 | Registros IIS/W3C, ULS de SharePoint | cs-uri-stem, cs-useragent, sc-status, longitud del payload | Picos de cuerpos POST grandes seguidos de errores 500 |
| Ejecución de procesos | w3wp.exe -> cmd.exe -> powershell.exe con -enc o -EncodedCommand | Seguridad de Windows 4688 | ParentProcessName, NewProcessName, CommandLine, Account | C:\Windows\System32\inetsrv\w3wp.exe generando PowerShell con un payload codificado |
| Creación de archivos/webshell | Colocación inesperada de .aspx en \inetpub\wwwroot\wss\... o \_layouts\... | Sysmon 11 / Fuentes de integridad de archivos | TargetFilename, Image, Hashes | Nuevo .aspx en \inetpub\wwwroot\wss\VirtualDirectories\80\App_Data\ |
| Identidad/token | Emisión anómala de sesiones, acciones de administración atribuidas a cuentas de servicio | ULS de SharePoint, registros de AD FS | User, ClientIP, CorrelationId, claims del token | Cuenta de servicio que emite múltiples tokens de alto privilegio |
| DNS/Proxy | Dominios de baja prevalencia recién vistos tras anomalías de IIS | Registros de DNS, proxy y firewall | query, src_ip, count, puntuaciones de prevalencia | Dominio visto por primera vez que se resuelve poco después de la ejecución de PowerShell |