一、什么是内网穿透?

内网穿透,也即 NAT 穿透,进行 NAT 穿透是为了使具有某一个特定源 IP 地址和源端口号的数据包不被 NAT 设备屏蔽而正确路由到内网主机。下面就相互通信的主机在网络中与 NAT 设备的相对位置介绍内网穿透方法。

UDP 内网穿透的实质是利用路由器上的NAT 系统。NAT 是一种将私有(保留)地址转化为合法IP地址的转换技术,它被广泛应用于各种类型 Internet 接入方式和各种类型的网络中。NAT可以完成重用地址,并且对于内部的网络结构可以实现对外隐蔽。

简单一句话概括:让自己的电脑跟云服务器一样可以公网访问。

二、UDP内网穿透原理

在整个音频共享模块中,UDP内网穿透技术是实现多个不同内网节点之间的UDP音频流互相转发的技术重点。音频对讲过程可分解为音频压缩、发送的输出过程和音频接收、解压、播放的输入过程。而多人音频对讲的过程实际上就是多个节点的系统中,两两节点之间的音频流收发过程。在这里无法直接处理的环节是每个参与音频对讲的节点作为服务器端接收其他节点发送过来的音频流数据的输入过程,因为大部分参与者都没有自己的公网IP,这样的内网节点直接在本地启动一个接收音频流的服务器线程,不在同一内网之内的其他节点无法直接连接到这个服务器。虽然可以通过在每个局域网和公网之间的路由器上添加端口映射将内网服务端口呈现在公网上,但这样做涉及到要修改每个节点对应的路由器配的置以及权限等问题,不是理想可用的实现方法。使用UDP内网穿透技术,可以使一个普通的内网节点在需要时将自己的服务器端口自动的呈现在公网上,并且能够让系统内其他节点正确获取这个音频接收服务器的地址,以便其他节点能够将自己的音频流发送到这个音频接收端口。

三、NAT穿透的原理

NAT设备(或软件)维护一个状态表,用来把内部网络的私有IP地址映射到外部网络的合法IP地址上去。每个包头中的IP地址和端口信息在NAT设备(或软件)中都被修改并翻译成一正确的IP地址发往下一级。当一个内网主机通过NAT打开一个“外出”的TCP或UDP会话时,NAPT分配给这个会话一个公网IP和端口,用来接收外网的响应的数据包,并经过转换通知内部网的主机。这样,NAPT在[私有IP:私有端口]和[公网IP:公网端口]之间建立了一个端口绑定。

四、UDP内网穿透的实现流程

  1. 两个需要通过内网穿透进行通讯的内网客户端,分别将自己的外网收发接口注册给一个具有公网ip的中转服务器
  2. 中转服务器将两个客户端注册的收发接口分别告知给对端
  3. 一个内网客户端使自己的接收端口作为源地址,向对端的发送端口发送一个udp数据包,这个数据包称为打洞包。发送过这个打洞包后,可以在这个内网的出口路由器上产生一条NAT记录,令后续从对端发送端口发来的数据包都不被丢弃,
    而是转发给相应的内网客户端的指定端口
  4. 发送过打洞包后,对端发送至本端路由器指定接收端口的数据包,就会根据NAT记录转发至本端的内网服务器接收端口,从而实现了内网服务器接收外网数据包的功能
  5. 另一个内网服务器同样执行上述步骤 (3) 、 (4), 即可实现两端内网服务器相互收发音频数据包的功能。

五、在渗透测试中内网穿透的实际应用

比如我们在拿下一台服务器的时候,会很明显的发现3389的端口是开放的。你明明拿下的服务器是win2008。当你远程桌面链接过去的时候却是win2003的服务器。这个时候很多人误以为自己操作是对的,其实你正好上当了。这里做了一个端口转发。我们需要拿到的是网站所在的真正的内网服务器。很多时候内网服务器是没有公网IP的。我们就需要给这个内网服务器做一个端口转发,映射到公网上。通过公网来访问这台内网的服务器。

原理很枯燥,实战很清晰。
下一期讲解关于使用花生壳进行内网穿透的实战。

Last modification:June 24th, 2020 at 12:03 am