基于文本编码的信令报文检测方法及系统的制作方法

文档序号:7954621阅读:185来源:国知局
专利名称:基于文本编码的信令报文检测方法及系统的制作方法
技术领域
本发明涉及计算机网络安全技术领域,具体涉及基于文本编码的信令报文检测方法及系统。
背景技术
随着通信技术的飞速发展,网络融合的趋势不断增强,以多媒体子系统(IMS)为核心的下一代网络已经到来。人们在享受下一代网络带来的灵活便利服务的同时,下一代网络的安全问题已经成为业界关注的重点。
网络边界的安全是整个网络安全的基础。下一代网络是一个融合的网络,支持用户的随时,随地接入,因此边界安全尤其重要。由于下一代网络出现比较晚,目前还没有专门的下一代网络入侵检测工具,尤其是针对信令报文的检测。在下一代网络中,会话初始协议(SIP)、媒体网关控制协议(MGCP)和会话描述协议(SDP)等信令协议都是基于文本编码的,很容易受到异常数据包的攻击。在异常数据包攻击中,构造含有异常字符的数据包是常用的方法之一。攻击者向对方服务器发送大量的异常数据包,目的是造成服务器解析错误或缓冲区溢出;导致服务器端出现一个致命错误,或出现死机、或者服务器突然重新启动等症状。
下面是一个含有异常字符的信令报文INVITE sipbob@biloxi.example.comSIP/2.0ViaSIP/2.0/TCPclient.atlanta.example.com5060;branch=z9hG4bK74bf9Max-Forwards70FromAlice<sipalice@atlanta.example.com>;tag=9fxced76s1ToBob<sipbob@biloxi.example.com>
Call-ID3848276298220188511@atlanta.example.comCSeq1 INVITEContact<sipalice@client.atlanta.example.com;transport=tcp>
Content-Type0xE50xE40xF60xE50xE40xF60xE50xE40xF6/sdpContent-Length151其中字符0xE50xE40xF60xE50xE40xF60xE50xE40xF6(用十六进制)即为异常字符,毫无疑问,这种超长报文信令进入系统后可能造成语法解析错误以至服务器不能正常工作,而对到来的信令报文进行有效的检测是阻止这种含有异常字符报文入侵的有效良方,现有的技术还不能提供对这种恶意的异常字符的检测和阻止,给下一代网络的边际安全带来诸多隐患。
在现有的IDS入侵检测设备中,很少有针对下一代网络协议(SIP,MGCP等)的检测,尤其是基于文本编码的异常数据包的检测。在IDS中针对各种攻击的检测是基于其攻击特征的,但是这种仅根据特征的检测方法比较单一,不够灵活。

