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-ByteArrayque toma una lista de números (bytes) y los reconstruye en texto.El Resultado: La variable
$LUNAse 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 deInvoke-Expression).Ejecución: En el bucle
while, cuando el script recibe un comando tuyo ($v), no usaiex $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
$vusando el aliasLaindependencia...(que en realidad esiex)".
Resumen del Flujo de Ejecución
Conexión: Se conecta a tu IP y Puerto (
$LUNA($p,Tu-Puerto)).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