摘 要ICMP协议是基于IP层之上的,同时为IP层提供辅助的一个协议。本文介绍了ICMP的洪水攻击以及相应的检测与防范措施。

关键词:ICMP洪水攻击;洪水攻击检测;压制与防范

洪水攻击(FLOOD ATTACK)指的是利用计算机网络技术向目标机发送大量的无用数据报文,使得目标主机忙于处理无用的数据报文而无法提供正常的服务的网络行为。

洪水攻击用大量的请求来淹没目标机,主要利用了网络协议的安全机制或者直接用十分简单的拼资源的方法来对目标机造成影响。

攻击的手段主要是使用畸形的报文来让目标机进行处理或者等待,一般都是在原始套接字层进行程序设计。洪水攻击主要分为ICMPUDPSYN攻击3种类型,本文主要介绍ICMP洪水攻击的检测与防范。

一、ICMP协议简介

ICMPInternet Control Message Protocol ,因特网控制消息协议)运行在网络层,是一种管理协议,为IP提供收发服务,其消息是以IP数据报的形式传输的。它是TCP/IP协议族的一个子协议,用于在IP主机、路由器之间传递控制消息。控制消息是指网络通不通、主机是否可达、路由是否可用等网络本身的消息。通用的数据报格式如图1所示。


图1 ICMP数据报格式

类型字段用以描述特定类型的ICMP报文,用代码字段进一步描述不同的条件。例如:类型0,代码0表示回显应答,类型8,代码0表示请求回显。ICMP报文主要分为两类:差错和查询。查询报文是用一对请求和回答定义的。差错报文通常包含了引起错误的IP数据报的第一个分片的IP首部,加上该分片数据部分的前8个字节。

ICMP报文可以用来进行地址掩码请求与应答,时间戳请求与应答,生成端口不可达差错报文等。

利用ICMP报文并添加大量无用数据,每秒发送1000个以上报文就可以产生洪水攻击。下面介绍ICMP洪水攻击的三种方式。

二、ICMP洪水攻击的三种方式

1、直接洪水攻击。

使用ICMP洪水直接攻击对方,这种攻击会暴露自己的IP地址。如图2所示。


图2 直接洪水攻击

2、伪装IP攻击

通过修改源IP地址,使用ICMP洪水攻击对方,这样对方无法获取攻击者真实IP地址。

3、反射攻击

这种攻击方式的洪水不是由攻击者发出的,也不是伪造IP发出的,而是正常通讯的服务器发出的。将源IP地址修改为受害者的IP地址,对多台服务器发送请求报文,这样服务器将返回应答报文给受攻击者。间接对受害者进行攻击。如图3所示。


3 反射攻击

三、ICMP洪水攻击的检测方式

本文采用的攻击代码是伪装IP的方式,源IP地址随机生成,目的地址为本机地址,采用256个线程对本机进行攻击。一个IP报文1052字节,包括20字节IP头,8字节ICMP头和1024字节的无用数据。攻击时受害者抓包如图4所示。


4 受害者遭受ICMP攻击时抓包情况

一般黑客在进行ICMP洪水攻击的时候,会和木马或者蠕虫病毒配合起来使用,造成大范围ICMP洪水来攻击受害者。本文中ICMP洪水攻击的实验环境是1台攻击者,1台受害者。受害者没有受到攻击时,网卡每秒20 Packets左右,而其中ICMP报文只有几个。在受到攻击时,网卡每秒500 Packets左右。所以可以通过程序计算出当前ICMP包速率是否超过阈值,就可以判定是否受到了ICMP攻击。阈值可以根据设备平常运行情况来进行调整,这里设置受到ICMP洪水攻击的默认阈值为100 Packets/s

icmp_count 表示当前接收到的ICMP报文数,当icmp_count == THRESHOLD_COUNT(默认1000)时,计算收到这THRESHOLD_COUNT个报文所用的时间icmp_interval,最后计算出每秒接收到的ICMP报文速率icmp_speed,判断是否大于阈值THRESHOLD_SPEED(默认100 Packets/s),若大于阈值则判定受到ICMP洪水攻击。