发明内容
鉴于此,本发明要解决的技术问题是,针对下一代网络中基于文本编码的信令协议,防止含有异常字符的信令报文的攻击而使服务器产生处理异常,以有效的检测此类攻击。因此,本发明提出了一种具有基于文本编码的信令报文检测方法集系统,一种具有基于文本编码的信令报文检测方法,其特征在于,包括提取信令报文字节并进行检测,判断所检测字节是否与特征异常字符库中的特征异常字符匹配的步骤;若所检测字节与特征异常字符库中的特征异常字符匹配,则判定该信令报文中含有异常字符,丢弃该信令报文。
所述信令报文检测方法,还包括当所检测字节与特征异常字符库中的特征异常字符不匹配时,判断所检测字节是否在0x00到0x7F范围内的步骤,若所检测字节在0x00到0x7F范围内,则提取下一个字节并进行检测。
所述的信令报文检测方法,还包括当所检测字节不在0x00到0x7F范围内时,获取该字节所在行的头域值,判断其是否与特征头域库中的特征头域值匹配的步骤;若所述头域值与特征头域库中的特征头域值不匹配,则判定该报文含有异常字符,并丢弃该信令报文;若匹配,则检测判断该字节符合UTF-8编码规则。
所述的信令报文检测方法,还包括根据UTF-8编码规则对报文进行检测的步骤,若不符合UTF-8编码规则,则丢弃该信令报文;若符合UTF-8编码规则,则继续检测下一个字节。
其中所述信令报文包括会话初始协议(SIP)、媒体网关控制协议(MGCP)和会话描述协议(SDP)的信令报文。
其中所述根据UTF-8编码规则对报文进行检测,包括步骤(a)首先判断该特征域值是否在%x80-BF之间,若满足则停止检测,则丢掉该报文;否则转到步骤(b);(b)判断其值是否在%xC0-DF间,若不满足转到步骤(c),否则判断是否到报文末尾,若是报文末尾则整个信令报文检测完毕,通过此信令报文;若不是报文末尾,则取下一个字节,转入步骤(a);(c)判断其值是否在%xE0-EF间,检测剩余字节数;并根据所检测的剩余字节数,分别判断其值是否在%xF0-F7间、%xF8-Fb间、%xFC-FD间,若皆不满足,则丢弃该报文。
所述的信令报文检测方法,还包括判断该整个信令报文是否检测完毕的步骤。
根据本发明还提供一种基于文本编码的信令报文检测系统,其特征在于,包括特征异常字符库、过滤引擎,
所述过虑引擎,用于根据特征异常字符库对进入装置的信令报文进行逐字节检测,判断信令报文是否含有异常字符,若含有异常字符,则丢弃该信令报文,否则,继续进行检测。
当所检测字节与特征异常字符库中的特征异常字符不匹配时,判断所检测字节是否在0x00到0x7F范围内的步骤,若所检测字节在0x00到0x7F范围内,则提取下一个字节并进行检测。
所述的信令报文检测系统,还包括特征头域库;当所检测字节不在0x00到0x7F范围内时,获取该字节所在行的头域值,判断其是否与特征头域库中的特征头域值匹配;若所述头域值与特征头域库中的特征头域值不匹配,则判定该报文含有异常字符,并丢弃该信令报文;若匹配,则检测判断该字节是否符合UTF-8编码规则。
所述系统,还包括UTF-8编码检测单元,根据UTF-8编码规则对报文进行检测,若不符合UTF-8编码规则,则丢弃该信令报文;若符合UTF-8编码规则,则继续检测下一个字节。
本发明给出了一种基于文本编码的信令报文检测方法及系统,可判断信令报文是否含有异常字符,既可以用软件实现,也可以做成专用的硬件检测设备放在网络的入口处。从而能对含有异常字符的信令报文进行有效的筛选和过滤,即防止了黑客对服务器的攻击和破坏,又保证了网络服务的正常运行。


