一种基于流的异常通联行为检测方法和系统与流程

文档序号:18471416发布日期:2019-08-20 20:20阅读:726来源:国知局
一种基于流的异常通联行为检测方法和系统与流程

本发明涉及网络安全异常事件被动发现领域,是一种基于全量流数据的、针对内部网络通联外部ip地址系统、对全量通联行为进行异常检测的方法及系统。



背景技术:

随着计算机与网络技术的迅猛发展,互联网用户规模日益增长,中国互联网络信息中心(cnnic)发布的报告显示,截至2015年12月,我国网民规模已达6.88亿,互联网普及率为50.3%,同时,全国使用互联网办公的企业达89.0%。互联网已成为人们生产生活中不可或缺的重要基础设施。

与此同时,网络安全问题日益突出,频繁发生的网络安全事件给互联网带来了巨大威胁。其中,网络攻击和网络窃密是信息系统的重要威胁。2009年5月9日发生的ddos(分布式拒绝服务)攻击暴风影音的断网事件,导致南方六省运营商服务器全部崩溃,电信在南方六省的网络基本瘫痪;同在2009年,韩国主要政府网站遭新型ddos攻击,包括青瓦台在内的25家韩国政府机构、银行和媒体的网站瘫痪;2013年著名的spamhaus事件,攻击流量达到了空前的300git/s,整个欧洲网络状态都受之影响;2015年12月31日,由于严重的ddos攻击,英国广播公司(bbc)网站和iplayer服务被迫下线,网站瘫痪数个小时;2016年1月29日,英国汇丰银行的香港及上海两个分行的网上银行系统,同时遭受了一系列的ddos攻击,恰好当天是系统的结算日,给整个系统的服务造成了严重的影响。根据著名安全机构卡巴斯基实验室发表的2016年第一季度ddos攻击报告,74个国家的资源遭到ddos攻击,其中中国、韩国和美国受影响最为严重。

通过大量被控制的主机或僵尸网络向攻击目标发起ddos攻击,会对被攻击者的信息系统造成严重损害,并极可能影响到其他互联网用户的正常网络活动,产生重大的网络安全事件。我国互联网规模庞大,存在着大量被木马或僵尸程序控制的主机,中国国家互联网应急中心(cncert/cc)发布的互联网安全威胁报告显示,2016年3月,我国境内196万余个ip地址对应的主机被木马或僵尸程序控制,因此,我国面临严重的潜在网络攻击威胁。

造成网络安全事件的异常网络行为,如网络攻击与窃密等,往往涉及到网络流量的异常,因此可通过异常检测,发现网络异常行为,结合相关技术进行异常响应处理,保障网络正常,维护网络安全,因此,网络流量异常检测具有十分重要的意义。

现有的采用基于netflow做网络异常行为检测的相关技术主要包括:

(1)基于数据挖掘的方法。为了应用数据挖掘技术对用户行为进行异常检测,就要应用数据挖掘中的关联分析和序列挖掘,提取出正常情况下用户所执行命令中存在的相关性,建立每个用户的历史行为模式,为实际检测过程中用户行为的判别提供比较的依据。通过对正常的用户训练数据和当前用户操作数据进行挖掘,分别得出用户的历史行为模式和当前行为模式之后,就可以通过模式比较来判断用户行为是否异常。

(2)基于神经网络的方法。神经网络(neuralnetworks)使用自适应学习技术来提取异常行为的特征,需要对训练数据集进行学习以得出正常的行为模式,训练数据标志为正常数据和入侵数据两类,训练后的神经网络可以把事件识别为正常或入侵。

(3)基于机器学习的方法。这种异常检测方法通过机器学习实现异常检测,将异常检测归结为对离散数据临时序列进行学习来获得个体、系统和网络的行为特征。

在以上的技术中,均无法满足异常检测实时性和通用型的要求,针对真实的网络环境中,流量的随机性和变化的周期特点,对各种存在的网络异常入侵行为,针对性的开发异常检测方法,实现异常发现快速发现和追踪。



技术实现要素:

针对目前内部网络的异常检测实时性不足,检测的通用型差的问题,本发明提出了一种基于流的异常通联行为检测方法和系统,依托于流(flow)数据,对内部网络中重要网络节点和普通网络节点采用不同的方法进行流量模型构建,分别进行网络异常检测,再关联重要目标和普通目标的网络事件,挖掘出具备一定危害的网络入侵行为和异常通联行为。

本发明针对企业内部网络,公开了一种基于流的异常通联行为检测系统,包括配置管理模块、数据采集模块、数据存储模块、重点目标异常检测模块、一般目标异常检测模块以及异常评估模块。

