# Análisis Técnico de Técnicas de Evasión y Ofuscación en PowerShell Utilizadas por Malware y Red Teams

- Link: https://binariocero.com/windows/analisis-tecnico-de-tecnicas-de-evasion-y-ofuscacion-en-powershell-utilizadas-por-malware-y-red-teams
- Published: 2025-11-26T16:36:04+01:00
- Author: Binario 0

![Loading](https://binariocero.com/wp-content/plugins/page-views-count/ajax-loader-
2x.gif)

PowerShell es una de las herramientas más potentes del ecosistema Windows. Su profunda
integración con el sistema operativo lo convierte tanto en una solución administrativa
esencial como en un vector de ataque ampliamente explotado por actores maliciosos
y equipos de Red Team.
Este artículo analiza varias técnicas habituales de **evasión,
ofuscación y extracción de información sensible**, con el objetivo de comprender
cómo operan y cómo pueden detectarse o mitigarse desde una perspectiva defensiva(
_Blue Team / SOC / DFIR_).

## **1. Manipulación de AMSI (Anti-Malware Scan Interface)**

**Ejemplo de técnica observada:**

    ```wp-block-code
    [Ref].Assembly.GetType('System.Management.Automation.AmsiUtils').GetField('amsiInitFailed','NonPublic,Static').SetValue($null,$true)
    ```

### ¿En qué consiste?

AMSI es una capa diseñada por Microsoft para que PowerShell y otras aplicaciones
puedan ser analizadas por motores antimalware en tiempo real.
Los atacantes intentan
deshabilitar AMSI para permitir la ejecución de código potencialmente malicioso 
sin ser inspeccionado.

La instrucción mostrada manipula el campo interno `amsiInitFailed`, obligando a 
PowerShell a asumir que AMSI falló y por tanto a **no realizar análisis**.

### Indicadores y mitigación:

 * **Monitorear eventos ETW/AMSI**, especialmente el evento `AmsiScanBuffer`.
 * **Bloqueo mediante AppLocker / WDAC** de PowerShell con firmas obligatorias.
 * **Activar PowerShell Constrained Language Mode**.
 * **SIEM**: alertar cuando se acceden clases internas como `AmsiUtils`.

## **2. Extracción de Credenciales con Mimikatz**

**Ejemplo aportado:**

    ```wp-block-code
    Invoke-Mimikatz -Command '"sekurlsa::logonpasswords"' | Out-File -FilePath C:\temp\logonpasswords.txt
    ```

### Funcionamiento

Mimikatz permite acceder a credenciales en texto claro desde la memoria (LSASS).

La técnica es usada por atacantes después de obtener privilegios elevados para:

 * Extraer contraseñas
 * Hashes NTLM
 * Tickets Kerberos

### Indicadores y mitigación:

 * **Monitorizar accesos a LSASS** (sysmon event 10).
 * Activar **Credential Guard**, que aísla LSASS.
 * Revisar creación de ficheros sospechosos con credenciales (`logonpasswords.txt`,
   dump files…).
 * Bloquear la ejecución de binarios no firmados mediante AppLocker/WDAC.

## **3. Ofuscación de Cadenas mediante Base64**

**Ejemplo:**

    ```wp-block-code
    $originalString = 'SensitiveCommand'
    $obfuscatedString = [Convert]::ToBase64String([System.Text.Encoding]::Unicode.GetBytes($originalString))
    $decodedString = [System.Text.Encoding]::Unicode.GetString([Convert]::FromBase64String($obfuscatedString))
    Invoke-Expression $decodedString
    ```

### ¿Por qué se usa?

La ofuscación con Base64 busca evadir detección en reglas YARA, EDR y firmas basadas
en cadenas.
Aunque la codificación Base64 **no es encriptación**, oculta la intención
del script.

### Detección:

 * Búsqueda de patrones como `FromBase64String`, `Invoke-Expression`, `IEX`.
 * Monitorizar ejecución repetida de pipelines de decodificación.
 * Reglas Sigma específicas para: _“Base64 encoded PowerShell commands”_.

## **4. Comando Alias como Técnica de Evasión**

**Ejemplo:**

    ```wp-block-code
    $alias = 'Get-Dir'
    Set-Alias -Name $alias -Value Get-ChildItem
    Invoke-Expression $alias
    ```

### Uso ofensivo

Crear alias puede ocultar comandos reales para evitar detección estática.
Un atacante
podría reemplazar funciones críticas como `Invoke-WebRequest`, `Get-Process` o incluso`
Invoke-Mimikatz`.

### Mitigación:

 * Registrar y auditar cambios de alias (`Set-Alias`, `New-Alias`).
 * Forzar perfiles de PowerShell bloqueados.
 * Deshabilitar perfiles de usuario en entornos críticos.

## **5. Ofuscación de Nombres de Variables**

**Ejemplo:**

    ```wp-block-code
    $o = 'Get'
    $b = 'Process'
    $cmd = $o + '-' + $b
    Invoke-Expression $cmd
    ```

### Finalidad

Dividir un comando en piezas evita que herramientas de análisis reconozcan patrones
habituales (“Get-Process”, “Get-ChildItem”, etc.).

### Detección:

 * Alertar si se usa concatenación + `Invoke-Expression`.
 * Análisis de comportamiento: observar qué comando resulta realmente ejecutado.

## **6. Ofuscación de Rutas de Archivos**

**Ejemplo:**

    ```wp-block-code
    $path = [System.Text.Encoding]::UTF8.GetString([System.Convert]::FromBase64String('QzpcVGVtcFxBZG1pblRvb2xz'))
    Invoke-Item $path
    ```

### Objetivo

Ocultar rutas hacia binarios o herramientas usadas en intrusiones, como:

 * Scripts de carga
 * Herramientas administrativas usadas de forma maliciosa
 * Payloads temporales

### Indicadores:

 * Rutas codificadas en Base64.
 * Accesos a carpetas sospechosas como `C:\Temp`, `C:\Users\Public`.

# **Conclusiones**

Las técnicas analizadas muestran cómo PowerShell puede ser manipulado para evadir
controles de seguridad y ejecutar acciones ofensivas. Comprender estas técnicas 
es esencial para que los equipos defensivos puedan:

 * Diseñar mejores reglas de detección
 * Fortalecer configuraciones de PowerShell
 * Identificar comportamientos anómalos
 * Implementar controles preventivos como WDAC, AppLocker o AMSI hardening

En entornos corporativos, se recomienda complementar estas medidas con:

 * **EDR con análisis de comportamiento**
 * **Limitación de PowerShell a usuarios específicos**
 * **Registro completo de transcripciones PowerShell (ScriptBlockLogging)**
 * **Revisión periódica de scripts y perfiles cargados por los usuarios**
