一、ICMP隧道技术解析

1.icmp协议

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

ICMP协议主要提供两种功能,

一种是差错报文,一种是信息类报文。信息类报文包括回显请求和回显应答,以及路由器通告和路由器请求。常见的差错报文类型包括目的不可达、重定向、超时和参数问题。

主要特点:

确认IP数据包是否成功到达目的地

通知源主机发送IP数据包丢失的原因

ICMP是基于IP协议工作的

ICMP只能作用于IPV4,IPV6下,使用ICMPv6

报文格式:

ping一下8.8.8.8,然后使用wireshark进行抓包看看。

过程:ping 命令使用了两个ICMP 报文

1、向目标服务器发送回送请求

首先,向目标服务器发出回送请求(类型是8,代码是0)报文。在这个回送请求报文里,除了类型和代码字段,还被追加了标识符和序号字段。标识符和序号字段分别是16 位的字段。ping 命令在发送回送请求报文时,在这两个字段里填入任意的值。对于标识符,应用程序执行期间送出的所有报文里填入相同的值。对于序号,每送出一个报文数值就增加1。而且,回送请求的选项数据部分用来装任意数据。这个任意数据用来调整ping 的交流数据包的大小。

2、返回的回应,做出答复。

计算机送出的回送请求到达目标服务器后,服务器回答这一请求,向送信方发送回送请求(类型是0,代码是0)。这个ICMP 回送回答报文在IP 层来看,与被送来的回送请求报文基本上一样。不同的只是,源和目标IP 地址字段被交换了,类型字段里填入了表示回送回答的0。也就是,从送信方来看,自己送出的ICMP 报文从目标服务器那里象鹦鹉学舌那样原样返回了。

送信方的计算机可以通过收到回送回答报文,来确认目标服务器在工作着。进一步,记住发送回送请求报文的时间,与接收到回送回答报文的时间一比较,就能计算出报文一去一回往复所需要的时间。但是,收到的回送回答报文里写的只是类型和代码的话,发送方计算机将无法判断它是否是自己发出去请求的回答。因此,前面说到的标识符和序号字段就有它的意义了。将这两个值与回送回答报文中的相同字段值一比较,送行方计算机就能够简单地检测回送回答是否正确了。执行ping 命令而调查的结果没什么问题的话,就将目标服务器的IP 地址,数据大小,往复花费的时间打印到屏幕上。

2、ICMP隧道

(1)原理:

由于ICMP报文自身可以携带数据,而且ICMP报文是由系统内核处理的,不占用任何端口,因此具有很高的隐蔽性

通常ICMP隧道技术采用ICMP的ICMP_ECHO和ICMP_ECHOREPLY两种报文,把数据隐藏在ICMP数据包包头的选项域中,利用ping命令建立隐蔽通道。简单说就是,改变操作系统默认填充的Data,替换成我们自己的数据。

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

优缺点

优点:

防火墙对ICMP_ECHO数据包是放行的,并且内部主机不会检查ICMP数据包所携带的数据内容,隐蔽性高

缺点:

ICMP隐蔽传输是无连接的,传输不是很稳定,而且隐蔽通道的带宽很低

利用隧道传输时,需要接触更低层次的协议 ,这就需要高级用户权限。

二、隧道搭建

方法1:使用icmpsh搭建

1.首先使用git下载:https://github.com/jamesbarlow/icmptunnel

2.然后安装依赖库,apt-get install python3-impacket

3.使用sysctl -w net.ipv4.icmp_echo_ignore_all=1 ,将icmp的程序替换

4.输入./run.sh启用

5.输入目标ip

6.成功连接。

7.查看目录。

方法2:pingtunnel

1.在官网进行下载:Ping Tunnel – Freecode

2.进入文件目录,然后使用make && make install 进行编译安装。

3.然后安装缺少的依赖文件pcap.h.

4.使用tar命令进行解压。

5.然后使用ptunnel -x 进行测试。

下面是我用win7做边界web服务器,然后把内网的域控3389端口转发到外网的kali上面。

这是win7的内外网ip

win7内网ip:1.1.1.11

外网ip:192.168.2.183

windos也可使用此工具,不过需要在内网windows机器上安装wincap类库。

域内主机:winserver12:1.1.1.2

攻击机IP:192.168.2.181

kali的IP

-x 指定ICMP隧道连接的密码 -lp 指定要监听的本地TCP端口 -da 指定要转发的目标机的IP -dp 指定要转发的目标机的TCP端口 -p 指定ICMP另一端机器的IP

攻击机开启隧道 ptunnel -x abc

实验过程:在跳板机执行 ptunnel -x 密码

在目标机执行:

windows版本

ptunnel -p 192.168.1.4 -lp 1080 -da 1.1.1.2 -dp 3389 -x abc

然后使用远程连接:

rdesktop -g 1440x900 -u saul -p saul 127.0.0.1:1080

linux版本:

连接22端口

ptunnel -p x.x.x.x -lp 1080 -da x.x.x.x -dp 22 -x abc

三防御ICMP隧道攻击的方式:

1、检测同一源的ICMP数据包的流量。一个ping命令每秒发送2个数包,而使用ICMP隧道的浏览器会发送上千个ICMP数据包

2、注意那些payload大于64bit的ICMP数据包

3、寻找响应数据包的payload与请求数据包的payload不一致的ICMP数据包

