基于深度学习的加密恶意流量检测

加密恶意流量检测

  • 研究目标定位
  • 数据收集
  • 数据处理
    • 基于特征分类算法的数据预处理
    • 基于源数据分类算法的数据预处理
  • 特征提取
  • 模型选择
    • 基于数据特征的深度学习检测算法
    • 基于特征自学习的深度学习检测算法
  • 训练和评估
    • 精确性指标
    • 实时性指标
  • 应用检验改进

摘录自:Mingfang ZHAI,Xingming ZHANG,Bo ZHAO. Survey of encrypted malicious traffic detection based on deep learning[J]. Chinese Journal of Network and Information Security, 2020, 6(3): 66-77.
网络信息安全学报:Survey of encrypted malicious traffic detection based on deep learning

本文归纳总结“六步法”的加密恶意流量检测一般框架模型,为问题研究提供帮助。
“六步法”框架是针对加密恶意流量检测问题的,但对于普通的流量识别问题仍然适用(普适性)。
加密恶意流量检测的本质是学习数据特征,将流量数据进行正确分类。

如下是“六步法”的模型构造
在这里插入图片描述

研究目标定位

流量通常由5元组决定:源IP、目标IP、源端口、目标端口和协议。
可按以下方面对流量进行分类:
1)协议,如SSH、SSL/TLS
2)应用,如微信、滴滴出行、百度地图
3)服务,如聊天。购物
4)网站,如谷歌、百度
5)用户行为,如浏览、下载、上传
具体就加密流量而言,通常分为加密与未加密识别加密协议识别加密服务识别恶意流量检测

  • 加密与未加密识别主要将流量区分为加密流量和非加密流量。
  • 加密协议识别是根据协议的不同对加密流量进行归类。
  • 加密服务识别是将流量按特征、服务类别或者应用程序进行分类。
  • 异常流量检测的目的在于检测出隐藏在加密流量之中的DDoS、APT、Botnet等恶意流量,是保障网络安全的重要手段。

与加密协议识别和加密服务识别相比,异常流量检测的难点有:
①攻击者常常利用协议规则将攻击流量伪装成正常流量,增加检测的难度。
②数据集严重不平衡,攻击流量远远小于正常流量,可能会产生训练不充分的问题,从而影响检测精度。
③检测错误代价大,因此对检测精度要求更高。

下图是加密流量识别分类结构
在这里插入图片描述

数据收集

直接收集法:常用的数据采集软件有Wireshark、Sniffer、Fiddler等。
脚本收集法:拟合大多现有的攻击模式。
混合方法:直接收集法+脚本收集法。

数据处理

数据预处理是指将未加工数据转换为适合分析的形式,包括多数据源的数据融合、数据清洗、维规约等。

基于特征分类算法的数据预处理

该方法需要将原始数据处理为打上各种特征标签的数据,如统计标签、时间序列等,而后送入算法模型检测恶意流量与正常流量。
在这里插入图片描述
数据清洗:数据清洗是指对数据进行重新审查和校验的过程,目的在于删除重复信息、纠正存在的错误。对数据中存在的无效值或错误值常采用删除的方法,包括整列删除、变量删除和成对删除等方法。对缺失值处理有均值插补、同类均值插补及高维映射等方法。
数据集成:数据集成是将多个数据源收集的数据整合在一起,主要的困难在于多个数据源异构的问题,即几个数据源并不完全一致,收集的数据格式、长度等不同,相互之间存在冗余和不兼容等问题。
数据变换:数据变换即对数据进行规范化处理,以便于后续的信息挖掘,主要包括数值化、中心化和规范化等内容。数值化就是将非数据信息转化为数据,如网络协议信息,可用简单数值表示。中心化是指将数据减去均值或者某个指定数值的操作。规范化目的在于把数据整合到[0,1]内以方便实验,常用最大值规范化方法。
数据归约:数据规约指在保持数据原貌的前提下,最大限度地精简数据量。通常采取特征选择和数据采样的方法实现。

基于源数据分类算法的数据预处理

使用深度学习方法自动学习数据中所隐藏的特征,从而实现对加密恶意流量的检测。这类算法无须对数据进行特征提取操作。
在这里插入图片描述

特征提取

