ProxyBound force any unix application to use a specific proxy and prevent it from leaking the original ip; Technically, ProxyBound is a UNIX program, that hooks network-related libc functions in dynamically linked programs via a preloaded DLL and redirects the connections through SOCKS4A/5 or HTTP proxies. This project is based on proxychain by netcreature, proxychains-ng by rofl0r, proxychains by haad and torsocks by dgoulet
- Proxify applications (like mainstream proxychains)
- Works with tcp (like mainstream proxychains)
- No leaks over udp/icmp/etc... (INET & INET6)
- Unsupported protocols are blocked
- Support chrome/chromium/skype/similar
- Incompatible applications are terminated with a proper message
- Many additional settings over environment variable
- etc.
- PROXYBOUND_CONF_FILE: Path to config file (default ./proxybound.conf then /etc/proxybound.conf)
- PROXYBOUND_QUIET_MODE: Quiet mode (1 or 0, default 0)
- PROXYBOUND_SOCKS5_HOST: Specify unique socks 5 proxy to use (default not used)
- PROXYBOUND_SOCKS5_PORT: Socks 5 port (default not used)
- PROXYBOUND_FORCE_DNS: Force dns resolv requests through (1 or 0, default 1)
- PROXYBOUND_ALLOW_DNS: Allow direct dns, allow udp port 53 and 853 (1 or 0, default 0)
- PROXYBOUND_ALLOW_LEAKS: Allow/Block unproxyfied protocols "UDP/ICMP/ETC", blocked by default (1 or 0, default 0)
- PROXYBOUND_WORKING_INDICATOR: Create '/tmp/proxybound.tmp' when dll is working as intended (1 or 0, default 0)
Proxybound hook libc functions like connect(), dynamic loader facilities are used, namely dl_sym() and LD_PRELOAD thus dynamically linked programs are required.
./configure
make
[optional] sudo make install
If you dont install, you can use proxybound from the build directory like this: ./proxybound -f src/proxybound.conf telnet google.com 80
./configure
make debug
[optional] sudo make install
Version 5.60:
- Fix skype compatibility
- Improve no leak feature
- Improve debug version
- Improve output/log messages
- Rewrite main hooked functions connect
- Rewrite main hooked functions bind
- Rewrite main hooked functions sendmsg
- Rewrite main hooked functions sendto
- Rewrite main hooked functions send
Version 5.50:
- Block non tcp packet on send()
- Prevent bypass noleak
- Add support for bind() to block listen on unsupported protocol
- Add skype support
Version 5.40:
- Add "--help" and "-h" parameter
- Add "--version" and "-v" parameter
- Update help page
Version 5.30:
- Code cleaning
- Move readme to md
- Add support for hosts file (upstream import)
Version 5.20:
- add PROXYBOUND_ALLOW_DNS
- update lock feature (send sendto sendmsg)
- add function to terminate when app is not supported
- add PROXYBOUND_WORKING_INDICATOR
- Code cleaning
- Update readme
Version 5.10:
- leak lock feature (send sendto sendmsg)
Version 5.00:
- Initial leak lock feature
- Code cleaning
- Update readme
Version 4.90:
- Import simple SOCKS5 proxy mode from @haad/proxychains
- Code cleaning
- Update readme
Version 4.80:
- Updates with some features from @haad/proxychains
Version 4.70:
- Fix chrome compatibility
Version 4.60:
- Code cleanning & update
Version 4.50:
- Changing the name to ProxyBound
Version 4.40:
- Import security issue fix CVE-2015-3887
- Used v4.3 (4.03) for initial fork
- IPv6 is blocked and not supported (currently partially supported)
- Some applications are incompatible (they will be explicitly terminated 2 sec after startup, to avoid leaks)
Proxybound config file in following order:
1) File listed in environment variable ${PROXYBOUND_CONF_FILE} or
provided as a -f argument to proxybound script or binary.
2) ./proxybound.conf
3) $(HOME)/.proxybound/proxybound.conf
4) /etc/proxybound.conf
In this example it will run telnet through proxy without using proxybound binary
$ export PROXYBOUND_QUIET_MODE="1"
$ export LD_PRELOAD=/usr/local/lib/libproxybound.so
$ export PROXYBOUND_CONF_FILE=/etc/proxybound.conf
$ telnet targethost.com
In this example it will run telnet through proxy(or chained proxies) specified by proxybound.conf
$ proxybound telnet targethost.com
In this example it will use different configuration file then proxybound.conf to connect to targethost2.com host.
$ proxybound -f /etc/proxybound-other.conf targethost2.com
In this example it will resolve targethost.com through proxy(or chained proxies) specified by proxybound.conf
$ proxyresolv targethost.com