一种网络端口流量异常检测方法及系统与流程

文档序号:15358188发布日期:2018-09-05 00:16阅读:1314来源:国知局

本发明涉及大数据、网络安全、深度学习等领域,涉及一种网络端口流量异常检测方法及系统,利用广域网流量被动分析手段对ddos、僵尸网络、病毒传播等网络异常事件进行发现与画像。



背景技术:

今天的互联网面临着诸多安全威胁。例如,分布式拒绝服务(ddos,distributeddenialofservice)攻击对诸多组织机构的网站和设备造成过严重损失。ddos是指借助于客户/服务器技术,将多个计算机联合起来作为攻击平台,对一个或多个目标发动ddos攻击,从而成倍地提高拒绝服务攻击的威力。

ddos攻击常常由某一个僵尸网络发起。僵尸网络是由被感染僵尸程序的主机组成的一个可控网络。攻击者通过命令和控制信道(c&c,commandandcontrol)对僵尸主机发送指令,从而进行信息窃取、拒绝服务攻击等网络攻击和犯罪。自上世纪九十年代末出现,僵尸网络结构和形态从最初简单的集中式c&c发展到基于p2p的分布式c&c,所使用的域名则从最初的固定域名演变为域名自动生成(domaingenerationautomation)。

为了应对僵尸网络的威胁,政府、企业与科研机构正在联手对僵尸网络进行检测和打击。僵尸网络检测的重要手段是对互联网流量进行采集和分析,发现异常特征,从而筛选和锁定僵尸网络成员,进而采取打击行动。对互联网流量的有效分析不仅有助于发现僵尸网络成员,同时也能检测到其他恶意网络流量,如恶意域名请求,恶意文件传播,恶意链接访问,以及ddos攻击。

对网络流量异常的发现,依赖于对正常的流量波动进行预测。如果在广域网上观察各网络端口的流量起伏,则可以将全部流量视作65536维的时间序列。本发明的经验是,这种序列存在着多重频率的周期性,也存在偶然的波动性。恶意网络事件常常带来明显的流量波动。为了对网络流量这种复杂的时间序列进行建模,可以考虑采用循环神经网络(rnn)。

longshort-termmemoryneuralnetwork(长短时记忆神经网络)简称lstm,是一种rnn特殊的类型,可以学习长期依赖信息。lstm由hochreiter&schmidhuber(1997)提出,并在近期被alexgraves进行了改良和推广。在语音识别、语音合成、手写连体字识别、时间序列预测、图像标题生成、端到端机器翻译等领域,lstm都取得相当巨大的成功,并得到了广泛的使用。lstm通过刻意的设计来避免长期依赖导致神经网络训练过程中的梯度退化和发散,能序列化数据在前后序列的特征。



技术实现要素:

本发明提出一种网络端口流量异常检测方法及系统,命名为cportmon,用于实时发现网络端口流量异常。cportmon是cnets网络安全监测分析系统的子系统。cnets系统在大量骨干网络出入口部署网络流量采集探针,并存储于基础数据大数据平台。

本发明的技术方案为:

一种网络端口流量异常检测方法,其步骤包括:

1)对目标数据平台中的通联会话日志流量进行读取并按照源端口号、目的端口号分组汇总,然后统计每个端口的流量指标数据,构成对应端口的流量序列;

2)根据每一端口的流量序列,构成该端口的输入向量,输入lstm网络得到该端口时刻t的流量预测值;将该端口时刻t的流量预测值与该端口时刻t的观测值进行对比;如果二者偏差大于设定条件,则确定该端口的流量异常;

3)对于流量异常的端口,威胁发现模块从该目标数据平台抽取该端口的近期全部流量日志,根据提取的流量日志和预设规则对该端口的流量异常进行定性,判断出该端口的流量异常事件;如果根据预设规则无法对该端口的流量异常进行定性,则将提取的流量日志输入训练好的机器学习模型对该端口的流量异常进行分类,识别出该端口的流量异常事件。

