您当前的位置是:  首页 > 技术 > 企业通信 > 新闻 >
当前位置:首页 > 技术 > 企业通信 > 新闻 > SIP系列讲座-SIP安全-3-RTP加密-攻击类型-防范方法-攻击工具

SIP系列讲座-SIP安全-3-RTP加密-攻击类型-防范方法-攻击工具

2017-11-09 14:59:28   作者:james.zhu   来源:CTI论坛   评论:0  点击:


  前面的讲座中,他们介绍了SIP安全的几个核心概念,包括,认证,签权,SIP加密,TLS等。现在我们继续讨论关于对语音的加密,DTLS,目前出现的几个安全问题,如何防范这些安全问题和如何使用工具来检测这些问题。
1
  在我们的讲座中,我们前面讨论了对SIP信令的加密,但是仅对SIP加密仍然不会实现真正的加密,系统必须对语音也进行加密。对语音加密的则称之为SRTP。
  SRTP的主要作用当然是确保语音流和RTP Payload的加密安全,同时防范第三方软件对语音的注入,确保本身语音的完整性。SRTP不使用PKI的方式来交换密钥,它使用的是Master key的方式。如果直接通过明文的SDP发送key是不安全的,所以必须使用加密的方式来传输。如果发起INVITE之前没有开启TLS的话,SDP消息中的k就会被暴露出来,这也是非常不安全的。
  如何传输以安全的方式传输SDP中的k是一个非常复杂的流程。以下是一个传输SDP k的流程图。这里需要注意到是,在传输过程中,用户需要设置SRTCP来保证第三方侵入,防止对呼叫方强制发送BYE消息,挂断呼叫。
  cipher 加密默认使用的是AES,它是一种高级的加密方式。RFC3711 标准对此加密方式的类型和算法有非常详细地说明,AES本身就非常复杂,笔者对此不是太了解,如果读者希望获得更多算法的话,笔者建议读者查阅RFC 3711。我们现在介绍的SDP中的k属性,它相对比较简单,所有的k的消息都在交互中进行。另外一种方式就是使用SDP中的Crypto,它也是一种交互机制,但是支持了很多参数,而且比较灵活。它主要描述了前一个单播媒体中的cryptographic suite,key 参数和会话参数。注意,Crypto必须出现在SDP的媒体中,不会出现在信令中。基本的语法格式为:
  a=crypto: []
  在以上的举例中,SDP包含了3个m 媒体流,但是其中的两个媒体流则使用了RTP/SAVP传输,每个媒体流都有自己的crypto。
  关于crypto具体的解释如下:
  tag 1 定义crypto的suite。一般默认是1。
  AES_CM_128_HMAC_SHA1_80 则表示是SRTP使用的cipher。
  HMAC_SHA1_80是一个80bit的认证tag消息。
  Master key的长度是128 bit(前面已经定义为AES_CM_128),默认的最大生命周期是2^20。
  inLine 是一种Key的方式。这里已经明确,inLine 后面的一串字符(PSXXXVBR)。注意,这里也可能是一个URL。
  1:32这里不是1 是Master Key ID,32 Bytes长。也可以支持更多更多的Master key,这些key未来可能会更新。
  我们的示例中使用的是默认的设置。关于crypto suite在RFC4586中有非常详细地定义,我们这里不再更多讨论。
  以下是一个终端设置的举例,用户必须启动相应的安全设置和参数。注意,不同的终端可能支持的参数有所不同,用户要注意检查。
  在SDP中的消息举例,这里通常出现的两个crpto中,用户会首先选择第一个crpto。另外,一定要注意,因为加密是双方的安全机制,需要双方检查,同时需要IPPBX本身要配置相应的设置,否则可能导致呼叫失败。
