Skip to content

Proof of Concept que replica la técnica de evasión avanzada utilizada por APT35 (Charming Kitten) en su backdoor "PowerLess" (2021-2022).

Notifications You must be signed in to change notification settings

Kovax00/APT-Style-PowerShell

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

7 Commits
 
 
 
 

Repository files navigation

APT-Style-PowerShell

Proof of Concept que replica la técnica de evasión avanzada utilizada por APT35 (Charming Kitten) en su backdoor "PowerLess" (2021-2022). image

Descripción Técnica

Este proyecto demuestra la ejecución de comandos PowerShell sin iniciar el proceso powershell.exe, utilizando directamente la API de .NET System.Management.Automation.dll mediante código C++/CLI.

image

API Utilizada

Namespace principal:

System.Management.Automation

Componentes clave:

  • PowerShell.Create() - Inicializa el runspace de PowerShell
  • AddScript() - Agrega comandos al pipeline
  • Invoke() - Ejecuta el pipeline
  • Commands.Clear() - Limpia el pipeline después de cada ejecución
  • Streams.Error - Manejo de errores de PowerShell
  • Streams.Information/Warning/Verbose/Debug - Streams de salida

DLL Requerida

Assembly: System.Management.Automation.dll
Location: C:\Windows\Microsoft.NET\assembly\GAC_MSIL\System.Management.Automation\
Version: Compatible con .NET Framework 4.x+

El código carga dinámicamente esta DLL desde el GAC (Global Assembly Cache) sin requerir referencias estáticas en tiempo de compilación.

Análisis de Binarios para Inyección (Orquestador + API System.Management.Automation)

Binario Host Beneficios Técnicos y Evasión (Ventaja APT)
explorer.exe Es el objetivo principal. Al ser el proceso de la interfaz de usuario, siempre tiene actividad de red y carga muchas DLLs, lo que ayuda a ocultar la carga de System.Management.Automation.dll.
svchost.exe Los APTs lo utilizan para camuflar scripts que actúan como servicios persistentes o que realizan tareas de reconocimiento de red bajo la apariencia de servicios del sistema.
dllhost.exe / msiexec.exe Procesos que normalmente tienen una vida corta y realizan tareas de sistema; ideales para inyecciones rápidas que ejecutan un comando de PowerShell y desaparecen sin dejar rastro persistente.
RuntimeBroker.exe Utilizado frecuentemente para evadir sandboxing, ya que es un proceso con permisos específicos de aplicaciones que los EDR suelen monitorear con menos rigor que a los navegadores.
WmiPrvSE.exe Al inyectar aquí, el atacante puede hacer que la actividad de PowerShell parezca una tarea legítima de administración remota o gestión del sistema vía WMI.

Contexto APT

APT35 - PowerLess Backdoor (2021-2022)

Atribución: Islamic Revolutionary Guard Corps (IRGC), Irán

Técnica documentada:

  • Loader: PowerLessCLR.exe (aplicación .NET C++)
  • Decryptor: AES con clave hardcodeada
  • Payload: PowerShell code ejecutado en contexto .NET
  • Particularidad: NO spawns proceso powershell.exe

Descubierto por: Cybereason Nocturnus Team (Febrero 2022)

MITRE ATT&CK Mapping:

T1059.001 - Command and Scripting Interpreter: PowerShell
T1620    - Reflective Code Loading
T1027    - Obfuscated Files or Information

Implementación Técnica

Flujo de Ejecución

1. Aplicación C++/CLI inicia
   └─> Carga System.Management.Automation.dll desde GAC
       └─> Crea instancia de PowerShell via Reflection
           └─> Configura STA thread (requerido para clipboard/UI)
               └─> Loop interactivo
                   ├─> AddScript(comando_usuario)
                   ├─> Invoke()
                   ├─> Procesa streams (output, error, warning, etc.)
                   └─> Commands.Clear() (CRÍTICO para evitar estado corrupto)

Uso

🚨🚧 Importante USAR VM PARA CARGAR EL EXE (no contiene malware pero acostumbra las buenas practicas)

# Ejecutar el binario compilado
API-powershell-aptComand.exe

# Ejemplo de sesión
[NTPowerShell]
[OK] In-Memory

PS C:\Users\user> Get-Process | Where-Object {$_.CPU -gt 100}
PS C:\Users\user> whoami /priv
PS C:\Users\user> Get-ChildItem -Recurse -Filter *.txt
PS C:\Users\user> exit

Detección

SIGMA Rule: System.Management.Automation.dll cargada por proceso no-PowerShell

title: PowerShell Core DLL Loaded By Non PowerShell Process
id: 092bc4b9-3d1d-43b4-a6b4-8c8acd83522f
status: test
description: Detecta carga de System.Management.Automation.dll por procesos que no son powershell.exe
logsource:
    category: image_load
    product: windows
detection:
    selection:
        ImageLoaded|endswith: '\System.Management.Automation.dll'
    filter:
        Image|endswith:
            - '\powershell.exe'
            - '\powershell_ise.exe'
    condition: selection and not filter
falsepositives:
    - Aplicaciones legítimas que usan PowerShell API
    - Scripts de automatización empresarial
level: medium
tags:
    - attack.t1059.001
    - attack.execution

Sysmon Event ID 7 (ImageLoad)

Monitorear eventos de carga de DLL que incluyan:

7
System.Management.Automation.dll
C:\Path\To\Suspicious.exe

Contramedidas Recomendadas

PowerShell Logging:

# Habilitar Script Block Logging
Set-ItemProperty -Path "HKLM:\SOFTWARE\Policies\Microsoft\Windows\PowerShell\ScriptBlockLogging" `
                 -Name "EnableScriptBlockLogging" -Value 1

# Habilitar Module Logging
Set-ItemProperty -Path "HKLM:\SOFTWARE\Policies\Microsoft\Windows\PowerShell\ModuleLogging" `
                 -Name "EnableModuleLogging" -Value 1

# Habilitar Transcription
Set-ItemProperty -Path "HKLM:\SOFTWARE\Policies\Microsoft\Windows\PowerShell\Transcription" `
                 -Name "EnableTranscripting" -Value 1

Application Whitelisting:

  • Implementar políticas estrictas de ejecución de binarios
  • Monitorear carga de DLLs sensibles (no solo ejecución de procesos)
  • Utilizar EDR con capacidades de behavioral detection

Constrained Language Mode:

$ExecutionContext.SessionState.LanguageMode = "ConstrainedLanguage"

Nota: Este modo puede ser bypasseado en ciertos escenarios mediante técnicas de reflective loading.

Disclaimer Legal

SOLO PARA FINES EDUCATIVOS Y ETHICAL HACKING

Este proyecto es un Proof of Concept desarrollado exclusivamente para:

  • Investigación en ciberseguridad
  • Ejercicios de Red Team / Purple Team autorizados
  • Entrenamiento de equipos defensivos
  • Análisis de técnicas APT documentadas

Prohibiciones:

  • Uso en sistemas sin autorización explícita
  • Distribución con fines maliciosos
  • Implementación en entornos de producción sin consentimiento

El autor no se hace responsable del uso indebido de esta herramienta. El mal uso puede constituir delito bajo las leyes de ciberseguridad aplicables en su jurisdicción.

Referencias

Licencia

MIT License - Ver archivo LICENSE para detalles completos.


Desarrollado con fines educativos | APT Technique Research | Enero 2026

About

Proof of Concept que replica la técnica de evasión avanzada utilizada por APT35 (Charming Kitten) en su backdoor "PowerLess" (2021-2022).

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published