基于DoS攻击的随机数据包标记源跟踪算法
基于DoS攻击的随机数据包标记源跟踪算法
发布时间:2016-12-26 来源:查字典编辑
摘要:作者:饥饿加菲猫(QQ120474)iojhgfti@hotmail.com摘要:针对互联网上日益猖獗的拒绝服务攻击(DoS),分析了传统的...

作者:饥饿加菲猫(QQ120474)

iojhgfti@hotmail.com

摘要:针对互联网上日益猖獗的拒绝服务攻击(DoS),分析了传统的随机数据包标记算法的性能缺陷,提出一种新的基于散列消息鉴别码的返回跟踪算法HPPM,通过分析其性能指标,说明该算法提高了返回跟踪DoS攻击的效率和准确性。

感谢帮过我的几个高手袁哥[nsfocus],sunwear[E.S.T],isno[xfocus],scz[nsfocus]

1.引言

拒绝服务攻击,简称DoS(Denial-of-Service),是一种常见的黑客攻击行为。这种攻击行为通过发送带有虚假源地址的数据包请求,使网络服务器充斥大量等待回复的信息,消耗网络带宽或系统资源,使网络或系统服务负载过重,服务质量下降,直至瘫痪而停止正常的服务。有时,黑客为了提高攻击的效果,往往会联合多个攻击站点向受害者发动进攻。由于DoS攻击易于实施、难于防御,而且很难返回跟踪攻击源,使之成为一个严重侵扰网络服务提供商、政府机关和金融证券等机构正常运作的安全问题。

2.IP返回跟踪相关技术

为了彻底消除DoS攻击,必须追根溯源,找到真正的攻击机器或攻击者。这种方法被称为IP返回追踪技术(IPTraceback)。由于DoS攻击者在发送攻击数据包时往往会伪造源地址,使得IP返回追踪的难度很大。常用的IP返回追踪方法有:入口过滤(IngressFiltering)、连接测试(LinkTesting)、ICMP追踪[7]、登录分析(Logging)、源路径隔离引擎(SPIE)、IPSec追踪,以及随机数据包标记追踪(PPM)[2]。各种追踪技术之间的性能比较,如表1所示。

管理负担网络负担路由器负担分布式能力事后追踪能力预防/反应

进入过滤中等低中等N/AN/A预防

输入调试高低高好差反应

控制流低高低差差反应

登陆分析高低高极好极好反应

ICMP追踪低低低好极好反应

数据包标记低低低好极好反应

表1几种IP返回追踪技术的性能比较[2]

3.HPPMIP返回跟踪算法

3.1PPM算法(ProbabilisticPacketMarking)

随机数据包标记算法PPM的主要原理如下:路由器以一定的概率p(通常是1/25)[2],用其IP地址或IP地址的一部分随机标记经过它的数据包。当发生DoS攻击时,受害者根据其收到的攻击数据包中的标记信息,重建攻击路径。使用PPM算法,路由器负担较小,采用标记边压缩和分片技术大大降低了额外的网络流量。而且,该方法可以在攻击结束以后对攻击源进行追踪。PPM对单源DoS攻击,有较好的追踪效果。

但是,由于其自身缺陷,PPM算法无法很好地返回跟踪DDoS攻击(Distributed–Denial–of–Service)。首先,由于路由器以概率p随机标记数据包,就给攻击者以可乘之机,将伪造的标记信息写入攻击数据包的报头中(一般是Identifier字段),只要该数据包一直不被其经过的路由器标记,直至目标主机,就能在攻击路径中伪造一条边路径,阻止受害者跟踪真正的攻击源。其次,为了节省存储空间,减小网络负担,PPM采用了边标记压缩和分片存储技术。但是,分片存储可能导致受害者将本不属于同一数据包的分片组合在一起,从而生成错误的边路径。而标记的边压缩方法主要依据(a○+b)○+b=a(a、b分别是攻击路径上相邻两个路由器的IP地址),将显著加剧这一效果,进一步生成错误的攻击路径。当发生DDoS攻击时,由于同一距离存在多个攻击者,而产生爆炸效果,影响将更加严重[2]。

3.2HPPM算法

针对PPM算法的上述缺陷,我们提出了一种基于散列消息鉴别码HMAC的数据包标记算法HPPM,并采用新的标记重叠分片策略,以提高IP返回跟踪DoS攻击(特别是DDoS攻击)的性能。

在该算法中,路由器Ri以概率p随机对经过它的数据包进行标记,标记信息包括Ri的IP地址和下一跳路由器Rj的IP地址,总共64位。为了节省标记存储空间,不给用户带来过多影响,算法使用IPv4首部中的16位标识符字段(Identifier),1位闲置的标志位(Flags)[1]和13位片位移字段(据统计,目前少于0.25%的数据包需要分片[2]),以及一般很少使用的8位TOS字段(Type-of-Service)[1],总共38位,来存储标记分片信息。64位标记信息被分成k=8片,每片占用8位,分片偏移值占log2k=3位,Ri到目标主机的距离值占5位(25-1=31跳,适用于目前绝大多数网络[2]),用于验证的HMAC值占22位。

