《武汉工程大学学报》  2015年07期 60-64   出版日期:2015-07-31   ISSN:1674-2869   CN:42-1779/TQ
面向SOAP消息的Web服务注入攻击检测方法


0 引 言Web服务是一个向其它应用过程或程序提供数据和服务的分布式模块化组件,它通过XML、SOAP等新技术实现各种服务之间的互操作[1]. Web服务具有高度互操作、松散耦合和可重用等特点,已成为网格和云计算等计算技术的重要实现方式之一. 目前Web服务通信是以传输SOAP消息为基础的,由于SOAP协议在设计时并没有过多的考虑其安全性问题,从而导致SOAP 消息在传输过程中极易受到诸如SQL注入攻击和XML 注入攻击等其他形式的命令注入攻击,因此保证 SOAP 消息传输的安全性是当前研究的一个重要问题[2]. 文献[3]描述了Web服务面临的安全威胁与状态,利用OWL-S与本体建立了服务安全攻击本体. Nils Gruschka等人[4]指出消息的机密性、完整性和用户验证对于服务平台安全性的作用很小,从而提出采用XML Schema中的消息对接受到的SOAP消息进行确认,以此发现具有注入攻击的服务调用. 文献[5]在研究中定义了一个消息安全本体来对SOAP消息进行本体验证,进而对攻击进行检测. 杨晓晖等人[6]提出基于信任度量的跨域访问控制模型,来实现Web服务访问安全. 笔者在充分考虑正常Web访问行为的特点后,采用长度不同的多种特征子串来表示正常SOAP消息行为,并通过支持度来建立正常消息行为模式,最后利用提出的检测模型对注入攻击进行检测.1 注入攻击检测方法文中提出的注入攻击检测方法的实现过程可分为正常行为建模和和攻击检测两个阶段,具体检测模型如图1所示. 正常行为建模的主要任务是建立正常的SOAP消息的行为模式. 攻击检测阶段的任务是根据建立的正常行为模式,利用特定的检测模型来识别当前SOAP消息中的异常行为.图1  注入攻击检测模型Fig.1 The detection model of injection attack 1.1 行为建模Web访问详细的记录了客户的SOAP信息行为,通过观察Web访问日志,可发现消息中会大量重复出现一些字符串,将这些重复出现的字符串称为特征子串,其特征相对稳定,可代表SOAP消息的行为模式[7]. 行为建模阶段的主要工作如下.(1)获取训练数据:将无注入攻击时产生的Web访问作为训练数据E={e1,e2,…,en},其中ei表示按时间顺序排列的第i个SOAP消息事件,n为SOAP消息事件序列长度. 定义1:Web访问日志记录的一次会话或一次执行过程称为SOAP消息事件,记为e=<la,t>,其中la=<s1,s2,…,sm>表示该SOAP消息事件中的m个字符,t表示记录SOAP消息事件的时间. (2)借鉴最长前缀提取算法[10]思想,采用最长前缀分析法提取训练数据E中所有长度大于1的重复出现的特征子串,组成特征子串集合 T={t1,t2,…,tk},tj表示第j个特征子串,k为长度. (3)将训练数据E中的SOAP消息事件序列转换为按时间排序的n个长度分别为l(1), l(2), …l(n)的特征子串序列流C={C1,C2,…, Cn},其中Ci 表示eiSOAP消息事件中包含的所有特征子串,记为Ci={tj,tj+1,…,tm}. (4)计算集合 T中每个特征子串在训练数据序列E中的支持度. 定义2:一个特征子串在序列E中的支持度等于该子串出现的次数除以所有特征子串总计出现次数,即:support(ti)=number(ti)/Number(T),其中Number(T)为集合T中所有特征子串出现的次数和. (5)从n个特征子串流中,分别按照相应的支持度提取正常Web访问行为模式序列L(i). 考虑到不同的特征子串表示的行为模式意义可能不尽相同,其出现的频率也会有较大的区别,不能采用单一支持度,在文中设置了k个相应于不同特征子串的最小支持度minsup(t1), minsup(t2), …,minsup(tk). 对于1≤i≤k,将Ci中等于或大于相应最小支持度minsup(ti)的特征子串提取出来,构成满足支持度要求的行为模式序列L(i). (6)构建正常行为模式轮廓将S个满足最小支持度要求的序列L(1),L(2),…L(S-1),L(S)存储起来,用于描述正常行为模式轮廓,同时也作为下一步进行注入攻击检测的正常行为模式轮廓L={L(1),L(2),…,L(K)}. 1.2 注入攻击检测攻击检测阶段的任务是根据建立的正常行为模式,利用特定的检测模型来识别当前SOAP消息事件中的异常行为. 攻击检测阶段的主要工作如下.(1)获取测试数据:选取监测时间内Web访问日志作为测试数据,并进行预处理. 设预处理后得到的日志数据字符串序列为E’={ la1, la2,…, lan},其中lai为按时间顺序排列的第i个字符串. (2)按照行为建模阶段提出的方法,提取测试数据E’中的K个行为模式序列,并以此构建当前日志行为模式轮廓L’={L’(1),L’(2),…,L’(S)}.(3)将两阶段构建的行为轮廓L和L’分别转化成k·n的模板矩阵M和检测矩阵Q.模板矩阵M=(M1,M2 …MK)T,其中Mi表示序列L(i)转化的由n个0和1组成的行向量,即Mi=(a1,a2,…,an),其物理意义表示:若子串集T中的某个特征子串在L(i)中出现,将相应的矩阵位置元素置为1,否则置为0. 如L(i)由集合T中的第1,2,4个特征子串组成,即L(i)={t1,t3,t5},则转化的行向量Mi=(1,1,0,1,0,0, …,0). 同理,将序列库L’ 转化为行向量表示的检测矩阵Q. (4)矩阵相似性度量:使用矩阵相似度来衡量检测矩阵Q与模板矩阵M之间的匹配程度. 下面引入矩阵间相似度的概念[8],设m×n矩阵全体为C m×n,假如A·B∈C m×n,矩阵内积可定义为 <A·B>=tr(BTA) (1)式(1)中tr(﹒)表示矩阵主对角线元素的和,而矩阵内积表示两矩阵相对应位置元素的乘积累加和,由矩阵内积可导出范数 ||A||=■(2)若A、B为实数矩阵,则|<A·B>|≤||A||·||B||,当且仅当A和B两矩阵完全相似时,|<A·B>|=||A||·||B||.可知,A和B两矩阵的相似度为 sin(A,B)=cos?兹=■(3)式(3)中θ为A和B两矩阵之间的夹角,当θ=0° 时,表示A和B相似性最好;当θ=90° 时,A和B则完全不相似. 为计算检测矩阵Q与模板矩阵M之间的匹配程度,需将公式(3)改为 sim(M,Q)=■ (4)当检测矩阵Q与模板矩阵M之间的匹配度sim(M,Q)小于给定的判决阈值w时,则将矩阵Q标记为异常,并发出异常警报,最后将报警SOAP消息事件交由专家系统并结合人工进行验证,进而判定Web访问是否遭受注入攻击. (5)判决阈值选择:选择合适的判决阈值是决定检测率和误报率的关键因素. 参照文献[9]中交叉验证的方法来确定文中的判决阈值w,将获得的Web访问日志按一定比例分成两部分,一部分用于获取行为模式,而另一部分用于确定判决阈值和测试误报率,如此反复交叉的测试,并在测试过程中通过调整判决阈值来获得误报率与不同判决阈值间的对应关系,最终将期望误报率所对应的判决阈值w作为检测注入攻击的阈值. 2 实验与分析本文的试验是在安徽科技学院校园网中进行的,采集到的数据集既有校园网内部的Web访问数据,也有来自于或传输到教育网上的数据,并利用C++语言完成文中相关的算法和实验. 具体实验环境见图2所示.图2 实验环境图Fig.2 The platform of experimental environment 表1 环境配置表Tabel1 The configuration of experimental environment图2中的环境配置如表1所示. 实验所采用的Web访问数据集如下:训练数据集:将 T2产生的1 000个SOAP消息记录作为训练数据集,用来建立正常的SOAP消息的行为模式. 测试验证数据集:将T1采集到的Web访问日志和P1、P2产生的100个SOAP消息记录作为测试数据集,用来验证文中提出的注入攻击检测效果.根据训练数据集,运行特征子串提取算法,提取了35个用于表示行为模式的特征子串,进一步采用文中提出的行为模式序列提取方法,获得了21个行为模式序列库L={L(1),L(2), …,L(21)}.在建立正常行为模式轮廓后,对测试验证数据集采用文中提出的注入攻击检测方法进行检测. 为选择最佳的检测判决阈值,可通过已有的训练数据并通过判决阈值选择法来确定. 图3给出了实验过程中选择判决阈值w的曲线,图中的实线为未进行注入攻击对应的判决阈值曲线,而虚线为注入攻击后的判决阈值曲线. 从图3中可以看出,当w=0.55时,正常SOAP消息行为模式下的判决阈值曲线与注入攻击后对应的判决阈值曲线几乎没有的交叠部分,具有较好的区分度,因此文中将0.55作为最佳判决阈值. 图3 判决阈值曲线Fig.3 The curve of decision threshold同时,还采用文中实验用的Web访问数据集分别对文献[10]中基于序列对比的检测方法、文献[11]中基于本体的检测方法以及文献[12]中基于文本聚类的攻击检测方法进行了对比实验,在检测率、误报率和实验时间方面进行了对比,实验对比结果见表2所示. 表2 不同检测法的检测结果比较Tabel 2 The comparison results of detection effect从表2中可以看出,文中提出的检测方法在检测率上明显优于其他3种检测方法,且误报率也明星低于序列对比和文本聚类的检测方法. 由于文中提出的检测方法需要先建立正常行为模式,然后再进行验证检测,所以在实验时间方面稍高于序列对比和本体检测法,但是其他两项检测指标具有明显的比较优势. 由实验对比结果可见,文中提出的注入攻击检测方法是有效的,具有很好的综合检测性能. 3 结 语提出了一种新的面向SOAP消息的注入攻击攻击检测方法,该方法充分考虑了正常Web访问行为的特点,采用长度不同的多种特征子串来表示正常消息行为,并通过支持度来建立正常消息行为模式,最后利用特定的检测模型来检测SOAP消息中是否含有注入攻击. 实验结果表明,文中提出的检测方法可有效的检测注入攻击,且具有很好的检测效果. 致 谢:在此对文中实验和测试等提供支持和帮助的安徽科技学院计算中心表示感谢,并对在研究过程中提供的指导的各位老师帮助表示感谢!