2
  尽管SIP加密方式已经对SIP信令点安全设置了很多复杂的算法,但是仍然缺乏对呼叫方的身份(Caller Identity)认证经过多次转发到身份保护机制。如果初始的SIP请求发起方经过多个路径,当初SIP消息的发起者的身份在到达最终目的地之前可能因为安全的问题发生修改。RFC4474 对类似呼叫方身份做了安全的保护。RFC 4474 在头域中定义了两个参数值:Identity和Identity-Info来确保发起请求者的安全。Identity负责传输用户有效性的签名消息,Identity-Info负责对证书签名者传输一个证明信息。
  以下图例解释了如何通过SIP头域中的Indentity和Indentify-Info 发送到呼叫请求中的身份消息。
  整个身份验证的流程经过以下几个步骤:
  终端发起INVITE消息,Proxy收到消息以后和自签的证书服务器进行交互。
  本地Proxy通过证书服务器,使用hash和from header生成本用户的Indentity。
  签名服务器返回证书消息,Proxy在SIP消息中添加证书的Indentity和Indentity-Info(证书发放签名)。然后对对端Proxy发起一个INVITE消息。
  对端Proxy收到INVITE消息以后,通过web server 获取证书信息,然后提取SIP消息中的Indentity和Indentity-Info,结合hash来计算用户安全身份。
  如果验证成功,则对另外一个终端发起INVITE消息。整个验证过程结束。
  注意,RFC 4474 仅发布了SIP请求中的安全机制,并没有规定如果发生错误时的响应处理机制。响应处理是一个更加复杂的处理流程,希望未来有更多RFC规定来进一步的优化。
  通过以上身份的验证,整个INVITE信息的安全处理结束,接下来启动语音的安全认证流程。这里使用了DTLS(Datagram Transport Layer Security)来验证Indentity和语音的加密处理。以前我们介绍过,TLS不能支持UDP的传输,但是实际工作场景中,仍然有很多应用使用UDP。所以,为了满足UDP的安全处理机制,通过对TLS拓展实现DTLS的安全机制。DTLS可以适用于时延比较敏感的应用场景和VPN(隧道)等场景。在以下场景中,INVITE完成以后,用户通过DTLS实现对双方Indentity加密认证,也包括来对语音进行加密。
  当然,以上场景仅是一个非常简单的双方呼叫的场景,事实上,在DTLS加密的环境中,很多应用层面的功能需要考虑,例如,匿名呼叫的防范,早期媒体流的处理,分拆SIP请求,多个媒体处理的握手认证流程。如果Proxy在处理这些功能处理时不能正确处理DTLS握手的流程,也同样会导致很多呼叫问题。关于DTLS的规定,用户可以参考RFC5763进行进一步的研究,我们这里比做更多讨论。
3
  上面我们提到了关于对发起呼叫方的安全控制机制,但是,目前仍然没有看到非常完整的关于呼叫方安全保障的完整的解决方案,除了RFC 4474以外,以下规定也对caller的身份做了相关的规定:
  • RFC 4474bis-00是RFC 4474的升级,除了header中的identiy以外使用,不仅仅在from header中使用SIP URL,在from header中还增加了Tel的号码支持。
  • STIR(Secure Telephone Identity)是目前专门针对VoIP-to-PSTN规定的标准,主要目的对发起呼叫者的号码进行保护和确认。因为,在实际电话应用的场景中,大部分的用户仍然相信普通电话号码的呼叫,但是因为网络的介入,PSTN号码可能最终被其他非法业务利用来进行非法呼叫。此标准专门针对非法呼叫,语音语音邮箱攻击等业务设计了不同的机制。具体规定请读者查阅STIR证书草案。
  • P-Asserted-Identity:服务提供商对号码服务提供的认证用户保护。其中,在SIP INVITE的呼叫中包括了caller id消息,Proxy 通过在SIP头中添加P-Asserted-Identity对呼出的网络声明其真实性。
  • PSTN网络中的ISUP通过S/MIME 支持了SIP的SDP加密,需要说明的是,SIP header 不会被加密,仍然需要通过TLS处理。此图例中,SIP经过两个Gateway 传输,最后到达另外一边的终端。通过MIME来传输ISUP消息。
  • IPPBX SIP trunk 和服务提供商之间的安全策略限制或防范设备。在上面的安全策略中,我们所探讨的都是基于本地认证机制来实现的。这些解决方案相对比较复杂。如果用户部署了企业IPPBX的话,企业IPPBX通过SIP 中继实现外部呼叫连接的话,可以通过以下方式实现:
  通过SIP中级加密的方式的话,企业用户的SIP中继必须需要安全处理,例如,使用MD5或者TLS加密的方式。如果按照这样的方式来对接运营商trunk,本地PBX需要支持支持运营商提供的认证方式,运营商也可以调整认证方式接受本地PBX生成的证书,本地IPPBX必须有有效的证书。
  使用对SIP支持比较好的防火墙来对SIP进行安全处理。事实上,类似的方法也可能遇到很多问题。
  使用IP-Sec 设备或者SBC来连接,通过IP-Sec设备来对所有语音设备进行加密处理。这里要注意,因为IP-Sec设备会处理全部的信令和媒体,增加了很多网络开销,带宽要求也会随之增加。从目前市场情况来看,如果针对VOIP 语音应用来说,可能SBC是最佳的解决方案。在后期的讨论中,我们会重点介绍SBC的作用,读者可以了解更多比较全面的关于SBC的解决方案。