在加密协议握手阶段,客户端与服务器往往需要通过明文协商相关加密参数,这一阶段可以得到许多与加密相关的宝贵数据,如加密采用的TLS版本、算法、证书、TLS扩展选项等。除此之外,数据包长度、流长度、报文的持续时间以及时间间隔等信息,都可以有效提升加密恶意流量检测的精度。
在这里插入图片描述
并不是特征越多越好,过量的特征选择反而可能导致检测性能的下降。另外,复杂的识别特征需要耗费大量的存储空间和计算能力,给硬件系统带来压力。

模型选择

基于深度学习的检测方法具有检测加密流量的天然优势。
检测模型主要分为两大类:一类是利用特征标签检测加密恶意流量;另一类是充分利用CNN、RNN等深度学习的特征学习能力,自动学习数据中隐含的特征进行恶意流量检测。

基于数据特征的深度学习检测算法

此类方法需要首先提取数据特征,然后将有特征标签类的数据输入深度学习算法进行训练检测。

基于特征自学习的深度学习检测算法

该类算法不需要提取数据特征,只对数据进行切片操作,而后由算法自动挖掘特征进行检测。

基于特征自学习的深度学习检测算法最大的特点是不需要再提取数据特征,对于数据集的要求低、依赖性小,可移植性好,使用更加灵活。
但这类方法也有着天然的不足:
①数据切片取多少字节合适并没有依据,只是凭经验取舍。
②切片数据长度不能太长,切片过长可能影响计算性能,进而影响训练的效率。
③训练过程可解释性相对较低,训练比较困难,容易引起检测性能不稳定。

训练和评估

模型构建后,即需要对模型进行训练和评估。
训练通常采用N折交叉验证,一般为10折。
评价指标有精确性指标和实时性指标。

精确性指标

精确性指标基于混淆矩阵生成,主要用来评估模型的检测能力和检测精度,包括准确率、召回率、精确度、误报率、F分数等。
混淆矩阵用于描述加密恶意流量检测中实际类别和预测类别之间的相互关系。
其中:

  • TP(真正例)表示检测模型将攻击类型正确识别为攻击类型的样本个数;
  • TN(真负例)表示检测模型将正常类型正确识别为正常类型的样本个数;
  • FP(假正例)表示检测模型将正常类型错误识别为攻击类型的样本个数;
  • FN(假负例)表示检测模型将攻击类型错误识别为正常类型的样本个数;
预测攻击正常
攻击TPFN
正常FPTN

基于上述定义,给出各种精度性能指标的公式化定义。
准确率 = T P + T N T P + T N + F P + F N 准确率=\frac{TP+TN}{TP+TN+FP+FN} 准确率=TP+TN+FP+FNTP+TN
召回率 = T P T P + F N 召回率=\frac{TP}{TP+FN} 召回率=TP+FNTP
精确度 = T P T P + F P 精确度=\frac{TP}{TP+FP} 精确度=TP+FPTP
误报率 = F P F P + T N 误报率=\frac{FP}{FP+TN} 误报率=FP+TNFP
召回率、精确度和误报率体现了检测方法在每个攻击类别上的检测效果,特别是当数据不平衡时,这3个指标能够准确获知各类攻击的检测情况。
由于一般情况下召回率和精确率之间存在博弈,即召回率高,精确度就低;反之精确度高,召回率就低。于是引入F分数指标,F分数是综合考虑召回率和精确率的精确性评价指标。当β=1时,精确率和召回率同等重要,权重相同,此时F分数又被称为F1分数或F衡量。
F分数值越高表明算法的分类性能越好。
F 分数 = ( 1 + β 2 ) P r e c i s i o n × R e c a l l β 2 P r e c i s i o n + R e c a l l F分数=(1+\beta^2)\frac{Precision×Recall}{\beta^2Precision+Recall} F分数=(1+β2)β2Precision+RecallPrecision×Recall
上述精确性指标基于流或基于包,字节精度对评估流量分类算法的准确性至关重要。但是,字节精度可能耗费计算资源,提升计算复杂度。

实时性指标

实时性指标用于评估模型的检测效率,反映加密恶意检测可以在线、快速地识别加密恶意流量的能力,保证在实施恶意流量检测的过程中不影响核心网络性能。实时性主要体现在对流的前N个包的精确检测上。

应用检验改进

