Wednesday, December 23, 2009

Proxy over ICMP

昨天下午开会突然间想到的问题。
最近公司用无线,总是连不上那个认证页面;有线接入又要先走认证接入系统。实在恶心。
不过,未认证的情况下,ping还是通的。也就是说,ICMP包应该是没有被drop掉的。
再联想到,之前研究过ping的数据格式,有个可以“不限长度”的数据段。
于是在设想能否用这个段实现应用层数据包的封装,进而以ICMP为载体作代理或者其他方式绕过这个认证接入系统。

晚上上网查了查,果然,这种东西已经有了现成的实现。
早上在测试机上下了个PingTunnel,去掉了SELinux的编译选项,直接make,然后本机开了个虚拟机,bridge了无线网卡。

服务器端直接
./ptunnel -v -f pt.log 
客户端
sudo ./ptunnel -p 10.abc.def.ghi -lp 12345 -v -da 10.abc.def.ghi -dp 22

然后客户端新开一个shell,
ssh -p 12345 localhost -l root
直接tunnel到了10.abc.def.ghi 的22端口,ssh。

如果目标端口,-dp那个选项,对应的是个socks代理,那就可以直接socks代理过去,其他同理。

http://en.wikipedia.org/wiki/ICMP_tunnel
Ping Tunnel
# EOF

No comments:

Post a Comment