网络攻击特征的提取技术分析

时间:2022-06-25 03:25:02

网络攻击特征的提取技术分析

攻击特征自动提取定义与分类

攻击特征自动提取分为攻击发现和提取特征两个基本步骤。因此,与入侵检测系统可以分为网络IDS(NIDS)和主机IDS(HIDS)类似,根据发现攻击的位置不同,攻击特征自动提取也可以分为基于网络和基于主机的两大类,分别简记为NSG(network-basedsignaturesgeneration)和HSG(host-basedsignaturesgeneration)。1)NSG主要是通过分析网络上的可疑数据来提取字符型的特征。字符型的特征是指通过字符串(二进制串)的组成、分布或频率来描述攻击。NSG系统一般通过数据流分类器或Honeypot系统来发现网络数据中可疑的攻击行为,并获得可能包括了攻击样本的可疑网络数据;然后将其分成两个部分,一部分NSG系统[8~9]对这些可疑数据进行聚类,使得来自同一攻击的数据聚为一类,再对每一类提取出攻击特征,另一部分NSG系统则没有聚类过程,而是直接分析混合了多个攻击样本的数据,提取可以检测多个攻击的特征。最终NSG系统将提取出的攻击特征转化为检测规则,应用于IDS系统的检测。2)HSG主要是指检测主机的异常并利用在主机上采集的信息来提取攻击特征。根据获得主机信息的多少,HSG又可以进一步分为白盒HSG方法、灰盒HSG方法和黑盒HSG方法三类。白盒HSG方法需要程序源代码,通过监视程序执行发现攻击行为的发生,进而对照源程序提取出攻击特征;灰盒HSG方法不需要程序源代码,但是必须密切地监视程序的执行情况,当发现攻击后通过对进程上下文现场的分析提取攻击特征;黑盒HSG方法最近才提出,它既不需要程序源代码也不需要监视程序的执行,而是通过自己产生的“测试攻击数据”对程序进行攻击,如果攻击成功,表明“测试数据”有效,并以该“测试数据”提取出攻击的特征。

基于网络的攻击特征自动提取技术

下面介绍几种NSG方法。基于最长公共子串方法早期的NSG系统[10~11]大多采用提取“最长公共子串”(LCS)的方法,即在可疑数据流中查找最长的公共子字符串。虽然基于后缀树计算两个序列的LCS可在线性时间内完成[12],但是LCS方法仅仅提取单个最长的特征片段,并不足以准确描述攻击。基于固定长度负载出现频率方法Autograph[13]按照不同的方法将可疑数据流划分为固定长度的分片,然后基于Rabinfingerprints算法[14]计算分片在所有可疑数据流中出现的频繁度,最后将频繁度高的分片输出为攻击特征。该方法存在的问题是难以选取固定长度的大小、计算开销和存储开销大、没有考虑攻击变形情况。YongTang等人将可疑数据流中含有多个特征片段的固定长度部分定义为“关键区域”,并利用Expectation-Maximization(EM)[15]和GibbsSampling[16]这两种迭代计算算法查找关键区域。但是“关键区域"长度选取困难、算法不能确保收敛限制了该方法的有效性。基于可变长度负载出现频率基于可变长度负载出现频率的方法是当前比较有效的特征提取方法,由Newsome等人在本世纪初Polygraph[17]的研究中首次提出。可变长度负载出现频率是指长度大于1的在可疑数据流中频繁出现的字符串,可变长度负载出现频率长度不固定,每一个可变长度负载出现频率可能对应于攻击中的一个特征片段。因此,基于可变长度负载出现频率的方法的核心是提取出数据流中频繁度大于一定阀值的所有可变长度负载出现频率,一般都采用遍历前缀树的算法[18~19]。以可变长度负载出现频率为核心,Poly-graph输出三类攻击特征:1)可变长度负载出现频率组成的集合,称为ConjunctionSignature;2)可变长度负载出现频率组成的序列,称为Token-subsequenceSignature;3)可变长度负载出现频率附加贝叶斯概率值,称为BayesSigna-ture。Polygraph在设计时考虑了攻击变形的情况,并且首次引入聚类过程,因此大大提高了提取特征的准确性。基于有限状态自动机Vinod等人提出的有限状态自动机[20]首先对可疑数据流进行聚类,然后对每一类中的数据流应用sk-strings[21]算法生成一个有限状态自动机,最后将有限状态自动机转化为攻击特征。有限状态自动机的主要创新是在特征提取过程中考虑了网络协议的语义,因而可以在网络层和会话层分别提取特征。然而因为需要协议的语义,所以有限状态自动机只对特定的几种协议有效,而通用性较差。

基于主机的特征自动提取技术

