观成科技:基于深度学习技术的APT加密流量检测与分类检测方案

一、前言

近年来APT攻击的案例屡见不鲜,给国家、企业以及个人的利益造成极大威胁。随着流量加密技术的不断成熟,许多APT组织倾向于将流量加密后进行传输,从而保护传输内容。由于加密流量的实际载荷已被加密,故采用原始的流量检测方法,如深度包检测等方法,对于加密流量而言基本无效。业内尝试采用机器学习算法,通过专家经验手工提取特征的方法进行检测,但该方法存在耗时多、容易出现人为错误等问题,因此,转向深度学习技术,对流量自身进行表征学习,从而提取深度特征进行检测,具有比传统机器学习更优异的检测能力。首先,采用堆叠自编码器算法进行无监督学习,区分APT加密流量与正常流量。其次,对被检测出来的APT加密流量,采用卷积神经网络算法进行多分类任务,确定该流量属于何种APT组织。经过实验验证,该方案可以有效的检测APT加密流量,并且具有很强的APT组织分类能力。

二、问题描述

本方案主要解决两个问题:APT加密流量的识别和APT加密流量所属组织的分类。

  1. APT加密流量的识别

业内普遍的解决方案是采用有监督学习方法,即收集一定数量的正常流量与APT流量,并打上不同的标签,然后采用有监督算法(例如逻辑回归、随机森林等)进行训练,生成模型用于检测。但是在实际应用中,会出现一个问题:由于收集到的APT黑流量数量有限,故而当采集的白流量数量远多于黑流量时,则会由于数据不平衡问题而使检测能力明显下降;若采集与黑流量数量相近的白流量,则可能因为白流量缺乏代表性则造成模型过拟合,进而产生大量误报。

面对这一问题,本方案采用无监督学习的方法进行检测,无监督学习是指无需预先定义目标变量,而是通过算法从无标签的数据中发现隐藏的结构和模式。这里采用无监督学习仅对掌握的APT加密流量进行训练,学习到APT加密流量的特有模式,然后用于流量检测,能够有效的利用现有APT流量,识别现网中的APT流量,同时规避白流量的选择问题。

  1. APT加密流量所属组织的分类

目前针对APT流量分类的研究还处于初级阶段。为了达到精细化检测、将检测出的APT恶意流量所属组织进行分类的目的,本方案采用深度学习多分类技术深入挖掘不同APT组织流量的深层次特征,学习出各自APT组织的流量差异,最终达到利用模型进行精细化分类的目的。

三、原理解释

首先,采用堆叠自编码器算法进行APT加密流量识别。该算法是一种经典的无监督学习算法,它由多个自编码器连接而成,自编码器用于学习数据的低维表示,而堆叠自编码器通过连接多个自编码器从而学习到更高级别的数据特征表示。

自编码器(Auto Encoder,简称AE)的原理图如下:

自编码器主要由编码器(Encoder)、解码器(Decoder)组成,其工作流程为将输入(Input)首先通过编码器进行信息压缩,生成中间变量Code,然后将中间变量通过解码器转换成最终Output,而自编码器训练的过程就是使得输入和输出无限接近的过程。堆叠自编码器的原理如下图所示:

堆叠自动编码器由多个标准自动编码器层堆叠而成。每一层自动编码器包括编码器和解码器两个部分,编码器负责将输入数据映射到隐藏层(低维空间),解码器再将隐藏层的表示解码回原始数据的维度。在训练过程中,首先单独训练每一层自动编码器,待每一层训练完成后,将所有编码器层串联起来形成预训练的深度神经网络。相比于自编码器,堆叠自动编码器能够通过多层非线性变换将原始数据映射到抽象和紧凑的特征空间,进而实现更深层次的特征学习和表示学习。

其次采用卷积神经网络算法进行对APT流量进行分类。卷积神经网络(Convolutional Neural Network,CNN)是一种常用于图像识别、语音识别等领域的深度学习模型。CNN的核心思想是通过卷积操作来提取图像等数据的特征,从而实现对数据的分类、识别等任务。卷积神经网络的流程如下:

