内网对抗穿透之隧道转发及突破系统防火墙限制

admin 2026-04-18 07:31:44 网络安全文章 来源:ZONE.CI 全球网 0 阅读模式

文章总结: 本文系统讲解了内网渗透中隧道转发技术的原理与应用。隧道技术通过将数据封装至防火墙允许的协议或端口以绕过拦截,按层级分为ICMP、TCP或UDP及DNS、HTTP、SSH隧道等。文章汇总了pingtunnel、lcx、frp、reGeorg等主流工具的使用场景。建议企业网络管理员需实施精细化安全策略,避免因配置疏忽放行高危端口,同时加强DNS异常流量监控以防范数据外发风险。 综合评分: 81 文章分类: 内网渗透,渗透测试,红队,安全工具,网络安全


cover_image

内网对抗穿透之隧道转发及突破系统防火墙限制

原创

OneDay一卒的老付 OneDay一卒的老付

老付话安全

2025年8月28日 20:22 山东

在小说阅读器读本章

去阅读

点击蓝字

关注我们

始于理论,源于实践,终于实战

老付话安全,每天一点点

激情永无限,进步看得见

关注我,带给你不一样的精彩

世界因你的沉淀而出彩

严正声明

本号所写文章方法和工具只用于学习和交流,严禁使用文章所述内容中的方法未经许可的情况下对生产系统进行方法验证实施,发生一切问题由相关个人承担法律责任,其与本号无关。

特此声明!!!

在开始之前有必要带大家了解一下OSI七层模型和TCP/IP协议:

在TCP/IP协议上有延伸出来了工控协议:

主机应用程序访问连接建立过程

从上面我们可以看出,主机通过动态源端口,去访问应用的TCP固定端口进行应用内容访问,所以说每个应用都有一个端口,每个端口对应不同的应用服务。

一些应用层协议做了安全设计,如https:

其原理是通过安全套接层ssl证书对http协议进行安全校验,从而达到安全传输的目的。

我们理解了以上内容后,我们来看一下为什么需要有隧道转发技术?

1

为什么需要隧道技术?

作为攻击者攻破内网后,拿到权限,形成驻足点,其目的要么是搞破坏,要么窃取高价值数据进行勒索。目前搞破坏依然不是攻击者的首要目标,而是窃取数据后勒索钱财。那获取数据就需要把数据导出到攻击者控制的服务器中。但数据出网需要突破层层的阻断,有些是无法把数据发送到外网的。这个时候就要像一个办法把数据转发出来,那隧道技术就起到了非常重要的作用。

2

什么是隧道技术

隧道就是一种绕过端口屏蔽的通信方式。防火墙两端的数据包通过防火墙所允许的数据包类型或者端口进行封装,然后穿过防火墙,与对方进行通信。当被封装的数据包到达目的地时,将数据包还原,并将还原后的数据包发送到相应的服务器上。隧道技术通常用于连接不同地理位置的网络,以创建安全的、私有的通信通道。

攻击者可以利用各种隧道技术,以网络防火墙允许的协议,绕过网络防火墙的封锁,实现访问被封锁的目标网络。

为什么使用隧道? 在内网渗透的过程中,当获取到边界主机之后,需要继续深入渗透,这时就需要搭建代理或者建立隧道,去探测访问处于内网中的机器。 在数据通信被拦截的情况下利用隧道技术封装改变通信协议进行绕过拦截,CS、MSF无法上线,数据传输不稳定无回显,出口数据被监控,网络通信存在问题等。

3

隧道技术的分类

根据TCP/IP协议层级划分,在各个层级有不同的隧道技术:

  • 网络层:IPv6 隧道、ICMP 隧道
  • 传输层:TCP 隧道、UDP 隧道、常规端口转发
  • 应用层:SSH 隧道、HTTP/S 隧道、DNS 隧道

4

内网主机的出网方式

允许ICMP协议出网

ICMP 通过 PING 命令访问远程计算机,建立 ICMP 隧道,将 TCP/UDP 数据封装到 ICMP 的 PING 数据包中,从而穿过防火墙,防火墙一般不会屏蔽 PING 数据包,实现不受限制的访问。攻击者可以把数据封装到ICMP包里把敏感数据带出来。

允许特定的TCP或UDP协议端口出网

网络防火墙允许特定的TCP或者UDP端口出网,比如连接外网的22、53、80、443、3389等常见应用的默认监听端口。在一个不能出网的网络环境里面,将所有的TCP和UPD端口都探测一遍,通常都能发现有一两个常见的端口能出网。这通常是由于网络管理员的错误配置和偷懒行为导致。(这里企业网络管理员要注意了,要精细化安全策略才能减轻网络问题,不能偷懒。)

