Qué es
La ofuscación reescribe un comando para que corra igual pero se escriba distinto. Así evade la detección que compara el texto literal del comando. El atacante ejecuta su herramienta sin disparar la alarma.
Cómo funciona
La detección por firmas compara el texto literal del comando con una lista de patrones malos. La ejecución solo depende del efecto, no de cómo se escribe. La ofuscación separa las dos cosas: cambia la forma, conserva el efecto. El intérprete rearma la cadena real en memoria justo antes de correr. Ese rearmado es el límite: AMSI y el registro de bloques de script leen el contenido ya descifrado.
Comandos
Ofuscar un script de PowerShell con Invoke-Obfuscation (menú interactivo):
Import-Module ./Invoke-Obfuscation.psd1
Invoke-ObfuscationSin menú, para automatizar. Imprime el comando ofuscado:
Invoke-Obfuscation -ScriptPath <FILE> -Command 'TOKEN\ALL\1' -QuietOfuscar sintaxis de cmd.exe con Invoke-DOSfuscation:
Import-Module ./Invoke-DOSfuscation.psd1
Invoke-DOSfuscationCodificar un comando como Base64 y correrlo. PowerShell espera UTF-16LE:
$b64 = [Convert]::ToBase64String([Text.Encoding]::Unicode.GetBytes('<CMD>'))
powershell -enc $b64Decodificar y ejecutar en memoria con IEX:
IEX ([Text.Encoding]::Unicode.GetString([Convert]::FromBase64String('<BASE64>')))El mismo patrón en Linux:
base64 -d <<< '<BASE64>' | bashTrucos de cadena. La shell no distingue mayúsculas y rearma el nombre al ejecutar:
# Concatenación: ningún token dice el nombre prohibido
& ('Inv' + 'oke-Expression') '<CMD>'
# Inversión: se guarda al revés y se rearma en tiempo de ejecución
$r = 'noisserpxE-ekovnI'
& ($r[-1..-$r.Length] -join '') '<CMD>'Cómo defenderse
Usa EDR por comportamiento con AMSI activo: inspecciona el contenido ya descifrado en memoria, donde la ofuscación no protege.