散列消息鉴别码,简称HMAC,是一种基于消息鉴别码MAC(MessageAuthenticationCode)的鉴别机制。使用HMAC时,消息通讯的双方,通过验证消息中加入的鉴别密钥K来鉴别消息的真伪;HMAC还引人了一个散列函数H,对消息进行加密,进一步确保消息鉴别的安全性和有效性。HMAC的具体计算方法如下:

HMAC(M,K)=H(K○+opad,H(K○+ipad,M))

其中,ipad=字0x36重复B次,opad=字0x5C重复B次,M=待加密的消息字符串,B=消息字符串的字长。关于HMAC更详细的内容,请参考文献RFC2104[6]。

在HPPM算法中,我们采用一次性口令机制OTP(One-TimePassword)[4][5],先让每个路由器Ri生成一组私有密钥序列{Kij}(j=0、1、2……)。这组私有密钥序列通过单向散列函数f生成,并具有以下规则:Kij-1=f(Kij)。由于函数f是单向的,所以由最新的密钥Kij可以依次推出在它以前生成的所有Kij-1、Kij-2……Ki0,但根据已有的密钥却推不出下一个密钥,这就确保了他人无法伪造Ri的密钥。路由器Ri每经过一段固定的时间间隔,就根据上述方法更换一次私有密钥Ki,然后将刚刚停止使用的密钥通过可靠的方式发布出去。当数据包P通过Ri时,Ri使用HMAC函数H和当前私有密钥Ki,对Ri的IP地址和P的目的地址进行加密,即:H(M,Ki),其中,M=IP(Ri)+IP(destination)。具体的标记步骤如下:

MarkingprocedureatrouterRi:

letmbethemarkingmassageip(Ri)+ip(Rj)

letkbethenumberoffragmentsinm

letHbetheHMACfunction

letKibetheprivatekeyofRiatcurrenttimeinterval

foreachpacketw

letxbearandomnumberfrom[0..1)

ifx<pthen

lethmacbetheHMACvalueofIP(Ri)+IP(w.destination)

hmac:=H(IP(Ri)+IP(w.destination),Ki)

letobearandomintegerfrom[0..k-1]

letfbethefragmentofmatoffseto

writefintow.frag

write0intow.distance

writeointow.offset

writehmacintow.hmac

else

incrementw.distance

以下将讨论受害者重建攻击路径的过程。当受到DoS攻击时,受害者开始收集标记分片,并记录其到达时间。我们假设攻击者发送大量的攻击数据包,那么受害者就能收集到足够多的标记分片,然后根据分片的偏移值,将具有相同攻击距离d和hmac值的分片重组,生成边路径,进而生成整个攻击路径。由于攻击者可能伪造标记数据包,干扰返回跟踪过程,因此需要对生成的边路径鉴别真伪。具体鉴别方法是:受害者与路由器Ri(服务提供商)联系,取得Ri最新的私有密钥K,然后根据K和数据包P到达时间(需要考虑延时),使用相同散列函数f计算出Ri标记P时使用的私有密钥Ki;再根据Ri和自身的IP地址,以及Ki,计算出HMAC值与标记数据包中的HMAC值进行比较,一致则说明该边路径有效,否则将其丢弃。重建攻击路径的具体过程如下:

Pathreconstructionprocedureatvictimv:

letFragTblbeatableoftuples(frag,offset,distance,hmac,time)

letGbeatreewithrootv

letedgesinGbetuples(start,end,distance,hmac,time)

letmaxd:=0

letlast:=v

foreachpacketwfromattacker

letrectimebethetimewhenvreceivesthepacketw

FragTbl.Insert(w.frag,w.offset,w.distance,w.hmac,rectime)

ifw.distance>maxdthen

maxd:=w.distance

ford:=0tomaxd

forallorderedcombinationsoffragmentshavingthesamehmacvalueatdistanced

constructedgez(IP(Ri),IP(Rj),w.distance,w.hmac,rectime)

//StartofHMACauthentication

letKbetheprivatekeyofRiatcurrenttimeinterval

letKibetheprivatekeyofRiatthetimeintervalwhenRimarkedthepacketw

letfbethefunctiontogetKiaccordingtoKandrectime

Ki:=f(K,rectime)

ifw.hmac=H(IP(Ri)+IP(v),Ki)

insertedgez(IP(Ri),IP(Rj),w.distance)intoG

//EndofHMACauthentication

removeanyedge(x,y,d,hmac,time)withd≠distancefromxtovinG

extractpath(Ri..Rj)byenumeratingacyclicpathsinG

4.HPPM算法性能分析

4.1攻击收敛包数

根据[2],受害者收到距离为d的路径上最远处路由器发来的标记数据包的概率是:p(1-p)d-1。保守假设受害者收到该路径上任一路由器发来标记数据包的概率都与最远距离d处相同,并且相互独立,因此受害者收到的任一数据包被该数据包途经路径上某些路由器标记过的概率,将具有期望值:1/dp(1-p)d-1。

