Parte: 6 — Análisis de malware · Fuente: Learning Malware Analysis (Monnappa) y MITRE ATT&CK ⏱️ Duración estimada: 110 min · Nivel: Intermedio
Desofuscar y entender malware basado en scripts, hoy dominante en las primeras etapas de intrusión: PowerShell, JScript/JavaScript (WSH), HTA y VBScript. El alumno aprenderá a deshacer capas de ofuscación, reconocer patrones de descarga e inyección en memoria, y usar el logging del propio sistema para reconstruir lo que el script hizo.
Al finalizar, el alumno podrá:
| # | Tema | Por qué importa |
|---|---|---|
| 1 | Por qué scripts: LOLBins y evasión | Sin binario en disco, menos detección |
| 2 | Ofuscación en PowerShell | Base64, formato, alias, IEX |
| 3 | Reflective loading e inyección | Ejecuta payloads en memoria |
| 4 | JScript/HTA/VBScript (WSH) | Vectores de entrega clásicos |
| 5 | Logging y AMSI | Defensas que ayudan al analista |
| 6 | Desofuscación segura | Sin ejecutar el código malicioso |
| 7 | Extracción de IOCs y TTPs | Detección posterior |
Invoke).⚠️ Nota ética y de seguridad: desofusca sin ejecutar el código. Sustituye
IEX/evalpor impresión en pantalla y trabaja en la VM aislada. Ejecutar el script para "ver qué hace" puede detonar la infección real; usa logging y análisis estático primero.
PowerShell ofuscado:
-enc (base64 UTF-16LE), -join, [char], (backticks), Replace, Format.From Base64 + Decode text UTF-16LE).IEX final por Write-Output para revelar la siguiente capa sin ejecutarla. Repite hasta el código limpio.Net.WebClient.DownloadString, Reflection.Assembly, shellcode en [Byte[]], VirtualAlloc/CreateThread (inyección).JScript/HTA:
js-beautify y analiza con box-js (que emula WSH y registra las llamadas) para capturar URLs y comandos sin ejecutarlo de verdad.T1059.001 PowerShell, T1059.007 JavaScript).box-js sobre un JScript y extrae la URL de segunda etapa.IEX en Write-Output y justifica por qué es más seguro.Desofusca un script malicioso (PowerShell o JScript) hasta su forma legible y entrega la cadena de ejecución con la URL/payload de segunda etapa y los IOCs, sin haberlo ejecutado. Criterio de aceptación: muestras el código final desofuscado y explicas cada capa de ofuscación deshecha, con al menos un IOC (URL/comando) verificado en el lab vía INetSim.
| Síntoma / mensaje | Causa y cómo arreglar |
|---|---|
| Ejecutar el script "para ver" | Detona la infección; desofusca estáticamente o con box-js |
| Base64 da basura | Es UTF-16LE; ajusta el decode en CyberChef |
| Sin ScriptBlock logs | No estaba activado; habilítalo por GPO antes de detonar en lab |
| box-js no resuelve la URL | Emulación incompleta; combina con lectura manual |
| Perder capas de ofuscación | Ve capa por capa reemplazando el ejecutor por print |
❓ ¿Por qué tanto malware en PowerShell? Está firmado y preinstalado (LOLBin), ejecuta en memoria y ofusca fácilmente, reduciendo la detección basada en archivos.
❓ ¿AMSI lo detiene todo? No; existen técnicas de bypass. Aun así, AMSI y el ScriptBlock Logging entregan al defensor el contenido desofuscado, muy útil para el análisis.
❓ ¿Puedo confiar en box-js? Es una gran ayuda para JScript, pero emula un subconjunto; complementa siempre con lectura manual del código.
Clase 152 — Análisis de documentos maliciosos: macros y PDF