![83cd8044f100252376dfed4715b38c48.png](https://i-blog.csdnimg.cn/blog_migrate/31772b7670fd3dd19479a2ffee8c30f3.jpeg)
2018年小黑考上了某三本大学的计算机专业,在骄阳似火的9月为了喝阔乐,和办宽带上网,小黑选择了前者。校园宿舍用的是CMCC网络,需要进行认证才能上百度。为了一边喝阔乐一边上网,小黑开始了折腾的不归路。下面简单的分析一哈ICMP隧道是如何建立和使用的。[1]这都是2015年的技术了~
第一步:服务端启动隧道
![d3485183647d7a091b69781b8b5c7b64.png](https://i-blog.csdnimg.cn/blog_migrate/9dfe048517d447ad5d98933e7aabe3f4.jpeg)
第二步:查看服务端的隧道IP、路由等信息
服务端IP地址多了一个10.0.1.1,这就是咱们的隧道地址。
![37a4003b1e4982f30b1cd7065d550723.png](https://i-blog.csdnimg.cn/blog_migrate/c0bd1cf961df8ee89c66a914db369508.jpeg)
注意服务端的路由发生了变化:
![63b8b3dab21e8b4738a36396729340f0.png](https://i-blog.csdnimg.cn/blog_migrate/0e8c9fa64300ed43365edd5c8f5e2bc8.png)
第三步:在客户端修改client.sh
文件
![ef619b31a73492e8171d7e2a43ba2c8d.png](https://i-blog.csdnimg.cn/blog_migrate/cbeb294d29eefb43f2f76d0bc9b313f9.jpeg)
第四步:在客户端运行隧道,出现successfully就成功了。
![e23c8d8b99e8a06c6f2b75ba0112cf0a.png](https://i-blog.csdnimg.cn/blog_migrate/9fbaabb00b6e9a310ced3fcd29f0f00b.jpeg)
再次检查客户端的路由,可以看到以后出去的路由都走咱们的隧道了。
![ac292a36e6cc4f58fef8d16411aa6215.png](https://i-blog.csdnimg.cn/blog_migrate/7d826bb1df1901168d80ec2801eeb2eb.jpeg)
网页测试:第一次用的时候大约等了1分钟,可把我吓坏了,这么慢还玩啥~
![39b66ddd4e9310f9c4a9a15935abef15.png](https://i-blog.csdnimg.cn/blog_migrate/befb6062bb51cb574beb36bdfcbb0723.jpeg)
后来测试访问知乎的几个页面,每个请求大约1秒左右,亲身体验就是,越用越快了,哈哈,还是有点东西的。
![v2-4eaf7884ddd26f6f5e46975e15a6fe0e_b.jpg](http://img-01.proxy.5ce.com/view/image?&type=2&guid=b385e41a-872c-eb11-8da9-e4434bdf6706&url=https://pic3.zhimg.com/v2-4eaf7884ddd26f6f5e46975e15a6fe0e_b.jpg)
当成功建立ICMP隧道的时候,明显的感觉是服务端的ICMP报文数量暴涨,并且出现大量大于1k的报文,尤其是ICMP应答报文,简单总结有以下3个特征:
ICMP隧道特征1:ICMP应答报文可能比较大,很多个应答包都大于1k
![307fd57431b6501ffc0c2000b76758a5.png](https://i-blog.csdnimg.cn/blog_migrate/526ba7ce925622c5630a9e847859a89e.jpeg)
ICMP隧道特征2:ICMP数据段可能有明文信息,比如浏览器访问百度的时候,在Data里面就找到了baidu
![c9b6a4d23deabb84c617c7144f40f623.png](https://i-blog.csdnimg.cn/blog_migrate/5f76162de6bc3bd5a7e7c86088c73011.jpeg)
ICMP隧道特征3:还可以在个别请求中找到HTTP请求信息,但是绝大部分看到的都是乱码
![5a9d0ceaaa7a2867f7d8e23e06176a07.png](https://i-blog.csdnimg.cn/blog_migrate/b3994da8ff9fb04dbc3482a3f6eed54b.jpeg)
最后,ICMP隧道的整体架构:
![2d99f790eb5aa0573cbcfd3fbd0e5c8c.png](https://i-blog.csdnimg.cn/blog_migrate/963060b113192108289cc9d02c43be75.png)
代码是C语言写的,有空的时候来分析一下源码吧~
参考
- ^icmptunnel https://github.com/DhavalKapil/icmptunnel