介绍
原理
socat支持ipv6,所以可以用来建立ipv6隧道。隧道的本质就是数据包的封装。我们把ipv6的数据包封装到ipv4中,以便在ipv4网络中传输,数据包到达目的地后,再把ipv6数据包从ipv4中拆出来,从而达到ipv6内容在ipv4的网络中传播。
现在的防火墙等安全设备并没有对ipv6流量进行检测的相关规则,我们可以把ipv6内容封装到ipv4中传播,来绕过安全设备的检测。
原理图
socat在kali中运行,监听ipv4的80端口,然后将流量发送到ipv6的80上。注意fe80开头的地址是本地地址,类似于ipv4中的192、172、10那些,而socat在处理fe80开头的本地地址时,需要在后面加上网卡,代表用哪款网卡处理(已标红)。如果是2000开头的公网地址,则不用加。
ping6命令来ping ipv6时,如果是fe80开头的本地地址,也要指定网卡:
应用过程
首先在kali中运行socat,把本地80给到远程机ipv6的80上,命令:
socat TCP4-LISTEN:80,fork,su=nobody TCP6:[fe80::95eb:56bd:5b82:64b3%eth0]:80
在kali上打开wireshark可以看到本机在用ipv6地址和远程目标机通信。
如果把socat的目标地址改为ipv4,则会使用ipv4包进行通信。
备注
1,socat适用于linux,windows需要进行编译,windows下可能不太稳定。
2,目标机需要开启ipv6,现在大部分系统默认是开启的。