赵明英
(广东女子职业技术学院 教务处,广州 511450)
GTP隧道管理消息状态分析
赵明英*
(广东女子职业技术学院 教务处,广州 511450)
为解决3G网络本身的安全问题,在了解GTP协议结构的基础上,设计出GTP隧道管理消息的状态机。通过对隧道管理消息的状态进行跟踪分析,阐明防火墙对GTP包状态的监测原理,为针对GTP协议攻击的防御研究提供了新的研究视角和分析途径。
3G;GTP;隧道管理消息;状态机
图1 GTP头部的格式
3G是将无线通信与国际互联网等多媒体通信相结合的新一代移动通信系统。GTP(GPRS Tunnelling Protocol)[1]是3G通信中的重要协议,然而GTP协议本身不具备任何内在的安全机制,为了加强3G防火墙的防护效果,设计有效的GTP策略,应了解GTP的各个状态,对GTP隧道的建立、更新和删除进行监控。
GTP是用于GSN(GPRS Support Node)节点之间的接口协议。GTP协议是UMTS(Universal Mobile Telecommunications System)[2]核心网络的专用分组路由管理和传输协议,它可以在核心网内部支持分组数据终端的移动性。该协议由GTP控制面和用户面协议组成。GTP协议控制平面完成移动台MS接入分组网络的隧道控制和管理功能,消息主要执行建立、修改和删除GSN之间隧道功能,同时还负责GSN节点间的移动性管理、位置管理、路径管理功能。GTP协议用户平面负责数据在隧道中传输,以及传输隧道的部分维护功能[3-4]。
GTP数据包基本由GTP基本头部,扩展头和数据组成。GTP头用于控制面消息GTP-C和用户面消息GTP-U协议,最小为8个字节,其长度可变,其格式如图1所示。PN、S和E标识符分别表示是否带有附加的可选字段。PN标识标示是否带有N-PDU号字段,如带有N-PDU字段则标识置1,置0表示没有序列号字段,即使有也不解释。PN标识只在GTP-U中使用,在GTP-C中不用或被忽略;S标识表示是否有序列号字段,如带有序列号字段则标识置1,置0表示没有序列号字段,即使有也不解释。在GTP-C消息中S标识置1。E标识指明是否带有扩展字段,以便将来不用其他版本就可以扩展本规范中定义的GTP头,有扩展字段标识置1,否则置为0。如果PN、S和E标识符中任意一个标识置1,GTP头的长度最小为12字节,收端应接收和标识对应的字段。没有用到的字段,发端置所有比特为0,对于没用到的字段收端不作考虑。版本字段用于标识GTP协议的版本,有版本0和版本1;协议类型(PT)用于区别GTP计费协议和GTP(PT设为1);消息类型用来指明GTP消息的类型,消息类型号0~255;长度用来标识有效载荷的字节数,即GTP包除去包头必选字段以外的字节数,序列号和N-PDU号及其他扩展头也被计入其中;隧道端点标识(TEID)明确标识所用的接收GTP-U或GTP-C协议实体中隧道的端点。一条GTP隧道的收端本地分配TEID,发端必须使用这个值。TEID值用GTP-C消息(在Iu接口上用RANAP Radio Access Network Application Protocol)在隧道两端传输[5]。
图2 GTP隧道管理状态变迁
图3 SGSN发起建立隧道的状态机
2.1 状态机的定义
3G核心网络中的分组数据是通过GTP协议承载传输的。服务GPRS支持节点SGSN与网关GPRS支持节点GGSN之间要首先通过消息协商建立隧道[6]。为了在防火墙中对GTP隧道的建立、更新和删除进行监控,并建立GTP的状态表,本文设计了GTP隧道管理消息的状态机。
状态机M的模型如下:
对给定的五元组lt;Q,Σ,δ,q0,Fgt;满足下列条件:
1)Q是简化状态机的状态组成的有限集合,q∈Q,q称为M的一个状态;
2)Σ是简化状态机中隧道控制消息类型组成的集合, ∀x∈Σ,x为Σ的一个控制消息;
3)δ:Q×Σ→Q为转移函数,对 ∀(q,x)∈Q×Σ,δ(q,x)=p,是指M在状态q时收到x,将状态变为p;
4)起始状态q0∈Q;
5)接受状态集F,这里F={q0};
隧道管理操作中,主要的通信节点是GGSN和SGSN,我们将GGSN视为服务器,将SGSN视为客户,按照GGSN和SGSN在不同状态收到不同消息后的状态变化做出了状态机如图2所示。图中包含的状态集Q一共有18个状态(图中一共画出了15个状态),其中SGSN有8个:CPCReq_Sent、Tunnel Established、UPCReq_Sent、DPCReq_Sent、DPCReq_Recv、PNReq_Recv、PNResp_Sent、PNRReq_Sent;GGSN有10个状态:GGSN Listen、CPCReq_Recv、Tunnel Established、UPCReq_Recv、DPCReq_Sent、DPCReq_Recv、T_PDU_Recv、PNReq_Sent、PNResp_Recv、PNRReq_Recv,包括所有的隧道管理消息。
2.2 隧道建立的状态迁移
GTP隧道的建立过程类似于TCP/IP协议建立连接的3次握手过程,不同的是,建立过程只用了2次握手[7]。首先SGSN向GGSN发送Create PDP Context Request,GGSN向SGSN响应Create PDP Context Response消息,从而建立隧道连接。SGSN经过的状态迁移是Closed→CPCReq_Sent→隧道Established,而GGSN的状态迁移过程是Closed→GGSN Listen→CPCReq_Recv→隧道Established。此时,SGSN与GGSN可以开始进行数据的传输。
2.3 隧道更新和删除的状态迁移
SGSN与GGSN建立隧道后,SGSN可以向GGSN发送PDP上下文更新信息,从而更新隧道的某些特性字段,完成后都回到隧道Established的状态。SGSN和GGSN分别可以向对方发送PDP上下文删除信息,释放建立好的隧道,回到开始状态。
2.4 SGSN发起建立隧道的状态变迁图
在SGSN发起建立隧道的GTP状态机中,不考虑GGSN向SGSN发PDU Notification Request以建立PDP上下文的情况,这是典型的服务器端与客户端通信的模式。这里可以把GGSN看成服务器端,把SGSN看成客户端,如图3所示。图中的状态集合Q={CPCReq_Sent,CPCReq_Recv,TunnelEstablished,UPCReq_Sent,UPCReq_Recv,DPCReq_Sent,DPCReq_Recv,GGSN Listen},Σ={16,17,18,19,20,21}(消息类型码),δ描述了状态机的转移过程,是Σ中消息所引发的状态转移,每个消息只会触发唯一的状态转移。
防火墙在核心部分建立GTP状态监测表,将进出防火墙的GTP数据当成一个个的GTP会话,利用GTP状态表跟踪每一个GTP会话状态。对每一个GTP包的检查不仅根据防火墙的IP规则表,更考虑GTP数据包是否符合会话所处的状态,提供对GTP传输的控制能力。防火墙监测引擎抽取GTP包的有关数据对GTP数据实施状态监测,并动态地保存起来形成GTP状态检测表,作为以后执行安全策略的参考。对于由MN发起的一次正常的GPRS附着通信,我们可以抽取GTP包头中的TEID、Message Type、Sequence Number等信息做为建立GTP状态的依据。
起始GGSN处于监听状态(GGSN Listen)。当MN发起GPRS附着通信时,SGSN向地址列表里的第一个GGSN发出创建PDP上下文请求信息,SGSN处于CPCReq_Sent状态。该请求信息经过防火墙时,防火墙记住其中的控制面和数据面TEID、Sequence Number、Message Type,启动计时器,等待GGSN的回应。GGSN在收到该请求消息后进入CPCReq_Recv状态,进行相应处理后发送回应消息,进入隧道建立状态(接受请求)或返回监听状态(未接受请求)。防火墙在计时器失效前收到该GGSN发送的回应,允许该包通过。若信息单元类型值为128(接受请求),SGSN收到此回应后进入隧道建立状态,开始传输MN的数据。防火墙则在状态表中设置相应的条目,包括数据TEID、控制TEID、Message Type(前一GTP包的类型)、Sequence Number等信息。此后在数据TEID上的数据即可通过防火墙,但是每次都会被检查,并更新状态状态表中的Message Type、Sequence Number信息。如果收到的回应其信息单元类型值不为128,则请求不被接受,SGSN收到此回应后返回初始状态。防火墙并不建立相应的状态表条目,此后来自此数据TEID的数据被拒绝。
在通信过程中SGSN可能会向对端GGSN发送更新PDP上下文请求消息来更新PDP上下文中的信息,即SGSN进入UPCReq_Sent状态。防火墙收到该消息后转发该消息,启动计时器,并提取其中的相关信息暂存;GGSN收到该请求消息后进入UPCReq_Recv状态,进行相应处理,发出响应,无论是否接受请求都会返回隧道建立状态,差别只在PDP上下文中的信息是否更新。收到GGSN发送的回应后,防火墙转发并查看其中的原因值,若原因值为128则更新状态表中的相应信息,否则只更新其中的Sequence Number。SGSN收到回应后也是返回隧道建立状态,差别在于是否更新PDP上下文信息。
通信完成后,SGSN向对端GGSN发送删除PDP上下文请求消息来删除某一PDP上下文,此时SGSN进入DPCReq_Sent状态。防火墙允许此请求消息通过,缓存其中的相关信息。GGSN收到该请求消息后进入DPCReq_Recv状态,进行相应处理后发送回应,返回隧道建立状态(不接受请求)或监听状态(接受请求)。该回应到达防火墙后被转发,同时检查原因值,若为128,防火墙删除状态表中的对应条目,否则保留该状态条目,更新Sequence Number。SGSN收到接受请求的回应后返回初始状态,否则保持在隧道建立状态。
本文主要介绍了GTP协议及头部结构,针对GTP隧道协议的隧道管理消息的状态进行分析定义,并画出了隧道管理的状态变迁图。通过说明状态防火墙该如何应用该状态机进行包状态的检查,对3G防火墙针对GTP协议攻击的防御研究提供理论基础。
[1] 3GPP.3GPP TS 23.060 General Packet Radio Service(GPRS);Service description[S].2005.
[2] UMTS 33.21, V2.0.0,Universal Mobile Telecommunications System(UMTS);Security Requirements [S].1999.
[3] 陈志锋,陈盛荣.3G防火墙中GTP策略的设计[J].通信技术,2008(1):77-78,93.
[4] 詹宏强,陈盛荣.针对GTP协议的攻击及防御综述[J].通信技术,2007(8):43-45.
[5] 顾恺.GTP协议的分析[J].数据通信,2001(1):39-41.
[6] 王田,张伟.GTP协议分析及在GSN中实现[J].重庆工商大学学报:自然科学版,2004(1):49-53.
[7] 刘震宇,吴俊强,方韶茂.GPRS核心网隧道安全测试平台的设计[J].自动化与仪表,2010(3):24-28.
StatusAnalysisofGTPTunnelInformationManagement
ZHAOMingying*
(Teaching Affairs Office,Guangdong Women's Polytechnic College, Guangzhou 511450,China)
With the popularization of 3G mobile network, solutions to possible security problems is becoming more and more important. This paper, based on GTP protocol, designed a state machine for GTP tunnel information management to make a trace analysis, and illustrated how firewall monitors GTP package status,all in an effort to bring a new perspective and an approach to the research on GTP attack defense.
3G;GTP; tunnel information management; state machine
2013-06-18
赵明英(1978- ),女(汉族),山东菏泽人,讲师,硕士,研究方向:计算机网络与信息安全、数据库,通信作者邮箱:myzhao@gdfs.edu.cn。
TN929
A
2095-5383(2013)04-0041-03