【技术实现步骤摘要】
一种针对私有网络协议格式和状态的逆向分析方法及装置
[0001]本专利技术属于信息安全
,提供了一种针对私有网络协议格式和状态的逆向分析方法及装置。
技术介绍
[0002]随着近年来车联网、工控网、僵尸网络等多个领域的飞速发展,当前网络流量中存在大量基于特定目的开发的私有协议。相关协议无格式文档、不公开协议源码,导致协议漏洞挖掘、网络行为分析、网络监听、僵尸网络检测等多个领域已有的部分分析方式受到限制。且大量私有协议设计中存在安全缺陷,通过闭源的方式无法确保协议安全性。因此基于流量分析协议格式、状态转换关系问题成为关乎网络安全发展的关键。
[0003]当前协议逆向方向从分析对象的角度可分为基于网络轨迹的协议逆向、基于程序指令的协议逆向,前者应用前景广泛,但精度略有欠缺,且无法处理加密流量。后者在加密流量分析上具有可行性,但限制条件过多。本专利技术所述领域为基于网络轨迹的协议逆向。已有方式可分为三大类:第一类,基于比对的格式分析,如PI、Discover、Netzob、NetPlier。第二类,采用基于统计学的字段划分。如频繁项挖掘、信息熵、n
‑
gram、HSMM推断KW等。第三类,结合NLP方向的学习模型,如强化学习、神经网络(LSTM)等。
[0004]基于流量的协议逆向最早的工具是在2004年提出的PI,在私有流量大量涌现的近几年逐渐成为研究热点。其中基于序列比对的协议逆向是其重要分支,且持续有成果产出。相关方法根据字节变化特征进行比对,在奖惩函数指导下,构建得分矩阵和引 ...
【技术保护点】
【技术特征摘要】
1.一种针对私有网络协议格式和状态的逆向分析方法,其特征在于:包括以下步骤:S1.采集阶段,使用tcpdump、nmap工具采集待分析流量,捕获流量包序列,得到输入流量集合,所述流量包序列包括请求流量包序列和响应流量包序列;S2.预处理阶段,根据协议交互行为和流量包序列间的关系,对输入的流量包序列进行预处理,提取并初步划分私有协议全段信息;S3.对步骤2得到的私有协议全段信息格式逆向阶段,结合渐进多序列比对、信息熵和频繁项,对格式边界进行细粒度判定,得到边界切分结果、字段类型,进而得到私有网络协议格式的协议边界部分;S4.语义判定模块:基于边界切分结果,推断划分后的各字段语义含义,对具有关联属性字段使用已有方法进行判定,对非关联字段使用启发式判定,判定结果为“字段起止位置
‑
语义”对应关系,进而得到私有网络协议格式的语义部分,由协议边界部分于语义部分构成私有网络协议格式;S5.格式状态机构建阶段,基于格式边界推断结果进行被动状态机构建。2.根据权利要求1所述的一种针对私有网络协议格式和状态的逆向分析方法,其特征在于,步骤2包括以下步骤:2.1)底层已知协议进行解析,提取IP、端口信息,根据IP和端口信息判定流量收发方向,将采集的应用程序的流量包分为服务端和客户端两类,分别生成矩阵Server、Client,以txt格式存储,矩阵格式为:{{序号1,私有协议流量包1};{序号2,私有协议流量包2};...;{序号N,私有协议流量包N}};2.2)私有协议全段提取,在2.1解析底层已知协议的基础上,对每条流量包中的应用层从第一字节至最后一字节进行私有协议全段提取,一条私有协议流量包存储为一行,按私有协议流量包的顺序形成包含私有协议全段的新文件Server_All_oneline.txt、Client_All_oneline.txt,每条流量均以十六进制表示;2.3)进行可疑边界判定,将步骤2.1和步骤2.2得到的Server_All_oneline.txt、Client_All_oneline.txt件中的十六进制字符转换ASSIC码对比公有特征库,对流量包中可表示为:“#?///”的符合文本特征的字符位置进行标注,构建<包序号,文本特征1,位置1,...,文本特征N,位置N>的向量进行存储,向量中的文本特征N为边界点判定依据,位置N对应判定的可疑边界点,输出Server_Suspicious_boundary.txt、Client_Suspicious_boundary.txt文件。3.根据权利要求1所述的一种针对私有网络协议格式和状态的逆向分析方法,其特征在于,步骤3具体步骤为:3.1)执行渐进多序列比对,进行初步边界划分,统计步骤2得到的私有协议流量包数量,流量总和大于1000条的文件使用G
‑
INS
‑
I算法进行渐进多序列比对,小于1000条的文件使用L
‑
INS
‑
I算法进行渐进多序列比对,渐进多序列比对过程中使用
“‑”
对序列中空位进行补全,使用空格标识字段边界;一条流量包比对结果作为一行向量,对比结果组成二维矩阵,行记录流量包顺序和载荷、列代表字符在序列中的位置,表示为:<<0001:P1 P2 P3P4
‑
...
‑‑
P63 P64...P256>,<0002:P1 P2 P3P4
‑
P63
‑‑
...
‑‑
P128>...>,Pn(n=1...256)代表实际私有协议流量包中的一字节数据,即2个16进制位数据,将二维矩阵存储到输出文件Server_MSA.txt、Client_MSA.txt;
3.2)提取私有协议功能段:在步骤3.1基础上,提取二维矩阵第一列纵向向量作为输入,以空格作为纵向向量提取的边界,计算纵向序列向量的信息熵,对3.1补全过程时填充的
“‑”
字段在计算熵值时记为零,重复计算私有协议第一列至最后一列信息熵,将在两列间熵值急剧变化的位置进行一次载荷切分,提取初始字符至熵值陡增位置的字符,判定为私有协议功能段,输出功能段文件Server_functional_oneline.txt、Client_functional_oneline.txt;3.3)超长序列判定模块:计算Server_All_oneline.txt、Client_All_oneline.txt两文件的每行序列长度,即每条输入流量包长度,以长度均值加标准差作为阈值,对超过阈值长度的单条流量包进行标记和提取,输出为Server_Oversize_oneline.txt、Client_Oversize_oneline.txt;3.4)过度切割功能段组合:读取步骤2.3中可疑边界,若可疑边界前后包含“空格标识”则不进行处理,若标注为可疑边界且前后无“空格标识”的字段,在可疑边界所在位置后方插入空格列,之后对长度为1字节和2字节的功能段计算字节间的组合频率,使用闭合频繁项进行挖掘,合并功能段中的高概率组合,合并长度上限设定为3字节,对判定为需要合并的字节,删除两列字节之间的空格,输出处理后的边界判定结果文件Server_result.txt、Client_result.txt;3.5)判定字段类型,类型分为定长定值、变长变值、定长枚举、定长递增、定长无序五类,读取步骤3.4的输出文件,对每列中取值固定的字段标记为定长定值字段,对每列中取值为
“‑”
的位置标记为变长变值字段,对取值种类小于8种的字段标记为定长枚举字段、对取值类型符合递增规律的字段标记位定长递增字段,对其他定长字段判定为定长无序字段,输出S端和C端的字段类型判定结果,如S端:<<1
‑
2,定长定值>,<2
‑
4,定长枚举>,...,<14
‑
256,变长变值>>。4.根据权利要求1所述的一种针对私有网络协议格式和状态的逆向分析方法,其特征在于,步骤4具体包括:4.1)读取3.3判定的超长序列,统计数据段长度,将长度值和定长无序字段进行对比,若取值一致,判定该定长无序字段为长度,否则判定字段为待定;4.2)对标志位等非关联字段,根据字符取值方式进行启发式判定,构建可疑语法列表,启发式判定规则如;定长定值取值判定为标志字段,定长枚举取值判定为控制字段、协议报文类型字段,定长递增型取值判定为序号位字段、功能段中定长高熵值字段判定为校验码字段,分别输出S端和C端的语义判定结果,判定结果为“字段起止位置
‑
语义”对应关系,格式为:<字段位置,字段类型,可疑属性1,...,可疑属性N>。5.根据权利要求1所述的一种针对私有网络协议格式和状态的逆向分析方法,其特征在于,步骤5具体步骤为:5.1)功能段取值归一化,对3.2步骤中提取的功能段进行归一化处理,读取Server_functional_oneline.txt、Client_functional_oneline.txt两文件,以文件中的“空格标识”为边界,分别抽取文件中的列向量,使用“0均值归一化”压缩功能段取值到同维度空间内,生成Server_result_normalization.txt、Client_result_normalization.txt;5.2)状态标注,计算5.1归一化后的功能段间的距离,使用层次聚类AGNES算法进行状态标注,聚类出不同消息状态,距离计算中,读取5.1)中Server_result_
normalization.txt、Client_result_normalization.txt的每条横向向量,以每条流量包功能段的坎贝拉不相似值作为划分依据,聚类过程中,将每个流量包作为初始簇,计算任意两簇距离,合并距离最近的两个簇,生成新簇,重复合并距离最近簇,当最远两簇距离超过阈值或簇个数达指定值,终止层次聚类算法;5.3)基于步骤5.2的状态标注,进行状态机绘制,基于类间转换的时序关系绘制转换边,使用已有的基于异常概率的状态剪枝、基于等价状态的状态合并两种方式进行状态简化。6.一种针对私有网络协议格式和状态的逆向分...
【专利技术属性】
技术研发人员:牛伟纳,王崇宇,朱宇坤,张小松,陈瑞东,周玉祥,
申请(专利权)人:电子科技大学,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。