运行检测程序结果如图5所示。


图5 ICMP攻击检测程序

可以看到当前受到ICMP洪水攻击,超过了阈值的100 Packets/s。当然可以根据机器能承受的范围调整ICMP检测的阈值,一般可以设置阈值为1500 Packets/s。

四、ICMP洪水攻击的防范与定位

1、 ICMP洪水攻击的防范

当受到ICMP洪水攻击的时候,受害者可以更改自己的IP地址。或者更直接的方法就是屏蔽ICMP协议。

1.1 windows下过滤ICMP

通过控制面板的系统安全选项,打开管理工具,设置本地安全策略,选择IP安全策略,在这里定义自己的IP安全策略。

一个IP安全过滤器由两个部分组成:过滤策略和过滤操作,过滤策略决定哪些报文应当引起过滤器的关注,过滤操作决定过滤器是”允许”还是”拒绝”报文的通过。要新建IP安全过滤器,必须新建自己的过滤策略和过滤操作。

右击”IP安全策略,在本地机器”,选择”管理IP过滤器和IP筛选器操作”,在管理IP筛选器和IP筛选器操作列表中添加一个新的过滤规则,命名为ICMP_DENY。源地址选任意IP,目标地址选本机,协议类型是ICMP,切换到”管理筛选器操作”,增加一个名为Deny的操作,操作类型为阻止。再次右击本机的”IP安全策略,在本地机器”,选择新建IP安全策略”ICMP过滤”,通过增加过滤规则向导,我们把刚刚定义的ICMP_DENY过滤策略指定给”ICMP 过滤”,然后在操作选框中选择我们刚刚定义的Deny操作,退出向导窗口,启用安全策略。过滤ICMP报文如图6所示。


6 windows 下过滤ICMP报文

1.2 Linux下过滤ICMP

增加过滤规则iptables -A INPUT -p icmp -j DROP

删除过滤规则:iptables -D INPUT -p icmp -j DROP

2、ICMP攻击源的定位

如果攻击者没有修改IP报文的源地址,那么抓包获得到的源地址就是攻击者的IP地址。

如果攻击报文的源IP是伪造的,可以使用入口包标记方法,不过这种方法需要改造所有的边界路由器功能,而且每一个数据包向外发出都必须签名,下一跳路由器必须认证。

入口包标记方法在每一个数据包向外发送时由边界路由器标记其 IP 入口地址、时间戳等,接着边界路由器写下转发端口的数据链路层标识进行签名。下一跳路由器对边界路由器签名进行认证(比较实际传送的数据链路层标识与带入口标记的 IP 包中的数据链路层标识是否一致)。这种方法目的是防止 IP 欺骗而进行源认证。当目的主机检测到 DDoS 攻击,则可查询攻击包中的入口包标记,直接定位到离攻击源最近的边界路由器。

五、小 结

本文提出了针对ICMP洪水攻击的检测方法,随后给出了ICMP洪水攻击的防范与定位,但是洪水攻击形式多种多样,需要进一步加入更多种检测与防御的方法。

参考文献

[1] Gary R.WrightW.Richard Stevens. TCP/IP详解
1:协议[M]. 北京:机械工业出版社,2000.4.

[2] Gary R.WrightW.Richard Stevens. TCP/IP详解
2:实现[M]. 北京:机械工业出版社,2000.7.

[3] 宋敬彬. Linux网络编程 [M]. 北京:清华大学出版社,2010.1.

[4] 蔡玮珺,黄
. DDoS攻击IP追踪及攻击源定位技术研究[J].计算机工程,2006.732(14).

[5]
东,胡建伟,赵国庆. ICMP攻击及其相应对策[J].无线电通信技术,200228(4).



分类: 网络

发表评论

电子邮件地址不会被公开。 必填项已用*标注