跳到主要内容

IPv6基于TCP打洞实现防火墙穿越

一、背景问题

核心问题: IPv6大多数情况没有进行NAT,但防火墙默认拒绝公网主动访问内网设备。

二、防火墙 工作原理(基础)

当内网设备([fd01::1]:5000)主动访问外网时([fd02::1]:8888)会临时新增一条规则,当防火墙检测到规则生效时对端设备可以主动访问到内网,规则不存在防火墙会直接拒绝连接。

防火墙记录规则表:
内网IP:端口 ↔ 对端IP:端口
[fd01::1]:5000 ↔ [fd02::1]:8888

三、打洞核心思路

让内网设备主动发起对外网设备的端口请求

注意

这种方法iPhone设备无法使用。
IOS目前不能指定TCP发起的端口,TCP是由系统托管会在30000-65535中随机使用一个未被占用的端口。

四、可用于IOS设备的暴力打洞

已知端口会在30000-65535中随机一个,所以我们可以使用nmap主动对目标发送SYN半开扫描导扫描来诱导防火墙创建30000-65535所有端口的规则。

nmap -sS -p 30000-65535 --source-port 源端口 -6 目标IP --min-rate 10000 -Pn

SYN半连接扫描原理

注意

此方法可能会触发防火墙的攻击告警,因为短时间内发送了大量数据包

为什么使用TCP不选择常见的UDP打洞?

国内运营商会对UDP进行QoS速度无法保证。