◆谢福财
多方安全协议会话重构方法
◆谢福财
(解放军91033部队 山东 266035)
如何对安全协议会话进行有效重构是信息安全领域的关键问题。针对分布在多个流的多方安全协议会话重构问题,本文提取属于同一会话的流之间的三个关联特征,并据此给出多方安全协议会话实例重构方法。最后,针对三种会话运行场景下的三个典型多方安全协议进行实验,实验结果表明该方法能够有效重构协议会话。
多方安全协议;协议识别;会话识别;会话实例重构
随着安全协议的广泛应用,与安全协议相关的各种数据在互联网流量中比重日益增加。如何对安全协议会话进行重构已成为当前网络安全技术中亟待研究的关键技术之一。
按照参与方数目,安全协议可划分为两方安全协议和多方安全协议。两方安全协议会话包含在一个TCP连接或者UDP双向流中,多方安全协议会话分布在多个相关流中。对两方安全协议而言,只需识别流所使用的协议类型,即可进一步重构协议会话实例。现有协议识别方法主要包括基于端口的方法、基于DPI的方法[1-2]、基于流统计特征的方法[3-4]和综合方法[5],但上述方法都针对于两方安全协议进行研究,没有充分考虑分布在多个相关流中的多方安全协议识别问题,多方安全协议会话重构问题仍有待解决。本文针对这一问题,提取多方安全协议属于同一会话的流之间的关联特征,并据此给出多方安全协议重构方法,恢复协议会话过程。
安全协议会话采用下述四元组表示:(安全协议类型,协议会话开始时间,{主机IP,主机对应角色},{会话消息集合}),属于安全协议同一个会话实例的具有时序关系的协议消息序列。本节从多方安全协议同一个会话的主体行为出发,给出多方安全协议会话的三个关联特征——邻接主机行为特征、主体角色行为特征以及主体消息行为特征。
(1)邻接主机行为特征
属于多方安全协议同一个协议会话的多个流之间必然存在相同的主机。
邻接主机行为特征:多方安全协议一个会话不存在孤立边。假定多方安全协议一个会话分布在个流{f,f,f}中,对任一个流,在会话中都至少存在一个流与其构成邻接主机流。
(2)主机角色行为特征
协议参与者主机遵循协议规范,按照自己的角色与其他主机进行交互,并通过消息的收发来确认是在与自己所期望的主体进行交互。
主机角色行为特征:在协议一个会话中,担任不同角色的主机是确定的。角色相同,其对应的主机相同。
(3)主机消息行为特征
为防止攻击,协议收发的消息中都存在具有相关性的字段,这些字段能为协议参与者识别以认证消息来源。
主体消息行为特征:对多方安全协议的一次会话而言,前后交互步骤的消息之间大都存在具有相关性的字段。
为描述该特征,本节给出下述定义。
定义2 原子字段:对安全协议消息进行解析时,如果一段连续字节序列是最小不可分割的(例如,版本号、主体标识、长度指示字段、随机数、命令、密文数据等),则称该段字节序列为原子字段。
定义3 变换:变换:表示将一个变量变换为项。在协议中可以进行异或、Hash、加密或者进行其他变换。
定义4 新鲜数据:协议中具有新鲜性的数据,例如时间戳、随机数。
定义5 消息相关性:对两个消息p和p而言,假定p包含原子字段f(),p包含原子字段f()。若f()和f()都为对同一新鲜数据进行变换得到的数据,则称p和p存在相关性,记为pRp,f()和f()为消息相关项。
安全协议的消息相关项大都是具有新鲜性的随机数,也可能是相关的密文等。在安全协议中由于采用密码技术,消息载荷可能是密文、也可能是明文或者明密文的混合。同一个会话中的相关消息存在以下三种情况。
(1)明文相关:f()和f()都为明文原子字段。多数情况下f()=f()=;少数情况下,f()≠f()(例如,f()=,f()=1)。
(3)密文相关:f()为密文原子字段,f()为密文原子字段。多数情况下f()≠f();少数情况下,f()=f()。
安全协议中新鲜数据由协议某个参与方生成,随后该参与方发送包含的消息,其中可能为明文数据,也可能在加密形式中出现。为保证协议的安全性,防止被篡改,在协议后续执行过程中一般在加密形式中出现。因此安全协议中消息相关大都为明密文相关或者密文相关。
重构协议会话实例需要恢复会话的消息交互序列。本节依据给出的多方安全协议主体行为特征,给出多方安全协议会话实例重构算法,以重构协议会话的消息序列。其框架如图1所示。
图1 多方安全协议会话重构算法框架图
重构协议会话实例首先需要识别协议消息类型。依据协议规范,在协议实例特征库中存储多方安全协议的规范特征、端口特征、消息类型特征等相关特征。对网络中到达的数据包进行处理,依据安全协议实例特征库中的特征对数据包的协议类型进行识别。
图2 会话识别阶段流程图
Step 1:首先在待重构会话表中,检测p所属流(或者反向流)是否已经确定所属的会话。若确定,将该消息并入相应的会话,更新会话信息;若没有确定,转至step 2;
Step 2:根据时序关系确定p所属会话。检测待重构会话表中多方安全协议第-1个位置消息的数目1。若待重构会话表中,仅存在1个协议第-1个位置的消息,则到达的第个消息与该-1个位置的消息属于同一个会话,将第-1个消息所属流的会话标识标记给第个消息所属流的会话标识。
Step 3:由于安全协议具有“高并发性”特点,可能存在大量协议会话实例并发运行,在待重构会话表中,可能存在多个协议第-1个位置的消息。该种情况下需要进一步根据给出的主体行为特征,给出相应的特征检测方法,确定到达的第个消息所属的会话。
Step 4:根据邻接主机行为特征进行判定。在多方安全协议的一个会话中,不同流之间都构成邻接主机关系。依次对待重构会话表中的每一个待重构会话进行处理,判断p所属流与会话中前-1个消息所属的流是否均存在邻接关系。若不存在,则不满足邻接主机流关系,对下一个待重构会话进行处理;若在待重构会话列表中仅存在一个会话满足邻接主机行为,则p属于该会话,标记p所属流的会话标识;若在待重构会话列表中存在多个会话满足邻接主机行为,则执行Step 6;
Step 5:根据主机角色行为特征进行判定。根据p的主机和角色确定协议前-1个消息对应的主机和角色,并与待重构会话中前j-1个消息的主机和角色进行匹配,若不匹配,则p与p不属于同一个会话,对下一个待重构会话进行处理;若在待重构会话列表中仅存在一个会话满足主机角色行为,则p属于该会话,标记p所属流的会话标识;若在待重构会话列表中存在多个会话满足主机角色行为,则执行Step 6;
Step 6:根据主机消息行为特征进行判定。若依据协议规范,协议第条消息p和第条消息p(>)具有相关性(p包含原子字段1(),p包含原子字段2(),1()和2()都为对同一新鲜数据进行变换得到的数据),则依据消息相关性进一步确定p所属的会话。具体而言,①若p中1()与p中2()相同,主要采用随机抽取节点的方法对消息其中的内容进行比对,次随机抽取位置如果都一致的情况下(的取值与内容长度相关),可判定为两个字段相同。在待重构会话表中,判断p与第个位置消息p的相关性,若检测具有相关性,则p与p的会话标识相同。②若p中1()与p中2()不同,由于无法解密协议中的密文数据,因此不能通过消息载荷内容检测消息相关性,执行Step 7;
Step 7:若根据Step 4-6无法确定p所属的会话,记录p和满足Step 4-6的会话,并对后续消息进一步判断其所属会话。若与p属于同一个流的后继消息可以确定会话标识,则p也属于相应的会话。若始终无法确定p所属流对应的会话,该种情况下,一般为并发会话,会话中两个参与主体的IP和角色相同,且不同会话相同位置的消息总是同时到达,采用先进先出机制和协议参与主体的后续传输行为(若存在后续传输)进行判定。
Step 8:若协议会话的相关消息全部确定,则进一步结合安全协议实例特征库中目标安全协议的特征,恢复协议会话实例中交互的每一个消息,重构协议会话实例。在重构成功后,更新已重构会话表、未重构会话表。将协议会话消息序列存储至已重构会话表中,并将该会话从未重构会话表删除;若协议会话重构未完成,继续对捕获的后续数据包进行处理,直到确定会话相关的全部消息。
在确定协议会话相关的流后,需要进一步结合安全协议实例特征库中目标安全协议的特征,恢复协议会话实例中交互的每一个消息,重构协议会话实例,为分析协议在实际运行过程中安全性提供支撑。
协议会话由不同类型的消息组成,每类消息实现特定的功能,具有不同的语法语义。在确定协议会话相关的流后,结合实例特征库中目标协议消息格式特征,确定每个会话中的消息类型,并解析流中相应的关键词字段、密文数据字段;在此基础上利用确定的消息类型,根据目标协议的时序行为特征对会话实例的消息交互序列进行构建。具体而言:
①依据协议规范特征恢复消息中关键词字段。对固定偏移关键词,根据关键词偏移、长度、值恢复消息内容中对应字段;对于非固定偏移关键词,对流中消息内容根据关键词值和长度确定相应字段。
②依据协议规范特征恢复其中的密文数据字段。若规范特征中密文数据字段相对关键词偏移固定,根据关键词、密文数据字段的偏移、密文长度域(或者密文长度值)确定消息内容中相应的密文字段;若密文数据字段相对关键词偏移可变,根据关键词、关键词后的明文长度域确定密文数据的起始位置,进而根据密文长度域(或者密文长度值)确定消息内容中的密文字段。
③根据会话实例中的消息类型和协议时序行为特征重构会话实例,恢复会话实例的消息交互序列。
为评估安全协议会话重构方法的有效性,本文选取3个经典的多方安全协议——Kerberos协议、Ban-Yahalom(BY)协议和Needham-Schroeder(NS)对称密钥协议进行实验,结果表明该方法具有较高的重构精度。
协议数据集由实验室局域网产生。实验环境如图3所示。Windows Server 2003中的Active Directory支持Kerberos V5协议,在Windows域环境(2台应用程序服务器、2个域服务器、2台普通客户端)中运行Kerberos。BY协议和NS共享密钥协议则采用Spi2Java工具分别生成NS协议和BY协议的应用程序,并在各个主机上(4台客户端主机、2台服务器,由服务器担任可信第三方)运行。
图3 实验环境
在以下3种会话运行场景获取实验数据:(1)同一时间段内运行单个会话;(2)同一时间段内运行多个会话,且参与会话的主机不同;(3)同一时间段内容运行多个并行会话。数据集如表1所示。
表1 协议流量数据集
表2 会话重构结果
由上可知,该方法重构正确率率在90%以上,误报率和漏报率在6%以下,能够有效地重构协议会话实例在3个场景下都可以较好地重构协议会话实例。
本文针对多方安全协议会话实例重构问题进行研究,首先分析协议同一个会话中主体的行为特征,给出了多方安全协议的邻接主机行为特征、主体角色行为特征以及主体消息行为特征,并据此提出了多方安全协议会话实例重构方法,重构分布在多个相关流中的多方安全协议会话过程。最后针对3中典型的多方安全协议进行实验,结果表明该方法能够有效重构协议实例,从而为分析安全协议在实际运行过程中的安全性提供关键技术支持。
[1]Bujlow T,C E Valentin,B R Pere. Comparison of Deep Packet Inspection(DPI)Tools for Traffic Classification[R]. Technical Report. 2013.
[2]Zhu YN,Han JH,Yuan L,et al. SPFPA:A Format Parsing Approach for Unknown Security Protocols[J].Journal of Computer Research and Development,52(10):2200-2211,2015.
[3]ZUEV D,MOORE A W. Traffic classification using statistical approach[A]. 6th International Workshop on Passive and Active Network Measurement[C].Berlin,Germany: Springer-Verlag,2005:321-324.
[4]L.Grimaudo,M. Mellia,E. Baralis,and R. Keralapura, SeLeCT:Self-Learning Classifier for Internet traffic[J],IEEE Transactions on Network and Service Management,2014.
[5]Zhu YN,Han JH,Yuan L,et al. Monitoring approach for online security of cryptographic protocol.Journal on Communications,37(6):75-85,2016.