Shootback: herramienta para realizar un túnel TCP inverso

Shootback es una herramienta escrita en Python para realizar un túnel TCP inverso y permitir el acceso hacia una máquina detrás de un NAT o firewall.

Consume menos de 1% de CPU y 8MB de memoria con una concurrencia de 800 conexiones (sockets). El cliente (Slaver) es un único fichero que sólo tiene como dependencia la librería estándar de python(2.7/3.4+) .

Cómo funciona  


Escenarios típicos 

1 Acceder al equipo de una compañía/escuela (sin IP pública) desde casa
2 Hacer un sitio/red públicos
3 Facilitar la intrusión a una red privada
4 Ayudar a los participantes de un CTF offline
5 Conectarse a un dispositivo con una IP dinámica, como una ADSL doméstica

Comenzando a usarlo 

1. requisitos:
◦ Master: Python3.4+, independiente del SO
◦ Slaver: Python2.7/3.4+, independiente del SO
◦ no tiene dependencias externas, sólo las librerías estándar de python

2. descarga git clone https://github.com/aploium/shootback

3. (opcional) si necesitas un único fichero slaver.py, ejecuta python3 build_singlefile_slaver.py

4. ejecuta estos comandos

# master listen :10000 for slaver, :10080 for you
python3 master.py -m 0.0.0.0:10000 -c 127.0.0.1:10080

# slaver connect to master, and use example.com as tunnel target
# ps: you can use python2 in slaver, not only py3
python3 slaver.py -m 127.0.0.1:10000 -t example.com:80

# doing request to master
curl -v -H "host: example.com" 127.0.0.1:10080

5. un ejemplo más realista:

# slaver_local_ssh <---> slaver <--> master(22.33.44.55) <--> You

# ---- master ----
python3 master.py -m 0.0.0.0:10000 -c 0.0.0.0:10022

# ---- slaver ----
python(or python3) slaver.py -m 22.33.44.55:10000 -t 127.0.0.1:22

# ---- YOU ----
ssh 22.33.44.55 -p 10022

6. para más ayuda ver python3 master.py –help

y python3 slaver.py –help

Tips

1. ejecutar en modo daemon:

nohup python(or python3) slaver.py -m host:port -t host:port -q &
o:
# screen is a linux command
screen
python(or python3) slaver.py -m host:port -t host:port
# press  ctrl-a d  to detach screen
# and if necessary, use "screen -r" to reattach

2. CUALQUIER servicio que use TCP es “shootback-able”. HTTP/FTP/Proxy/SSH/VNC/…

3. shootback sólo hace la función de transmisión, no cifra ni hace de proxy, sin embargo se puede usar un proxy de terceros (ej. shadowsocks) en el slaver.

Por ejemplo:

shadowsocks_server–shootback_slaver–shootback_master–shadowsocks_client(socks5)

 Aviso 

1. En windows debido al límite de CPython select.select(), shootback no puede manejar más de 512 conexiones de forma concurrente, por lo que podrías encontrarte con el error:
ValueError: too many file descriptors in select()

2. Si necesitas mayor concurrencia en Windows se recomienda usar Anaconda-Python3 que aumenta el límite a 2048.
Fuente: https://github.com/aploium/shootback

#HackNic

Shadow77

Deja un comentario