4
  在前面的章节和本章节的前几个部分我们重点从技术的角度讨论了关于SIP中安全机制的设置和一些技术概念。在以下的图例中,VOIP用户仍然面对很多的安全问题,包括上面提到的那些问题,这些安全问题涉及了整个网络的方方面面,同时也涉及了公司安全策略和各种规章制度。
  研究人员Dimitris Geneiatakis发表的关于几种SIP安全的汇总:
  如果我们回到具体到现实环境中,SIP安全的问题主要包括以下几个方面:
  通常情况下,VOIP电话系统都会受到至少五种以上的攻击或侵入。因为篇幅的关系,我们这里不展开讨论所有的攻击方式和细节。关于以上攻击方式的介绍,请读者查阅SANS Institute Reading Room 发表的文章,作者重点介绍了各种攻击方式的概念和基本原理。哥伦比亚大学的SIP研究机构也发布过关于SIP安全的介绍,用户可以查阅。如果读者对安全方面的加密算法有非常浓厚的兴趣,可以查阅Amruta Ambre发表的关于算法加密讨论的文章。
  以下是一个示例通过修改SIP信息,把真正的呼叫转入到侵入者自己的终端,用户必须使用TLS/PKI/SRTP对信令和语音加密。
  更多关于使用工具侵入或伪装的操作方式,请参阅笔者提供的参考资料。
  另外一个案例是一个所谓通过钓鱼的方式获取用户信息。很多时候,钓鱼者会给用户发送邮件或者短信通知用户呼叫一个电话号码(例如:07558101000),说银行有什么业务需要客户马上联系银行。如果用户呼叫上面的号码的话,这时这个号码会呼叫网关的号码,然后通过VOIP网关修改路由,最后转呼到银行的电话号码上(真正的银行号码:07558100000)。如果用户不小心的话,可能听到银行的呼叫就会按照银行系统的要求输入用户密码信息(323345),这时,钓鱼者可以通过SIP线路上的DTMF按键音获取到用户的真正的密码消息。当然,这样的后果用户是知道的。
  另外,非法的盗打情况也可能经常发生,因为很多国际长途的花费是非常高昂的,犯罪分子利用国际话费结算的差价获利。中国国内经常会看到电话骚扰,电话盗打,电话欺骗的新闻。国外也有类似的问题发生。根据FBI的官方报道,2001 年第一个被逮捕的犯罪分子,通过攻击VOIP电话系统,转售获得利润的个人。
  FBI抓捕捕到盗打电话的罪犯。
5
  国家安全监管机构,VOIP行业,厂家,用户等都有非常明确的安全机制来防范安全问题,但是可能仍然会出现安全问题。我们今天介绍几个防范措施来最大限度保证用户的VOIP网络安全。目前,有效地防范VOIP网络攻击的手段很多需要公司系统管理员处不同角度来进行排查,其中也包括了对公司员工的安全教育,公司规定的安全规则,技术手段,安全设备部署等。
  关于技术方面的讨论我们前面的章节部分和以前的讲座中已经做了很多分享,现在,我们再补充一点来自于政府权威机构和研究机构的一些安全建议。
  美国国家安全监管机构FBI 建议,FBI的建议中,包括了从地理位置的安全处理,设备的安全处理,人员安全培训,管理员的安全培训,采购商的安全处理等方面的内容。以下图例解释了多种网络设备在安全方面的设置和相关的公司规章制度的设立,值得读者去参考。
  美国负责计算机安全的机构NIST也给出了几个方面的建议:
  • 网络数据和语音分离,私有网络和公网的分离。
  • 使用支持ALG的防火墙或者SBC来提升安全性能。
  • 使用比较严格的安全认证机制来防范被破解。
  • 使用TLS加密方式。
  • 进来少用个人电脑软电话或者来自未经授权的第三方基于SIP的软电话。
