socat搭建ipv6隧道

下班买菜


介绍


socat可以在两台机器间建立一个通信通道,通道支持多种协议:tcp、udp、 ipv6、pipe、exec、system、open、proxy、openssl、socket等等。

官方网址:http://www.dest-unreach.org/socat/


原理


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,现在大部分系统默认是开启的。