
a reverse TCP tunnel ti permette di accedere al target dietro NAT o firewall
shootback è un tunnel TCP inverso che permette di accedere a target dietro NAT o firewall
反向TCP隧道, 使得NAT或防火墙后的内网机器可以被外网访问.
Consuma meno dell'1% di CPU e 8 MB di memoria con 800 connessioni concorrenti.
slaver è un singolo file e dipende solo dalla libreria standard di Python (2.7/3.4+).

Requisiti:
Scaricare git clone https://github.com/aploium/shootback
(opzionale) Se serve un singolo file slaver.py, esegui python3 build_singlefile_slaver.py
Esegui questi comandi:
# master in ascolto su :10000 per slaver, :10080 per te
python3 master.py -m 0.0.0.0:10000 -c 127.0.0.1:10080
# slaver si connette al master e usa example.com come target del tunnel
# ps: puoi usare python2 su slaver, non solo py3
python3 slaver.py -m 127.0.0.1:10000 -t example.com:80
# effettua una richiesta al master
curl -v -H "host: example.com" 127.0.0.1:10080
# -- qualche contenuto HTML da example.com --
# -- qualche contenuto HTML da example.com --
# -- qualche contenuto HTML da example.com --
Un esempio più realistico (con SSL):
supponendo che il master sia 22.33.44.55 (come nel grafico sopra)
# slaver_local_ssh <---> slaver <--[SSL]--> master(22.33.44.55) <--> Tu
# ---- master ----
python3 master.py -m 0.0.0.0:10000 -c 0.0.0.0:10022 --ssl
# ---- slaver ----
# ps: l'opzione `--ssl` è per la crittografia slaver-master, non per SSH
python(or python3) slaver.py -m 22.33.44.55:10000 -t 127.0.0.1:22 --ssl
# ---- TU ----
ssh 22.33.44.55 -p 10022
Per ulteriore aiuto, consulta python3 master.py --help e python3 slaver.py --help
Esecuzione in demone:
nohup python(or python3) slaver.py -m host:port -t host:port -q &
oppure:
# screen è un comando linux
screen
python(or python3) slaver.py -m host:port -t host:port
# premi ctrl-a d per staccare screen
# e se necessario, usa "screen -r" per ricollegarti
Qualsiasi servizio basato su TCP è utilizzabile con shootback. HTTP/FTP/Proxy/SSH/VNC/...
shootback si occupa solo della trasmissione, non gestisce crittografia o proxy.
Puoi comunque usare un proxy di terze parti (es: shadowsocks) come target slaver.
Per esempio:
shadowsocks_server<-->shootback_slaver<-->shootback_master<-->shadowsocks_client(socks5)
select.select(),
shootback non può gestire più di 512 connessioni concorrenti. Potresti incontrareValueError: too many file descriptors in select()