图1为根据本发明的信令报文检测系统的构成示意图;图2为根据本发明的信令报文检测方法的流程图;图3为本发明中所采用的UTF-8编码检测流程图。
具体实施例方式
如图1所示,该发明的信令报文检测方法及系统,用于实现基于文本编码的信令报文中含有异常字符的检测。
根据本发明的信令报文检测方法的具体实施步骤如下从到来的信令报文提取字节并进行检测,判断所检测字节是否与特征异常字符库中的特征异常字符匹配。
若匹配,则判定该信令报文中含有异常字符,丢弃该信令报文;若不匹配,则判断所检测字节是否在0x00到0x7F范围内,若所述字节在0x00到0x7F范围内,则检测下一个字节。
否则,获取该字节所在行的头域值,判断其是否与特征头域库中的特征头域值匹配,若不匹配,则判定该报文含有异常字符,并丢弃该信令报文;若匹配,则根据UTF-8编码规则进行检测;若不符合UTF-8编码规则,则丢弃该信令报文;若符合UTF-8编码规则,则判断是否到报文末尾,若是到报文末尾,则整个信令报文检测完毕,通过此信令报文。
若未到报文末尾,则提取一个字节进行检测;根据UTF-8编码规则进行检测,包括步骤首先判断该特征域值是否在%x80-BF之间,若满足则停止检测,则丢掉该报文;否则判断其值是否在%xC0-DF间,若不满足,则判断其值是否在%xE0-EF间,检测剩余字节数;并根据所检测的剩余字节数,分别判断其值是否在%xF0-F7间、%xF8-Fb间、%xFC-FD间,若皆不满足,则丢弃该报文。否则判断是否到报文末尾,若是报文末尾则整个信令报文检测完毕,通过此信令报文;若不是报文末尾,则取下一个字节进行检测。
下面已一个含有异常字符的信令报文为例对本发明的检测方法进一步进行说明。输入的报文如下INVITE sipbob@biloxi.example.comSIP/2.0
ViaSIP/2.0/TCPclient.atlanta.example.com5060;branch=z9hG4bK74bf9Max-Forwards70FromAlice<sipalice@atlanta.example.com>;tag=9fxced76s1ToBob<sipbob@biloxi.example.com>
Call-ID3848276298220188511@atlanta.example.comCSeq1 INVITEContact<sipalice@client.atlanta.example.com;transport=tcp>
Content-Type0xE50xE40xF60xE50xE40xF60xE50xE40xF6/sdpContent-Length151首先,对报文字节进行快速检测,是否有与特征异常字符库(该库可为空,空则表示不需进行这一步操作)中的特征字符匹配的字符匹配。由于本例中的报文没有特征异常字符,则继续进行检测。
接着,检测所有的字符是否在0x00到0x7F之间。本例中的字符0xE50xE40xF60xE50xE40xF60xE50xE40xF6不符合该条件,则可能为异常字符,则要看特征头域库中是否有异常字符所在的头域。
其后,本异常字符所在的头域值为Content-Type域,该域值并不在特征头域库中,所以该域中不应该出现非0x00到0x7f的子符。所以具有异常字符,则判断该报文为异常信令报文。本次检测结束。
假如,Content-Type在特征头域库中,则表示该字段中出现非0x00到0x7F字符为可能的,必须进一步判断该字段是否符合UTF-8编码。可以看出本字符串也不符合UTF8流程。
其中涉及的概念说明如下异常字符在基于文本编码的信令报文中,异常字符包含以下两个方面的定义
符合UTF-8编码规范,但是该字符定义是空字符如0x00,或应用很少如通信专用字符和一些控制字符等。
不符合UTF-8编码规范的字符。
特征异常字符属于异常字符,用来快速判断信令报文中是否含有异常字符。
特征异常字符库存放特征字符的集合,用来快速检测,其内的特征字符可以根据不同的文本编码协议添加或删除。
正常字节范围指字节范围在0x00到0x7F之间。
特征头域用来确定异常字符的头域,在会话初始协议(SIP)中如“FROM”、“TO”、“CONTACT”头域。
过滤引擎是该检测装置的核心,用于根据特征异常字符库对进入装置的信令报文进行逐字节检测,判断信令报文是否含有异常字符,来确定是否丢弃该信令报文;所述UTF-8编码检测单元,用于在所述字节不在0x00到0x7F范围时,根据与特征头域库匹配的特征头域值的范围来确定是否丢弃该信令报文。对进入装置的信令报文首先根据特征异常字符库进行逐字节检测,如果含有库中的异常字符,则认为该报文含有异常字符,丢掉,否则判断该字节是否在正常字节范围内,如果在,则取下一个字节重新检测,否则找到该字节所在的行,取出该行的头域值并根据特征头域库判断该行的头域值是否在特征头域库中,如果不在,则认为此信令报文中含有异常字符丢掉该报文,否则根据多字节UTF-8编码规则判断是否异常字符,如果是丢掉此信令报文,否则,判断整个报文是否检查完毕,如果检测完毕则认为该报文正常。
特征异常字符库实现对信令报文的快速检测。库中的元素依照不同的文本协议而不同。本发明以会话初始协议(SIP)为例,给出了特征异常字符库中的元素,如表1所示。
特征头域库是对非正常字节做进一步判断的依据,库中的头域值依照不同的文本协议而不同。本发明以会话初始协议为例,给出了特征头域库中的元素,如表2所示。
表1

注对于媒体网关控制协议(MGCP),会话描述协议(SDP)等基于文本编码的协议只需修改相应的特征异常字符即可。
表2