CNN基本结构由卷积层、池化层和全连接层组成。其中,卷积层是CNN的核心,它通过滑动一个卷积核在输入数据上进行卷积操作,从而提取出数据的局部特征。卷积操作可以看作是一种特殊的加权求和操作,其中卷积核中的权重参数是通过训练学习得到的。池化层用于对卷积层输出的特征图进行降维处理,从而减少模型参数和计算量。常用的池化方式有最大池化和平均池化两种。全连接层用于将池化层输出的特征向量映射到输出类别上,从而实现对输入数据的分类或识别。CNN的优点在于它能够自动学习和提取数据的特征,无需手动进行特征工程。此外,CNN还具有平移不变性、参数共享等特点,使得模型具有较好的泛化能力和鲁棒性。

四、检测流程

整个方案的检测流程如下图。

  1. 数据预处理:将原始流量的pcap包保留IP报头以及每个IP数据包的前1480字节,IP有效载荷小于1480字节的报文在报文末尾进行补零操作,将这些字节作为模型输入。然后将数据进行归一化,使得所有数据的输入值在[0,1]范围内。
  2. APT加密流量检测:将输入的向量代入训练好的堆叠自编码器模型进行预测,并留下模型预测为异常的疑似APT加密流量。

3)APT组织分类:将疑似APT加密流量代入卷积神经网络模型进行APT组织多分类任务,这里选取了四类主要的APT组织:蔓灵花、海莲花、白象以及蓝宝菇,除此以外,将其它APT组织的所有加密流量汇总成一个单独的类,共计5类。

五、实验结果

APT异常流量识别的实验验证中选择了正常流量1万条,以及APT加密流量2000条,实验结果如下:

准确率

精确率

召回率

F1分数

APT恶意流量识别

0.94

0.93

0.925

0.927

由实验结果可知,该检测三项指标均高于0.9,证明该方案能够有效检测APT加密流量。

APT组织多分类实验中选择了海莲花、蔓灵花、白象、蓝宝菇组织的加密流量各1000条,其他组织的加密流量总计1000条,实验结果如下:

对于多分类任务,一般使用Kappa系数来评判模型优劣,根据上述数据,计算Kappa系数KIA=0.872,根据业内经验,该系数在0.81到1之间说明模型性能极佳,因而该多分类任务具备一定的分类能力。

六、结语

针对传统的检测方式无法检测APT中的加密流量的问题,利用深度学习框架,提取加密流量本身的高级特征,分别完成对于APT加密流量的识别以及APT组织分类的任务,目前来看取得了不错的效果。随着深度学习技术的飞速发展,其提取特征的强大能力给流量安全检测提供很好的解决方案。观成科技团队将持续深入运用深度学习技术,争取在未来能够检测出更多的未知威胁。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

[大模型]Llama-3-8B-Instruct FastApi 部署调用

环境准备 在 Autodl 平台中租赁一个 3090 等 24G 显存的显卡机器,如下图所示镜像选择 PyTorch-->2.1.0-->3.10(ubuntu22.04)-->12.1。 接下来打开刚刚租用服务器的 JupyterLab,并且打开其中的终端开始环境配置、模型下载和运行演示。 pip 换源…

RabbitMQ从入门到入土

同步与异步 同步调用 优势: 时效性强,等到结果后就返回 问题: 扩展性差 性能下降 级联失败问题 异步调用 优势: 耦合度低,扩展性强 无需等待,性能好 故障隔离,下游服务故障不影响上游 缓…

【C语言】12.C语言内存函数

文章目录 1.memcpy使用和模拟实现2.memmove使用和模拟实现3.memset函数的使用4.memcmp函数的使用 memcpy:内存拷贝 memmove:内存移动 memset:内存设置 memcmp:内存比较 1.memcpy使用和模拟实现 memcpy:内存拷贝 void…

Mysql查询分析工具Explain的使用

一、前言 作为一名合格的开发人员,与数据库打交道是必不可少的,尤其是在业务规模和数据体量大规模增长的条件下,应用系统大部分请求读写比例在10:1左右,而且插入操作和一般的更新操作很少出现性能问题,遇到最多的&…

产品人生(12):从“产品生命周期管理”看如何做“职业规划”

产品生命周期管理是产品人常接触的一个概念,它是一种全面管理产品从概念构想、设计开发、生产制造、市场推广、销售使用,直至最终退役的全生命周期过程的方法论和一系列业务流程。下面我们来简单介绍下产品生命周期管理: 概念阶段&#xff1a…

MybatisPlus代码生成器使用案例