允许特定的应用层协议出网(比如HTTP、SSH、DNS等应用层协议)

这种网络防火墙能识别应用层的协议,放行允许出网的协议,比如HTTP、SSH、DNS、RDP等应用层协议。

5

常见的几种隧道方式及工具

常见隧道方式

1、DNS隧道

原理:配置某个域名的NS服务器,使得对该域名的所有子域解析请求最终到达该NS服务器上,然后将另一个协议的数据编码为一系列DNS查询,响应时客户端将返回的Response数据进行解码得到另一协议的数据

检测:管理员需要关注DNS服务器的地理位置异常 、访问非受信的DNS服务器 、基于请求域名长度及请求频率统计分析方法。从而能够发现异常,但是如果企业有大量的DNS服务,可能排查起来有点困难,工作量会很大。

2、DNS隧道

原理:配置某个域名的NS服务器,使得对该域名的所有子域解析请求最终到达该NS服务器上,然后将另一个协议的数据编码为一系列DNS查询,响应时客户端将返回的Response数据进行解码得到另一协议的数据。

3、端口映射和端口转发

(1)端口映射

端口映射常见于防火墙NAT技术的端口映射,是一种网络配置技术,它允许将一个网络设备上的端口映射到另一个设备上的相应端口。外部设备通过连接到公共端口,然后路由器将数据转发到目标设备的私有端口。

(2)端口转发(详见Lcx工具的使用原理)

端口转发是端口映射的一种特定形式,它是一种将特定端口的数据流量从网络中的一个节点传递到另一个节点的技术。

通常,端口转发是通过网络设备(如路由器或防火墙)进行配置的。用户可以在路由器上设置端口转发规则,以指定哪些端口的数据应该被转发到网络中的特定设备。这使得用户可以从互联网上的外部设备访问内部网络中的服务,例如 Web 服务器或游戏服务器。

4、SSH隧道

ssh本身可以用来做隧道,如果没被限制的话

本地转发:

ssh -CNfg -L 127.0.0.1:7777:114.114.114.114:9999 [email protected]#ssh客户端监听127.0.0.1:7777, 将收到的tcp数据包通过连接到192.168.1.1的ssh隧道转发到ssh服务端,再由服务端转发到114.114.114.114:9999

远程转发:

ssh -CNfg -R 127.0.0.1:7777:114.114.114.114:9999 [email protected]#ssh服务端监听127.0.0.1:7777, 将收到的tcp数据包通过连接到192.168.1.1的ssh隧道转发到ssh客户端,再由ssh客户端转发到114.114.114.114:9999

动态转发:

ssh -CNfg -D 127.0.0.1:7777 [email protected]# ssh客户端监听127.0.0.1:7777开启socks服务,将收到的socks数据包通过连接到192.168.1.1的ssh隧道转发到ssh服务端,再由ssh服务端转发到目标地址

隧道建立工具

1、网络层隧道工具(以ICMP隧道为主)

(1)icmpsh

github:https://github.com/bdamele/icmpsh

能通过ICMP协议反弹cmd,功能单一,反弹回来的cmd极不稳定,不推荐使用

可参考:https://www.freebuf.com/news/210450.html

(2)icmptunnel

github:https://github.com/DhavalKapil/icmptunnel

创建虚拟网卡通过ICMP协议传输网卡流量,基于ICMP隧道的vpn,需要root权限,动静极大,不推荐使用

(3)pingtunnel

github:https://github.com/esrrhs/pingtunnel

TCP、UDP、socks5 over ICMP,速度快,连接稳定,跨平台,client模式不需要管理员权限即可正常使用,推荐使用

2、传输层隧道工具

(1)netcat

官网:https://eternallybored.org/misc/netcat/

网络工具中的瑞士军刀,不多介绍,linux系统一般自带

(2)powercat

github:https://github.com/besimorhino/powercat

powershell版的netcat

(3)socat

github:https://github.com/erluko/socat

具有记录转发流的功能,方便查看转发内容,需要安装

(4)netsh

官网:https://docs.microsoft.com/en-us/windows-server/networking/technologies/netsh/netsh-contexts

windows系统自带的网络配置工具

(5)lcx(端口转发工具)

github:https://github.com/windworst/LCX

基于socket套接字实现的端口转发工具,从linux下的htran移植给Windows的

