> For the complete documentation index, see [llms.txt](https://hack.jesssperez.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://hack.jesssperez.com/network+hacking/pivoting.md).

# Pivoting

## IP Routing:

### Función Integrada

```bash
ip route add <IP/range> via <gateway>
route # comprobar nuevas rutas
```

### Metasploit

```bash
ip addr / ifconfig # check nuevas IPs
ping -c 1 <nuevaIP> # check acceso
route add <nuevaIP> # Añade route
route print # comprueba
```

## Port Forwarding:

Diferentes técnicas de redireccionamiento de puertos que permiten utilizar una máquina comprometida como "máquina de salto" para pivotar a otras máquinas.

### SSH Local Port Forwarding

{% code title="Redirigir puerto comprometido a puerto atacante" %}

```bash
ssh <username>@<ip-a> -L *:<port>:127.0.0.1:<port> -N
```

{% endcode %}

{% code title="Regla de firewall para conexiones al puerto abierto (necesita admin privs)" overflow="wrap" %}

```bash
netsh advfirewall firewall add rule name="<name>" dir=in action=allow protocol=TCP localport=<port>
```

{% endcode %}

### SSH Remote Port Forwarding

{% code title="Abrir puerto comprometido y redirigir tráfico a puerto objetivo" %}

```bash
ssh <username>@<ip-a> -R <port>:<target-ip>:<port> -N
# ssh user@ip-a -> PC comprometido se conecta por ssh
# -R port:ip:port -> tunel entre dos puertos
# -N -> no se ejecutan comandos, solo se mantiene el tunel
```

{% endcode %}

{% code title="Conexión por RDP a máquina objetivo mediante IP local" %}

```bash
xfreerdp /v:127.0.0.1 /u:<username> /p:<pass>
```

{% endcode %}

### Port Forwarding con Socat

Para situaciones en las que SSH no está disponible podemos utiliazr la herramienta de Socat, pero antes se debe trasnferir el binario a la máquina de salto.

**LOCAL PORT FORWARDING**

{% code title="Abrir puerto comprometido y redirigir tráfico a puerto atacante" %}

```bash
socat TCP4-LISTEN:<port>,fork TCP4:<ip-a>:<port>
```

{% endcode %}

{% code title="Regla de firewall para conexiones al puerto abierto (necesita admin privs)" overflow="wrap" %}

```bash
netsh advfirewall firewall add rule name="<name>" dir=in action=allow protocol=TCP localport=<port>
```

{% endcode %}

**REMOTE PORT FORWARDING**

{% code title="Abrir puerto comprometido y redirigir tráfico a puerto objetivo" %}

```bash
socat TCP4-LISTEN:<port>,fork TCP4:<target-ip>:<port>
```

{% endcode %}

### Dynamic Port Forwading con SOCKS

**REDIRECCIONAMIENTO DE PUERTOS DINÁMICO INVERSO**

{% code title="Redirigir tráfico por túnel SSH hacia máquina atacante" %}

```bash
ssh <username>@<ip-a> -R <port> -N
```

{% endcode %}

{% code title="Configurar puerto adecuado en /etc/proxychains.conf" %}

```bash
[ProxyList]
socks4  127.0.0.1 <R-port>
```

{% endcode %}

{% code title="Ejecución de comando a través del proxy SOCKS con proxychains" %}

```bash
proxychains curl https://<url.com>
```

{% endcode %}

### Ligolo

{% content-ref url="/pages/t0kjMaVb3LzgJpAbbV1h" %}
[Ligolo](/network+hacking/pivoting/ligolo.md)
{% endcontent-ref %}

### Chisel

{% content-ref url="/pages/h2v01voZ7rLyw8VCYBJu" %}
[Chisel](/network+hacking/pivoting/chisel.md)
{% endcontent-ref %}