HSG的研究也是目前研究比较多的技术,经过几年的发展也取得了很好的进展,产生了一些重要的研究成果。下面针对三类方法分别进行介绍。白盒方法因为需要程序源代码,适用性较差,所以基于白盒方法的HSG系统较少。一种典型的技术是指令集随机化(ISR)技术[22],这种技术主要原理是可以将程序的二进制代码随机打乱,使得攻击者实施缓冲区攻击后极有可能导致程序崩溃并产生异常。指令集随机化技术是一种新型的保护系统免遭任何类型注入码攻击的通用方法。对系统指令集经过特殊的随机处理,就可以在该系统上运行具有潜在漏洞的软件。任何注入代码攻击成功利用的前提是攻击者了解并熟悉被攻击系统的语言,如果攻击者对这种语言无法理解则很难进行攻击,攻击者在不知道随机化算法密钥的情况下,注入的指令是无法正确执行的。FLIPS[23]是一个基于ISR技术构建的HSG系统,当攻击导致程序崩溃后,FLIPS对于此相关的网络输入数据用LCS算法提取出攻击片段由于ISR技术要求具有程序的源代码,所以FLIP是一种白盒方法。白盒方法需要了解源程序代码,这在很多场是不可能的事情,因此需要一种不需要了解源程序代码的方法,这种情况下黑盒方法面世。HACQIT[24]是最早的一个黑盒方法。当受保护程序发生意外崩溃后,通过将可疑的网络请求重新发往该程序并判断是否再次导致程序崩溃,HAC-QIT检测出那些被称为“bad-request”的请求。然而,HACQIT没有进一步区分“bad-request”中哪些部分才是真正的攻击特征。因为一个进程的虚拟地址空间范围是有限的,缓冲区溢出攻击成功后必然立刻执行一个跳转指令,而该跳转指令的目标地址一定位于虚拟地址空间范围内。如果将该跳转目标地址改变,将很可能造成攻击的溢出失败并导致程序崩溃。WANGX等基于这样的思想提出了一个黑盒HSG系统PacketVaccine[25]:将可疑报文中那些类似跳转目标地址(其值属于虚拟地址空间范围内)的字节进行随机改变,构造出新报文,称为“报文疫苗”(packvaccine),然后将“报文疫苗”输入给受保护程序如果程序崩溃,则说明之前改变的字节就是攻击溢出后的跳转地址,可以作为攻击特征。随着现代技术的不断推进,黑盒方面和白盒方法都只能应用于特征提取中的一些环节,一种新兴技术介于两种技术之间,而且还可以得到很好的应用,因此,灰盒技术应运而生。灰盒方法是指通过紧密跟踪程序的执行从而发现攻击并提取特征。因为灰盒方法并不需要程序的源代码,所以适用于各种商业软件。其分析的结果也比较准确,目前大多数HSG系统属于这类方法。灰盒方法有以下几种具体实现方式。1)基于动态数据流跟踪TaintCheck[26]和Vigilante[27]都使用动态数据流跟踪(taintanalysis)来检测缓冲区溢出攻击。其基本思想是:认为来自网络上的数据是不可信的,因此跟踪它们在内存中的传播(称为“污染”)情况如果函数指针或返回地址等被“受污染”的数据所覆盖,则说明发生了攻击;此后,从该“受污染”的数据开始,反向查询“污染”的传播过程,直到定位到作为“污染源”的具体的网络输入。不同的是TaintCheck选取3byte,而Vigilante选取偏移量作为输出特征。2)基于地址空间随机化(ASR)技术[28~29]是将进程的一些地址(如跳转地址、函数返回地址、指针变量地址等)随机化,使得攻击者难以知道溢出目标的准确位置。使用ASR技术后,攻击者将难以对程序成功实施缓冲区溢出攻击,而溢出失败后会导致程序崩溃及产生异常。与ISR技术相比,ASR技术的优点是不需要源代码。

攻击特征自动提取综合技术

