Glosario
Comando codificado (-EncodedCommand)
Parámetro de PowerShell que recibe en Base64 el texto UTF-16LE de un comando, para pasar scripts que sobreviven al entrecomillado y ocultar la intención.
-EncodedCommand es un parámetro de powershell.exe (y de pwsh) que ejecuta un comando proporcionado como Base64 de sus bytes UTF-16LE. A menudo se abrevia como -enc o -e. Su finalidad legítima es pasar un comando con comillas, llaves o saltos de línea a través de otro shell o de una herramienta de administración sin que se altere. Esa misma propiedad lo convierte en la forma más habitual de ocultar una línea de comando maliciosa a quien echa un vistazo rápido a la línea de comandos de un proceso.
Por qué importa en una investigación
Un comando codificado no es malicioso por sí mismo, pero es poco frecuente en la administración tecleada a mano y habitual en los lanzadores de malware, por lo que merece revisarse siempre. Dónde lo verá depende del artefacto: el Script Block Logging suele registrar el bloque después de decodificarlo, mientras que la línea de comandos de los eventos 400 y 800 del registro clásico, el historial de PSReadLine y las transcripciones conservan la forma codificada, así que allí tendrá que decodificarlo.
La decodificación es una operación puramente textual: se decodifica el argumento en Base64 y después se leen los bytes como UTF-16LE. Nunca ejecuta el comando. El resultado suele ser otra capa, como un flujo gzip o deflate, códigos [char], concatenación de cadenas o el operador de formato -f, cada una de las cuales también puede revertirse como texto.
Ejemplo
Un lanzador típico registrado en el campo HostApplication de un evento 400:
powershell.exe -nop -w hidden -enc VwByAGkAdABlAC0ATwB1AHQAcAB1AHQAIAAnAHMAeQBuAHQAaABlAHQAaQBjACAAcwBhAG0AcABsAGUAJwA=
Se decodifica como Write-Output 'synthetic sample'. Observe los caracteres A repetidos en el Base64: proceden del byte alto a cero de cada carácter ASCII en UTF-16LE y son una pista visual rápida. El parser decodifica el argumento, muestra cada capa y señala además la ventana oculta que lo acompaña.
Términos relacionados
- Download cradle, la carga útil que más a menudo se oculta de esta forma
- Invoke-Expression (IEX), que ejecuta las cadenas decodificadas
- Omisión de la directiva de ejecución, normalmente en la misma línea de comandos
- Registro clásico de Windows PowerShell, donde queda registrada la línea de comandos codificada
Pegue un comando codificado en la vista de desofuscación del PowerShell Parser y lea cómo decodificar comandos codificados y la ofuscación para conocer cada capa en detalle.