一种基于流量学习的终端溯源方法与流程

文档序号:21101833发布日期:2020-06-16 20:53阅读:362来源:国知局
本发明涉及一种基于流量学习的终端溯源方法。
背景技术
::随着互联网和移动互联网的爆发式发展,网络犯罪和网络诈骗也日益增多,并已经成为一个严重的社会问题。随着全球ipv4地址越来越少,nat转换技术应用越来越广,nat转换可以将内部网络ip映射到出口ip不同的端口上,从而屏蔽内部网络细节。nat技术的出现使得针对网络犯罪的溯源难度增加。目前针对nat后网络犯罪多采用主动溯源的方式,即找到对应的nat设备,然后查看转换日志,再做统计分析和溯源。目前已有的主动溯源方式需要主动查看对应nat设备的转换日志,但是这种方式有以下诸多缺点:(1)大多数nat转换日志具有临时性,查询以前的信息可能已经不存在。(2)目前的nat设备网络已经十分复杂,nat设备内部可能还嵌套多个nat的子网络,使得主动溯源十分困难。(3)很多nat设备架设在公共场所,比如咖啡厅、车站等人员流动性场所,主动溯源无法追踪到犯罪个体。技术实现要素:针对现有技术的不足,本发明提供了一种基于流量学习的终端溯源方法,包括如下步骤:步骤1,提取网络流量中的用于溯源的终端信息以及用于形成机器学习的维度信息;步骤2,对步骤1提取的信息进行预处理;步骤3,建立特征分类器;步骤4,根据提取的终端信息和步骤3得到的特征分类器,经过相关关联策略,让所有数据带上终端信息,完成终端溯源。步骤1包括:步骤1-1,提取网络流量中的数据包,对tcp数据包重组:使用会话哈希表解决同时处理多个tcp会话的问题,使用会话哈希算法计算tcp会话哈希值,数据插入到会话哈希表的指定槽位,解决ip包非按序到达和tcp会话重传问题;步骤1-2,识别协议特征:使用运营商定义或者推荐的端口进行协议识别,按照预先设置好的特征库(需要人为预先设计好,用于匹配报文内容,主要存储特征和提取方法的对应关系)进行特征识别,匹配出报文中的特征字,以便步骤1-3提取关键信息;步骤1-3,提取关键信息,关键信息包括useragent(http协议中的user-agent字段)、cookie(http协议中的cookie字段)、时间戳、时间、初始sequencenum、ttl(tcp中的timetolive)、id(tcp中的indentification)、会话信息(包括源ip、宿ip、源端口、宿端口、协议、网络包长)以及终端信息。步骤1-1包括:步骤1-1-1,获取网络流量中的会话数据包,一次socket连接的数据流称为一个会话,同一个会话的数据包具有相同的五元组,即源ip:src_ip、目的ip:dst_ip、源端口:src_port、目的端口:dst_port、协议类型:tcp或者udp;步骤1-1-2,使用五元组作为参数计算会话数据包的会话hash值,计算公式如下:hash=(src_ip^dst_ip^src_port^dst_port^proto_type)modn,其中proto_type为协议类型,n为会话哈希表总哈希槽数,^为异或运算,mod为取余运算;步骤1-1-3,使用会话hash表来存储有序的会话数据包:将会话数据包的会话hash值散列到特定的会话hash表槽位,如果所述槽位上链表为空,则将所述会话数据包挂在链表末尾;链表已经有节点,再查找链上有没有所述会话数据包所属的会话,如果有,则按照tcp头中的序号从小到大的顺序将会话数据包放到指定位置,否则将会话数据包挂在链表末尾。步骤2包括:对步骤1提取的关键信息进行处理、打标(主要是:a.对关键信息进行精细化处理,比如useragent中可能会含有终端类型,系统类型等信息,需要识别提取并分类打标;b.根据网络包长度和时间,计算上下行流量),生成维度信息,作为xgboost模型的输入信息。步骤3包括:步骤3-1,建立cart回归树,设定树为二叉树,设定输入训练集为rn={(x1,y1),(x2,y2),…,(xn,yn)},当前树结点是基于第j个特征值进行分裂的,将特征值小于s的样本划分为左子树,大于s的样本划分为右子树,cart回归树产生的目标函数obj1为:其中xi为和yi分别是训练集rn中的第i组的输入变量和输出变量,f(xi)为cart回归树的的预测结果,目标函数obj1为回归树对训练集中训练数据的误差;步骤3-2,将步骤3-1的目标函数obj1转化为求解目标函数obj2;步骤3-3,建立基于xgboost模型的目标函数;步骤3-4,推导优化步骤3-3建立的目标函数并得出打分函数;步骤3-5,准备n1部终端的n2条样本数据,加载到xgboost模型中进行训练,并调节参数,得到训练好的特征分类器。本发明中,步骤3-2包括:设定当前树结点是基于第j个特征值作为切分点,进行分裂的,设所述第j个特征值小于s的样本划分为左子树r1(j,s),大于s的样本划分为右子树r2(j,s):r1(j,s)={x|x(j)≤s}andr2(j,s)={x|x(j)≥s}(1)为了寻求最优的切分变量x(j)和最优切分点s,建立以下目标函数obj2,使和方差最小:其中c1为r1样本的输出均值,c2为r2样本的输出平均值,样本r1、r2分别对应r1(j,s)和r2(j,s);步骤3-3包括:建立如下基于xgboost模型的目标函数:其中,obj(t)表示xgboost模型的目标函数,t表示设定xgboost模型共有t棵树组成;目标函数(3)由两个部分组成,第一部分是残差函数(losefunction),用于标识预测和真实值得差值;另外一部分是正则化项;表示第i个预测值和真实值的差值,预测值和真实值的差值的总数为n;fk表示第k棵树,共有t棵树,ω(fk)表示第k棵树的正则化项,式(4)中whereω(f)表示式(3)中ω(fk)的实际函数表达式;正则化项包括两个部分,t标识叶子节点的个数,ω表示叶子节点的分数,λ是用于控制叶子节点的分数的参数;步骤3-4包括:推导优化目标函数并得出如下打分函数:其中,t表示叶子结点的个数,γ是用于控制叶子结点的个数的参数,ωj为第j个叶子节点的分数,gj,hj的值分别如下:其中,gj,hj分别为gi、hi的表达式,gi、hi分别为函数l在处的一阶偏导和二阶偏导,ij表示在第j个叶子节点上的样本;式(5)为ωj的一元二次函数,用目标函数对ωj求导,得到最优的ωj,记为将最优的ωj代入到公式(5)中,得到最终的目标函数obj*为:公式(6)称打分函数,它是衡量树结构好坏的标准,值越小,代表这样的结构越好,用打分函数选择最佳的切分点,从而构建cart树。步骤3-5,准备n1部终端的n2条样本数据,加载到xgboost模型中进行训练,并调节参数,得到训练好的特征分类器。步骤4包括:步骤4-1,一定时间内(经验值为5分钟),相同五元组(源ip,源端口,宿ip,宿端口,协议类型)的数据包,构成了一个会话,一个会话的数据是由同一个终端产生,如果一个会话里有一条数据里有终端信息,将所述终端信息关联到会话中的其他条数据中;步骤4-2,分类结果集内关联:使用xgboost模型进行学习分类,被分到同一类的数据集合,称为分类结果集。同一个分类结果集中的数据判定是同一个终端产生的,如果同一个分类结果集中有数据中带有提取的终端信息,将终端信息关联到分类结果集中的其他数据上。有益效果:为了更便捷、精准的进行终端识别,本发明提供了一种基于流量学习的被动溯源方法,此类方法可以有效的将犯罪记录追溯到设备mac、手机号、imsi、imei等终端信息上。本发明中的方法,相比于现有已有的主动溯源方法更加简单、更适应于大数据发展、并且可以溯源到终端信息。简单:可以将精细化提取模块部署网络出口采集数据流量,就可以完成溯源。适应大数据发展:溯源的结果适合数据库存储,并做可后续的分析或者其他业务处理。溯源到终端信息:主动溯源方法通常只能看到ip转换情况,但是本发明的方式可以溯源到终端信息。附图说明下面结合附图和具体实施方式对本发明做更进一步的具体说明,本发明的上述或其他方面的优点将会变得更加清楚。图1是本发明流程图。图2是会话重组过程示意图。图3是xgboost模型训练示意图。图4是特征分类器示意图。具体实施方式下面结合附图及实施例对本发明做进一步说明。1、精细化提取模块精细化提取模块主要采用dfi(deep/dynamicflowinspection)、dpi(deeppacketinspection)的技术手段,提取网络流量中的用于溯源的终端信息(只有部分数据含有)以及用于形成机器学习的维度信息。(1)数据包重组传输控制协议tcp(transmissioncontrolprotocol,rfc793,rfc1122,rfc813,rfc816,rfc879,rfc896,rfc889,rfc964)是一个在网络中提供主机到主机高可靠性通信的协议,根据rfc793规定。tcp头中的序号(sequencenumber)用于指定该数据包在整个会话中的位置,该序号是tcp会话重组的关键。会话:一次socket连接的数据流称为一个会话,同一个会话的数据具有相同的五元组,即源ip(src_ip)、目的ip(dst_ip)、源端口(src_port)、目的端口(dst_port)、协议类型(tcp或者udp)。tcp会话重组:主动的方式(如tcpdump从网口抓包)从网口获取到的报文是零散、多个会话混在一起的packet报文,为了更好的获取应用层的数据,现有的做法都是将packet按照会话特征(同一个五元组为唯一标示一个会话)排列起来,并按照tcp头中的序号(sequencenumber)排序,称为tcp会话重组。本发明的会话重组技术方案如图2所示,主要使用“会话哈希表”和“会话哈希算法”。“hash表”解决了同时处理多个tcp会话的问题,“会话哈希算法”可以快速地计算tcp会话哈希值,数据插入到会话哈希表的指定槽位,同时可以有效地解决ip包非按序到达和tcp会话重传问题。会话哈希算法:因为五元组唯一标示一个会话,本算法使用五元组作为参数计算hash值,算法为hash=(src_ip^dst_ip^src_port^dst_port^proto_type)modn,其中proto_type为协议类型(tcp或者udp),n为会话哈希表总哈希槽数,“^”为异或运算,mod为取余运算。会话哈希表:本发明的会话hash表是一种开链法实现的hashtable,主要用来存储有序的会话packet(数据包)。packet(数据包)根据五元组信息按照会话哈希算法计算出会话hash,散列到特定的会话哈希表槽位。如果该槽位上链表为空,则将该packet挂在链表末尾;链表已经有节点,再查找该链上有没有本packet所属的会话,如果有,则按照tcp头中的序号(sequencenumber)从小到大的顺序将packet放到指定位置,否则将packet挂在链表末尾。由于本会话哈希表的多槽位和开链法设计,可以保证多个会话同时处理,并有效的解决了哈希冲突问题,可以为后续的协议识别和处理提供有序的会话数据流。(2)协议特征识别知名端口协议识别:对于许多标准的协议类型,都支持使用一些运营商定义或者推荐的端口进行协议识别,例如http(80/8080),dns(53)、imap4(143)、smtp(25)、radius(1812/1813,1645/1646)等。特征字识别:特征字识别是按照预先设置好的特征库,进行特征识别,先匹配出报文中的特征字,然后根据特征字进行不同解析,例如报文中的http、ftp、mseg、usragent、cookie等。(3)关键信息提取由于网络传输的需要,报文中的数据多经过一定方式的编码(如base64,protobuf编码等),压缩(如gzip)等。需要对报文作解码,解压处理,然后提取业务需要的字段数据,本发明主要需要useragent、cookie、时间戳、时间、以及终端信息等。2、维度预处理主要对精细化提取的结果数据进行处理、打标等操作,生成维度信息。a.对关键信息进行精细化处理,比如useragent中可能会含有终端类型,系统类型等信息,需要识别提取并分类打标。b.根据网络包长度和时间,计算上下行流量。c.对提取的信息归一化成代码,方便处理,比如:系统类型中用01代表android,02代表苹果,03代表windows等。最终的维度信息如下表1所示:表13、特征分类器本发明的特征分类器时基于xgboost模型来实现的,xgboost是boosting算法的其中一种。boosting算法的思想是将许多弱分类器集成在一起形成一个强分类器。因为xgboost模型是一种提升树模型,它将许多树模型集成在一起,形成较强的分类效果。本发明中的树模型采用cart回归树模型。a)cart回归树cart回归树是假设树为二叉树,通过不断将特征进行分裂。设定当前树结点是基于第j个特征值作为切分点,进行分裂的。设所述第j个特征值小于s的样本划分为左子树r1(j,s),大于s的样本划分为右子树r2(j,s)。r1(j,s)={x|x(j)≤s}andr2(j,s)={x|x(j)≥s}(1)cart回归树实质上就是在该特征维度对样本空间进行划分,而这种空间划分的优化是一种np难问题,因此,在决策树模型中是使用启发式方法解决。典型cart回归树产生的目标函数为:为了求解最有切分特征和最优切分点s,可以转化为求解以下目标函数。需要遍历所有特征的所有切分点,找到最优的切分特诊和切分点,最终得到一个回归树。b)xgboost模型xgboost模型算法的思想是通过不断添加树,不断的通过特征分裂来生长成一棵树。每次添加一棵树,是学习一个新的函数,去拟合上次的预测残差。当训练完成得到k棵树,需要预测每个样本的分数。根据样本的特征,在每棵树中会落到对应的一个叶子节点,每个叶子节点对应一个分数,最后需要将每棵树对应的分数加起来就是样本的预测值。wheref={f(x)=ωq(x)}(q∶rm→t,ω∈rt)(5)xgboost模型的目标函数定义为:目标函数由两个部分组成,第一部分是残差函数(losefunction)用于标示预测分数和真实分数的差距,另一部分是正则化项。正则化项包含两部分,t表示叶子结点的个数,ω表示叶子节点的分数。γ是用于控制叶子结点的个数的参数;λ用于控制叶子节点的分数不会过大,防止过拟合。又如上文所说,新生成的树是要拟合上次预测的残差,即当生成t棵树后,预测分数可以写成:因此可以将上面的目标函数改造成:由前向分布算法可知,前t-1棵结构为常数,即:将公式(10)带入(9)可得出:将目标函数用二阶泰勒公式展开为:其中gi、hi分别为函数l在处的一阶偏导和二阶偏导,为前t-1棵树的预测误差,为常数,则:将损失函数定义成平方损失函数,即:则:hi=1(15)将公式(5)和公式(7)带入到(13)得出:对于xgboost模型来说,每一个数据点xi最终会落在一个叶子节点上,而对于落在同一个叶子节点上的数据来说其输出是一样的,假设共有t个叶子节点,每个叶子节点输出为ωj,则目标函数可以进一步改写为:令:得出公式(18)为ωj的一元二次函数,用目标函数对ωj求导可得最优的为:代入到公式(18)可得最终的目标函数为:式(20)也称打分函数(scoringfunction),它是衡量树结构好坏的标准,值越小,代表这样的结构越好。用打分函数选择最佳的切分点,从而构建cart树。c)算法的训练与分类准备10部终端的10000条样本数据,加载到xgboost模型中进行训练,并调节参数,使得达到较好的分类效果,并保存模型文件,如图3所示。本特征分类器是基于xgboost模型为内核实现的,启动时预先加载训练的模型文件,在处理维度数据时,输出n个结果集,认为一个结果集内是一个终端的数据。如图4所示。4、终端信息关联器终端信息关联器主要根据已经提取的终端信息,经过相关关联策略,尽可能让所有数据带上终端信息(手机号,imei等),达到溯源的效果。a)会话关联一定时间内,相同五元组(源ip,源端口,宿ip,宿端口,协议类型)的数据包,构成了一个会话。一个会话的数据是由同一个终端产生,如果一个会话里有一条数据里有终端信息,可以将该终端信息关联到会话中的其他条数据中。如表2所示,根据五元组和时间可以得出数据1、2、3、4属于同一个会话中的数据,数据2能够提取到imei信息,可以将imei信息关联到数据1、3、4上。表2b)分类结果集内关联使用xgboost模型进行学习分类,被分到同一类中的数据集合,本文称之为分类结果集,分类结果集中的数据都会被打上分类结果集标识(使用全球唯一标识码)。同一个分类结果集中的数据可以认为是同一个终端产生的,如果同一个分类结果集中有数据中带有终端信息,可以将该终端信息关联到分类结果集中的其他数据中。如表3所示,数据1和数据2、数据3和数据4的分类结果集标识相同,说明他们分别属于同一个分类结果集,因此可以将数据2中imei关联到数据1中,同理可以将数据3中的imei关联到数据4中。如果数据1或者数据4中通过其他手段被检测为含有害的网络行为(比如在发起网络攻击),可以认为有害的行为来于自对应imei的终端,因此通过这种方法完成了数据1和数据4的终端溯源。表3本发明提供了一种基于流量学习的终端溯源方法,具体实现该技术方案的方法和途径很多,以上所述仅是本发明的优选实施方式,应当指出,对于本
技术领域
:的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。本实施例中未明确的各组成部分均可用现有技术加以实现。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1