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

加密恶意流量检测

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

摘录自: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.rhkb.cn/news/133012.html

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

相关文章

ZABBIX 6.4官方安装文档

一、官网地址 Zabbix:企业级开源监控解决方案 二、下载 1.选择您Zabbix服务器的平台 2. Install and configure Zabbix for your platform a. Install Zabbix repository # rpm -Uvh https://repo.zabbix.com/zabbix/6.4/rhel/8/x86_64/zabbix-release-6.4-1.el8…

【实战】H5 页面同时适配 PC 移动端 —— 旋转横屏

文章目录 一、场景二、方案三、书单推荐01 《深入实践Kotlin元编程》02 《Spring Boot学习指南》03 《Kotlin编程实战》 一、场景 一个做数据监控的单页面,页面主要内容是一个整体必须是宽屏才能正常展示,这时就不能用传统的适配方案了,需要…

前端设计模式基础笔记

前端设计模式是指在前端开发中经常使用的一些解决问题的模式或思想。它们是经过实践证明的最佳实践,可以帮助我们更好地组织和管理我们的代码。 一、单例模式(Singleton Pattern) 单例模式是一种创建型模式,它保证一个类只有一个…

mysql远程连接失败

先上结论,只提出最容易忽略的地方 服务器是阿里云、腾讯云等平台,平台本身自带的防火墙没有开启iptables规则中禁用了3306,即使你根本没有启用iptables服务 第二条是最离谱的 从这里可以看到,我服务器并未启用 iptables 服务 但…

Java8实战-总结24

