From d0cebe2aaeb77ab88c0ea5de6d58ad04ce6efc19 Mon Sep 17 00:00:00 2001 From: Celesian <39219175+c3l3si4n@users.noreply.github.com> Date: Tue, 26 Jul 2022 22:06:03 +0000 Subject: [PATCH 1/6] Update README.md --- README.md | 48 ++++++++++++++++++++++++++++++------------------ 1 file changed, 30 insertions(+), 18 deletions(-) diff --git a/README.md b/README.md index bf2449d..1748acb 100644 --- a/README.md +++ b/README.md @@ -65,28 +65,40 @@ $ cat /etc/proxychains.conf socks5 127.0.0.1 1080 ... +## Example #3 - Send traffic through Tor Stream Isolation tunnels +~~~bash +# Configure proxychains +$ cat /etc/proxychains.conf +... +socks4 127.0.0.1 1080 +... + + # Start TREVORproxy -$ trevorproxy ssh root@1.2.3.4 root@4.3.2.1 -[DEBUG] Opening SSH connection to root@1.2.3.4 -[DEBUG] /usr/bin/ssh root@1.2.3.4 -D 32482 -o StrictHostKeychecking=no -[DEBUG] Opening SSH connection to root@4.3.2.1 -[DEBUG] /usr/bin/ssh root@4.3.2.1 -D 32483 -o StrictHostKeychecking=no -[DEBUG] Waiting for /usr/bin/ssh root@1.2.3.4 -D 32482 -o StrictHostKeychecking=no -[DEBUG] Waiting for /usr/bin/ssh root@4.3.2.1 -D 32483 -o StrictHostKeychecking=no +$ trevorproxy tor +[INFO] Sleeping 5 seconds to make sure Tor is properly initialized [DEBUG] Creating iptables rules -[DEBUG] iptables -A OUTPUT -t nat -d 127.0.0.1 -o lo -p tcp --dport 1080 -j DNAT --to-destination 127.0.0.1:32482 -m statistic --mode nth --every 2 --packet 0 -[DEBUG] iptables -A OUTPUT -t nat -d 127.0.0.1 -o lo -p tcp --dport 1080 -j DNAT --to-destination 127.0.0.1:32483 +[DEBUG] sudo iptables -A OUTPUT -t nat -d 127.0.0.1 -o lo -p tcp --dport 1080 -j DNAT --to-destination 127.0.0.1:32482 -m statistic --mode nth --every 5 --packet 0 +[DEBUG] sudo iptables -A OUTPUT -t nat -d 127.0.0.1 -o lo -p tcp --dport 1080 -j DNAT --to-destination 127.0.0.1:32483 -m statistic --mode nth --every 4 --packet 0 +[DEBUG] sudo iptables -A OUTPUT -t nat -d 127.0.0.1 -o lo -p tcp --dport 1080 -j DNAT --to-destination 127.0.0.1:32484 -m statistic --mode nth --every 3 --packet 0 +[DEBUG] sudo iptables -A OUTPUT -t nat -d 127.0.0.1 -o lo -p tcp --dport 1080 -j DNAT --to-destination 127.0.0.1:32485 -m statistic --mode nth --every 2 --packet 0 +[DEBUG] sudo iptables -A OUTPUT -t nat -d 127.0.0.1 -o lo -p tcp --dport 1080 -j DNAT --to-destination 127.0.0.1:32486 [INFO] Listening on socks5://127.0.0.1:1080 # Test SOCKS proxy -$ proxychains curl ifconfig.me -1.2.3.4 -$ proxychains curl ifconfig.me -4.3.2.1 -$ proxychains curl ifconfig.me -1.2.3.4 -$ proxychains curl ifconfig.me -4.3.2.1 +$ proxychains -q curl ifconfig.me +103.251.167.21 + +$ proxychains -q curl ifconfig.me +185.220.101.14 + +$ proxychains -q curl ifconfig.me +185.220.100.241 + +$ proxychains -q curl ifconfig.me +5.45.98.12 + +$ ~~~ ## CLI Usage @@ -141,4 +153,4 @@ optional arguments: ![trevor](https://user-images.githubusercontent.com/20261699/92336575-27071380-f070-11ea-8dd4-5ba42c7d04b7.jpeg) -`#trevorforget` \ No newline at end of file +`#trevorforget` From 482211540b948b0857f49e4a2363c14b311dc359 Mon Sep 17 00:00:00 2001 From: Celesian <39219175+c3l3si4n@users.noreply.github.com> Date: Tue, 26 Jul 2022 22:07:00 +0000 Subject: [PATCH 2/6] Update README.md --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index 1748acb..eedebdc 100644 --- a/README.md +++ b/README.md @@ -65,6 +65,8 @@ $ cat /etc/proxychains.conf socks5 127.0.0.1 1080 ... +~~~ + ## Example #3 - Send traffic through Tor Stream Isolation tunnels ~~~bash # Configure proxychains From 58baef1e2f6baeeed00316d82e47bc788193b0c9 Mon Sep 17 00:00:00 2001 From: Celesian <39219175+c3l3si4n@users.noreply.github.com> Date: Tue, 26 Jul 2022 22:09:04 +0000 Subject: [PATCH 3/6] Update README.md --- README.md | 22 +++++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index eedebdc..99bde3e 100644 --- a/README.md +++ b/README.md @@ -64,7 +64,27 @@ $ cat /etc/proxychains.conf ... socks5 127.0.0.1 1080 ... - +# Start TREVORproxy +$ trevorproxy ssh root@1.2.3.4 root@4.3.2.1 +[DEBUG] Opening SSH connection to root@1.2.3.4 +[DEBUG] /usr/bin/ssh root@1.2.3.4 -D 32482 -o StrictHostKeychecking=no +[DEBUG] Opening SSH connection to root@4.3.2.1 +[DEBUG] /usr/bin/ssh root@4.3.2.1 -D 32483 -o StrictHostKeychecking=no +[DEBUG] Waiting for /usr/bin/ssh root@1.2.3.4 -D 32482 -o StrictHostKeychecking=no +[DEBUG] Waiting for /usr/bin/ssh root@4.3.2.1 -D 32483 -o StrictHostKeychecking=no +[DEBUG] Creating iptables rules +[DEBUG] iptables -A OUTPUT -t nat -d 127.0.0.1 -o lo -p tcp --dport 1080 -j DNAT --to-destination 127.0.0.1:32482 -m statistic --mode nth --every 2 --packet 0 +[DEBUG] iptables -A OUTPUT -t nat -d 127.0.0.1 -o lo -p tcp --dport 1080 -j DNAT --to-destination 127.0.0.1:32483 +[INFO] Listening on socks5://127.0.0.1:1080 +# Test SOCKS proxy +$ proxychains curl ifconfig.me +1.2.3.4 +$ proxychains curl ifconfig.me +4.3.2.1 +$ proxychains curl ifconfig.me +1.2.3.4 +$ proxychains curl ifconfig.me +4.3.2.1 ~~~ ## Example #3 - Send traffic through Tor Stream Isolation tunnels From fc1c060f4581b38ea855c4114c274ddf7a1c4843 Mon Sep 17 00:00:00 2001 From: Celesian Date: Tue, 26 Jul 2022 19:10:39 -0300 Subject: [PATCH 4/6] added tor stream isolation module --- trevorproxy/cli.py | 31 +++ .../lib/__pycache__/errors.cpython-310.pyc | Bin 0 -> 675 bytes .../lib/__pycache__/logger.cpython-310.pyc | Bin 0 -> 668 bytes .../lib/__pycache__/tor.cpython-310.pyc | Bin 0 -> 6343 bytes .../lib/__pycache__/util.cpython-310.pyc | Bin 0 -> 5018 bytes trevorproxy/lib/errors.py | 3 + trevorproxy/lib/ssh.py | 7 +- trevorproxy/lib/tor.py | 217 ++++++++++++++++++ 8 files changed, 252 insertions(+), 6 deletions(-) create mode 100644 trevorproxy/lib/__pycache__/errors.cpython-310.pyc create mode 100644 trevorproxy/lib/__pycache__/logger.cpython-310.pyc create mode 100644 trevorproxy/lib/__pycache__/tor.cpython-310.pyc create mode 100644 trevorproxy/lib/__pycache__/util.cpython-310.pyc create mode 100644 trevorproxy/lib/tor.py diff --git a/trevorproxy/cli.py b/trevorproxy/cli.py index 3399082..7c282e0 100755 --- a/trevorproxy/cli.py +++ b/trevorproxy/cli.py @@ -40,6 +40,9 @@ def main(): ssh.add_argument('-kp', '--key-pass', action='store_true', help=argparse.SUPPRESS) ssh.add_argument('--base-port', default=32482, type=int, help='Base listening port to use for SOCKS proxies (default: 32482)') + tor = subparsers.add_parser('tor', help='round-robin traffic through TOR nodes') + tor.add_argument('--base-port', default=32482, type=int, help='Base listening port to use for TOR proxies (default: 32482)') + try: options = parser.parse_args() @@ -107,7 +110,35 @@ def main(): server.serve_forever() finally: subnet_proxy.stop() + elif options.proxytype == 'tor': + + from lib.tor import TorLoadBalancer + + # make sure executables exist + for binary in TorLoadBalancer.dependencies: + if not which(binary): + log.error(f'Please install {binary}') + sys.exit(1) + + + load_balancer = TorLoadBalancer( + base_port=options.base_port + ) + + try: + load_balancer.start() + log.info(f'Listening on socks5://{options.listen_address}:{options.port}') + + # serve forever + while 1: + # rebuild proxy if it goes down + for proxy in load_balancer.proxies.values(): + pass + time.sleep(1) + + finally: + load_balancer.stop() ''' from ipaddress import ip_network, ip_address blacklist = [ip_address('192.168.0.1'), ip_address('192.168.0.250'), ip_address('192.168.0.133')] diff --git a/trevorproxy/lib/__pycache__/errors.cpython-310.pyc b/trevorproxy/lib/__pycache__/errors.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..56633318e29bc479cbde351ccaaf5d4be0def296 GIT binary patch literal 675 zcma)(!A`>#_UhFr5OkdIUyxo+82-jKEZ2$gmgN9tf~nz(5;=8BCS#j)2ZgAwQ#19xB+ z%N~G%{z{adl<6eVQkD%V6Qhcl@}`u}#U!r&tQgc$&2C@k;gd;pSY#T)u8E37r+F5R z2EF^+!JL%C+@4b9@oXAuIx0JxFTp_-8gN5Sc+BOtviA-^y*PJkIK18(8U&VqC#o`! zYGgl2ga1Q^wMRRK?AJaysUCSZXG#HsiO+Q@vZ literal 0 HcmV?d00001 diff --git a/trevorproxy/lib/__pycache__/logger.cpython-310.pyc b/trevorproxy/lib/__pycache__/logger.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..3218c85274142f6cffaaf7dab96d321c91cdd6d6 GIT binary patch literal 668 zcmYjN&u`N(7`5}GP1AH~VO-dSOQrVG+z~%?olZz_Eyh2uZyZ8?SyEp z3n}hb>$pZnrO2TNdXB}mgynv11o@kGp(C?TC5gh+ut6SB&*#%X literal 0 HcmV?d00001 diff --git a/trevorproxy/lib/__pycache__/tor.cpython-310.pyc b/trevorproxy/lib/__pycache__/tor.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..2252a8af6f531aa8ab22c01ca7bbc342a3580f5e GIT binary patch literal 6343 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 BEM@=z literal 0 HcmV?d00001 diff --git a/trevorproxy/lib/__pycache__/util.cpython-310.pyc b/trevorproxy/lib/__pycache__/util.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..eb9189664fc1adfc2ab5682875633a18c94c2ea3 GIT binary patch literal 5018 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 Date: Tue, 26 Jul 2022 22:22:02 +0000 Subject: [PATCH 5/6] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 99bde3e..86f0307 100644 --- a/README.md +++ b/README.md @@ -7,7 +7,7 @@ By [@thetechr0mancer](https://twitter.com/thetechr0mancer) ## Installation ~~~bash -pip install git+https://github.com/blacklanternsecurity/trevorproxy +pip install git+https://github.com/c3l3si4n/TREVORproxy-tor ~~~ See the accompanying [**Blog Post**](https://github.com/blacklanternsecurity/TREVORspray/blob/trevorspray-v2/blogpost.md) for a fun rant and some cool demos! From a34e8937b0cdd0a25ee5626e501c28699f86d0c2 Mon Sep 17 00:00:00 2001 From: Celesian Date: Tue, 26 Jul 2022 21:05:09 -0300 Subject: [PATCH 6/6] added option to choose number of tor chains --- trevorproxy/cli.py | 7 ++++--- .../lib/__pycache__/errors.cpython-310.pyc | Bin 675 -> 679 bytes .../lib/__pycache__/logger.cpython-310.pyc | Bin 668 -> 672 bytes .../lib/__pycache__/util.cpython-310.pyc | Bin 5018 -> 5022 bytes trevorproxy/lib/tor.py | 7 ++++--- 5 files changed, 8 insertions(+), 6 deletions(-) diff --git a/trevorproxy/cli.py b/trevorproxy/cli.py index 7c282e0..8b97838 100755 --- a/trevorproxy/cli.py +++ b/trevorproxy/cli.py @@ -42,6 +42,7 @@ def main(): tor = subparsers.add_parser('tor', help='round-robin traffic through TOR nodes') tor.add_argument('--base-port', default=32482, type=int, help='Base listening port to use for TOR proxies (default: 32482)') + tor.add_argument('--num-instances', default=8, type=int, help='Number of tor chains to spawn (default: 8)') try: @@ -114,7 +115,6 @@ def main(): from lib.tor import TorLoadBalancer - # make sure executables exist for binary in TorLoadBalancer.dependencies: if not which(binary): log.error(f'Please install {binary}') @@ -122,7 +122,8 @@ def main(): load_balancer = TorLoadBalancer( - base_port=options.base_port + base_port=options.base_port, + num_instances=options.num_instances ) try: @@ -178,4 +179,4 @@ def main(): if __name__ == '__main__': - main() \ No newline at end of file + main() diff --git a/trevorproxy/lib/__pycache__/errors.cpython-310.pyc b/trevorproxy/lib/__pycache__/errors.cpython-310.pyc index 56633318e29bc479cbde351ccaaf5d4be0def296..438dd48042f4cfbfe5594a60be26e7bb1a27076a 100644 GIT binary patch delta 33 ncmZ3?x}23OpO=@50SK(qCUV_jw43-`fkn3@zi2Z%;~Yi+hdT(r delta 28 icmZ3^x|o$KpO=@50SGRJPvpA8Xf^Sa_IRq_Se diff --git a/trevorproxy/lib/__pycache__/util.cpython-310.pyc b/trevorproxy/lib/__pycache__/util.cpython-310.pyc index eb9189664fc1adfc2ab5682875633a18c94c2ea3..f735388234842e5eff58686c40b2f89267a3e51b 100644 GIT binary patch delta 62 zcmbQGK2M!1pO=@50SK(qHga(=soLmgAU17m*%GCl@#lT1i6O!2Ne|M QS5)ejDO%`fAU17m*%GCl@#lT1i6O!2Ne|M MS5$5`XG#|Y0LQHnRR910 diff --git a/trevorproxy/lib/tor.py b/trevorproxy/lib/tor.py index 81f43f1..7eee0c1 100644 --- a/trevorproxy/lib/tor.py +++ b/trevorproxy/lib/tor.py @@ -151,15 +151,16 @@ class TorLoadBalancer: dependencies = ['ss', 'iptables', 'sudo', 'tor'] - def __init__(self, base_port=33482, current_ip=False, socks_server=True): + def __init__(self, base_port=33482, num_instances=5, current_ip=False, socks_server=True): self.args = dict() self.base_port = base_port self.current_ip = current_ip self.proxies = dict() self.socks_server = socks_server + self.num_instances = num_instances proxy_ports = [] - for i in range(5): + for i in range(num_instances): proxy_ports.append(self.base_port + i) #self.proxies[str(proxy)] = proxy @@ -214,4 +215,4 @@ def __enter__(self): def __exit__(self, exc_type, exc_value, exc_traceback): log.info('Shutting down proxies') - self.stop() \ No newline at end of file + self.stop()