4、检查ICMP数据包的协议与标签。例如,icmptunnel会在所有的ICMP payload前添加”TUNL”标记来识别隧道。

总结

这篇文章主要简单分析了一下Icmp协议的简单通信原理以及ICmp通信过程,还包含了使用icmpsh和pingtunnel这2种工具进行建立隐藏隧道进行隐蔽攻击。

浅析Icmp原理及隐蔽攻击的方式相关推荐

  1. 网络安全黑客攻击常见方式如何预防黑客攻击黑客思维

    网络安全/黑客攻击常见方式/如何预防黑客攻击/黑客思维 网络安全行业是一个非常重要的行业,因为随着人们越来越依赖互联网,保护网络安全变得越来越重要.网络安全专业人员负责保护组织和个人免受网络攻击和数据 ...

  2. 网络安全——网络攻击原理(嗅探攻击、截获攻击、拒绝服务攻击)

    摘要: 网络攻击是导致网络安全威胁的主要原因,嗅探攻击.截获攻击.拒绝服务攻击等是常见的网络攻击.网络攻击和网络安全是矛盾的两个方面,但是了解网络攻击手段可以帮助我们更好地保护网络安全.嗅探攻击是被动 ...

  3. 手把手带你学会Odoo OWL组件开发(5):浅析OWL原理

    [本系列内容直达:] 手把手带你学习Odoo OWL组件开发(1):认识 OWL 手把手带你学会Odoo OWL组件开发(2):OWL的使用 手把手带你学会Odoo OWL组件开发(3):核心内容指南 ...

  4. 企业网络推广专员浅析如何通过企业网络推广的方式提升网站权重?

    现如今越来越多企业选择靠拢互联网实现企业网络推广获益,自然十分信任互联网推广平台可助力企业品牌或产品相应提升知名度以及曝光率.然而随着许多企业的靠拢,互联网企业网络推广市场竞争日益激烈,想要在搜索引擎 ...

  5. 浅析bootstrap原理及优缺点

    网格系统的实现原理,是通过定义容器大小,平分12份(也有平分成24份或32份,但12份是最常见的),再调整内外边距,最后结合媒体查询,就制作出了强大的响应式网格系统 网格系统的实现原理,是通过定义容器 ...

  6. 超详细的jenkins持续集成工作原理、功能、部署方式等介绍

    文章由LinuxBoy分享于2019-08-30 11:08:39 超详细的jenkins持续集成工作原理.功能.部署方式等介绍 1. 概念 jenkins是一个开源项目,提供了一种易于使用的持续集成 ...

  7. 2021-08-31 CoreDNS:Kubernetes内部域名解析原理、弊端及优化方式

    20211217 更新 ,腾讯云 ipvs模式下 localdns: https://cloud.tencent.com/developer/article/1813985 20210919解决思路: ...

  8. 【ICMP原理 VS ping 原理】

    ICMP是(Internet Control Message Protocol)Internet控制报文协议.它是TCP/IP协议族的一个子协议,用于在IP主机.路由器之间传递控制消息.控制消息是指网 ...

  9. 抢票插件原理科普:攻击软件还是便利助手?

    抢票插件原理科普:攻击软件还是便利助手? 转载自:http://www.kuqin.com/web/20130121/333959.html [转载原因:通俗易懂,但本人认为一些不法网站以抢票为幌子, ...

最新文章

  1. 解决delphi10.2.3 android tools闪退
  2. MySQL利用xtrabackup进行增量备份详细过程汇总
  3. 自动生成文章的html,文章自动更新工具|自动生成文件|自动伪原创|文章自动插入关键词工具...
  4. springboot自动配置的原理_SpringBoot自动配置原理
  5. 消息中间件学习总结(18)——MQ常见面试题总结
  6. 想要配置文件生效 需要通过添加到web.xml加载到内存中
  7. 2019美赛B题完整论文
  8. 计算机管理及维护培训考试题,计算机考试题库和答案_浅析高校公共计算机机房管理与维护...
  9. 博世BMI160驱动程序 C语言编程,如何使用PSoC 6制作完整的测试系统来与BMI160进行通话...
  10. 数据可视化|用散点图进行数据分析
  11. html中表格背景颜色代码,html,表格背景颜色.doc
  12. Intel Hex概述 以及 intel2readmemh 和 Intel HEX to BINARY File Converter Utility
  13. day 32 子进程的开启 及其用法
  14. ajax 传递请求参数
  15. win10 系统开启自带热点,手机无法连接(连接超时)
  16. 访问学者在德国访学,值得推荐的特色美食有哪些?
  17. 域前置,水太深,偷学六娃来隐身
  18. 电脑桌面点击计算机反应迟钝,电脑桌面刷新反应慢?一个小操作即可解决!
  19. 自动驾驶仿真软件简介----CARLAGazeboLGSVLOthers
  20. namedtuple

热门文章

  1. Ensemble_learning 集成学习算法 stacking 算法
  2. 视频裁剪小工具(批量)
  3. docker入门(启用容器)
  4. 群晖服务器里很多tmp文件,黑群晖 篇一:内存映射解决黑群晖休眠频繁唤醒问题...
  5. 再见科比,再见逝去的青春
  6. 计算机作文 六年级,我和电脑作文(2篇)
  7. codeforce_exercise_r17
  8. python 使用socket建立小型聊天室
  9. UpdateData()用法
  10. driftnet 未找到命令