一种基于概率有效状态自动机的攻击特征自动提取技术,是根据概率有限状态自动机学习算法PFSA(Probabi-listicFiniteStateAutomaton)对聚类形成的类簇归纳处理(ClusterGeneralization),转化为可被有限状态自动机所识别的正则语言,并提取特征。有限状态自动机系统[30]包括数据提取组件(DataAbstractionComponent,DAC)和特征提取组件(SignatureGenerationComponent,SGC)两个部分。数据提取组件通过一系列模块对数据进行预处理和规范化,以适于聚类和特征提取,最终形成半结构化会话树(SSTs)。DAC组件将SSTs编码后形成的XML输出到特征提取组件。SGC组件对规范化后的数据利用星聚类对连接和会话进行聚类,其中相似性度量采用余弦相似度方式,然后利用PFSA算法对聚类形成的类簇归纳处理,形成能被有限状态自动机所识别的正则语言,即特征。的特征提取方法该方法是根据COPP算法对数据流进行动态切割,然后采用统计方法提取出攻击特征。Autograph系统[31]的特征提取主要分为两个过程。首先,使用COPP算法对通过启发式方法找到的可疑数据流量进行数据分割,方法是先定义暂停标记,然后以滑动窗口的概念去比对,每次遇到暂停标记时就分割。其次,使用统计的方法找出出现最频繁的数据包作为攻击特征,计算分割完毕的各个数据包的出现次数,如果一个数据包的出现次数超过一定门限值,则产生特征。该方法的数据流划分是根据递推比较模式串与正文子串的哈希函数值来进行攻击特征提取。RabinFingerprints算法定义一个哈希函数,并用该函数对模式串与正文子串进行预处理,然后以被比较的模式串与正文子串的哈希函数值相等为原则,依次进行比较。算法可以利用前一个哈希函数值递推求出下一个哈希函数值,以降低字符串匹配算法的时间复杂度和空间复杂度。文献[32]首次应用Rabinfingerprints算法于攻击特征自动提取。该方法通过比较两个主要的攻击行为特征—由感染源得到的公共序列和目的地址,识别出新型攻击,然后使用内容过滤算法自动生成攻击特征。该方法是通过寻找最长的公共子字符串来进行攻击特征提取。LCS算法要解决的问题就是找到两个字符串中的最大公共子串和最大公共子串所在的位置。文献[33]提出一种基于两序列LCS算法提取攻击特征的方法,在重组来自入侵检测系统的数据后,用LCS算法两两比对寻找最长的公共子字符串,以此来确认攻击特征。基于Honeypot数据[34~39]的Honeycomb系统,首先重组所有来自Honeypot的数据,然后在这些数据中,采用LCS算法两两匹配,寻找最长的公共子字符串,从而找出攻击特征。

存在问题及研究方向

现有攻击特征自动提取技术在检测未知攻击,以及自动提取出特征方面,取得了一些研究成果,但也存在着一些不足:1)特征提取算法的时间复杂度高和空间开销大。如文献[41]使用Rabin算法需要对字符串做预处理,设正文子串长度m,模式串长度n,则算法的预处理时间在非理想情况下的时间复杂度为O(mn),空间开销亦较大。又如Autograph[40]使用基于COPP算法的统计方法进行特征提取,程序运行需占用大量的系统资源。2)提取出的攻击特征质量较差,误报率高。采用的算法本身有其缺点和不足:1)算法不稳定,例如,由于哈希函数的适用范围有限,导致有时会产生错误的匹配;2)算法过于简单,如Honeycomb[42]因算法过于简单,使得对于如NetBIOS协议中的短字符串类型攻击提取出的攻击特征往往包括大量不相关的字符序列,导致提取出的攻击特征质量较差,误报率高。3)对于大量变形攻击产生的特征不准确,漏报率高,只能对数量相当有限的攻击类型进行特征自动提取。Ear-lybird[43]和基于COPP的Autograph[40]都没有考虑协议的语义性,所以只能在有限的攻击类型中进行特征提取。Autograph特征均为单一连续子字符串,攻击者通过对其插入或删除几个字节即可逃避检测。基于概率有效状态自动机的攻击特征自动提取技术,难以提取大量变形攻击的特征。对于NSG方法而言,近年来的研究表明:只要攻击样本质量高并能够正确聚类,便可以提取出高质量的特征。因此,当前NSG方法研究的关键在于:1)如何获取高质量的攻击样本?通过改进Honeypot系统以及增加噪音过滤机制是可行的方向之一。2)如何正确地聚类攻击样本?现有的聚类方法还存在准确性较低和抗恶意攻击能力差等问题,新的聚类方法可以借鉴相关领域,如生物信息学的研究成果。3)能够有效抵抗攻击者恶意攻击也是NSG系统设计时必须考虑的重要问题。HSG能快速准确地发现攻击并定位攻击发生区域,提取复合型特征(即除了字节特征还加入与进程上下文相关的信息)会具有更强的描述能力,误报率一般也更低,但是,它们难以被已有的各类IDS所使用。因此,提取尽可能简单准确的可以被现有IDS应用的字节型特征是HSG发展的方向。目前的HSG系统输出的字节型的特征相比NSG系统还不够准确,如何充分利用主机上采集的信息使得提取出的字节型特征更精确和更完整是未来的方向之一。另外,减少对平台和环境的依赖及减少对系统性能的影响也是HSG系统需要着重改进的方面。由于将HSG系统部署于Honeypot上一般不存在性能问题,因此HSG技术与高交互型Honeypo系统相结合是未来一个有价值的研究方向。

蒲天银饶正婵秦拯本文作者:工作单位:铜仁学院计算机科学系