配置管理模块提供白名单ip配置,重点目标ip配置,一般目标ip配置,可能存在漏洞的端口号配置等,支持系统数据的静态配置功能,同时提供了异常检测模型训练任务配置和异常检测任务配置,实现异常检测过程可控。重点目标是内部网络中重要保护的ip地址,由用户报送或监测分析网络流数据获得,内部网络内除去重点目标的ip地址为一般目标。对目标访问的对端ip中,将合法的、稳定的、安全的对端ip加入系统白名单中,以在流量模型建立和流量异常检测的过程中直接忽略白名单中对端ip的流量。配置管理模块还根据已知的重点目标服务器上部署的服务和开放的端口,配置相应重点目标的稳定端口,以便在重点目标流量异常建模和检测时,不再需要对稳定端口进行计算和建模。白名单及稳定端口配置需要简单直接,方便用户实时修改配置,及时下发到对应的检测引擎。重点目标和一般目标流量异常检测引擎,会定期检查下发的配置文件,及时更新白名单和稳定端口,改变检测行为。

数据采集模块对接路由器或者其他网络分流设备,接收来自路由器的netflow数据,将原始网络流量进行处理,经过解数据包和流量还原,从而得到流的四元组(源ip地址、目的ip地址,源端口、目的端口)、开始时间、结束时间、协议类型、tcp标志位、包数、字节数等信息,将多条流数据信息以kafka的方式,写入到数据存储模块。

数据存储模块从kafka消息队列中读取流数据信息,对重点目标的每条流数据信息都进行存储,对一般目标以5分钟或1小时作为最小粒度,统计各个端口上的流量时间序列。流量时间序列中存储五元组(源ip地址、目的ip地址、源端口、目的端口、协议类型)以及包数、字节数。对于包数、字节数等流量特征,记录随时间变化的值,所记录的每个值是一个在最小粒度的统计值。

重点目标异常检测模块用于:(1)从历史流数据信息中获取通信对象的通信时长与通信字节数,构建重点目标的稳定通信对象模型;(2)构建重点目标的多维特征向量,其中特征项包括流方向、流网络协议类型、服务端口号和流量指标,从历史流数据信息中统计各特征项的值;对各特征项的统计值进行正态分布与对数正态分布两种分布规律的假设检验,对于服从正态分布规律的特征项,计算均值和标准差作为统计阈值,对于服从对数正态分布规律的特征项,计算对数均值和对数标准差作为统计阈值,建立阈值模型;(3)利用阈值模型对带检测流量进行检测。在检测时,获得待检测流量中每个时间窗口内每个特征项的观测值,根据特征项的统计分布规律,计算其均值和标准差或者对数均值和对数标准差,然后与阈值模型中对应的统计阈值进行比对,计算偏离程度;偏离程度由待检测流量的均值/对数均值与阈值模型的均值/对数均值间的差值,比上阈值模型中标准差/对数标准差,所获得的倍数来确定。

一般目标异常检测模块用于:(1)利用基于时间序列的流量变化模型进行检测,包括:对端口流量的时间序列,减去其中的趋势性分量和周期性分量,获得随机波动特征,随机波动特征符合正态分布的定义,根据置信度,应用正态分布假设检验计算随机波动特征偏离标准差的系数,找到流量突增点;(2)利用流数据聚合模型进行检测,所述的流数据聚合模型从五元组中选取不同分组进行不同粒度的构建,根据所选粒度对流数据信息进行分组,再对字节数和包数进行聚合操作,通过排序找到异常行为。

异常评估模块综合重点目标异常检测结果和一般目标异常检测结果,结合其异常发生时的各项流量特征,采用各自的特征权重,综合评估异常等级和异常类型,生成异常检测报告。

本发明针对企业内部互联网络,提出了一种基于流的异常通联行为检测方法,分以下步骤:

步骤1:配置内部网络中的重点目标、白名单和重点目标的稳定端口,将内部网络中除去重点目标的其他ip节点作为一般目标。重点目标根据用户报送或监测分析网络流数据配置,;白名单中的ip是合法安全的外部网络中的ip地址,重点目标的稳定端口是根据对应重点目标服务器开放的端口来配置。

步骤2:在内部网络的关口路由器或网络分流等网络设备上配置netflow数据收集、产生、发送功能,将抓取的网络流数据发送给数据采集模块所在的服务器,数据采集模块采用libcap、dpdkcap等,对流经服务器系统网络接口的数据包,如netflow、netstream、sflow等格式的flow数据,进行实时抓取,对抓取的流数据进行解析,获取流数据信息。

步骤3:对采集的流数据信息,根据白名单ip进行过滤,对于重点目标ip,存储每条流数据信息。

步骤4:从存储的流数据信息中,统计不同端口和对端ip对于同一重点目标的通信时长和通信字节数,采用聚类算法,将长时访问的端口和对端ip地址,以及数据传输较大的端口和对端ip作为稳定端口和稳定对端ip地址。

步骤5:对每个重点目标,从流数据信息中提取流量特征,包括流方向、流网络协议类型、服务端口号和流量指标;利用所提取的流量特征以及通信对端是否是稳定端口或稳定对端ip组合形成重点目标的不同维度的特征向量;根据重点目标的历史流数据信息,对特征向量的每个特征项的值进行统计。

流方向是指,当重点目标作为连接发起的源地址时,该条数据流的方向为流出,反之,该条数据流的方向为流入;流网络协议类型是指,重点目标与对端通信的流数据在网络层上所运行的协议;服务端口号是指,重点目标与对端进行通信时,重点目标方的端口号;流量指标是指,重点目标与对端的流量大小,包括的属性有字节数、网络包数和对端ip数。

