CN101478458B - 一种sip协议安全性测试方法 - Google Patents
一种sip协议安全性测试方法 Download PDFInfo
- Publication number
- CN101478458B CN101478458B CN 200910077220 CN200910077220A CN101478458B CN 101478458 B CN101478458 B CN 101478458B CN 200910077220 CN200910077220 CN 200910077220 CN 200910077220 A CN200910077220 A CN 200910077220A CN 101478458 B CN101478458 B CN 101478458B
- Authority
- CN
- China
- Prior art keywords
- test
- message
- observation
- session initiation
- test point
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Landscapes
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明提出了一种SIP协议的安全性测试方法,包括:1、测试点与被测对象建立连接;2、测试点将测试报文发送给被测对象;3、所述支持SIP协议的被测对象对所述测试报文根据SIP协议生成回应报文,并返回回应报文;4、测试点将所述回应报文与预期报文进行比较以生成测试结果。本发明能够针对支持SIP协议的设备进行较为全面的安全性测试,以降低网络设备由于SIP协议安全隐患而带给整体网络的安全威胁。
Description
技术领域
本发明涉及一种SIP协议安全性测试方法。
背景技术
SIP(Session Initiation Protocol,会话初始协议)是由IETF(Internet工程任务组)定义,基于IP的一个应用层控制协议。由于SIP是基于纯文本的信令协议,可以管理不同接入网络上的会晤等。会晤可以是终端设备之间任何类型的通信,如视频会晤、既时信息处理或协作会晤。该协议不会定义或限制可使用的业务,传输、服务质量、计费、安全性等问题都由基本核心网络和其它协议处理。SIP得到了微软、AOL、等厂商及IETF和3GPP等标准制定机构的大力支持。支持SIP的网络将提供一个网桥,以扩展向互联网和无线网络的各种设备提供融合业务能力。这将允许运营商为其移动用户提供大量的信息处理业务,通过SMS互通能力与固定用户和2G无线用户交互。SIP也是在UMTS3GPP R5/R6版本中使用的信令协议,因此可以保护运营商目前的投资而及具技术优势和商业价值。
随着SIP的规模使用,安全性问题成为了最为突出的问题。现有测试方法、测试仪表或测试***都不能灵活、自动地对支持SIP协议的软硬件设备进行全面的安全性测试。由于无法进行全面的安全性测试,更无法根据评估测试结果来验证SIP设备是否严格按照相关协议实现SIP协议功能、是否采取安全措施保证SIP的安全性,这样无法保证SIP协议安全。因此对于SIP协议的安全性测试问题非常重要,应当尽可能减少网络设备由于SIP协议安全隐患而带给整体网络的安全威胁。因此SIP协议的安全性测试问题对于SIP协议的发展具有重要的作用。
发明内容
针对现有技术中存在的缺陷和不足,本发明的目的是提出一种SIP协议的安全性测试方法,能够针对支持SIP协议的设备进行较为全面的安全性测试,以降低网络设备由于SIP协议安全隐患而带给整体网络的安全威胁。
为了达到上述目的,本发明提出了SIP协议的安全性测试方法,包括:
步骤1:测试点与被测对象建立连接;
步骤2:测试点将测试报文发送给被测对象;
步骤3:所述支持SIP协议的被测对象对所述测试报文根据SIP协议生成回应报文,并返回回应报文;
步骤4:测试点将所述回应报文与预期报文进行比较以生成测试结果。
作为上述技术方案的优选,所述步骤1具体为:
步骤11:设置控制端及测试观察点作为测试点,并将控制端与测试观察点建立连接;
步骤12:控制端向测试观察点发送控制消息,所述控制消息包括:测试观察点的配置信息、在传输层中的角色、测试点地址;其中,所述测试观察点的配置信息至少包括:
测试观察点的以太网端口的名称、IP地址、端口号、子网掩码、默认网关;所述以太网端口为测试观察点与测试点的连接端口;
步骤13:测试观察点根据所述控制消息与被测设备建立连接。
作为上述技术方案的优选,所述步骤2具体为:
对预设置的测试例进行编译,并根据SIP协议规范构造出协议测试报文、预期报文,并将协议测试报文发送给测试观察点。
作为上述技术方案的优选,所述步骤2具体为:
步骤21、对预设置的测试例进行编译,构造出所需的SIP测试报文,并发送给测试观察点,由测试观察点依据所述控制消息对该所述SIP测试报文进行重新封装生成测试报文,并将该测试报文发送给被测对象;
步骤22、依据预设值的测试例,测试控制端根据SIP协议相关规范构造出预期报文。
作为上述技术方案的优选,步骤4还包括:
步骤a、测试观察点接收并过滤得到被测对象响应测试观察点所发出测试报文的回应报文;
步骤b、测试观察点将上述回应报文重新封装后发送给测试控制端。
作为上述技术方案的优选,所述测试例至少包括数据说明部分和测试流程部分;所述数据说明部分是为了阅读测试例方便而提出,至少包括测试观察点的IP地址、端口号、子网掩码和默认网关;所述测试流程部分至少包含一个或多个测试步测试例流程,每个测试步测试例流程包括发送动作及属性、接收动作及属性;其中:
发送动作是指所需发送的SIP协议测试报文的类型、需要修改的关键字段及字段数值或者是需要加入的信息;
发送属性是指重复发送该测试报文的次数、发送间隔及当前报文处于第几个测试步;
接收动作是指测试点依据SIP协议相关规范应该对接收到的测试报文的回应报文的类型、所需要判断的关键字段和字段数值以及是否需要判断接收到报文的顺序;
接收动作属性是等待接收回应报文的时间。
作为上述技术方案的优选,所述步骤4具体包括:
判断实际收到报文的顺序的步骤;
判断预定字段是否存在的步骤;
判断预定字段的值是否正确的步骤;
判断预定字段顺序是否正确的步骤;
如果上述步骤返回值均为正确,则测试合格;否则测试失败,步骤结束。
作为上述技术方案的优选,所述步骤4还包括:
判断该回应报文是否符合SIP协议规范的步骤;
判断接收到该回应报文的时间是否为测试例中指定的时间内的步骤;如果上述步骤返回值为正确,则测试合格;否则测试失败,步骤结束。
本发明提出了一种SIP协议的安全性测试方法,包括:1、测试点与被测对象建立连接;2、测试点将预设置的测试例编译后生成的测试报文发送给被测对象;3、所述支持SIP协议的被测对象对所述测试报文根据SIP协议生成回应报文,并返回回应报文;4、测试点将所述回应报文与预期报文进行比较以生成测试结果。本发明能够针对支持SIP协议的设备进行较为全面的安全性测试,以降低网络设备由于SIP协议安全隐患而带给整体网络的安全威胁。
附图说明
图1为本发明中控制台所涉及到的具体处理流程;
图2为采用本发明的测试***对实现SIP协议的软硬件设备进行测试的测试环境图;
图3为本发明中IUT_Info消息格式;
图4为本发明中TESTSUIT消息格式;
图5为本发明方法与***进行测试的整个过程中控制台与测试观察点之间的交互流程;
图6为本发明中测试观察点的功能模块;
图7为本发明的测试方法与***示意图;
图8为本发明测试例执行时控制台的状态转移;
图9为本发明控制台处理测试例队列处理形式方法示意图;
图10为本发明中测试观察点所涉及到的具体处理流程。
具体实施方式
下面结合附图,对本发明的具体实施方式作进一步的详细说明。对于所属技术领域的技术人员而言,从对本发明的详细说明中,本发明的上述和其他目的、特征和优点将显而易见。
本发明提出了一种SIP协议安全性测试方法,其第一优选实施例包括:
步骤1:测试点与被测对象建立连接;
步骤2:测试点将测试报文发送给被测对象;
步骤3:所述支持SIP协议的被测对象对所述测试报文根据SIP协议生成回应报文,并返回回应报文;
步骤4:测试点将所述回应报文与预期报文进行比较以生成测试结果。
第一优选实施例中的所述步骤2具体为:测试点对测试例进行编译并根据SIP协议规范构造出协议测试报文、预期报文;预期报文是被测对象依据SIP协议相关规范,应该对测试报文回复的回应报文;该预期报文被存放到所属的测试例对象中。当然,本领域内技术人员可以理解,编译及根据SIP协议规范构造出预期报文可以由任何模块完成,既可以是本实施例中提出的控制端,也可以是测试观察点或是其他任何能够执行该操作的模块完成。
其中测试例为预设置并存储在测试点。测试点可以在确定测试例后将该测试例进行编译,并根据SIP协议的规范生成测试报文和预期报文。测试点也可以预先对测试例进行编译并根据SIP协议的规范生成测试报文和预期报文,然后将测试报文和预期报文存储到测试点,然后在测试过程中直接将预存储的测试报文发送到被测对象。
预期报文的生成采用工厂模式。将上面编译出来的预期报文的信息实体输入到“工厂”中,通过“工厂”的加工处理后生成一个预期包的对象存放到本预期报文所属的测试例对象中。此处的预期报文不是一个完整意义上的报文,它只包含了预期报文类型、必须包含的关键字段及其值、必须包含的字段名等信息。
第一优选实施例中的所述步骤2中的测试例预先存放在测试观察点的指定目录下,所述测试例至少包括数据部分和测试部分;
所述数据部分至少包括测试观察点的IP地址、端口号、子网掩码和默认网关;
所述测试部分至少包含一个或多个测试步测试例流程,每个测试步测试例流程包括发送动作及属性、接收动作及属性;其中:
发送动作是指所需发送的SIP协议报文的类型、需要修改的关键字段及字段数值或者是需要加入的信息;
发送属性是指重复发送该报文的次数、发送间隔及当前报文处于第几个测试步;
接收动作是指测试点接收被测设备对测试报文的回应报文的类型、所需要判断的关键字段和字段数值以及是否需要判断接收到报文的顺序;
接收动作属性是等待接收回应报文的时间。
所述步骤2中,根据正则表达式规则编译测试例后生成测试报文信息;
编译过程是将测试例脚本解析成接口实体序列,每个测试例脚本中的每个测试步中的每个包对应于一个接口实体;
解析测试例中各测试步利用工厂模式,将需要的解析的脚本文件传给“工厂”,由其加工构造出包信息,存储到一个包信息的队列中。
所述步骤2中测试报文是由报文主体和报文头组成:报文主体由编译后生成的报文信息根据SIP协议标准采用递归方法生成的;报文头指定了测试观察点的以太网测试端口、被测协议类型、该报文需要重复发送的次数以及重复发送时的时间间隔。
测试点根据与被测对象建立的连接类型对测试报文进行封装,即将测试报文封装成TCP包或UDP包,并发送至被测对象;
第一优选实施例中的所述步骤4具体为:
测试点将预期报文和回应报文作比较:根据测试逻辑判断实际收到报文的顺序;判断关键字段是否存在;判断关键字段的值是否正确;判断关键字段的顺序是否正确。
第一优选实施例中的所述步骤4还包括:
判断该回应报文是否符合SIP协议规范;判断接收到该回应报文的时间是否为测试例中指定的时间内;
如果上述各比较判断步骤返回值均为正确,则判定测试点的SIP协议安全;否则测试失败,步骤结束。
本发明的第二优选实施例与第一优选实施例的区别在于,在该SIP协议安全性测试方法的实现过程中加入了控制端,即将测试点分为控制端及测试观察点,可以较佳地实现人机交互,并能灵活地控制多个测试观察点,对多个被测对象进行SIP安全性测试。
在将测试点分为控制端和测试观察点之后,第一优选实施例中的步骤2、3、4中的编译测试例、生成预期报文、比较预期报文和回应报文的步骤可以在控制端中实现,也可以在测试观察点中实现。
在以下的第二优选实施例中,以在控制端实现上述编译测试例、生成预期报文、比较预期报文和回应报文为例进行详细说明;当然,本领域内技术人员可以理解同样可以由测试观察点实现上述步骤。本发明第二实施例具体步骤如下:
步骤1:控制端与测试观察点建立TCP连接,并进行连通性检测;
步骤2:控制端向测试观察点发送控制消息,包括:测试观察点的配置信息、在传输层中的角色及测试点地址;
测试观察点的配置信息是:测试观察点的某些特定的以太网端口的名称、IP地址、端口号、子网掩码、默认网关等,使用这些以太网端口作为测试接口与测试点建立连接。
步骤3:测试观察点按照控制消息与被测对象点建立TCP/UDP连接,并进行连通性检测;
步骤4:控制端将测试例以树形列表的形式展现出来,用户根据需要选择测试观察点所需执行的一个或多个测试例,并发出编译指令。
步骤5:编译上述选中的测试例,生成测试报文信息;
步骤6:根据SIP协议规范对上述测试报文信息构造出预期报文,并存放到所属的测试例对象中;
步骤7:控制端将步骤5中的测试报文信息以可修改输入的列表和树形结构展示给用户,用户对测试报文信息进行修改及确认;
此处报文信息的展示需要两个文件的支持,一个是SIP协议报文模板文件,另一个是保存的参数列表文件。SIP协议报文模板文件,顾名思义,用来存储测试例用到的所有的SIP消息报文的详细信息。参数列表文件用来存储用户修改过的需要存储的信息。在SIP协议模板文件中给出了属性标识参数是否需要存储。在展示给用户报文信息时首先从SIP模板中定位SIP消息报文类型,然后将改类型的消息内容读取出来加入到用户列表中,然后再次读取参数列表文件将列表中相应的字段值替换。该操作的目的是方便用户,用户不必要重复修改一些相同的字段名或值。对同一字段用户输入一次就可以了,后面的测试例会自动修改。
步骤8:上述测试报文信息生成测试报文并发送至测试观察点上;
连接报文:当测试报文是测试例第一个测试报文时,在该报文之前要发送一个测试点的连接报文,该报文中指定了测试观察点、测试观察点上的以太网测试端口、当前包的类型、当前测试的协议、测试观察点和测试点各自的角色、测试观察点和测试点之间采用的通信协议类型及测试点的IP地址和端口号。
步骤9:测试观察点根据步骤2中的控制消息中的网络信息对测试报文进行封装并发送至测试点;
步骤10:测试观察点若在测试例脚本上指定的时间内接收到测试点按照SIP协议规范对测试报文的回应报文,则对其进行解封装,并发送至控制端;
步骤11:测试观察点若未在测试例脚本上指定的时间内接收到被测对象按照SIP协议规范对接收的测试报文的回应报文,向控制端发送报错消息。
步骤12:控制端若接收到报错消息,则向用户报错,显示错误信息,执行步骤14:否则继续执行;
步骤13:控制端将预期报文和回应报文进行比较得出结果。
步骤14:测试例执行完毕,控制端向测试观察点发送断开连接报文,该报文中包含测试观察点、测试观察点的以太网测试端口、被测协议类型以及该报文的类型。
步骤15:测试观察点关闭与测试点建立的TCP/UDP连接;
步骤16:测试观察点回复确认信息;
步骤17:控制端向用户显示测试结果。
在每个测试例执行过程中,能够以图形化显示报文交互流程、显示测试例执行结果、可选地显示解析后得到的接收报文,能够通过颜色表示每个测试例的执行状态(状态包括:未执行、已经执行,若已经执行则显示执行成功还是失败)。所选测试例全部执行后,将会显示执行成功与否的统计信息。在控制端每发送一个报文或接收一个报文都会记录到测试日志中,同时每个测试步的测试结果及错误原因(如果测试结果是错误的)都会记录到测试日志中。测试日志是十六进制和字符型两种方式同时展现给用户的。
下面具体说明第二优选实施例中,在控制端、测试观察点之间的基于TCP协议扩展的自定义通信流程。
测试观察点模块负责数据包的底层协议封装和解封装、发送和接收,是测试***用于和被测对象进行通讯的模块。因为SIP协议运行于TCP/UDP协议之上,所以该模块还负责TCP连接的建立和释放等连接维护工作。测试观察点中实现了基于IPv4的小型TCP/UDP协议栈,可以对SIP等应用层协议进行传输支持。同时测试观察点还实现了链路层帧、网络层IP报文的自由构建和解析,支持基于它们之上的协议的传输。通过自定义报文格式来实现控制端与测试观察点之间的控制消息、报文消息两种类型消息的交互。测试观察点根据控制消息设置与被测设备逻辑相连的以太网接口的二层、三层网络信息,如MAC、IP地址等,对控制端传送的SIP消息报文则根据控制消息设置的网络信息进行封装并发送到被测设备上。测试观察点能够接收、过滤被测对象对测试SIP报文的响应报文,并通过TCP连接交由控制端进行判断处理。
控制端在Windows下使用VC6.0进行了开发,测试观察点则在Linux下使用C语言开发。控制端和测试观察点之间的控制信息和数据基于TCP进行通信,选择TCP是因为其面向连接的特性提供了比较安全的传输机制。在此,自定义TCP净荷的前2个字节以描述控制端与测试观察点之间的命令控制和消息传递,控制端与测试观察点PCO通信内容报文头格式如下所示:
3Bit | 1Bits | 4Bits | 8Bits | NBits |
Version | IP_Version | Type | Reserved | Message |
其中Version表示自定义协议版本号(目前固定为01);IP_Version定义为IP协议版本号(0表示IPv4,1表示IPv6);Type表示message类型,详见下表;Reserved为保留字段。C表示控制端,P表示测试观察点。
message类型
二进制值 | 消息类型 | 方向 | 含义 | Linux处理流程 |
0000 | CONFIG_P | C→P | 初始化时配置信息 | 通告P测试所要占用的网卡、地址、掩码、网关、端口号,P按配置执行 |
0001 | IUT_Info | C→P | 测试例执行过程中IUT信息 | 通告P在传输层中什么角色(TCP/C、TCP/S、 |
UDP/C、UDP/S),并通告IUT地址。 | ||||
0010 | TESTSUIT | C→PP→C | C执行测试例过程中交互的测试内容实体 | 完全复制Message |
0011 | FINISH | C→P | C通告P测试例执行结束 | P断开与IUT连接,上报Windows |
0100 | ACK | P→C | P向C上报对上条命令执行成功 | |
0101 | ERROR | P→C | P向C上报对上条命令执行失败,并附加原因 | |
1111 | ABNORMAL | C→PP→C | C、P执行测试例过程中出现异常 | P、C跳出正在执行步骤,断开与IUT连接,上报Windows |
不同的命令在统一报文头下具有不同的格式,以如图3所示的IUT_Info和如图4所示的TESTSUIT消息格式进行说明如下:
IUT_Info消息格式
字段 | 说明 | 备注 |
Version | 版本号(目前固定为01) | 01 |
IP_Version | IP协议版本号,0表示IPv4,1表示IPv6 | 0 |
Type | 为CONFIG消息类型(0001) | 0001 |
Reserved | 保留字段 | 全零 |
Role | L在传输层协议中的角色(00、01、10、11) | 00:TCP_SERVER01:TCP_CLIENT10:UDP_SERVER11:UDP_CLIENT |
IUT_Port_used | IUT在测试中使用的传输层端口号 | IUT做为SERVER时,全0 |
IUT_IP | IUT的IP地址 |
TESTSUIT消息格式
字段 | 说明 | 备注 |
Version | 版本号(目前固定为01) | 01 |
IP_Version | IP协议版本号,0表示IPv4,1表示IPv6 | 0 |
Type | 消息类型(0010) | 0010 |
Reserved | 保留字段 | 全零 |
Message_Entity | 测试例消息实体 |
使用上述报文头格式,如图5所示,控制端(以下简称为C)和测试观察点(以下简称为P)之间的通信流程如下:
步骤1:C主动与P建立TCP连接,此时P作为服务器端,C作为客户端;
步骤2:C向P发送CONFIG_P消息,通告P测试所要占用的网卡、地址、掩码、网关、端口号;
步骤3:P按配置执行P网卡配置,并且P通过ping方式判断网关是否可达;
步骤4:P是否完成步骤3中的两个内容,返回ACK或ERROR;
步骤5:C若接收ERROR,则提示用户出错;C若接收ACK,正常执行测试例;
步骤6:C做好执行测试例的准备;
步骤7:C向P通告IUT_Info消息,通告P在传输层中什么角色(TCP/C、TCP/S、UDP/C、UDP/S),并通告IUT地址;
步骤8:P按照C的通告,首先通过ping验证与IUT的联通性,最后按照配置与IUT建立连接;
步骤9:P向C通告连接建立是否成功:ACK或ERROR,ERROR携带失败具体原因;
步骤10:C接收到ACK,则继续步骤6;接收到ERROR,则向用户报错;
步骤11:按测试例向P发送TESTSUIT消息;
步骤12:P接收到后,加入已知的包头,向IUT发送测试报文,并在预定时间内判断是否接收回应报文;
步骤13:P向C发送测试情况报文,若收到则将回应报文内容通过TESTSUIT消息传送给C,若没有通过ERROR(overtime)方式报错;
步骤14:C若接收到ERROR,则向用户报错,显示错误信息,并通过步骤10通告P关闭相关连接;否则按照步骤6、步骤7、步骤8继续执行测试例;
步骤15:测试例执行完毕,C向P发送测试状态信息:FINISH消息;
步骤16:P在接收到FINISH后,关闭与IUT建立的TCP/UDP连接;
步骤17:P回复确认信息ACK;
步骤18:C向用户显示测试结果。
如上所述,测试观察点对应用层协议提供底层协议支持,从数据链路层开始到上层协议依次进行协议处理,从而实现了测试报文在真实网络环境中的传递和接收。SIP协议均属于应用层协议,可以建立在TCP和UDP层之上,所以对它们的测试需要有TCP/UDP协议的实现。本发明中的测试观察点使用了一个TCP/UDP/IPv4协议栈,它为测试***实现层次化的测试接口提供了基础。控制观察点在Linux上完成,也可以移植入硬件板卡中。如图6所示为为本实施例中测试观察点的功能模块示意图,该模块主要负责数据包的底层协议封装和解封装、发送和接收,是测试***用于和被测对象进行通讯的模块。
如图7所示,应用本发明的第二优选实施例的***包括:
控制端、测试观察点,其中控制端包括用户界面、控制处理两个部分,用户界面部分包括测试例选择与控制界面功能模块、测试拓扑配置界面功能模块、测试结果显示界面功能模块;控制处理部分包括测试例脚本解释、测试例执行、协议数据处理模块。测试观察点包括:基于TCP/UDP阻塞式服务器以及发送数据模块、接收过滤数据模块。下面详细介绍上述各模块的功能:
测试拓扑配置界面模块:提供友好人机界面按照所需测试拓扑,对测试观察点进行相应的二层、三层网络信息配置以及连通性检测;
测试例选择与控制界面模块:为用户提供根据不同测试观察点上执行的测试例,并通过让用户确认来保证测试的准确性;
测试结果显示界面模块:在每个测试例执行过程中,能够以图形化显示报文交互流程、显示测试例执行结果,可选地显示解析后得到的接收报文。所选测试例执行过程中,能够通过颜色表示每个测试例的执行状态(状态包括:未执行、已经执行,若已经执行则显示执行成功还是失败)。所选测试例全部执行后,将会显示执行成功与否的统计信息;
测试例脚本解释模块:根据正则表达式规则将指定目录下的测试例脚本解析成一个接口实体序列,该接口实体中包含了在脚本中描述的每个测试包的信息;每个测试步中的每个包对应于一个接口实体;
测试例执行模块:根据测试例脚本生成的接口实体以及协议模板通过用户确认后生成预期的发送包。在待发送包的头部附加平台内部定义的包头,然后将待发送的协议报文通过TCP连接发送到指定的测试观察点上;
协议数据处理模块:将实际收到的被测对象回复的SIP协议报文和依据相关协议标准所应该预期收到的内容进行比较、判断得出测试结果。此处的比较判断分为三个层面,分别是:指定的字段是否存在;指定字段的值是否与预期的相同;实际收到的包的顺序是否与预期收到的包的顺序相同;
发送数据模块:根据控制端发送的命令消息,利用libnet程序包中相关函数构造相关SIP安全测试报文;
接收过滤数据模块:利用libpcap程序包中相关函数接收、过滤被测对象对所发送SIP测试报文的回复报文。
测试过程中数据的发送接收以及状态的改变均由状态机来控制。通过分析发送和接收测试报文来触发执行测试的步骤。如图8所示,描述了测试例执行时的状态转移。
以下对测试状态间的转移进行详细说明:
启动***后,运行控制端人机界面程序,对所需的测试拓扑进行配置,首先发送PCO(测试观察点)配置报文,此时状态机从开始的IDLE状态进入CFGPCO状态,收到对应的PCO配置报文的回复报文后,状态机状态转入PCOFIN状态。PCO配置完成后,在控制端的交互界面选择开始测试,测试例执行模块开始运行,***自动进入TEST状态。
测试例执行模块将相应的IUT(测试点)配置报文、具体协议报文和预期判断的字段填入测试例队列中,并按顺序从测试例队列中读取报文进行执行。首先是IUT配置报文的发送,同时状态机进入CFGIUT状态,收到对应的IUT配置报文的回复后,状态机进入IUTFIN状态,测试例执行模块模块检测到IUTFIN状态后,转入TEST状态进行进行具体协议报文的分析和执行。测试例执行模块部分解析传送报文的报文头,得到其中的时间等控制参数,然后将其中的发送报文按照操作参数传递给测试观察点进行传输,再接收相应的回应报文存入测试例实例中,调用协议数据处理模块把它们和预期字段作比较,得出测试结果。当一次运行的测试例较多时,测试例队列往往比较庞大,为了避免资源的过度消耗,在运行完一个测试例之后就将其从队列中销毁,以满足测试性能的需求。
以下结合图9对测试例队列处理形式进行详细说明:
执行测试例时,先命令测试观察点与测试点进行TCP连接或UDP通信,若成功则以测试步为单位发送测试报文和接收回应报文。每个测试步代表一个独立的会话事务,通常由一次报文交互构成,但也会有多个发送报文对应多个回应报文或需要先接收报文(作服务器)的情况,测试例执行模块对上述情况都顾及到了。在每一个测试步结尾,测试例执行模块会等待由测试例脚本上指定的时间以接收回应报文并做出判断。若判断正确,则继续执行下一个测试步,若不正确,则整个测试例被判断为失败,跳出当前测试例,执行下一个测试例。在测试步均运行成功的情况下,测试例执行模块会在测试例的结尾发送断开连接的指令给测试观察点,结束本次的通信。下一个测试例的执行会重新建立连接。比如有被测对象主动要求重置网络,测试例运行中止的情况,还有当向测试观察点发送断开网络命令却未收到回复的情况等等。本实施例对错误情况有比较全面的考虑,并尽可能的对可能发生的错误进行了处理。
本发明符合RFC2461、RFC4475、RFC792、RFC793、RFC763、RFC826等相关国际标准及国内相关标准。在具体实现中在测试控制点实现了TCP/IP协议栈、能够在测试控制点构造并发送安全测试所需的SIP协议报文以及ICMP、UDP、TCP报文,并与RFC国际规定相一致。
本发明的原理是在基于window的PC上实现控制端的诸项功能,能够根据需要创建测试拓扑,并依据测试拓扑连接并控制多个测试观察点的测试端口,对不同的被测对象进行SIP安全性测试。
如图10所示,本发明的测试观察点可以基于Linux操作***平台,利用了成熟稳定的第三方程序开发包libnet、libpcap,构造测试中所需的诸多发送IPv6协议报文的函数,采用面向对象方法和多进程技术,各个进程之间的通信采用共享内存的方式实现。
本发明的测试观察点可以是基于spirent公司SmartBit系列仪表上开发的测试套件,该仪表普遍的应用在通信行业,因此该测试套件应用前景广泛,同时该测试套件还可运行在硬件配置较好的安装有Linux操作***的PC上。
当然,本领域内技术人员可以理解,本专利的测试观察点可以基于其它操作***实现,既可以是本实施例中提出基于Linux操作***平台,也可以是其它操作***例如Windows实现。
同样本领域内技术人员可以理解,本专利的控制端可以基于其它操作***实现,既可以是本实施例中提出基于Windows操作***平台,也可以是其它操作***例如Linux实现。
本发明的控制端与测试观察点之间通过TCP协议进行可靠的报文交互,通过自定义的头字段,实现控制消息、报文消息的交互。
本发明中的测试例脚本通过自定义的符合正则表达式规则的语法描述了SIP安全测试例的详细测试流程,具有描述简单、易懂、易于用户执行编写等特点。
本发明中结合SIP协议报文模板及测试例脚本,构造并发送一些畸形、语法错误、逻辑错误的SIP报文达到对支持SIP协议的软硬件设备进行SIP安全性测试的目的。
虽然,本发明已通过以上实施例及其附图而清楚说明,然而在不背离本发明精神及其实质的情况下,所属技术领域的技术人员当可根据本发明作出各种相应的变化和修正,但这些相应的变化和修正都应属于本发明的权利要求的保护范围。
Claims (7)
1.一种SIP协议安全性测试方法,包括:
步骤1:测试点与被测对象建立连接;
步骤2:测试点将测试报文发送给被测对象;
步骤3:支持SIP协议的被测对象对所述测试报文根据SIP协议生成回应报文,并返回回应报文;
步骤4:测试点将所述回应报文与预期报文进行比较以生成测试结果;
其中,所述步骤1具体为:
步骤11:设置控制端及测试观察点作为测试点,并将控制端与测试观察点建立连接;
步骤12:控制端向测试观察点发送控制消息,所述控制消息包括:测试观察点的配置信息、在传输层中的角色及测试点地址;其中,所述测试观察点的配置信息至少包括:
测试观察点的以太网端口的名称、IP地址、端口号、子网掩码、默认网关;
步骤13:测试观察点根据所述控制消息与被测对象建立连接。
2.根据权利要求1所述的一种SIP协议安全性测试方法,其特征在于,所述步骤2具体为:
对预设置的测试例进行编译,并根据SIP协议规范构造出协议测试报文、预期报文,并将协议测试报文发送给测试观察点。
3.根据权利要求2所述的一种SIP协议安全性测试方法,其特征在于,所述步骤2具体为:
步骤21:对预设置的测试例进行编译,构造出所需的SIP测试报文,并发送给测试观察点,由测试观察点依据所述控制消息对该所述SIP测试报文进行重新封装生成测试报文,并将该测试报文发送给被测对象;
步骤22:依据预设值的测试例,控制端根据SIP协议相关规范构造出预期报文。
4.根据权利要求1所述的一种SIP协议安全性测试方法,其特征在于,所述步骤4还包括:
步骤a:测试观察点接收并过滤得到被测对象响应测试观察点所发出测试报文的回应报文;
步骤b:测试观察点将上述回应报文重新封装后发送给控制端。
5.根据权利要求2或3所述的一种SIP协议安全性测试方法,其特征在于,所述测试例至少包括数据说明部分和测试流程部分;所述数据说明部分是为了阅读测试例方便而提出,至少包括测试观察点的IP地址、端口号、子网掩码和默认网关;所述测试流程部分至少包含一个或多个测试步测试例流程,每个测试步测试例流程包括发送动作及属性、接收动作及属性;其中:
发送动作是指所需发送的SIP协议测试报文的类型、需要修改的关键字段及字段数值或者是需要加入的信息;
发送属性是指重复发送该测试报文的次数、发送间隔及当前报文处于第几个测试步;
接收动作是指测试点依据SIP协议相关规范应该对接收到的测试报文的回应报文的类型、所需要判断的关键字段和字段数值以及是否需要判断接收到报文的顺序;
接收动作属性是等待接收回应报文的时间。
6.根据权利要求1所述的一种SIP协议安全性测试方法,其特征在于,所述步骤4具体包括:
判断实际收到报文的顺序的步骤;
判断预定字段是否存在的步骤;
判断预定字段的值是否正确的步骤;
判断预定字段顺序是否正确的步骤;
如果上述步骤返回值均为正确,则测试合格;否则测试失败,步骤结束。
7.根据权利要求1所述的一种SIP协议安全性测试方法,其特征在于,所述步骤4具体包括:
判断实际收到报文的顺序的步骤;
判断预定字段是否存在的步骤;
判断预定字段的值是否正确的步骤;
判断预定字段顺序是否正确的步骤;
判断该回应报文是否符合SIP协议规范的步骤;
判断接收到该回应报文的时间是否为测试例中指定的时间内的步骤;
如果上述步骤返回值均为正确,则测试合格;否则测试失败,步骤结束。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 200910077220 CN101478458B (zh) | 2009-01-20 | 2009-01-20 | 一种sip协议安全性测试方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 200910077220 CN101478458B (zh) | 2009-01-20 | 2009-01-20 | 一种sip协议安全性测试方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101478458A CN101478458A (zh) | 2009-07-08 |
CN101478458B true CN101478458B (zh) | 2013-04-17 |
Family
ID=40839093
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN 200910077220 Active CN101478458B (zh) | 2009-01-20 | 2009-01-20 | 一种sip协议安全性测试方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101478458B (zh) |
Families Citing this family (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102025705A (zh) * | 2009-09-18 | 2011-04-20 | ***通信集团公司 | 用于ims***的漏洞挖掘方法和*** |
CN101697521B (zh) * | 2009-09-25 | 2013-08-07 | 曙光信息产业(北京)有限公司 | 过滤网卡自动化测试方法和*** |
CN101778015A (zh) * | 2010-01-07 | 2010-07-14 | 中兴通讯股份有限公司 | 一种微码测试方法和装置 |
CN102006205B (zh) * | 2010-12-14 | 2012-08-01 | 上海市共进通信技术有限公司 | 基于sip协议实现网络设备远程测试的方法 |
CN104219218B (zh) * | 2013-06-04 | 2018-05-08 | 新华三技术有限公司 | 一种主动安全防御的方法及装置 |
CN103346927A (zh) * | 2013-07-02 | 2013-10-09 | 工业和信息化部电信传输研究所 | 一种终端一致性测试***及方法 |
CN104639390B (zh) * | 2014-12-31 | 2019-05-17 | 曙光信息产业(北京)有限公司 | ***的测试方法和装置 |
CN106713239B (zh) * | 2015-11-16 | 2020-04-17 | 大唐移动通信设备有限公司 | 一种基于会话初始协议sip的终端呼叫测试方法和装置 |
CN105553782B (zh) * | 2016-01-13 | 2018-12-25 | 华自科技股份有限公司 | 通讯链路测试方法和*** |
CN107426042A (zh) * | 2016-05-23 | 2017-12-01 | 中兴通讯股份有限公司 | 一种报文传输方法和发送设备 |
CN107426054B (zh) * | 2017-07-28 | 2020-10-20 | 苏州浪潮智能科技有限公司 | 一种基于qpi协议链路层验证***及其验证方法 |
CN108259493B (zh) * | 2018-01-16 | 2019-09-10 | 中南民族大学 | 一种安全协议消息构造方法 |
CN108924159B (zh) * | 2018-07-31 | 2020-10-09 | 杭州迪普科技股份有限公司 | 一种报文特征识别库的验证方法与装置 |
CN110708216B (zh) * | 2019-10-12 | 2021-11-12 | 深圳市吉祥腾达科技有限公司 | 一种交换机lldp协议测试方法及测试*** |
CN111416756B (zh) * | 2020-03-13 | 2021-12-14 | 深圳市腾讯信息技术有限公司 | 协议测试方法、装置、计算机设备及存储介质 |
CN113194006B (zh) * | 2021-03-29 | 2021-11-09 | 北京城建智控科技股份有限公司 | 一种基于rssp-i协议的测试方法 |
CN116095735B (zh) * | 2023-01-18 | 2023-10-03 | 广州通则康威智能科技有限公司 | 一种3gpp协议测试方法及装置 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1514586A (zh) * | 2002-12-31 | 2004-07-21 | 深圳市中兴通讯股份有限公司 | 模拟多用户、多连接的数据通讯设备测试***及方法 |
CN101116287A (zh) * | 2005-05-17 | 2008-01-30 | 香港应用科技研究院有限公司 | 测试网络通信中的通信协议的方法和*** |
-
2009
- 2009-01-20 CN CN 200910077220 patent/CN101478458B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1514586A (zh) * | 2002-12-31 | 2004-07-21 | 深圳市中兴通讯股份有限公司 | 模拟多用户、多连接的数据通讯设备测试***及方法 |
CN101116287A (zh) * | 2005-05-17 | 2008-01-30 | 香港应用科技研究院有限公司 | 测试网络通信中的通信协议的方法和*** |
Non-Patent Citations (1)
Title |
---|
王文华,卜哲.《会话初始协议的安全性测试方法研究》.《现代电信科技》.2008,12-16. * |
Also Published As
Publication number | Publication date |
---|---|
CN101478458A (zh) | 2009-07-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101478458B (zh) | 一种sip协议安全性测试方法 | |
CN100461778C (zh) | 短消息业务在多媒体子***中实现分叉发送的方法及*** | |
CN108964943B (zh) | 一种实现ioam封装的方法及装置 | |
CN105141434A (zh) | 业务链的故障检测方法及装置 | |
CN112333019B (zh) | 路由器的配置、测试方法及***和可读存储介质 | |
KR20070004131A (ko) | 가입자 신원들 | |
CN104685957A (zh) | 基于通过移动运营商使用运营商网络提供的gprs数据服务的gtp信息中的apn校正的***和方法 | |
EP3096563B1 (en) | Method and system for realizing network access via wifi | |
CN102075890A (zh) | 一种手机及其远程控制方法 | |
CN105307152B (zh) | 一种多任务sim/usim管理方法及*** | |
CN106330483B (zh) | 信息获取方法、客户端设备和服务端设备 | |
CN110601902A (zh) | 一种基于区块链网络的交互数据处理方法及装置 | |
CN107770762A (zh) | 一种建立蓝牙连接的方法及装置 | |
US20220327010A1 (en) | Extensible communication framework and communication method supporting multiple communication protocols | |
CN106209503A (zh) | Rpc接口测试方法及*** | |
US20110029654A1 (en) | Service Control Device, Service Control System, and Method | |
CN109274658B (zh) | 基于tr069协议的工单报文分析方法及*** | |
CN101796769B (zh) | 用于改善控制服务器性能的因特网协议版本4上的因特网协议版本6转变方法和设备 | |
US20080130638A1 (en) | Communications System | |
CN109286536B (zh) | 一种接口测试方法及装置 | |
CN110932943A (zh) | 一种支持win、inap、sip通信协议的测试*** | |
KR102003694B1 (ko) | 이동통신시스템에서 세션 설정 방법 및 장치 | |
CN106685600B (zh) | 局域网内工作站之间的消息传递方法 | |
EP2858415B1 (en) | Multi-link-based data transmission method and device | |
CN107306282B (zh) | 一种链路保活方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
TR01 | Transfer of patent right | ||
TR01 | Transfer of patent right |
Effective date of registration: 20220104 Address after: 100191 No. 40, Haidian District, Beijing, Xueyuan Road Patentee after: CHINA ACADEMY OF INFORMATION AND COMMUNICATIONS Address before: 100045 Beijing city Xicheng District Yuetan Nan Street 11 Patentee before: The Research Institute of Telecommunications Transmission MIIT |