Evasión de defensas (AMSI / AV / EDR)
Conseguir ejecución es solo la mitad: en un Windows moderno hay tres capas vigilando. AMSI inspecciona scripts (PowerShell, VBA, JScript) justo antes de ejecutarse; el AV (Defender) escanea ficheros y comportamiento con firmas y heurística; el EDR engancha llamadas (user-land hooks, ETW, kernel callbacks) para ver qué hace tu proceso en tiempo real. Evadir es hacer que tu código no sea visto, no sea reconocido, o no sea entendido por cada capa.
Modelo de amenaza
Sección titulada «Modelo de amenaza»Cada capa tiene un punto ciego. AMSI corre en tu propio proceso → si lo neutralizas en memoria, deja de ver nada. El AV se basa en firmas → cambia la firma (ofusca) y en bytes no reconoce. El EDR engancha APIs en user-land → si evitas esas APIs o deshaces el hook, pierde visibilidad. La evasión no es magia: es conocer dónde mira cada defensa y pasar por el hueco.
Red Team
Sección titulada «Red Team»AMSI es la prioridad al usar PowerShell/.NET en memoria. Vectores:
- Patch en memoria de
AmsiScanBuffer: parchear la función enamsi.dlldentro de tu proceso para que siempre devuelva “limpio” (AMSI_RESULT_CLEAN). Es el método dominante. - Romper la inicialización (
amsiInitFailed) para que el escaneo no arranque. - Ofuscar/fragmentar el script para que la firma no case (renombrar variables, concatenar cadenas, codificar).
- Usar un runspace .NET que no cargue AMSI, o versiones/hosts sin AMSI.
# patrón conceptual (no una firma lista para pegar):# 1) localizar amsi.dll!AmsiScanBuffer en el proceso# 2) cambiar protección de memoria (VirtualProtect) a RWX# 3) escribir un stub que retorne E_INVALIDARG / CLEAN# 4) restaurar protecciónAV (firmas)
Sección titulada «AV (firmas)»- Ofuscación de payloads (packers, cifrado, renombrado) para romper firmas estáticas.
- Shellcode encriptado descifrado solo en runtime; evita tocar disco (ejecución en memoria).
- Firmar binarios, usar LOLBins (binarios legítimos del SO) para no introducir ejecutables propios.
EDR (hooks, ETW, telemetría)
Sección titulada «EDR (hooks, ETW, telemetría)»- Unhooking: restaurar los bytes originales de
ntdll.dll(recargar una copia limpia desde disco) para quitar los hooks user-land del EDR. - Direct syscalls / indirect syscalls (Hell’s Gate, Halo’s Gate, SysWhispers): invocar las syscalls saltándote las APIs enganchadas.
- ETW patching: parchear
EtwEventWritepara cegar la telemetría de .NET/PowerShell. - Process injection sigilosa (process hollowing, module stomping, APC) y BYOVD para matar el EDR desde kernel.
- Living off the land: minimizar binarios propios; usar
rundll32,regsvr32,mshta,wmic,msbuild(LOLBins) y cargas fileless.
Execution Policy (no es seguridad)
Sección titulada «Execution Policy (no es seguridad)»La PowerShell Execution Policy no es un control de seguridad; se salta trivialmente (-ep bypass, -enc, pipe por stdin, leer y IEX). No cuenta como evasión real, pero conviene saberlo.
Herramientas
Sección titulada «Herramientas»- AMSI.fail, amsi-bypass scripts, Invoke-Obfuscation — AMSI y ofuscación.
- ScareCrow, Donut, Freeze, NimPackt — generación de loaders/shellcode evasivos.
- SysWhispers2/3, Hell’s Gate/Halo’s Gate — direct/indirect syscalls.
- SharpUnhooker, ThreatCheck, DefenderCheck — unhooking y encontrar qué byte dispara la firma.
Impacto
Sección titulada «Impacto»Ejecutar herramientas ofensivas (mimikatz, Rubeus, BloodHound) sin que AV/EDR las detecte, mantener C2 estable y cegar la telemetría que delataría la intrusión. Es habilitador de todo lo demás en post-explotación.
Blue Team
Sección titulada «Blue Team»Detección
Sección titulada «Detección»- Patrones de AMSI bypass (accesos a
amsi.dll,VirtualProtectsobreAmsiScanBuffer) y de ETW patching (EtwEventWrite). - Unhooking: lecturas de
ntdll.dlldesde disco y reescritura de su.texten memoria. - Syscalls directas (llamadas que no pasan por los hooks esperados), process injection (CreateRemoteThread, APC, hollowing).
- Uso de LOLBins con líneas de comando anómalas; cargas fileless.
Telemetría
Sección titulada «Telemetría»- Script Block Logging (4104) captura el script tras desofuscar → clave contra PowerShell ofuscado.
- ETW (Threat Intelligence provider, kernel callbacks) resiste parte del user-land tampering.
- Sysmon 7 (image load de
amsi.dll/clr.dll), 8 (CreateRemoteThread), 10 (process access), 25 (process tampering).
Hardening
Sección titulada «Hardening»- Defender ASR rules, Credential Guard, HVCI y WDAC/AppLocker (allowlist corta LOLBins y loaders).
- PowerShell Constrained Language Mode + Script Block Logging + transcription.
- Driver Blocklist de Microsoft contra BYOVD; EDR con protección anti-tamper.
- Mantén las defensas en kernel (ETW-TI, callbacks) donde el user-land tampering no llega; segmenta y limita qué hosts ejecutan scripts.
Respuesta
Sección titulada «Respuesta»Si se detecta evasión, asume que el EDR pudo quedar ciego un tiempo: caza fuera de banda (telemetría de red, logs centralizados), reconstruye el host, rota credenciales y revisa persistencia que el EDR no vio.
CVEs y casos reales
Sección titulada «CVEs y casos reales»- Las técnicas de AMSI/ETW patching y unhooking son TTPs estándar de red teams y de APT (MITRE T1562.001 Impair Defenses, T1055 Process Injection, T1620 Reflective Loading).
- BYOVD para matar EDR: campañas de BlackByte, LockBit, Scattered Spider usando drivers vulnerables firmados.
- CVE-2021-21551 (Dell dbutil) y RTCore64 (MSI Afterburner) entre los drivers más abusados para deshabilitar defensas.
- Defender ha endurecido AMSI repetidamente; los bypasses viven en un ciclo constante de parche-evasión.
Checklist de prueba
Sección titulada «Checklist de prueba»- ¿AMSI activo? ¿bypass en memoria (
AmsiScanBuffer) funciona? - ¿El payload ofuscado/cifrado evade las firmas estáticas? (ThreatCheck)
- ¿EDR engancha user-land? ¿unhooking o syscalls directas lo evaden?
- ¿ETW patching ciega la telemetría de .NET/PowerShell?
- ¿Se puede operar fileless / con LOLBins sin introducir binarios?
- ¿Hay driver vulnerable cargable (BYOVD) para tumbar el EDR?
- Blue: ¿Script Block Logging captura el script desofuscado?
- ¿ASR/WDAC/Constrained Language Mode activos?