步骤6:判断各流量特征的分布规律,计算统计阈值,建立流量特征的阈值模型。对流量特征上的统计值进行正态分布与对数正态分布两种分布规律的假设检验,对于服从正态分布规律的流量特征,计算其均值和标准差作为统计阈值,对于服从对数正态分布规律的流量特征,计算其对数均值和对数标准差作为统计阈值。

步骤7:利用建立的重点目标的流量特征的阈值模型,对待检测流量进行偏离度计算,进而判断待检测流量是否是异常流量。获得待检测流量中每个时间窗口内每个流量特征的观测值,根据该流量特征的统计分布规律,计算其均值和标准差或者对数均值和对数标准差,与阈值模型中对应的阈值进行比对,计算偏离程度;偏离程度由待检测流量的均值/对数均值与阈值模型的均值/对数均值间的差值,比上阈值模型中的标准差/对数标准差的倍数来确定。

步骤8:对于一般目标的数据流信息,根据一般目标的ip段范围、所需检测的异常类型以及预设的数据包过滤规则,进行筛选,以缩减任务所需的数据量。

步骤9:采用多进程/多线程的方式,以5分钟或1小时作为最小粒度,计算一般目标各个端口上的流量,形成各个端口的时间序列。流量时间序列根据五元组(源ip地址、目的ip地址、源端口、目的端口、协议类型)进行划分,存储的特征包括包数、字节数的等,所记录的包数和字节数是随时间变化的值,所记录的每个值是一个在最小粒度的统计值

步骤10:对各个端口的流量时间序列,减去其趋势性的向量,再减去其周期性特征向量,将剩余的向量作为一般目标的随机波动特征,符合正态分布的定义,根据置信度,应用正态分布假设检验计算其偏离标准差的系数,找到流量突增点。

步骤11:按1小时/1天维度统计一般目标ip地址及其特定端口的通联对端,访问内部ip节点的数量和连接频次,并对对端ip进行排序,找到存在端口扫描异常和ip段扫描异常的对端ip地址。对找到的对端ip,利用流数据聚合模型进行检测,判断是否有异常行为;所述的流数据聚合模型根据五元组(源ip地址、目的ip地址、源端口、目的端口、协议类型)对流数据信息进行分组,并对字节数和包数进行聚合操作,再通过排序找到异常值。

步骤12:对访问多个一般目标的对端ip,进行扫描分析和ddos分析,检测是否有端口扫描和尝试登录的行为。

步骤13:关联重点目标和一般目标的异常攻击事件,对异常事件进行综合评估。

本发明方法及系统与传统的业务监测技术相比,具有如下优点和积极效果:

(1)基于五元组数据,数据处理效率高;对源ip地址、源端口、目的ip地址、目的端口等采用精细化分析方法,对各种类型的流量异常行为,包括ddos,端口扫描、ip地址探测、异常流量突增等具备良好的发现能力,构建基于ip通联行为模型,对流量数据的计算复杂度小,充分进行多次数据处理分析,异常发现实时性强。

(2)部署在网络出入口上,异常事件发现范围全面,本方法能够对全量的网络通联行为数据进行留存,处理和分析,能够对每条四元组记录进行逐条分析其异常指标特征,接收部署在网络关口上的流量采集数,能够覆盖所有待分析异常行为。

(3)采用分布式存储、负载均衡和并行化的检测方法,数据处理能力强。本发明方法将数据存储和异常检测分离,能够对不同的流量异常行为,提供不同量级的流量数据进行检测;同时针对重点目标ip地址的检测方法能够将实现基于ip地址的检测任务划分,做到单个ip单个检测任务,从而实现检测过程并行化处理。

附图说明

图1为本发明基于流的异常通联行为检测方法的一个业务处理流程图;

图2为本发明系统中时间序列模型构建示意图;

图3为本发明的检测系统的整体功能结构示意图。

具体实施方式

下面结合附图和实施例来说明本发明的技术方案。

本发明的目的是实现企业内部网络异常通联行为的实时和通用检测,以快速发现各种异常,维护内网网络安全。首先,说明本发明的基于流的异常通联行为检测方法,一个实现的业务流程如图1所示,下面说明具体实现步骤。

步骤1:配置重点目标ip,重点目标来源由两部分构成:外部报送和监测分析获取。

1)基于外部报送的重点目标。外部报送重点目标作为重点目标集的固定组成部分,是本系统的主要服务目标;针对外部报送的重点目标,提供攻击检测和窃密检测。

外部报送的重点目标分为两类:

(a)具有服务类型说明的重点目标:对于这类目标,可以直接通过配置重点目标的网络行为约束来检测此类重点目标的异常行为。

(b)不具有服务类型说明的重点目标:对于这类重点目标,需要调用主动探测功能模块对目标进行探测,分析重点目标的网络服务类型,为其设置网络行为约束。

2)基于监测发现的重点目标。监测重点目标是指通过端口扫描、路由跟踪、域名解析等分析手段发现重点目标。

