浅析Icmp原理及隐蔽攻击的方式

VSole2021-11-26 06:38:49

一、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.在官网进行下载:http://freshmeat.sourceforge.net/projects/ptunnel/

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种工具进行建立隐藏隧道进行隐蔽攻击。

icmpicmp重定向
本作品采用《CC 协议》,转载必须注明作者和本文链接
在现实世界中,DDoS攻击的发展趋势是和攻击目的和商业活动结合,一般用来帮助攻击竞争对手或者勒索被攻击对象,这导致DDoS攻击发生的频度越来越高,攻击的流量越来越大,流量高达100Gbps的攻击已经非常常见。另外,随着技术的不断演进以及网上免费的可用DDoS工具增多,发起DDoS攻击的技术难度在降低,DDoS的攻击类型也在不断变化,慢速攻击和应用层DDoS攻击等也会提升识别和防护的难度。因此DDo
隧道与端口转发
2021-11-18 08:26:13
如果想获得课程报名资格,请添加文末小助手微信咨询。查看是否禁止了出站ip或者禁止了出站端口或者禁止了出站协议。情况1:目标禁止出站ip如果目标主机设置了严格的策略,防火墙只允许目标内网机器主动连接公网指定的ip。这样的话,没法反弹shell。情况2:禁止出站端口Linux系统使用Linux系统自带命令探测出网端口。
你加密的压缩包比你想象中的还不安全! 哪怕对于信息安全人员来说,很多时候给压缩包加上一个密码就以为的是万事大吉了。但事实是,很多情况下,你的加密压缩包,远远没有你想象的安全。
用户名:加密密码:密码最后一次修改日期:两次密码的修改时间间隔:密码有效期:密码修改到期到的警告天数:密码过期之后的宽限天数:账号失效时间:保留。查看下pid所对应的进程文件路径,
它是TCP/IP协议簇的一个子协议,用于在IP主机、路由器之间传递控制消息。这些控制消息虽然并不传输用户数据,但是对于用户数据的传递起着重要的作用ICMP协议主要提供两种功能,一种是差错报文,一种是信息类报文。标识符和序号字段分别是16 位的字段。对于标识符,应用程序执行期间送出的所有报文里填入相同的值。例如,icmptunnel会在所有的ICMP payload前添加”TUNL”标记来识别隧道。
红蓝对抗—蓝队手册
2022-03-18 14:22:22
红蓝对抗的主要目的在于,提高公司安全成熟度及其检测和响应攻击的能力。
ping 能够以毫秒为单位显示发送请求到返回应答之间的时间量。共发送了四个测试数据包,正确接收到四个数据包。但如果收到 0 个回送应答,那么表示子网掩码不正确或网卡配置错误或电缆系统有问题。最好与对某台 “设置良好” 主机的 ping 结果进行对比。
需要这种特殊权限的场景在Linux下很常见。ping需要发送ICMP报文,而这个操作需要发送Raw Socket。比如,/bin/ping这个程序的所有者是root,它设置了s位,那么普通用户在运行ping时其Effective UID就是0,等同于拥有了root权限。这里引入了一个新的概念Effective UID。第一部分指定用户,第二部分指定可充当用户,第三部分指定 sudo 可运行的命令。
需要这种特殊权限的场景在Linux下很常见。已知的可以用来提权的Linux可执行文件有:CopyNmap、Vim、find、Bash、More、Less、Nano、cp比如常用的ping命令。
Linux|suid提权总结
2021-09-15 09:38:59
suid即set user id,是一种授予文件的权限类型,它允许用户使用者以文件所有者的权限来执行文件。需要这种特殊权限的场景在Linux下很常见。
VSole
网络安全专家