针对数据库中的实体类表,自动生成相关的pojo类,mapper,service等 1. Get-Started 基于mybatisplus,idea下载mybatisplus插件 sql文件 /*!40101 SET OLD_CHARACTER_SET_CLIENTCHARACTER_SET_CLIENT */; /*!40101 SET NAMES utf8 …

面试官:MySQL也可以实现分布式锁吗?

首先说结论,可以做,但不推荐做。 我们并不推荐使用数据库实现分布式锁。 如果非要这么做,实现大概有两种。 1、锁住Java的方法,借助insert实现 如何用数据库实现分布式锁呢,简单来说就是创建一张锁表,比…

PB案例学习笔记-19制作一个图片按钮

写在前面 这是PB案例学习笔记系列文章的第19篇,该系列文章适合具有一定PB基础的读者。 通过一个个由浅入深的编程实战案例学习,提高编程技巧,以保证小伙伴们能应付公司的各种开发需求。 文章中设计到的源码,小凡都上传到了gite…

MAC认证

简介 MAC认证是一种基于接口和MAC地址对用户的网络访问权限进行控制的认证方法,它不需要用户安装任何客户端软件。设备在启动了MAC认证的接口上首次检测到用户的MAC地址以后,即启动对该用户的认证操作。认证过程中,不需要用户手动输入用户名…

Leetcode3174. 清除数字

Every day a Leetcode 题目来源:3174. 清除数字 解法1:栈 用栈模拟,遇到数字就弹出栈顶,遇到字母就插入栈。 最后留在栈里的就是答案。 代码: /** lc appleetcode.cn id3174 langcpp** [3174] 清除数字*/// lc c…

如何做好期货投资?

期货,这个词对于很多人来说可能还是个陌生的词汇,但是,随着经济的发展和人们对金融投资的需求增加,期货投资也变得越来越受到关注。那么,如何才能做好期货投资呢? 首先,了解期货的基本知识是非…

现货黄金交易多少克一手?国内外情况大不同

如果大家想参与国际市场上的现货黄金交易,就应该从它交易细则的入手,先彻底认识这个品种,因为它是来自欧美市场的投资方式,所以无论是从合约的计的单位,计价的货币,交易的具体时间,以及买卖过程…

word空白页删除不了怎么办?

上方菜单栏点击“视图”,下方点击“大纲视图”。找到文档分页符的位置。将光标放在要删除的分节符前,按下键盘上的“Delet”键删除分页符。

Filament 【表单操作】修改密码

场景描述: 新增管理员信息时需要填写密码,修改管理员信息时密码可以为空(不修改密码),此时表单中密码输入有冲突,需要对表单中密码字段进项条件性的判断,使字段在 create 操作时为必需填写&…

服务器部署spring项目jar包使用bat文件,省略每次输入java -jar了

echo off set pathC:\Program Files\Java\jre1.8.0_191\bin START "YiXiangZhengHe-8516" "%path%/java" -Xdebug -jar -Dspring.profiles.activeprod -Dserver.port8516 YiXiangZhengHe-0.0.1-SNAPSHOT.jar 将set path后面改成jre的bin文件夹 START 后…

在微信小程序中安装和使用vant框架

目录 1、初始化项目2、安装vant相关依赖3、修改 app.json4、修改 project.config.json5、构建npm6、使用示例 本文将详细介绍如何在微信小程序中安装并使用vant框架~ 开发工具:微信开发者工具 1、初始化项目 从终端进入小程序项目目录,执行…

一个数据查询导出工具

数据查询导出工具 安装说明 安装完成后在桌面会创建“数据查询导出工具”的查询工具。 程序初始化 配置数据库连接 首次运行,请先配置数据库连接 点击“数据库连接”后,会出现下面的窗体,要求输入维护工程师密码。(维护工程师密码…

VScode如何调试

调试 1.打断点 1.点击调试按钮 3.点击下拉选择环境node,点击绿三角选择输入调试的命令(具体命令查看package.json中scripts中的哪一个命令和运行的文件),点击右边的设置(可以直接跳下面第八步!&#xff…

实体类status属性使用枚举类型的步骤

1. 问题引出 当实体类的状态属性为Integer类型时,容易写错 2. 初步修改 把状态属性强制为某个类型,并且自定义一些可供选择的常量。 public class LessonStatus {public static final LessonStatus NOT_LEARNED new LessonStatus(0,"未学习"…

SQL 数据库学习 Part 1

数据和信息 信息 信息是客观存在的,是关于现实世界事物的存在方式或运动状态 数据 数据是用来记录信息的可识别的符号,是信息的具体表现形式 数据和信息的联系 数据是信息的符号表示或载体信息则是数据的内涵,是对数据的语义解释 数据…