监测重点目标使用主动与被动相结合的方式探测重点目标:

(a)被动部分负责获取疑似重点目标的ip地址和服务类型;

(b)主动部分对重点目标的服务类型和端口作为探测和验证。

监测分析获取的部分作为报送重点目标的补充部分。主动探测目标的主要属性为互联网服务的关键节点,包括:国内主要的dns服务器,国内主要的ntp服务器,骨干网路由节点,国内主要的邮件服务器,著名的游戏服务器,移动互联网服务器等。

例如,监测分析时设置一个阈值,对常见服务器,统计服务器的某端口是否稳定长期提供对外服务,如开放80/443端口的web服务器、开放25/110端口的邮件服务器,若服务器的某端口稳定长期的在特定时间范围内出现,则认为这个服务器为稳定的服务器,即为重点目标服务器,将服务器ip设置为重点目标ip。

将局域网内除去重点目标ip的其他节点ip,作为一般目标。一般目标节点可能产生大量随机开放端口流量,且存在访问对端为重点目标服务器的情况。

在对局域网目标节点访问的对端ip中,有部分的对端ip是稳定且安全的。这些对端ip的流量实际上不需要进行检测,并且这些流量应该占据一个目标的访问的流量的相当大的比重。所以需要将这些合法的、稳定的、安全的对端ip加入系统白名单中,在流量模型建立和流量异常检测的过程中直接忽略白名单中对端ip的流量。在重点目标流量异常检测中,会构建重点目标的稳定通信对象模型。该模型中会构建稳定端口,该稳定端口是通过流数据信息建模得到的,而实际环境中,可能已知某重点目标服务器上部署了哪些服务,开放了哪些端口。这种情况下,稳定端口应该根据已知情况进行配置,而不需要进行计算和建模。白名单及稳定端口配置需要简单直接,方便用户实时修改配置,及时下发到对应的检测引擎。重点目标和一般目标流量异常检测引擎,会定期检查下发的配置文件,及时更新白名单和稳定端口,改变检测行为。

步骤2:数据包抓取,是指利用操作系统底层接口,如:libpcap,winpcap,bpf(伯克利封包过滤器)等,对流经系统网络接口的数据包进行实时抓取分析。基于数据包抓取的流量采集技术,可获取到每个数据包从数据链路层到应用层的所有详尽信息。相对于将整个数据包抓取分析,基于接口实现的tcpdump是将数据包的头部截取下来分析,数据包的头部包含了数据包的概要信息,tcpdump能为大部分的分析技术提供足够的流量信息。

基于数据包抓取的采集技术,所采集到的流量数据,能为流量分析提供足够的细节信息,可分析获取到每个数据包从数据链路层到应用层的所有详尽信息,但其对系统的性能要求较高,会带来较明显的网络性能消耗。

快速地获取流数据为及时的检测异常通联安全事件提供了基础保障。本发明中流信息的采集是在骨干网路由器上进行的,路由器采集网络流有以下几种机制:

1)收到数据包,检测流表中是否有匹配的五元组(源ip,目的ip,源端口,目的端口,协议类型)等,有则将数据包信息加入到流表中,否则创建流记录信息,加入到流表中。

2)当收到流结束标志(tcp协议)时,结束当前流,发送当前流信息。

3)当流表满的时候,又需要插入新的流节点,则将当前流表刷新,输出全部流记录。

4)每隔5分钟更新一次流表,将流表中的流记录发送到指定的数据采集接口地址。

数据采集接口,定时调用已有流采集系统命令将流数据按特定目录格式缓存到本地,数据查询延时2天,基本能保证流数据获取。数据采集模块对获得的网络流数据进行解析,获取数据四元组(源ip、目的ip、源端口、目的端口)、包数、字节数等信息,将多条流记录以kafka的方式,写入到数据存储模块。

步骤3:数据存储模块存储收集的流数据信息,存储约2-4周左右的历史数据,应用hive或者文件存储的格式,至少含有源ip地址,目的ip地址,源端口,目的端口,包数,字节数,时间等。对于数据量较大的网络,可以依据一定规则进行采样或者白名单过滤,采用白名单ip进行过滤时,过滤掉源ip或目的ip是白名单ip中的流数据信息。

本发明采用多层级的留存方式,针对重点目标ip和一般目标ip存储不同粒度、不同格式的流数据信息,以满足对不同目标的检测需求。对于重点目标ip,存储每条流数据信息。然后根据下面步骤4至7对重点目标进行异常检测。对于一般目标ip,以5分钟或1小时作为最小粒度,统计各个端口上的流量时间序列,具体对一般目标ip的数据存储在步骤8和9中说明。然后根据步骤10至12对一般目标进行异常检测。

步骤4:从存储的流数据信息中,获取不同端口和对端ip与同一重点目标的通信时长和通信字节数,基于k-means聚类获取稳定端口和稳定对端ip地址。稳定端口和稳定对端ip地址是指在线上服务器运行中,开放较多的端口和连接较多的对端。