6
  因为VOIP网络中很可能出现很多网络安全的问题,公司层面虽然制定了很多安全策略,管理人员也部署了针对安全机制的设备,但是仍然需要一些非常有经验的系统管理员来进行维护检测。技术人员必须了解一些安全工具,以免让攻击者侵入。俗话说,知己知彼才能百战百胜。现在,我们罗列几个已经在VOIP方面使用多年的工具,以便帮助管理员进一步防范攻击者的攻击。
  以下列表列出了VOIP工程师可能经常使用的排查根据和平台,大家可以学习:
  1、使用Wireshark 工具抓包解析数据:
  2、Nmap 扫描网络
  3、SIPScan: 扫描端口,IP地址。
  4、Authtool 获取认证的工具,密码破解。
  5、进行洪水工具的工具:
  6、Linux 工具: inviteflood,registerflood
  7、SIP 信令篡改工具:erase_registrations(删除注册),add_registrations(添加注册流程)
  8、Linux 系统缺陷检测工具:protos SIP test suite
  9、Linux 工具:reghijacker(攻击注册流程),authtool(窃取认证消息)
  10、Linux 工具:sip_rogue(伪装B2BUA,或者SIP Proxy)
  11、Linux 工具:teardown 对已创建的SIP 会话拆线工具,自动结束终端通话。
  12、Linux 工具:check_sync 创建一个SIP 终端重启命令。
  13、Linux 工具:redirector 对SIP呼叫执行重定向,可能转接到非法服务器。
  14、Linux RTP 语音注入工具:rtpinjector 对RTP语音进行注入。
  15、“正式的”Linux平台工具:Asterisk,FreeSWITCH, SIPp以上这些工具或平台是正规的开源语音平台,用户可以通过这些平台开发呼叫中心,IPPBX,压力测试等相关业务。
  到现在为止,我们已经把SIP的整个安全措施,流程,机制和相关架构,安全工具等等问题后做了一个比较全面的介绍,希望,读者通过这个系列的讲座充分了解SIP安全的重要性,同时,也必须注意,因为网络环境不断变化,安全防范措施和攻击工具也同时进行升级,所以用户需要关注更多这个方面的研究报告,以便保证用户系统的安全。以下链接是关于SIP安全的相关技术资料说明,笔者再次提醒,可能有的工具已经不再工作,可能SIP安全能力得到了推广,所以,攻击工具可能不能完全正常工作。读者需要不断练习,实战是解决问题的唯一手段。
  参考资料:
  关于STIR:https://datatracker.ietf.org/doc/draft-ietf-stir-certificates/
  关于 Secure Telephone Identity Threat Model:
  https://datatracker.ietf.org/doc/rfc7375/?include_text=1
  关于P-Asserted-Identity:https://www.ietf.org/rfc/rfc3325.txt
  关于SRTP标准:https://www.rfc-editor.org/info/rfc3711
  关于RFC3261认证的升级:https://datatracker.ietf.org/doc/rfc4474/
  关于RFC 4474:https://www.rfc-editor.org/rfc/rfc4474.txt
  https://tools.ietf.org/html/draft-jennings-dispatch-rfc4474bis-00
  关于 DTLS:http://www.rfc-base.org/txt/rfc-5763.txt
  https://www.rfc-editor.org/rfc/rfc4568.txt
  关于DTLS和SIP 身份讨论:
  https://www.rfc-editor.org/rfc/rfc6347.txt
  https://www.cisco.com/c/en/us/td/docs/solutions/Enterprise/Video/telepresence.html#wp42084
  https://www.cisco.com/c/en/us/about/security-center/securing-voip.html
  SIP加密算法研究:
  Detection and Prevention Mechanism on Call Hijacking in VoIP System。
  SANS Institute Reading Room 关于安全的讨论:https://www.sans.org/reading-room/whitepapers/voip/security-issues-countermeasure-voip-1701
  SIP安全讨论:http://cdn.ttgtmedia.com/searchUnifiedCommunications/downloads/SIP1Controlling_Convergent_Networks_CH7.pdf
  关于SIP安全的讨论:
  https://www.cs.columbia.edu/~smb/classes/f06/l13.pdf
  http://download.securelogix.com/library/SIP_Security030105.pdf
  关于SIP安全讨论:http://startrinity.com/VoIP/Resources/sip-security-mechanisms-a-state-of-the-art-review.pdf
  关于SIP安全和攻击工具介绍:
  http://www.hackingvoip.com/presentations/IPCOMM_SIP.pdf
  https://link.springer.com/chapter/10.1007/978-3-642-11530-1_10
  https://www.blackhat.com/presentations/bh-usa-06/BH-US-06-Endler.pdf
  安全测试标准:https://www.rfc-editor.org/rfc/rfc4475.txt
  FBI 关于电话盗打报告和安全机制建议:https://www.fbi.gov/
  攻击工具列表:http://www.voipsa.org/Resources/tools.php
  关注我们的微信号:asterisk-cn 获得更多有价值的技术分享,访问技术论坛下载开源免费IPPBX:www.issabel.cn/forum.
【免责声明】本文仅代表作者本人观点,与CTI论坛无关。CTI论坛对文中陈述、观点判断保持中立,不对所包含内容的准确性、可靠性或完整性提供任何明示或暗示的保证。请读者仅作参考,并请自行承担全部责任。

相关阅读:

专题