基于LSTM(Long Short-Term Memory)的实时异常检测

众所周知,LSTM很擅长时间序列数据的处理,在语音识别、语言建模、翻译,图像字幕等领域都取得了巨大的成功。但是无论是应用还是顶会上,我们都很少能够看到深度学习在网络安全领域的应用。个人感觉网络安全领域目前还处于用统计方法和监督学习进行研究的阶段,但是矛盾的是,现实里我们很难知道数据里面有没有未知威胁,并且这个时候数据是没有标签的。所以我们尝试用LSTM来处理安全数据集,然后发现效果很不错并且不需要数据缓存。

1 LSTM简介

我们通常说的LSTM其实是RNN的一种变体,为了解决时间序列的长依赖问题,即能够将以前的信息连接到当前任务。下图是具有N层的LSTM的网络结构:

这张图表示是在m个时刻LSTM的状态,为了体现LSTM的高大上,所以画了这个图(手动狗头)。我们下面把它简化成一个cell:

一个cell的重点在于三个门:输入门,遗忘门,输出门。图里的g,f都表示激励函数,tanh,sigmod,ReLU等。在我们的实例中,g表示sigmod,f表示tanh。

输入门

输入门有一个g函数来决定哪些信息需要更新,一个f函数来决定生成一个向量,也就是备选的用来更新的内容。

遗忘门

cell会选择是否遗忘上一步cell保存的状态,用遗忘门来完成。如果遗忘门输出1表示完全保留,输出0表示遗忘。(或许应该叫unforget Gate)

输出门

输出门决定输出什么值,这个输出是基于我们的细胞状态。首先,我们运行一个 g 函数来确定细胞状态的哪个部分将输出出去。接着,我们把细胞状态通过 f 进行处理(得到一个在 -1 到 1 之间的值)并将它和 sigmoid 门的输出相乘,最终我们仅仅会输出我们确定输出的那部分。

了解了概念之后,我们可以看一下公式加深理解:


 

2 数据集介绍

我们实验用的是公开的CERT的数据集,接触过内部威胁的应该都知道这个数据集。就不详细介绍了,总之是516天内的4000名用户的行为日志,行为包括:使用电脑、系统登录登出、文件操作、邮件、HTTP。

PS:里面还有很多很有意思的东西可以挖掘,除了行为之外,还有对每个用户进行了心理人格进行了分析,这也是一个很有价值的研究点。以及还有一些用户的分类信息,比如项目、部门、优先级等。

3 异常检测流程

3.1 应用深度学习最重要的一部就是把原始的数据变成能够输入模型的数字特征。为了实现这个,我把数据集中的用户按天排成时间序列,然后给一个时间窗口(24小时),把这个时间窗口内的用户活动按(使用电脑、系统登录登出、文件操作、邮件、HTTP)分别计数,得到一个计数数字特征。考虑到角色的变更,我们把用户的分类属性信息也考虑进去了。

3.2 接着把数字技术特征输入LSTM模型中,得到下一天的输出,这个时候用户的异常是条件概率。

ps: 实验结果和具体的行为心理模型等论文中了就贴出来

发布了30 篇原创文章 · 获赞 17 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/selinaqqqq/article/details/89307314