由于通信对象的两个属性特征分别为时长tn与字节数pbtmum,二者不是同一个量纲的属性,使用公式(1)进行相似性度量,对平均流量值取对数,然后再利用欧拉公式进行距离计算。一个样本代表一个与重点目标通信的端口或对端ip,包括时长与字节数两个属性,给定样本xi=(tni,pbtnumi)与xj=(tnj,pbtnumj),定义距离函数dist(xi,xj)为:

设置初始中心点,为将数据样本划分到预期的4个类别中:对长时间稳定出现且流量较大的类别,选择样本中tn值与pbtnum值最大的作为初始中心;对长时间稳定出现且流量一般的对象,选择样本中tn值最大,pbtnum均值附近的作为初始中心;对短时间出现且流量较大的,选择样本中pbtnum最大,tn均值附近的作为初始中心;对短时间出现且流量一般的,选择样本中tn值最小,pbtnum值最小的作为初始中心。

本发明实施例中聚类簇数为4,对于获取到的4个聚类样本集合,根据公式(2),设置4个初始聚类中心{u1,u2,u3,u4},进行首轮迭代,通过距离公式(1),计算每个样本到4个初始聚类中心的距离,将样本划分到距离最近的类簇中,然后分别重新计算4个类簇的中心值,若个中心值均未更新,则聚类算法结束,否则,进入下一轮迭代。

其中,max表示取最大值,mean表示取均值,min表示取最小值,i为所在聚类集合中的样本编号。

经过聚类算法的迭代分类后,最终得到4个类别以及类别中心,其中长时间稳定出现且流量较大的类别中的是稳定端口和稳定对端ip地址。

步骤5:构建目标的多维流量特征。

对重点目标的流数据信息从以下几个维度的定义:流方向、流网络协议类型、服务端口号、流量指标等,结合是否稳定端口/对端ip,形成多个特征向量,对各个特征向量统计,形成对于重点目标流量不同维度的特征描述。

重点目标的流数据信息的流量特征:流方向、流网络协议类型、服务端口号、流量指标的具体含义如下:

流方向:基于一条流中数据包的流向,确定该条流的方向,即当重点目标作为连接发起的源地址时,该条流的方向为流出,反之,该条流的方向为流入。该维度包含两个属性:流入、流出;

流网络协议类型:目标与对端通信的流数据,在网络层上所运行的协议,包含三个属性:tcp、udp、icmp;

服务端口号:重点目标与所服务对端进行通信,重点目标方的端口号,属性范围:0~65535。

流量指标:标注流量大小的,目前主流的包括字节数、网络包数、ip数等,因此该维度主要包含属性:字节数、网络包数、对端ip数。

对各维度上的属性,交叉组合成构成4元组多维特征,即<流方向,协议类型,端口号,流量指标>,实现对网络流量的细致划分。同时,每个维度加入不区分属性,用于实现对其他维度组合的上卷,如流方向维度加入不区分属性,即该统计特征不区分流的方向,适用于所有流向的数据。统计各流量特征项的流量值:对目标历史流数据中的每条流纪录,根据其所属时间窗口、通信端口、通信对端、流量值,更新对应流量特征项的统计值,完成对各特征项的流量统计。

步骤6:建立流量特征项的阈值模型。对流量在每项特征上的统计值进行两种分布规律——正态分布与对数正态分布的假设检验,对于服从正态分布规律的特征项,计算其均值和标准差,对于服从对数正态分布规律的特征项,计算其对数均值和对数标准差,所计算的均值和标准差或对数均值和对数标准差就是统计阈值,建立每个重点目标的阈值模型。

步骤7:利用建立的重点目标的流量特征项的阈值模型,对该重点目标的待检测流量进行偏离度计算,生成滑动窗口偏离向量。

对于观测到的待检测流量,设置观测时间窗口ws,该时间窗口大小与所建立的阈值模型的时间窗口大小保持一致,每次从观测流量序列中,取出一个观测时间窗口ws,统计该窗口内各特征项的流量值。对时间窗口内每个特征项的观测值,与阈值模型中该特征的阈值进行比对,根据该特征的统计分布规律,计算观测数据的均值和标准差或对数均值和对数标准差,相对于阈值模型中的统计阈值的偏离程度。偏离程度由待检测流量的均值/对数均值与阈值模型的均值/对数均值间的差值,比上阈值模型中标准差/对数标准差,所获得的倍数来确定。当偏离程度到一定量后就判断为异常数据,本发明中根据常用的正态分布假设检验算法,一般偏离3倍就判断为异常数据。

步骤8:根据一般目标的ip段范围、所需检测的异常类型,如http异常留存全量的80端口流量、ftp异常留存全量的21端口流量,以及其他数据包过滤规则,利用sql查询等过滤方式,对一般目标的网络数据进行筛选,以缩减任务所需的数据量。筛选规则如下:

1)对于内部端口号小于10000的流数据信息,筛选出其中流出流量大于300字节的流数据信息;

2)对于80/443端口的上行流量,若内部存在较多web服务器,则采用白名单和黑名单方式,只获取部分存在可疑攻击的流量;

