Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add outbound proxy support for target in connectback mode #36

Open
wants to merge 14 commits into
base: main
Choose a base branch
from
8 changes: 8 additions & 0 deletions common.h
Original file line number Diff line number Diff line change
Expand Up @@ -140,6 +140,13 @@
#define ESCAPE_CR 1
#define ESCAPE_TILDE 2

/* Outbound proxy */
#define OUTBOUND_PROXY_TYPE_NULL 0
#define OUTBOUND_PROXY_TYPE_SOCKS4 1
#define OUTBOUND_PROXY_TYPE_SOCKS4A 2
#define OUTBOUND_PROXY_TYPE_SOCKS5 3
#define OUTBOUND_PROXY_TYPE_SOCKS5H 4
#define OUTBOUND_PROXY_TYPE_HTTP 5

/******************************************************************************
* global variables
Expand Down Expand Up @@ -254,6 +261,7 @@ void connection_node_delete(struct connection_node *);
struct connection_node *connection_node_find(unsigned short origin, unsigned short id);
void connection_node_queue(struct connection_node *cur_connection_node);
int parse_socks_request(struct connection_node *cur_connection_node);
int parse_addr_string(char *addr_string, unsigned char ip[4], unsigned short *port);
char *addr_to_string(int atype, char *addr, char *port, int len);

/* report.c */
Expand Down
49 changes: 49 additions & 0 deletions config.h
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,55 @@
#define CONTROL_ADDRESS "0.0.0.0"
#define CONTROL_PORT "2200"

/*
* Outbound proxy for target
*/

// Default: no proxy
#define OUTBOUND_PROXY_TYPE OUTBOUND_PROXY_TYPE_NULL
#define OUTBOUND_PROXY_ADDR NULL
#define OUTBOUND_PROXY_USERNAME NULL
#define OUTBOUND_PROXY_PASSWORD NULL

/* Examples */

/* socks4 (CONTROL_ADDRESS must be ipv4 address) */
// #define OUTBOUND_PROXY_TYPE OUTBOUND_PROXY_TYPE_SOCKS4
// #define OUTBOUND_PROXY_ADDR "127.0.0.1:1080"
// #define OUTBOUND_PROXY_USERNAME NULL
// #define OUTBOUND_PROXY_PASSWORD NULL

/* socks4a (CONTROL_ADDRESS can be domain to be resolved by the proxy) */
// #define OUTBOUND_PROXY_TYPE OUTBOUND_PROXY_TYPE_SOCKS4A
// #define OUTBOUND_PROXY_ADDR "127.0.0.1:1080"
// #define OUTBOUND_PROXY_USERNAME NULL
// #define OUTBOUND_PROXY_PASSWORD NULL

/* socks5 (CONTROL_ADDRESS must be ipv4 address) */
// #define OUTBOUND_PROXY_TYPE OUTBOUND_PROXY_TYPE_SOCKS5
// #define OUTBOUND_PROXY_ADDR "127.0.0.1:1080"
// #define OUTBOUND_PROXY_USERNAME NULL
// #define OUTBOUND_PROXY_PASSWORD NULL

/* socks5h (CONTROL_ADDRESS can be domain to be resolved by the proxy) */
// #define OUTBOUND_PROXY_TYPE OUTBOUND_PROXY_TYPE_SOCKS5H
// #define OUTBOUND_PROXY_ADDR "127.0.0.1:1080"
// #define OUTBOUND_PROXY_USERNAME NULL
// #define OUTBOUND_PROXY_PASSWORD NULL

/* http (CONTROL_ADDRESS can be domain to be resolved by the proxy). Check proxy
* access control, for squid port 443 usually allowed */
// #define OUTBOUND_PROXY_TYPE OUTBOUND_PROXY_TYPE_HTTP
// #define OUTBOUND_PROXY_ADDR "127.0.0.1:3128"
// #define OUTBOUND_PROXY_USERNAME NULL
// #define OUTBOUND_PROXY_PASSWORD NULL

/* proxy authentication (http/socks5/socks5h proxy only) */
// #define OUTBOUND_PROXY_TYPE OUTBOUND_PROXY_TYPE_HTTP
// #define OUTBOUND_PROXY_ADDR "127.0.0.1:3128"
// #define OUTBOUND_PROXY_USERNAME "foo"
// #define OUTBOUND_PROXY_PASSWORD "bar"

// Default socks proxy listener port.
#define SOCKS_LISTENER "2280"

Expand Down
4 changes: 4 additions & 0 deletions helper_objects.h
Original file line number Diff line number Diff line change
Expand Up @@ -55,6 +55,10 @@ struct config_helper {
int tap;

char *ip_addr;
int outbound_proxy_type;
char *outbound_proxy_addr;
char *outbound_proxy_username;
char *outbound_proxy_password;
char *keys_dir;
char *rc_file;
char *shell;
Expand Down
Loading