Hacker La Red OscuraHacker La Red Oscura

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:

[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:

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:

$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:

$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:

$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:

$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