3)对于大于10000端口的流量,除了11211(memcache)、27017(mongodb)等部分常见端口外,其余作为随机端口,只获取大于600字节的流数据信息。

步骤9:采用多进程/多线程的方式,以5分钟/1小时作为最小粒度,计算一般目标各个端口上的流量,形成各个端口的时间序列。

由于内部开放端口范围为0-65535,其数量较大,采用epoll多进程的方式,将每个计算单元打包,放入系统的共享内存区,由其他进程读取该数据及其处理过程,最大化利用cpu,形成约60000个时间序列。流量时间序列是一个包含流信息的序列,由五元组(源ip地址,目的ip地址、源端口、目的端口、协议类型)进行划分,并带有十分常见的字段,如上下行字节数、上下行数据包数等,包数、字节数等流量特征所记录的值是随时间变化的大小,每个值是一个在最小粒度的统计值。

步骤10:对单条时间序列,具有趋势性特征和周期性特征,除去这两者外,剩下的向量作为时间序列的波动向量,其随机性符合正态分布的定义。如图2所示,计算随机波动特征的流程如下:

step1)原始时间序列y减去趋势变量,趋势变量初始值为0;

step2)周期子序列平滑,应用loess(局部加权回归法)对每一个周期子序列时间点计算平滑值,包括缺失点。本发明实施例中周期为天,时间粒度为5分钟粒度,则一天的时间序列内有12*24=288个周期子序列;

step3)以各周期里数据点数288为窗口大小,对step2平滑后的时间序列c获取每个时间粒度上的滑动平均数,形成新的时间序列,同时对新的时间序列做loess平滑得到临时流量序列l。存在做滑动平均时,开头和结尾数据被遗失情况,通过step2中288个loess平滑后的周期子序列对开头和结尾数据进行预测;

step4)获取周期子序列,即周期分量s=c-l;

step5)原始时间序列去周期性,原始流量y-周期分量s;

step6)对去周期后的时间序列进行loess平滑,得到趋势子序列,即趋势分量t;

step7)流量的余量为r=y-t-s。

r就是随机波动特征,根据置信度,应用正态分布假设检验计算其偏离标准差的系数,找到流量突增点,流量突增点就是异常流量。

步骤11:单独的流数据可以由五元组(源ip地址,目的ip地址、源端口、目的端口、协议类型)进行划分,并带有十分常见的字段,如上下行字节数、上下行数据包数等。流数据采集模块每天收到的流数据记录有成百上千万条,对每一条流数据进行一一的分析效率较低,并且一条流数据并不容易看出异常行为,所以对流数据在不同维度上的聚合就十分有必要。通过某些ip和服务端口的流量行为,更加容易发现流量异常行为。按1小时/1天维度统计一般目标ip地址及其特定端口的通联对端,访问内部ip节点的数量和连接频次,并对对端ip进行排序,找到存在端口扫描异常和ip段扫描异常的对端ip地址。对找到的对端ip,利用流数据聚合模型进行检测,判断是否有异常行为。

流数据聚合模型是对采集到的流数据的基础信息的分组-聚合-排序。流数据聚合模型需要做的就是根据五元组信息对流进行分组,并对字节、数据包等字段进行聚合操作,再通过排序找到极端的异常值。一般目标流量异常检测重点关注目标的流出流量,所以,源ip(sip)是一般目标,下面举例了部分分组-聚合操作:

按照sport进行分组,聚合分组中的字节数、数据包数。

按照sip,sport进行分组,聚合分组中的字节数、数据包数。

按照sip的c段,sport进行分组,聚合分组中的字节数、数据包数。

按照sip,dip,sport进行分组,聚合分组中的字节数、数据包数。

按照sip,dip,sport,dport进行分组,聚合分组中的字节数、数据包数。

按照sip的c段,dip,sport,dport进行分组,聚合分组中的字节数、数据包数。

其中sip是源ip,sport是源端口,dip是目的ip,dport是目的端口。关注sip的c段流量聚合信息是因为许多网络攻击会对同网段ip进行渗透和统计,因此,sip的c段流量聚合模型能够反映对应的攻击造成的异常行为。

基于上述的分组-聚合操作,从不同分组粒度上构建了多样化的流数据聚合模型。这些流数据聚合模型关注不同粒度层级的流量聚合数据,从sip,dip,sport,dport的不同组合来关注不同形式的异常行为。如sip,sport的组合更加关注对某个一般目标的某个具体服务的流量情况,从而发现是否对一般目标的服务有异常行为;sip,dip,sport的组合更加关注某个特定的攻击主机对某个一般目标的某个具体服务的流量情况,从而发现该对端是否对一般目标的服务有异常行为。

步骤12:对访问多个一般目标的对端ip地址,检测出存在端口扫描和尝试登录等行为。

1)扫描分析。扫描分析引擎对待分析pcap文件中的报文进行分析,分别以(源ip,目的ip)、(源ip,目的端口)、(目的ip,目的端口)等为键进行报文数量统计,对于数量超过设定阈值的键值标记异常,记录在相应结构体中,进行进一步的异常分析或直接输出异常,输出异常类型包括:

①ip扫描,是对固定端口大量ip的扫描行为。

②端口扫描,对某一ip的全端口扫描。

2)ddos分析。统计记录以(目的ip,目的端口)为键的报文数量,同时计算其峰值和总报文数目,并分析包括tcpsyn、tcpack、udp等在内的报文类型,输出峰值超过设定的阈值,并符合ddos特征的异常事件信息。

步骤13:基于异常类别的线性加权评估:一方面,评估异常流量对应各种常见网络攻击发生的可能性,即发现目标遭受的已知网络攻击;另一方面,评估异常流量总体的威胁性,发现目标遭受的未知网络攻击。已知网络攻击威胁等级评估方面,结合已知网络攻击的异常流量特点,对强相关的特征取大权值,弱相关的特征取小权值,不相关特征的权值取零。将各特征项的初始权值参数都设置为1,对于强相关的流量特征,权值参数值翻倍;对于不相关的流量特征,权值参数值取零,线性求和得到anomalyvalue。

考虑到加权后的评估值anomalyvalue取值范围依然很广,而往往首先关注异常威胁的定性,然后再进行定量的分析,因此,利用公式(3),对异常评估值取对数并取整,得到异常等级:

anomalylevel=int(ln(anomalyvalue+1))(3)

在基于阈值模型检测到流量统计值异常,并且加权评估后威胁等级较高的情况下,分析异常时间窗口内,流量在端口上的分布,依据总流量占比,找出流量突出的端口,结合稳定通信端口集合,以及这些端口上的流量在对端上的分布,按照交叉检验方法,判断其为异常端口的可能性,若发现一批可疑性高的通信端口,则提升异常评估等级。同样,若发现一批可疑性高的通信对端,则提升异常评估等级。

相比于现有技术,本发明方法通过利用流数据,针对内部网络节点,相对定制化的应用异常检测模型,使异常发现结果具备可理解性,从宏观上发现流量异常事件,提供了流量通联行为全覆盖的异常检测方法。对一般目标和重点目标做不同粒度的异常检测,实现系统计算能力的有效利用,具备一定的实时性和可用性。

对应的,本发明提供的基于流的异常通联行为检测系统,布置在企业内部网络的独立服务器或分布式服务器上,如图3所示,该系统包括配置管理模块、数据采集模块、数据存储模块、重点目标异常检测模块、一般目标异常检测模块以及异常评估模块。图3中主要示意出异常检测模块。

配置管理模块主要用于:(1)配置白名单ip地址信息,包括ip地址、域名、白名单类型,主要有常见服务器ip、常见web应用等,如8.8.8.8dns服务器。(2)配置重点目标ip地址,为需要重点保护的内网ip地址及其常开放端口。(3)配置一般目标ip地址,为除重点目标ip外的所有内网ip地址或者ip地址段。此外,配置管理模块还配置可能存在漏洞的端口号,支持系统数据的静态配置功能,同时提供了异常检测模型训练任务配置和异常检测任务配置,实现异常检测过程可控。

数据采集模块,数据发送端路由器配置netflow/netstream功能,支持v9、v5两种格式流数据,配置目的ip地址为数据采集模块所在的服务器。数据采集模块利用操作系统底层接口,如:libpcap,winpcap,bpf等,或者采用intel提供的dpdk网卡驱动方式,利用其特性进行高性能网卡捕包。数据采集模块将解析完的数据四元组(源ip、目的ip、源端口、目的端口)以及其他相关的流数据信息,写入到hive数据库的kafka消息队列。数据采集模块解析获取的流数据信息包括源ip、目的ip、源端口、目的端口、协议类型、包数、字节数、时间等。

数据存储模块完成数据留存、数据校验、数据检索等业务。数据存储模块实时获取kafka消息队列的四元组、包数、字节数等流数据信息,调用java的反序列化方法,产生结构化的流记录,包括源ip地址、目的ip地址,源端口、目的端口、开始时间、结束时间、协议号、tcp标志位、包数、字节数等字段,按照4000条每批次留存到数据库中。数据存储模块采用多层级的留存方式,对重点目标ip、一般目标ip以及其端口号等,存储不同粒度、不同格式的数据,以满足检测模块的数据需求。对于重点目标ip,存储每条流信息,对于一般目标ip,统计各端口的每天的流量时间序列。同时,本模块提供了基于ip地址的数据检索方式,以达到实时性要求。

重点目标异常检测模块通过分析与正常活动存在较大统计偏差的行为来标识异常。基于统计分析的方法首先采样目标行为特征,如审计数据的分布、测量的行为强度、不同审计行为的分布等。通过计算得到描述目标行为的一系列参数,形成检测行为轮廓。由于网络事件(如分组到达)是动态发生,系统将每次采集的行为轮廓和目标行为轮廓合并得到正常的行为轮廓。在检测时通过和正常行为轮廓比较来判断,当超出设置的阈值时,进行异常告警。

重点目标异常检测模块包含四个部分,分别是目标的稳定通信对象模型构建、目标的多维特征统计阈值模型、噪声数据消除、偏离向量生成。