进一步的,所述设定条件为:其中,o(t)为端口时刻t的观测值,p(t)为端口时刻t的预测值;o(τ)为端口时刻τ的观测值,p(τ)为端口时刻τ的预测值,t为观测周期长度,m为自然数,k1,k2为比例系数。

进一步的,k1,k2的取值均为2。

进一步的,威胁发现模块判断出该端口的流量异常事件是否为僵尸网络事件的方法为:当提取的流量日志中出现单个主机针对大量主机相同端口发起单syn包连接时,则认定流量源为扫描源;当出现大规模针对相同网络端口的扫描源时,认定流量异常事件为活跃僵尸网络事件。

进一步的,确定出僵尸网络事件中的僵尸机的方法为:将威胁发现模块认定为扫描源的主机确定为僵尸机,将周期性或准周期性对同一非周知域名发起请求的主机确定为僵尸机;所述非周知域名为设定的周知域名名单之外的域名。

进一步的,判断一流量源是否周期性或准周期性对同一非周知域名发起请求的方法为:获取该流量源的请求解析域名集合,并过滤掉周知域名;然后对请求解析域名集合中剩余的每个域名执行如下操作:

61)如果该流量源对当前域名d的解析请求事件序列数nd低于阈值k5,则忽略对域名d的所有解析请求事件,结束对该域名d的处理;否则,进入步骤62);

62)针对所有间隔,用dbscan算法对该流量源对域名d的所有解析请求事件进行聚类,将解析请求间隔值相同的聚为一类,如果一聚类结果c,满足|c|>k6nd,则认定该流量源周期性对域名d发起请求,取该聚类结果c中的解析请求间隔值的均值u为域名请求周期,进入步骤64);否则,进入步骤63);k6取值为0.9~0.98;

63)如果出现了多个的聚类结果ci,i=1,2,...nc,这些聚类结果中的解析请求间隔值的均值记作ui;取umin=minui,如果各ui均近似为或等于umin的倍数;则认定该流量源准周期性对域名d发起请求,周期为umin;否则结束对该域名d的处理;

64)判定该流量源周期性或准周期性对该域名d发起请求,该域名d为主控域名。

一种网络端口流量异常检测系统,其特征在于,包括流量采集模块、流式分析模块、流量预测模块、异常判断模块和威胁发现模块;其中,

流量采集模块,用于采集目标数据平台中的通联会话日志流量;

流式分析模块,用于按照源端口号、目的端口号对采集的通联会话日志流量进行分组汇总,然后统计每个端口的流量指标数据,构成对应端口的流量序列;

流量预测模块,用于根据每一端口的流量序列,构成该端口的输入向量,输入lstm网络得到该端口时刻t的流量预测值;

异常判断模块,用于将端口时刻t的流量预测值与该端口时刻t的观测值进行对比,如果二者偏差大于设定条件,则确定该端口的流量异常;

威胁发现模块,用于对于流量异常的端口,从该目标数据平台抽取该端口的近期全部流量日志,根据提取的流量日志和预设规则对该端口的流量异常进行定性,判断出该端口的流量异常事件;如果根据预设规则无法对该端口的流量异常进行定性,则将提取的流量日志输入训练好的机器学习模型对该端口的流量异常进行分类,识别出该端口的流量异常事件。

cportmon结构如图1所示。cportmon的realtimeanalysis对大数据平台中的通联会话日志流量进行读取,分别按照源端口号、目的端口号分组汇总,以预设周期长度t统计连接数、字节数等流量指标,构成流量序列。建议t设为1小时长度。

对各个端口各个方向的流量序列进行长期观测和记录,构成观测序列用于长期在线训练lstm网络:

o=o(t),t=o,t,2t,...

lstm基于历史观测值,自时刻mt起对各端口流量生成的预测值序列为:

p=p(t)=p(o(t-t),o(t-2t),...),t=mt,(m+1)t,...

建议mt超过一星期时间长度。如时刻t某端口的观测值o(t)远大于对应的预测值p(t),则告警端口流量异常事件:

阈值k1,k2控制异常触发条件,建议设置为2。

用上述公式在两个情形下触发异常条件,对lstm网络本身的预测误差进行了一定的容忍,能够减少预测误差造成的误判。

cnets的其他模块也扮演着重要角色。cnets整体架构如图2所示。cnets采用mon-mine架构进行模块设计。mon类模块基于原始数据对各类网络实体进行实时快速监控,mine类模块则基于mon模块发现的异常,进行深入的挖掘。除cportmon外,其他mon类模块如chostmon,cnamemon,clinkmon等分别从ip,域名,url等角度对网络流量进行监测,并实时发现相应的流量异常事件。当各类mon模块发现的异常事件后,相关资料会提交给威胁发现模块,用于进一步验证和定性恶意网络事件的存在。根据恶意事件的分类不同,这些事件的相关资料又会分派给多个挖掘溯源模块执行进一步信息挖掘。如僵尸网络事件会被分配给cbotmine,恶意文件传播事件分配给cmalmon,ddos攻击事件分配给cdosmon。威胁情报库向威胁发现模块提供情报支持,而各类mine模块则向威胁情报库提供情报反馈。另外,威胁情报库也支持从外部数据源导入情报。

当cportmon发现端口流量异常后,威胁发现模块从数据管理平台抽取相关端口的近期全部流量日志,对事件进行定性。定性的策略,先提交预设规则判断,无法判断的,会提交已经训练好的机器学习模型(随机决策森林)进行分类。威胁发现模块结构如图3所示。

对于僵尸网络,本发明提出了如下规则:

·当出现单个主机针对大量主机相同端口发起单syn包连接时,可直接认定流量源(即对大量主机相同端口发起单syn包连接的单个主机)为扫描源。

·当出现针对相同网络端口的扫描源超过设定阈值时,认定为活跃僵尸网络传播事件。

·威胁情报库中有涉及该端口的漏洞,且已知僵尸网络利用此漏洞的记录,则将僵尸网络传播事件对应到具体的已知僵尸网络。

cbotmine负责进一步分析僵尸网络相关的流量异常事件,所执行的任务包括bot检测,bot画像和主控溯源,如图4所示。

bot检测功能从异常端口流量中提取出僵尸机名单。主要通过以下两个判据:

·被威胁发现模块认定为扫描源的主机;

·周期性或准周期性对同一非周知域名发起请求的主机。

周期性规律发现算法作用于对相同域名的解析时间间隔序列。针对该流量源的请求解析域名集合,用alexa10000过滤周知域名,并对剩余每个域名执行如下操作:

1.如果对当前域名d的解析请求事件序列数nd低于阈值k5,则忽略对本域名的所有解析请求事件,退出计算过程。否则,进入步骤2。建议k5取值在50到100之间。

2.针对所有间隔,用dbscan算法聚类,距离误差设1分钟。如果绝大部分间隔值聚为一类c,使得|c|>k6nd,则认定周期性,取该类均值u为域名请求周期,进入步骤4。否则,进入步骤3。建议k6取值在0.9到0.98之间。

3.如果出现了多个明显的类ci,i=1,2,...nc,这些类的均值记作ui。取umin=minui,如果各ui均近似为umin的倍数,即对任意ui均满足下列两个条件之一:

「ui/umin」-ui/umin<∈

也认定周期性,为umin为周期,而缺少主导类的现象为原始事件数据缺失所致,进入步骤4。如果不满足认定周期性的条件,退出计算。建议∈取值范围在0.1以下。

4.认定当前域名为主控域名,提交给威胁情报库。另外,可检测该域名是否为dga域名,不在本文讨论范围之内。

bot画像模块对bot检测模块发现的bot进行如下计算:

1.发症时间发现。对异常行为的发生时间进行分析,确定最早时间为感染时间。

2.健康状态画像。在发症时间之前,统计该主机的通信归属地分布,协议类型分布,本地周知端口频率分布,远程周知端口频率分布等特征。