Java8实战-总结24 用流收集数据收集器简介收集器用作高级归约预定义收集器 用流收集数据 流可以用类似于数据库的操作帮助你处理集合。可以把Java 8的流看作花哨又懒惰的数据集迭代器。它们支持两种类型的操作:中间操作(如filter或map)和终端操作(如count、findFir…

互联网医院App开发:构建医疗服务的技术指南

互联网医院App的开发是一个复杂而具有挑战性的任务,但它也是一个充满潜力的领域,可以为患者和医疗专业人员提供更便捷的医疗服务。本文将引导您通过一些常见的技术步骤来构建一个简单的互联网医院App原型,以了解该过程的基本概念。 技术栈选…

JWT 安全及案例实战

文章目录 一、JWT (json web token)安全1. Cookie(放在浏览器)2. Session(放在服务器)3. Token4. JWT (json web token)4.1 头部4.1.1 alg4.1.2 typ 4.2 payload4.3 签名4.4 通信流程 5. 防御措施 二、漏洞实例(webgoa…

【TCPDF】使用TCPDF导出PDF文件

目录 一、安装TCPDF类库 二、安装字体 三、使用TCPDF导出PDF文件 目的:PHP通过TCPDF类库导出文件为PDF。 开发语言及类库:ThinkPHP、TCPDF 效果图如下 一、安装TCPDF类库 在项目根目录使用composer安装TCPDF,安装完成后会在vendor目录下…

开发调试:提高代码质量与开发效率的关键步骤

💂 个人网站:【工具大全】【游戏大全】【神级源码资源网】🤟 前端学习课程:👉【28个案例趣学前端】【400个JS面试题】💅 寻找学习交流、摸鱼划水的小伙伴,请点击【摸鱼学习交流群】 引言 在现代软件开发中…

Element Plus中Cascader 级联选择器(选择任意一级选项 - 更改下拉框选中方式)

组件原始选中&#xff1a;选择文字前面的单选按钮 现在更改为&#xff1a;隐藏单选按钮&#xff0c;点击文字进行选中 ① 给弹出内容的自定义类名(popper-class)&#xff1a; <el-cascader v-model"areaValue":options"areaOptions" :props"areaP…

ubuntu 18.04 搭建isaacgym学习环境,并运行legged_gym

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、安装anaconda二、使用conda创建python版本为3.8的虚拟环境三、安装pytorch四、isaac-gym下载安装五、安装legged_gym总结 前言 系统&#xff1a;ubuntu18.…

IntelliJ IDEA使用_常规设置

文章目录 版本说明主题设置取消检查更新依赖自动导入禁止import xxx.*、允许import内部类显示行号、方法分割线、空格代码提示&#xff08;匹配所有字母&#xff09;自定义注释颜色添加头部注释自定义字体设置字符编码关联本地GitJDK编译版本Maven配置Tomcat配置代码注释设置头…

Jmeter系列-测试计划详细介绍(3)

测试计划的作用 测试计划描述了 Jmeter 在执行时&#xff0c;一系列的步骤一个完整的测试计划包含了一个或多个【线程组、逻辑控制器、采样器、监听器、定时器、断言和配置元素】 Jmeter原件和组件的介绍 基本元件的介绍 多个类似功能组件的 容器&#xff08;类似于类&…

.net 7 隐藏swagger的api

1.写一个隐藏接口特性表示 using Microsoft.AspNetCore.Mvc.ApiExplorer; using Microsoft.OpenApi.Models; using Swashbuckle.AspNetCore.SwaggerGen;using System.Web.Http.Description;namespace JiaTongInterface.Filter {public class SwaggerApi : Swashbuckle.AspNet…

Leetcode150. 逆波兰表达式求值

力扣&#xff08;LeetCode&#xff09;官网 - 全球极客挚爱的技术成长平台 给你一个字符串数组 tokens &#xff0c;表示一个根据 逆波兰表示法 表示的算术表达式。 请你计算该表达式。返回一个表示表达式值的整数。 注意&#xff1a; 有效的算符为 、-、* 和 / 。每个操作数&a…

通过篡改cred结构体实现提权利用

前言 在之前的HeapOverflow文章中&#xff0c;作者还构造了任意地址读写的操作&#xff0c;使用了任意地址读写去进行提权&#xff0c;还挺有意思的&#xff0c;记录一下如何利用任意地址读写进行提权。 作者利用任意地址读写分别改写modprobe_path以及cred结构体去实现提权的…

自动化运维工具Ansible教程(一)【入门篇】

文章目录 前言Ansible 入门到精通入门篇进阶篇精通篇入门篇1. Ansible 简介2. 安装 Ansible1. 通过包管理器安装&#xff1a;2. 通过源码安装&#xff1a; 3. Ansible 的基本概念和核心组件4. 编写和运行第一个 Ansible Playbook5. 主机清单和组织结构主机清单组织结构 6. Ansi…

通过finalshell快速在ubuntu上安装jdk1.8

这篇文章主要介绍一下怎么通过finalshell连接ubuntu&#xff0c;然后在ubuntu上安装jdk1.8&#xff0c;让不熟悉linux操作系统的童鞋也能快速地完成安装。 目录 一、准备一台虚拟机 二、安装finalshell远程连接工具 三、获取ubuntu虚拟机的ip地址 四、通过finalshell连接u…

C语言 —— 初步入门知识(第一个C语言程序、数据类型、变量常量、字符与注释)

本篇文章介绍C语言的基础知识&#xff0c;使读者对C语言能够有一个大概的认识. 不会细写每一个知识点, 但是能够入门C语言, 进行初步的C语言代码阅读. 首先, 什么是语言? 对于人和人之间进行交流的语言, 我们知道, 可以通过汉语, 英语, 日语等语言进行交流. 那么对于人和计算…

SAP GUI 8.0 SMARTFORMS 使用SCR LEGACY TEXT EDITOR GUI8.00 禁用MSWORD

Smartforms使用WORD作为编辑器是很痛苦的一个事情&#xff0c;不支持拖拽&#xff0c;还很慢&#xff0c;各种不习惯&#xff0c;总之是非常的不舒服&#xff0c;能导致失眠。 在S/4以前的系统&#xff0c;可以使用TCODE I18N或者程序RSCPSETEDITOR或者暴力党直接改表TCP0I来…