1)构建目标的稳定通信对象模型。统计各通信对象的通信时长与流量均值:对于目标的通信端口和对端,定义基于时间窗口的通信时长与平均流量值。给定观测到的时长为t的历史流量,设置具有较强周期效应的时间窗口,如1天;将历史流量划分到n个时长为wt的时间窗口上,对每个时间窗口,统计其中所有的端口/对端ip的流量值;然后建立全局的端口/对端ip字典,统计每个出现的端口/对端ip的时间窗口的个数tn,同时,统计该端口/对端ip的总流量字节数;最后计算端口/对端流量在时间窗口上的均值pbtnum,端口/对端的属性向量为{通信时长,平均通信字节数},即{tn,pbtnum}。然后利用聚类算法识别其中的稳定端口和稳定对端ip地址。

2)构建目标的多维特征统计阈值模型。统计各流量特征项的流量值:对目标历史流数据中的每条流纪录,根据其所属时间窗口、通信端口、通信对端、流量值,更新对应流量特征项的统计值,完成对各特征项的流量统计。判断各特征项的分布规律,计算统计阈值:对流量在每项特征上的统计值进行两种分布规律(正态分布与对数正态分布)的假设检验,对于服从正态分布规律的特征项,计算其均值、标准差,对于服从对数正态分布规律的特征项,计算其对数均值、对数标准差,获取统计阈值。

3)噪声数据消除。为删除异常的噪声数据,同时尽量少地误删正常数据,设计了基于最大密度收益的噪声消除算法,该算法假定数据中的正常数据在一定区间上集中分布,异常数据在正常区间外稀疏分布,即正常数据分布在密度大的区间内,这和观测到的流量数据分布情况相符。

4)生成偏离向量。对时间窗口内每个特征项的观测值,与对应的阈值模型中该特征的阈值进行比对,根据该特征的统计分布规律,计算其统计值或统计值的对数值,相对于阈值的偏离程度,其中,偏离程度由待检测流量的均值/对数均值与阈值模型的均值/对数均值的差值,比上阈值模型中标准差/对数标准差的倍数来确定。

相对重点目标,一般目标的数量相对较大,在资源有限的情况下,需要研究新的检测算法提升检测能力。重点目标流量异常检测,一次针对一个重点目标的流数据进行分析;而一般目标流量异常检测是针对所有目标的异常检测,检测时不会对目标是否是重点目标加以区分。一般目标异常检测模块包括采用分组-聚合-排序的方式,构建了不同分组粒度的流数据聚合模型、基于时间序列的流量变化模型等。

一般目标异常检测模块包含如下:

1)不同分组粒度的流数据聚合模型。单独的流数据信息可以由五元组(源ip地址,目的ip地址、源端口、目的端口、协议类型)进行划分,并带有十分常见的字段,如上下行字节数、上下行数据包数等。数据采集模块每天收到的流数据记录有成百上千万条,对每一条流数据进行一一的分析效率较低,并且一条流数据并不容易看出异常行为,所以对流数据信息在不同维度上的聚合就十分有必要。通过某些ip和服务端口的流量行为,更加容易发现流量异常行为。由于本发明系统重点关注dos攻击行为和失窃密行为。所以聚合目标一般选择流数据字节数和数据包数,尤其是字节数,其直接反应数据流量的大小,是最常用的聚合目标。流数据聚合模型可从五元组中选取不同分组进行不同粒度的构建所构建,根据所选粒度对流数据信息进行分组,再对字节数和包数进行聚合操作,通过排序找到异常行为。一般认为,当流量聚合模型发现大流量行为时,最有可能发生失窃密异常,所以使用排序方法发现极端字节数值,检测失窃密异常行为。

2)基于时间序列的流量变化模型。流数据聚合模型主要是在一个规定好的时间窗口下进行流数据聚合,一般的,这个时间窗口可以设置为1天,或者根据要求使用更细致的粒度,12小时,6小时等。但是上述的流数据聚合模型的结果中并没有时间这一维度。而在异常检测中基于时间序列的模型是十分必要的,基于时间序列的模型可以反映流量随时间或时间窗口的变化情况,反映流量异常行为。因此,利用各端口流量的时间序列,减去其中的趋势性分量和周期性分量,获得随机波动特征,由于随机波动特征符合正态分布的定义,根据置信度,应用正态分布假设检验计算随机波动特征偏离标准差的系数,找到流量突增点,发现异常行为。

异常评估模块在已知网络攻击威胁等级评估方面,结合已知网络攻击的异常流量特点,对强相关的特征取大权值,弱相关的特征取小权值,不相关特征的权值取零。将各特征项的初始权值参数都设置为1,对于强相关的流量特征,权值参数值翻倍;对于不相关的流量特征,权值参数值取零,线性求和得到威胁等级。异常评估模块输出检测分析包括,包括事件信息、佐证信息、相关数据、疑似事件等。

图3中,pcap留存系统实现网络流数据包的抓取与信息采集,攻击行为分类模型主要检测ddos、爬虫、探测扫描、密码尝试登录等,通用网络流量模型指重点目标采用的多维特征统计阈值模型。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1