//内网机器10.0.0.1的3389端口,转发到公网9000端口

lcx.exe -slave 192.168.1.161 9000 10.0.0.1 3389

//公网机器192.168.1.1,将本机端口9000上监听的所有数据转发到本机5555上

lcx.exe -listen 9000 5555

(6)NATBypass

github:https://github.com/cw1997/NATBypass

一款lcx在golang下的实现,更好的跨平台,更完善的文档

(7)iox

github:https://github.com/EddieIvan01/iox

端口转发 & 内网代理工具,功能类似于lcx/ew,简化了命令行参数,支持UDP流量转发,更好的跨平台

缺点:不支持监听指定IP,默认监听0.0.0.0:port,会增大暴露风险

(8)frp

github:https://github.com/fatedier/frp

用Go写的,支持TCP和UDP,以及HTTP和HTTPS协议,同时也支持P2P,仍在持续更新

3、应用层隧道工具

由于应用层协议极多,对应的隧道工具也很多,我们常用来做隧道的协议一般是DNS、HTTP、SSH、SOCKS等

(1)dnscat2

github:https://github.com/iagox86/dnscat2

IP over DNS通过 DNS 协议创建加密的命令和控制 (C&C) 通道,看起来厉害极了

(2)dnscat2-powershell

github:https://github.com/lukebaggett/dnscat2-powershell

dnscat2的powershell客户端

(3)dns2tcp|(DNS隧道)

github:https://github.com/alex-sector/dns2tcp

TCP over DNS,即通过DNS隧道转发TCP连接,没有加密。采用直连,但速度不是特别乐观,优势在于kali直接集成了这个工具,部分linux发行版也都可以直接通过包工具下载,相对方便

(4)iodine

github:https://github.com/yarrick/iodine

IPv4 over DNS,即通过DNS隧道转发IPv4数据包,在编码,请求类型上提供了更丰富的选择,而且在速度方面更快

(5)reGeorg(HTTP隧道)

github:https://github.com/sensepost/reGeorg

SOCKS over HTTP,即通过HTTP隧道转发SOCKS,用Python写的,基于Python2.7和urllib3,上传一个Tunnel脚本,然后远程连接转发端口即可建立socket代理隧道

对于aspx的网站假如总是报错,可以尝试ashx脚本

PHP程序确认php.ini中socket模块正常开启并且可用,reGeorge也提供了nosocket脚本

linux下利用proxychains,Windows下利用proxifier实现任意应用通过代理

假如绑定某些端口会遇到socket无法建立连接时,尝试着利用80、53等穿透性强的端口

(6)Neo-reGeorg

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

重构版reGeorg,提高稳定性和可用性,避免特征检测,更新活跃

(7)reDuh

github:https://github.com/sensepost/reDuh

TCP over HTTP,即通过HTTP隧道转发TCP连接,隧道不稳定

(8)Tunna

github:https://github.com/SECFORCE/Tunna

TCP、SOCKS over HTTP,即通过HTTP隧道转发TCP连接和SOCKS,隧道不稳定

(9)ABPTTS

github:https://github.com/nccgroup/ABPTTS

TCP over HTTP,即通过HTTP隧道转发TCP连接

数据加密,可自定义HTTP数据,对抗特征检测十分优秀,创建的隧道十分稳定,比较遗憾的是支持的web脚本类型只有aspx和jsp

(10)Venom

github:https://github.com/Dliv3/Venom/

Venom是一款基于ssh隧道,为渗透测试人员设计的使用Go开发的多级代理工具

其特点是:

  • 可视化网络拓扑
  • 多级socks5代理
  • 多级端口转发
  • 端口复用 (apache/mysql/…)
  • ssh隧道
  • 交互式shell
  • 文件的上传和下载
  • 节点间通信加密
  • 支持多种平台(Linux/Windows/MacOS)和多种架构(x86/x64/arm/mips)

(11)ssocks

github:https://github.com/54Pany/sSocks

正向和反向的socks工具,可执行文件的大小很小,支持socks5验证,支持IPV6和UDP

以上工具大家可以根据情况自行尝试使用。

总结:

END

枯燥乏味的知识点,学起来有点费劲。

但不积跬步无以至千里。

日拱一卒,每天一点点的进步。


免责声明:

本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。

任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。

本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我

本文转载自:老付话安全 OneDay一卒的老付 OneDay一卒的老付《内网对抗穿透之隧道转发及突破系统防火墙限制》

评论:0   参与:  0