关于“六步法”的最后一步应用检验改进,是指将构建的模型应用到实际网络中,进行实网加密恶意流量检测,通过网络运行,检验算法模型的实效性和健壮性,并定期对模型进行更新,不断完善模型以取得更高的检测精度和效能。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/110069.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【golang】深入理解GMP调度模型

Goroutine Go中,协程被称为goroutine,它非常轻量,一个goroutine只占几KB,并且这几KB就足够goroutine运行完,这就能在有限的内存空间内支持大量goroutine,支持了更多的并发,虽然一个goroutine的…

如何实现 pdf 转 word

前言:最直接的方式 wps 充会员可以直接转,但是单纯为了 使用这个功能有没啥必要 pdf转word方法 在线转换wps转换其他收费转换方式 在线转换 介绍在线转换,虽然样式简陋但是可以转换成功,转换以后也没有失真 http://ssyr.mynatap…

jeesite实现excel导入功能(保姆级图文教程)

文章目录 前言一、准备工作1.准备一个excel模板,放入static目录2.application.yml文件中设置文件存储路径3.使用easyexcel插件解析excel数据,pom文件导入easyexcel二、使用步骤1.列表页添加下载模板按钮2.表单页添加文件上传3. 创建excel解析对应实体4.后台完成文件上传代码,…

Vivado XADC IP核 使用详解

本文介绍Vivado中XADC Wizard V3.3的使用方法。 XADC简介 XADC Wizard Basic Interface Options: 一共三种,分别是AXI4Lite、DRP、None。勾选后可在界面左侧看到相应通信接口情况。Startup Channel Selection Simultaneous Selection:同时监…

对IP协议概念以及IP地址的概念进行简单整理

网络层重要协议 参考模型和协议栈IP协议IPv4数据报IP数据报格式IPv4地址特殊IP地址私有IP地址和公有IP地址子网划分 参考模型和协议栈 IP协议 IP协议定义了网络层数据传送的基本单元,也制定了一系列关于网络层的规则。 IPv4数据报 网络层的协议数据单元PDU 叫做分…

Webserver项目解析

一.webserver的组成部分 Buffer类 用于存储需要读写的数据 Channel类 存储文件描述符和相应的事件,当发生事件时,调用对应的回调函数 ChannelMap类 Channel数组,用于保存一系列的Channel Dispatcher 监听器,可以设置为epo…

庚顿新一代实时数据库太快了,得用对数坐标轴放大看

不可否认,实时数据处理已经成为企业数据平台的核心能力之一。如何高效处理海量而复杂的实时数据,则取决于数据库系统的架构设计和处理性能。最近,应广大用户的要求,基于飞腾开放实验室Phytium Open Laboratory(POL&…

Golang反射相关知识总结

1. Golang反射概述 Go语言的反射(reflection)是指在运行时动态地获取类型信息和操作对象的能力。在Go语言中,每个值都是一个接口类型,这个接口类型包含了这个值的类型信息和值的数据,因此,通过反射&#x…

JAVA高级技术入门(单元测试,反射,注解,动态代理)

JAVA高级技术入门(单元测试,反射,注解,动态代理) 一、Junit单元测试二、反射1.认识反射,获取类概念:快速入门:获取Class对象的三种方式 2.1获取类的构造器2.2获取类的构造器的作用&a…

【算法专题突破】滑动窗口 - 找到字符串中所有字母异位词(14)

目录 1. 题目解析 2. 算法原理 3. 代码编写 写在最后: 1. 题目解析 题目链接:438. 找到字符串中所有字母异位词 - 力扣(Leetcode) 这道题很好理解,就是找出从不同位置开始的所有异位词。 2. 算法原理 那我们该如…

Android笔记(二十九):利用python自动生成多语言

背景 项目需要支持十几种多语言,而且每个版本的新功能ui都有很多地方需要多语言,如果手动添加非常耗时,于是设计了一个python脚本,通过excel表格转化多语言到项目values/strings文件内 步骤 android工程项目结构 脚本位于langu…

MAUI android连接sqlserver

PDA是android系统,调用金蝶云星空webapi实现仓库收发料,使用读取webapi有些功能无法实现,需要直接读写数据库,读取报错,如图: 用控制台程序测试正常读取 google搜索了一圈, 都需要使用ssl证书才…