RCA.ps1

Reverse Shell Ofuscada en PowerShell

Análisis del payload:

El código analizado es una Reverse Shell TCP escrita en PowerShell, diseñada específicamente con técnicas de ofuscación para evadir la detección de antivirus (AV) y sistemas de detección de endpoints (EDR). A diferencia de una shell simple de una línea, este script oculta sus intenciones mediante la manipulación de cadenas y alias dinámicos.

A continuación, desglosamos sus tres componentes principales:

1. Evasión de Firmas Estáticas (El método ConvertFrom-ByteArray)

Los antivirus modernos buscan cadenas de texto peligrosas conocidas (como System.Net.Sockets.TcpClient). Para evitar esto, el script nunca escribe esa clase en texto plano.

  • La Técnica: Define una función auxiliar ConvertFrom-ByteArray que toma una lista de números (bytes) y los reconstruye en texto.

  • El Resultado: La variable $LUNA se construye a partir del array (83,121,115,...). Si conviertes esos números a ASCII, obtienes la cadena "System.Net.Sockets.TcpClient". De esta forma, el script carga la clase de red .NET necesaria para la conexión sin alertar a los escáneres estáticos.

2. Recolección de Inteligencia (Reconnaissance)

Antes de establecer la conexión persistente, el script realiza un inventario rápido del sistema víctima utilizando consultas WMI (Get-WmiObject):

  • Objetivo: Recopila el Sistema Operativo, Versión, Arquitectura (x64/x86), Directorio de Windows y, crucialmente, intenta detectar qué Antivirus está instalado (consultando root/SecurityCenter2).

  • Exfiltración: Toda esta información se empaqueta en una cabecera HTTP falsa (GET /index.html...) para que el tráfico inicial parezca una navegación web legítima ante ojos de un firewall básico.

3. Ofuscación de Ejecución (El texto de la "Independencia de Colombia")

Esta es la parte más ingeniosa del script. Verás un párrafo largo y sin espacios sobre la historia de Colombia ($r). Esto no es un comentario, es una herramienta de camuflaje.

  • Creación de Alias: La línea Set-Alias $r (...) toma ese texto largo y lo convierte en un alias (un nombre alternativo) para un comando del sistema.

  • La Matemática Oculta: Mediante operaciones con índices (como $r[$true-11]), el script extrae letras específicas de ese texto para formar la palabra "iex" (abreviatura de Invoke-Expression).

  • Ejecución: En el bucle while, cuando el script recibe un comando tuyo ($v), no usa iex $v (lo cual sería detectado inmediatamente por el AV). En su lugar, llama a la variable larga:

    PowerShell

    Para PowerShell, esto significa "Ejecuta el comando contenido en $v usando el alias Laindependencia... (que en realidad es iex)".

Resumen del Flujo de Ejecución

  1. Conexión: Se conecta a tu IP y Puerto ($LUNA($p,Tu-Puerto)).

  2. Bucle Infinito:

    • Lee los bytes que envías desde tu listener (netcat).

    • Los decodifica a texto.

    • Los ejecuta usando el alias ofuscado.

    • Envía el resultado de vuelta por el mismo túnel TCP.

Este payload se usa en la máquina Relevant de THM