SIP协议的攻击方法

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

SIP协议面临安全威胁最常见的SIP攻击都是指向SIP协议本身的一些安全漏洞。比如,SIP采用的明码原文传输机制决定了它的信息总是以未加密的明码原文形式在网络上传输,因此容易被识别和篡改。归纳起来,针对SIP的主要攻击有如下几项。1.中间人攻击如果没有外加安全机制,SIP协议无法防御以ARP欺骗或其他技术实施的中间人攻击。一旦中间人攻击形成,通话双方的所有RTP包都将先被传输至攻击者的电脑上。从某种意义上说,攻击者的电脑成为了两个用户之间的一个看不见的路由器。此外,因为所有的RTP包都是以明码原文形式传输的,攻击者可以轻易地重组这些包并获得.wmv可执行文件。一些常见的软件,如Wireshark可以帮助重组RTP包。2.密码获取攻击未经授权的第三方可以通过截取REGISTER报文中的信息破解用户密码。在实施了中间人攻击后,攻击者将有能力截取明码报文。而后,未经授权的第三方可以根据报文中的信息执行字典式攻击,破解该报文所代表的用户密码。在SIP协议中,用户密码是以哈希值的形式在网络上传输的,而哈希算法从理论上确保了不能由密文推出原文。尽管如此,攻击者可以将他能预测到的各种可能的密码写入字典中,并逐个计算它们的哈希值。一旦攻击者计算出了与报文中相同的哈希值,用户密码也就被破解了。此外,与穷举式攻击不同,字典式攻击更难被察觉。这是因为该攻击可以离线操作,因此不受SIP服务器的安全设置的约束,例如“用户最多只能尝试输入3次密码”等。然而,我们注意到,字典式攻击在本质上是不稳定的。这是因为该攻击的成功与否完全取决于用户的密码是否被提前输入在攻击者的字典里。换句话说,如果用户使用的是相对简单的密码,例如12345,该密码的安全级别将非常低;然而,假如用户使用了由大小写字母以及各种数字组成的复杂密码,该密码的安全级别将会显著提高,因为攻击者很难在其字典中预测到这种密码组合。虽然如此,在VoIP通信中将所有的安全压力都只放在用户的密码上并不是个明智的选择。大多数用户,即便意识到简单密码的缺陷,出于方便记忆的考虑依然倾向于使用简单密码,例如他们的名字、房屋号码、手机号码、车牌照或者生日,而在离线字典式攻击下,这些简单密码的易受攻击性将会被进一步扩大。3.拒绝服务攻击(DoS)攻击者可以通过大量发送包含伪造IP地址的报文来实现拒绝服务攻击。通常来说,攻击者会在报文的From包头中添加一个伪造的地址以伪装自己,并将受害者的IP地址添加在To包头中。当SIP实体接受到该报文后,UA会自动回复该报文而不进行询问。这是因为SIP协议中将UA设定为不对会话INVITE进行验证,而只是产生一些对应的变量,如tag和call-ID值,来唯一地标识该对话。因此,攻击者可以编写一个很简单的程序生成含有随机信息的INVITE报文。而随着大量INVITE报文的生成和发送,受害UA将会在短时间内收到大量未接来电,从而导致该UA丧失与其他合法用户通信的能力。4.会话终止攻击一旦会话在用户双方三次握手建立后,任何通信一方都可以终止会话。在此条件下,攻击者可以监控用户双方间的通话,截取其传输的报文,提取报文中的关键会话变量,如branch、tag以及call-ID值。根据这些变量,攻击者可以产生一个伪造的BYE报文发送给通话的任意一方,造成该通话在未经授权的情况下即被终止。SIP协议的安全机制本质上,SIP协议应用的两种安全机制分别为逐跳机制(hop-by-hop)和端对端机制(end-to-end)。HTTP摘要认证和S/MIME就是被应用于SIP的两种常见的端对端安全机制。对HTTP摘要认证而言,用户将会被SIP服务器询问其储存于数据库中的密码,而作为应答,用户密码的摘要将会被传输于底层协议中。S/MIME则采用了非对称加密技术,依靠认证中心(CA)签发的证书和个体产生的签名,为UA和SIP服务器提供认证功能;同时,S/MIME也采用对称加密技术为SIP的载荷SDP提供机密性保证。但是,仍然有一些SIP报文的包头不能被S/MIME所加密,这是因为SIP协议规定SIP报文中的某些包头必须被设定为明码原文并可以被中间实体所修改,例如Via包头。当分析上述两种端对端安全机制的优点和缺陷时,我们注意到:●执行和部署HTTP认证机制很容易,但是它使用的算法相对简单也导致了其只能提供相对较低的安全级别。尽管MD5哈希算法可以确保攻击者不能仅仅根据哈希值反推出原文;但是,由于原文包含的除用户密码以外的所有变量在SIP报文中都是以明文方式传输,一旦大量的“变量—哈希值”对(pairs)被截获,用户密码的安全性将会在离线字典式攻击下变得十分脆弱。●S/MIME可以保证SIP报文的机密性、完整性、认证性以及不可否认性。但是S/MIME使用的隧道模式也导致了大量的数据传输以及更多的带宽需求,因此实施起来更为复杂。此外,在当今盛行的IPv4环境下,S/MIME最大的制约条件就是公共密钥基础架构(PKI)的缺乏。而一旦使用另一种自签凭证,Diffie-Hellman密钥交换技术并不能阻止可能的中间人攻击,这又将引发新的安全问题。对于逐跳安全机制来说,IPSec和TLS是两种最常见的机制。在单向的TLS认证中,只有用户可以认证SIP服务器,因为服务器持有CA签发的证书,但反之则不然。与S/MIME类似,此协议同样使用非对称加密技术并因此依赖于IPv4环境下缺少的PKI。此外,TLS认证机制只能被部署在相邻的SIP实体间。因此,当一个SIP实体(尤其是服务器)需要维持大量的与其他不同SIP实体相同步的TLS连接时,该实体很可能会变得超负荷。IPSec协议运行于网络层,它可以提供对整个原始报文的封装并为其添加新的包头。这可以保证即便是那些特殊的SIP包头(即那些必须对中间实体可见的包头)也不会对未经授权的第三方可见。但是,IPSec在IPv4中只是一个非强制性的选择,这也导致了其较低的部署和执行率。简而言之,当逐跳安全机制和端对端安全机制共同执行时,SIP协议可以得到充足的安全支持。但遗憾的是,部署这些安全机制都存在着或多或少的局限性。其中之一就是在当前网络环境中缺乏PKI,而这又恰恰是实施非对称加密技术的必要条件之一。增强安全性的建议作者提出了一种可能的解决方法:允许UA采用对称密钥加密算法来询问SIP服务器。为了保证通信的认证和机密性,在用户和代理服务器之间实施作者提出的安全机制的具体步骤为以下几个方面。1.加密及认证(1)用户Alice首先生成一个nonce1值,并将该值、服务器uri以及username一起作为REGISTER#1报文的一部分发送给服务器。报文中其他包头均被设为anonymous。(2)服务器在收到报文后,初始化一个对Alice的询问。服务器产生一个新的nonce2值(防止重放攻击)和一个会话密钥Ks,并用Ks加密nonce2和realm值。同时,服务器根据收到的username值从数据库中调用Alice的密码password,计算出哈希值Kh=HMAC[password,(nonce1,username,uri)],并用该哈希值加密会话密钥Ks,以此发起对Alice的挑战。(3)在收到服务器的询问后,Alice同样根据自己的username、nonce1以及password计算出Kh。接着,Alice利用Kh解密出从服务器收到的会话密钥Ks,并根据此密钥进一步解密出服务器发送的realm和nonce2值。因为服务器的realm值对Alice是可知的,因此只要Alice确认解密后的信息中包含realm值,就可完成对服务器的认证。(4)完成了对服务器的认证后,Alice向服务器发送REGISTER#2报文,并将nonce2值作为包头添加在报文中。(5)服务器在收到REGISTER#2报文后检查nonce2值。如果该值正确且未超时,则服务器可以确认对Alice的身份认证。(6)确认后,服务器向Alice发送200ACK报文。2.术语由Alice生成的会话密钥:Ks由AES算法加密:E,Ks由AES算法解密:D,KsMessage-digestAlgorithm5算法:HMAC(K,m)MD5算法的128比特位输出:Kh3.机制运行过程在Alice发送给服务器的REGISTER#1报文中,所有的包头都应被设定为匿名的,即“anonymous”,以免关键信息以明码原文的方式泄露给第三者。Alice应首先产生一个伪随机值nonce1,以唯一地标识其与服务器的此次会话。同时,为了实现用户对服务器的认证,我们应该为REGISTER#1报文增添一个新的应用对称加密算法(Symmetric)作为认证机制(Scheme)的包头,叫做“Encryption-Authenticate”。在该包头中,Alice添加值为nonce1、username=Alice,uri=anonymous。在收到REGISTER#1报文后,服务器根据报文中的username从数据库中调用Alice的密码值password。利用该密码值及报文中提供的nonce1、username和uri,服务器利用MD5计算出128位的散列消息鉴别码“Kh=HMAC[password,(nonce1,username,uri)]”。服务器同时生成一个会话密钥Ks用来加密它与Alice的此次通话,并采用AES算法用Kh加密Ks,即EKh(Ks)。此外,服务器还产生一个伪随机值nonce2,并用会话密钥Ks加密nonce2和realm值以实现对Alice的身份认证,即“response=‘EKs[nonce2+realm]’”。在将这些信息添加在服务器对Alice的响应401Unauthorized报文中后,服务器同样将nonce1明码附加在报文的包头中。(代码略)从服务器处收到401Unauthorized报文后,Alice首先从报文中提取信息EKh(Ks)。根据报文中指示的密钥“Kh=HMAC[password,(nonce1,username,uri)]”,Alice利用自己的密码计算出Kh,并进一步解密出服务器生成的会话密钥Ks,即“DKh(EKh(Ks))”。在得到了Ks后,Alice再根据报文中提供的“EKs[nonce2+realm]”解密得出值“nonce2+realm”。根据解密出的realm值与报文中“realm=source.com”的比较结果,Alice就能够完成对服务器的身份认证。这是因为除Alice外,只有服务器知道Alice的密码值password并可以根据该值生成HMAC值Kh;如果realm值与解密后的密文相符的话,则可以确认服务器的身份和会话密钥Ks的可靠性。随后,Alice将值nonce2以明文形式通过REGISTER#2报文发送给服务器,以完成服务器对其认证的挑战。注意,在该报文中所有的关键信息都将被会话密钥Ks所加密,而不是设为anonymous。(代码略)在收到REGISTER#2报文后,服务器检查Authorization包头中的nonce2值是否正确。如果正确,则服务器完成对Alice的身份认证。而作为认证完成的回应,服务器将向Alice发送200ACK报文,声明Alice已经注册成功。注意,200ACK报文的包头中的信息同样需要使用会话密钥Ks加密。4.机制评估尽管此方法可能会提高拒绝服务攻击对SIP服务器的攻击性(因为服务器需要进行更多的加密算法运算),但是作者仍然认为其利大于弊。首先,该方法为UA提供了一种验证SIP服务器的机制,让UA不再简单地选择“相信”服务器。其次,此方法同样可以保证SIP报文的机密性,因为:(1)不同于HTTP摘要式认证(HTTPDigestAuthentication),在此种机制下,攻击者仅仅能得到明码原文的nonce1、username和nonce2值,而用这些值并不足以破解用户密码;(2)在用户和服务器利用用户密码的哈希值交换会话密钥后,所有的关键信息均经过会话密钥的加密,而这可以保证只有通信双方可以获取报文信息。再者,此方法不涉及使用非对称

1 / 5
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功