本发明涉及网络安全和人工智能领域,具体涉及一种端到端的网络应用层逃避检测方法。
背景技术:
1、网络入侵检测/防御系统(network intrusion detection/prevention system,简称nids/nips)通过拷贝网络数据包,重构网络数据流,检测其中恶意行为,并发出警报或中断恶意网络数据流,来实现对其所在网络中其它联网设备的保护。根据检测原理的不同,分为基于异常检测的nids/nips,以及基于误用检测的nids/nips。前者在实际中很少使用;后者又常被称为基于签名或基于规则的nids/nips,其通过将网络数据流,通常是应用层载荷,与预置的规则相比较,与规则相匹配的数据流被认为是恶意的。
2、然而,nids/nips的有效性受到了网络逃避行为的极大挑战。网络逃避行为(全称为网络入侵检测逃避行为),是一种通过修改和伪装网络恶意数据包,改变或隐藏其原有特征,逃过nids/nips的检测,从而达成恶意攻击的行为。已发现的网络逃避技术从所操纵的网络协议层上可分为网络层传输层逃避,应用层逃避,以及两者组合得到的混合逃避。网络层传输层逃避,利用被攻击目标和nids/nips在ip层(网络层)、tcp层(传输层)协议解析上的差异,采用ip分片和tcp分段的碎片化、重叠等手段,使得nids/nips对被攻击目标收到的攻击载荷内容产生歧义,从而规避其检测。应用层逃避则是利用被攻击目标和nids/nips在tcp层之上的应用层协议解析上的差异,操纵应用层协议头及载荷,使得nids/nips对被攻击目标收到的攻击载荷内容产生歧义,从而规避其检测。此外还有针对nids/nips的拒绝服务攻击,能暂时使其瘫痪,从而规避其检测,也可算作一种逃避技术。
3、目前业界对抗网络逃避技术的手段大致可分为两类,第一类是采用合规的方式来消除nids/nips和被攻击主机在处理网络流上的歧义。例如,基于ip头字段和tcp状态的合规器技术,但其对tcp分段碎片化的逃避无能为力;还有流量预处理引擎技术,将流向内网的流量处理后重新转发,以消除nids和终端主机对ip分片理解的歧义性;此外还有tcp流合规器技术,通过计算收到的每个tcp分段的hash值,来确定每个分段在连接表中的tcp流队列归属,根据其序列号确定其在队列中的位置,并决定是否转发,重置或暂存,以消除nids和终端主机对tcp碎片的歧义性。基于上述技术,大多数nids/nips都已开发并加入了对ip分片和tcp碎片的处理,然而经过一些测试,使用tcp分段或重叠,仍然可以逃避nids/nips检测,合规方法仍然难以防御tcp/ip层的逃避技术。针对终端主机和nids/nips在协议解析上的差异,有专家提出了主动和被动探测主机操作系统以确定nids/nips与主机在协议解析上差异的方法,但是这一类合规方法目前只是在ip(网络)层和tcp(传输)层进行合规,无法应对应用层的逃避技术。
4、第二类对抗网络逃避技术的手段只适用于基于异常检测的nids/nips中,即采用机器学习技术的nids/nips。其基本思想是增强用于判断网络流是否为恶意的分类器,针对网络逃避行为的抗干扰能力。例如对逃避所采用的策略进行特定的假设,提出有针对性的特征选择模型;通过搜索基于质心的聚类模型的最优参数,从博弈论的角度提出对抗网络逃避的思路;仅使用在逃避行为出现时保持不变的特征来构造健壮的分类器等等。有专家提出了通过加入逃避行为样本至训练集,来增强nids对链接层逃避行为的抗干扰能力,但由于所采用的机器学习算法自身存在的“模型逃避”问题,基于异常检测的nids/nips难以在实际中应用,上述增强其对网络逃避行为抗干扰能力的方法也没有取得很好的效果。
5、申请人在前期的工作中提出了基于深度循环神经网络的网络逃避行为检测方法(zl201810082404.8),和基于贝叶斯分类器的网络逃避行为检测方法(zl201810082613.2)。这两种方法提出了从网络数据流中提取特征,通过训练分类器来对网络数据流进行分类,从而实现对原子逃避行为的检测。但是,它们采用的是人工设计的特征,并不一定是能最好区分逃避行为的特征,而且由于这些特征都提取自ip层和tcp层,它们所能检测的只是网络层传输层逃避,无法检测应用层逃避行为。
技术实现思路
1、本发明的要解决的技术问题是,使用人工智能技术,提供一种可检测应用层逃避行为的检测方法。
2、一种端到端的网络应用层逃避检测方法,包括以下步骤:
3、步骤1、确定需要检测逃避行为的应用层,获取应用了需要识别的该层各类逃避行为的网络数据流,以及没有应用该层逃避行为的无逃避网络数据流,并对上述两种网络数据流进行处理,分为不同类别;
4、步骤2、从无逃避网络数据流和应用层的各逃避类网络数据流中,提取原始字节流特征,构造训练样本集;
5、步骤3、构建神经网络,并在步骤2得到的网络数据流样本集上完成分类训练;
6、步骤4、利用步骤3得到的神经网络,对需要检测的网络数据流进行识别分类,识别该网络数据流是否为无逃避网络数据流,或是应用了应用层逃避技术的逃避网络数据流,若识别为逃避网络数据流,则识别出应用的应用层逃避技术类别。
7、步骤1所述该层各类逃避行为的网络数据流采用下述方式处理:定义该应用层载荷集合p,该应用层各类逃避技术集合e,每种逃避技术对应的参数集合为o,将p中不同的载荷,与采用不同参数o的逃避技术e进行组合,得到各类逃避技术的不同网络数据流和对应的标签,组合情况可用下面的集合来表示:
8、{(p,e,o0×o1×…×on)|p∈p,e∈e,o0,o1…on∈oe}
9、其中,oe表示单个逃避技术e的各行参数构成的集合,o0,o1…on分别表示该集合中每个参数的取值构成的集合,o0×o1×…×on代表逃避技术e的各行参数的笛卡尔积;对于无逃避网络数据流,将其归为单独一类。
10、步骤2所述训练样本的构造方式,具体如下:
11、取第i个逃避类网络数据流,该网络数据流中共有len_i个应用层数据帧,取第t个应用层数据帧,从该数据帧的头部截取原始字节数据,形成行向量从该数据帧的参数块和数据块中截取原始字节数据,形成行向量将沿行的方向叠加,得到矩阵
12、
13、将按先后顺序首尾拼接,形成行向量
14、
15、构建和构成的元组即为从第i个逃避类网络数据流中提取的原始字节流特征,与其对应的类别标签yi构成了样本集中的一个样本:
16、
17、步骤3所述神经网络主要由时序网络和卷积网络两部分组成,其中时序网络用以捕获报文间特征,卷积网络用以捕获报文内特征;输入数据中的和分别经过时序网络和卷积网络的处理,在合并层拼接成一维向量,再经过全连接层的前馈,最后由softmax层转换为属于各逃避类别的概率。
18、所述步骤4具体包括:分离出待检测识别网络数据流中的应用层数据;提取所检测应用层数据中的原始字节流特征作为输入;利用构建的神经网络对输入的原始字节流特征进行分类,识别该序列所对应的网络流的具体类别。
19、本发明解决了现有的技术无法探测识别出网络中针对nids/nips的应用层逃避行为,本发明从机器学习的角度出发,用基于深度学习神经网络的方法实现了对应用层逃避行为的在线识别。本发明的原理是,当攻击者使用了应用层逃避技术时,网络数据流会在应用层协议头和载荷上呈现出与无逃避数据流不同的帧内和帧间特征,不同的逃避技术对应不同的特征,因此本发明提出通过训练基于循环神经元和卷积神经元的神经网络来提取这些特征,并对这些特征进行分类,从而实现对应用层逃避技术的检测和识别。
20、本发明的方法不需要人工设计提取的特征,不依赖于人工事先设定的检测方法或检测阈值,因此本发明的技术具有自适应性和自学习优点。