UTF-8编码在ISO 10646-1 Annex R和RFC 2279里定义即8位UCS(UCS Transformation Format)转换格式。ISO/IEC 10646-1定义了一种多8比特字节字符集,称作通用字符集(UCS),它包含了世界上大多数可书写的字符系统。具体编码规范描述如下当要表示的内容是7位的时候就用一个字节0*******,第一个0为标志位,剩下的空间正好可以表示ASCII 0-127的内容。
当要表示的内容在8到11位的时候就用两个字节110*****10******,第一个字节的110和第二个字节的10为标志位。
当要表示的内容在12到16位的时候就用三个字节1110*****10****** 10******,和上面一样,第一个字节的1110和第二、三个字节的10都是标志位,剩下的空间正好可以表示汉字。
以此类推四个字节11110**** 10****** 10****** 10******五个字节111110*** 10****** 10****** 10****** 10*******六个字节1111110** 10****** 10****** 10****** 10******10******因此,可归纳为用一个字节表示的码字,其值在%x00-7F间即7位US-ASCII码用两个字节表示的码字,其值在%xC0-DF 1UTF8-CONT间用三个字节表示的码字,其值在%xE0-EF 2UTF8-CONT间用四个字节表示的码字,其值在%xF0-F7 3UTF8-CONT间用五个字节表示的码字,其值在%xF8-Fb 4UTF8-CONT间用六个字节表示的码字,其值在%xFC-FD 5UTF8-CONT间其中UTF8-CONT表示%x80-BF系统检测流程如图2所示,系统对到来的信令报文进行逐字节检测,首先取第一个字节判断该字节是否匹配特征异常字符库,如果匹配,就认为此信令报文中含有异常字符,丢掉此信令报文;否则,看其值是否在正常范围内,如果在,取下一个字节重新开始检测,否则,取该字节所在行的头域值,判断其是否匹配特征头域,如果不匹配,认为此报文含有异常字符丢掉,否则,根据多字节UTF-8编码检测。
获取头域值在对非正常范围内的字节进一步检测时,需要参考特征头域,只有特征头域所在行的字符才进行多字节UTF-8编码检测。因此,首先需要得到待检测字符所在行的头域值。方法是从该字节逆向寻找第一个回车换行符,即找到该字节所在行的起点,然后,取回车换行符和冒号间的字符便是该行的头域值。如果是报文的第一行,则直接取第一个空格之前的字符制便是特征字符。如Content-Type0xE50xE40xF60xE50xE40xF60xE50xE40xF6/sdp多字节UTF-8编码检测根据UTF-8编码规范,对待检测的字节采用如下的检测流程,如图3所示(1)首先判断该十六进制的值是否在%x80-BF之间,如果满足则停止检测,认为该报文含有异常字符,丢掉。否则转到(2)。
(2)判断其值是否在%xC0-DF间,如果不满足转到(3),否则判断是否到报文末尾,如果是则停止检测,认为此数据包含有非UTF8字符,丢掉此数据包;否则取下一个字节,判断其值是否在%x80-BF间,如果不满足认为此数据包含有非UTF8字符,丢掉此数据包,否则判断是否到报文末尾,如果是则整个信令报文检测完毕,通过此信令报文,否则取下一个字节即该检测字节后的第二个字节重新检测。
(3)判断其值是否在%xE0-EF间,如果不满足转到(4),否则判断剩余的字节数是否小于2个,如果是则停止检测,认为此数据包含有非UTF8字符,丢掉此数据包;否则取下两个字节,判断其值是否都在%x80-BF间,如果不满足认为此数据包含有非UTF8字符,丢掉此数据包,否则判断是否到报文末尾,如果是则整个信令报文检测完毕,通过此信令报文,否则取下一个字节即该检测字节后的第三个字节重新检测。
(4)判断其值是否在%xF0-F7间,如果不满足转到(5),否则判断剩余的字节数是否小于3个,如果是则停止检测,认为此数据包含有非UTF8字符,丢掉此数据包;否则取下三个字节,判断其值是否都在%x80-BF间,如果不满足认为此数据包含有非UTF8字符,丢掉此数据包,否则判断是否到报文末尾,如果是则整个信令报文检测完毕,通过此信令报文,否则取下一个字节即该检测字节后的第四个字节重新检测。
(5)判断其值是否在%xF8-Fb间,如果不满足转到(6),否则判断剩余的字节数是否小于4个,如果是则停止检测,认为此数据包含有非UTF8字符,丢掉此数据包;否则取下四个字节,判断其值是否都在%x80-BF间,如果不满足认为此数据包含有非UTF8字符,丢掉此数据包,否则判断是否到报文末尾,如果是则整个信令报文检测完毕,通过此信令报文,否则取下一个字节即该检测字节后的第五个字节重新检测。
(6)判断其值是否在%xFC-FD间,如果不满足转到(7),否则判断剩余的字节数是否小于5个,如果是则停止检测,认为此数据包含有非UTF8字符,丢掉此数据包;否则取下五个字节,判断其值是否在%x80-BF间,如果不满足认为此数据包含有非UTF8字符,丢掉此数据包,否则判断是否到报文末尾,如果是则整个信令报文检测完毕,通过此信令报文,否则取下一个字节即该检测字节后的第六个字节重新检测。
(7)以上六点都不满足,可知此报文含有非UTF8字符,丢掉此数据包。
本发明给出了一种基于文本编码的信令报文中含有异常字符的检测方法及系统,既可以用软件实现,也可以做成专用的硬件检测设备放在网络的入口处。该方法能对含有异常字符的信今报文进行有效的筛选和过滤,即防止了黑容对服务器的攻击和破坏,又保证了网络服务的正常运行。
权利要求
1.一种具有基于文本编码的信令报文检测方法,其特征在于,包括提取信令报文字节并进行检测,判断所检测字节是否与特征异常字符库中的特征异常字符匹配;若所检测字节与特征异常字符库中的特征异常字符匹配,则判定该信令报文中含有异常字符,丢弃该信令报文。
2.如权利要求1所述的信令报文检测方法,其特征在于,还包括当所检测字节与特征异常字符库中的特征异常字符不匹配时,判断所检测字节是否在0x00到0x7F范围内的步骤,若所检测字节在0x00到0x7F范围内,则提取下一个字节并进行检测。
3.如权利要求1所述的信令报文检测方法,其特征在于,还包括当所检测字节不在0x00到0x7F范围内时,获取该字节所在行的头域值,判断其是否与特征头域库中的特征头域值匹配的步骤;若所述头域值与特征头域库中的特征头域值不匹配,则判定该报文含有异常字符,并丢弃该信令报文;若匹配,则检测判断该字节符合UTF-8编码规则。
4.如权利要求1所述的信令报文检测方法,其特征在于,还包括根据UTF-8编码规则对报文进行检测的步骤,若不符合UTF-8编码规则,则丢弃该信令报文;若符合UTF-8编码规则,则继续检测下一个字节。
5.如权利要求1至4中的任一项所述的信令报文检测方法,其中所述信令报文包括会话初始协议(SIP)、媒体网关控制协议(MGCP)和会话描述协议(SDP)的信令报文。
6.如权利要求4所述的信令报文检测方法,其特征在于,所述根据UTF-8编码规则对报文进行检测,包括步骤(a)首先判断该特征域值是否在%x80-BF之间,若满足则停止检测,则丢掉该报文;否则转到步骤(b);(b)判断其值是否在%xC0-DF间,若不满足转到步骤(c),否则判断是否到报文末尾,若是报文末尾则整个信令报文检测完毕,通过此信令报文;若不是报文末尾,则取下一个字节,转入步骤(a);(c)判断其值是否在%xE0-EF间,检测剩余字节数;并根据所检测的剩余字节数,分别判断其值是否在%xF0-F7间、%xF8-Fb间、%xFC-FD间,若皆不满足,则丢弃该报文。
7.如权利要求1所述的信令报文检测方法,还包括判断该整个信令报文是否检测完毕的步骤。
8.一种基于文本编码的信令报文检测系统,其特征在于,包括特征异常字符库、过滤引擎,所述过虑引擎,用于根据特征异常字符库对进入装置的信令报文进行逐字节检测,判断信令报文是否含有异常字符,若含有异常字符,则丢弃该信令报文,否则,继续进行检测。
9.如权利要求8所述的信令报文检测系统,其特征在于,当所检测字节与特征异常字符库中的特征异常字符不匹配时,判断所检测字节是否在0x00到0x7F范围内的步骤,若所检测字节在0x00到0x7F范围内,则提取下一个字节并进行检测。
10.如权利要求8所述的信令报文检测系统,其特征在于,还包括特征头域库;当所检测字节不在0x00到0x7F范围内时,获取该字节所在行的头域值,判断其是否与特征头域库中的特征头域值匹配;若所述头域值与特征头域库中的特征头域值不匹配,则判定该报文含有异常字符,并丢弃该信令报文;若匹配,则检测判断该字节是否符合UTF-8编码规则。
11.如权利要求8所述的信令报文检测系统,其特征在于,还包括UTF-8编码检测单元,根据UTF-8编码规则对报文进行检测,若不符合UTF-8编码规则,则丢弃该信令报文;若符合UTF-8编码规则,则继续检测下一个字节。
全文摘要
本发明提供一种具有基于文本编码的信令报文检测方法,包括提取信令报文字节并进行检测,判断所检测字节是否与特征异常字符库中的特征异常字符匹配;若所检测字节与特征异常字符库中的特征异常字符匹配,则判定该信令报文中含有异常字符,丢弃该信令报文。根据本发明的方法及系统能对含有异常字符的信令报文进行有效地筛选和过滤,既防止了黑客对服务器的攻击和破坏,又保证了网络服务的正常运行。
文档编号H04L12/56GK1852320SQ20061003342
公开日2006年10月25日 申请日期2006年1月26日 优先权日2006年1月26日
发明者刘利锋, 郑志彬, 赵凯 申请人:华为技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1