3.感染源追溯。假定感染时间和发症时间相近,没有潜伏期,则在发症时间之前提取长度为5分钟的时间窗口内的所有事件。对于端口侵入式僵尸网络,排查相应端口被扫描事件和成功连接事件,认定成功的连接源为感染源。对于其他类型的僵尸网络,在该时间窗口内检测不符合健康状态的会话,以远端ip作为疑似扫描源。

4.施害行为追溯。对于端口侵入式僵尸网络,挖掘其对外扫描规律,发现成功的端口扫描事件,加入新增受害者名单。

5.疑似感染源和受害者名单反馈给威胁情报库。

主控溯源模基于已知bot进行通联关系计算,尝试发现上一级主控。利用以下准则:

·bot检测模块中发现的主控域名,其解析值认定为主控ip地址。如果不能通过主动解析和被动监测方式发现主控域名解析值,则观察当前bot在解析请求之后发起的连接地址。

·如果多个bot向同一个主机hc的同一个非周知端口pc多次发生通联关系,则认定hc:pc为主控地址。

·如果已知bot向同一个主机hc的同一个非周知端口pc周期性发生通联关系。其中,周期性规律发现算法复用bot检测模块中的对应实现。

与现有技术相比,本发明的积极效果为:

关于异常流量挖掘的研究大多面向企业intranet环境,而本发明的研究则针对广域网环境。只有大型运营商、cert等少数组织机构能够在广域网环境下进行流量分析监测。在这种场景下,流量的统计特征趋于明显,偶然性事件则被平滑化,有助于异常事件的发现。

本发明具有诸多优势:

1.本发明对新威胁的发现并非由签名值匹配操作引发,因此能够发现未知威胁。

2.本发明对流量的分析完全是被动观察的方式,不会对互联网本省造成干扰,对僵尸网络不可见。

3.本发明的方法能较容易地扩展到更大规模的集群上,以实现对更大流量的监测。

4.cnets采用mon-mine分离式架构,各模块职责明确,有利于工程研发、维护和升级。mon类模块适用于采用简单快速流式处理任务,mine类模块适用复杂的离线挖掘任务,既保证了系统吞吐性能,又支持复杂算法实现。

附图说明

图1为cportmon模块示意图;

图2为cnets整体架构图;

图3为威胁发现模块执行流程图;

图4为cbotmine模块示意图。

具体实施方式

为使本发明的上述目的、特征和优点能够更加明显易懂,结合附图和具体实施方式对本发明作进一步详细的说明。

cnets的流量采集模块采用高性能服务器实现,加载多块10ge网卡,运行dpdk框架实现高速流量采集。网络流量在骨干网络路由器导出,通过镜像方式分流引入。流量采集模块将流量汇总成netflow摘要格式输出给cportmon和chostmon模块,针对dns响应包导出域名、源宿ip、时间戳等摘要字段输出给cnamemon模块,针对http请求包导出url、源宿ip等摘要信息输出给clinkmon模块。

摘要流量通过apachekafka传输给各mon类模块。各mon类模块既可利用sparkstreaming实时处理流量数据,也可同时将kafka的输出副本存储至hadoop平台,并在后期通过hive进行数据访问,执行离线挖掘任务。

cportmon的实时流量处理程序累计各端口在各时段的流量,并在各时段结束后将汇总结果进行存储。cportmon的离线挖掘程序读取各时段汇总结果。除最近24个周期的流量汇总结果外,对各端口的流量构建时间序列,并使用tensorflow框架进行流量预测最近24周期的流量。预测流量同最近24个周期的流量值比较,如果偏差过大,则判定为流量异常事件,提交给威胁发现模块进行处理。

以上实施仅用以说明本发明的技术方案而非对其进行限制,本领域的普通技术人员可以对本发明的技术方案进行修改或者等同替换,而不脱离本发明的精神和范围,本发明的保护范围应以权利要求书所述为准。

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