根据coupon-collector问题[8],受害者收到的从距离为d的路径上发来的数据包中,包括所有d个路由器中每个路由器发出的至少一个标记数据包,所需要接收的数据包数,具有以下期望值:1+d/(d-1)+d/(d-2)+……+d/2+d=d(ln(d)+O(1))。考虑到每个标记数据包被分成k片,总共有kd片,则上述值为kd(ln(kd)+O(1))。因此,重建距离为d(包含d个路由器)的攻击路径所需要的数据包数N,具有期望值:

E(N)<kd(ln(kd)+O(1))

1/dp(1-p)d-1≈k

ln(kd)/p(1-p)d-1

因此,该算法攻击收敛包数与PPM边标记算法相同[2]。

4.2健壮性

在PPM算法[2]中,对于输出长度为h的散列随机函数,受害者接受任一候选边路径的概率是1/2h。假设有m个攻击者,则在一定距离d处,最坏情况下将有m个独立的路由器。因此,在距离受害者d处,本不在实际攻击路径中的任意候选边路径被受害者接受(即:产生了正误差[3])的最大概率将是:1-(1-1/2h)n(其中n=mk)[2]。因为,最坏情况下,距离d处将有mk个标记分片。当k值或m值很大时,这一概率也将变得很大。而HPPM算法使用的HMAC鉴别机制,可以十分有效地鉴别攻击者伪造的边路径,将伪造的边路径从候选边路径中过滤掉,从而充分减小了算法产生的正误差,提高了返回跟踪的准确性。

4.3路由器负担

由于采用HMAC和一次性口令机制来加密攻击数据包中的边标记,因此中间路由器无须承担PPM算法中每个路由器对其IP地址和已有边标记进行的异或运算(a○+b)○+b。而HMAC的计算过程简单,扩展性也很好,当发现或需要运算速度更快或更安全的散列函数时,几乎不用修改,就可以很容易地实现底层散列函数的替换,参阅文献[6]。为了使数据包标记过程更加安全,路由器需要周期性更换其用于加密边标记的私有密钥。这个周期需要进行适当选择,周期太短将给路由器带来额外负担,且不利于与受害者的同步,周期太长又影响算法安全性,可以考虑把10秒作为其数量级[3]。

4.4受害者负担

由于使用了一次性口令机制,受害者需要获取上游路由器加密边标记时使用的私有密钥。一种可行的方法是,上游路由器将最新密钥通过可信渠道发布(如:发布在网站上),受害者鉴别边标记真伪时,只需下载该路由器的最新密钥,根据最新密钥就能推算出该路由器以前加密边标记时使用的所有密钥。这一过程可以在常数时间内完成。

4.5算法局限性

HPPM算法,要求受害者掌握网络拓扑结构,具有其上游路由器的地图,这在一定程度上限制了算法的发展。受害者与中间路由器关于密钥的同步过程还需要进一步考虑。

5.总结及未来工作

本文描述了一种新的基于散列消息鉴别码HMAC的随机数据包标记算法HPPM,该算法用于返回跟踪DoS攻击的攻击源,能够充分减小由于攻击者伪造数据包标记而带来的误差,提高了返回跟踪的安全性和准确性。然而,该算法还有不完善的地方,比如:与大多数返回跟踪算法一样,HPPM算法是一种反应型跟踪算法,即:只有确实发生了攻击,才能进行跟踪。并且,该算法实际上无法跟踪到真正的攻击源,只能返回跟踪到最接近攻击源的边界路由器。这些问题都有待进一步研究。

参考文献

[1]W.RichardStevens著,范建华胥光辉张涛等译,谢希仁校,《TCP/IP详解——卷1:协议》[M],第1版,北京:机械工业出版社,2000年4月,第24-27、111-112页.

[2]S.Savage,D.Wetherall,A.KarlinandT.Anderson.PracticalnetworksupportforIPtraceback[C].InACMSIGCOMM,Stockholm,Sweden,2000,295-306.

[3]D.X.SongandA.Perrig.AdvancedandauthenticatedmarkingschemesforIPtraceback[C].InIEEEINFOCOMM,April2001.

[4]N.Haller,TheS/KEYOne-TimePasswordSystem[Z],InternetRFC1760,February1995.

[5]N.Haller,AOne-TimePasswordSystem[Z],InternetRFC2289,February1998.

[6]H.Krawczyk,M.Bellare,andR.Canetti,HMAC:Keyed-HashingforMessageAuthentication[Z],InternetRFC2104,February1997.

[7]S.M.Bellovin.ICMPTracebackMessages[Z].InternetDraft:draft-bellovin-itrace-00.txt.March2000.

[8]W.Feller.AnIntroductiontoProbabilityTheoryandItsApplications[M].2ndedition,volume1.WileyandSons.1966.

[9]K.Park,H.Lee.OntheEffectivenessofProbabilisticPacketMarkingforIPTracebackunderDenial

ofServiceAttack[C].InIEEEINFOCOM,2001.

推荐文章
猜你喜欢
附近的人在看
推荐阅读
拓展阅读
相关阅读
网友关注
最新漏洞研究学习
热门漏洞研究学习
实用技巧子分类