论文阅读-A Sense of Self for Unix Pr

2020-04-21  本文已影响0人  LENN123

前言

本篇论文是一篇早期的针对主机入侵检测的论文,其中一些思想具有开创性。

入侵检测的目标

作者认为基于先验知识的入侵检测是不完备的,一个好的入侵检测系统更应当和生物的免疫系统相近,即要满足以下三点目标

如何刻画进程行为?

想要做到上述的目标,首先我们要转变思路,即从如何定义异常转化为如何定义正常。在此之前我们首先要解决的,是如何刻画一个进程的行为。我们知道进程的行为及其复杂,我们不可能考虑所有的行为。因此我们关注的是其中一些比较重要的操作,操作系统分为内核态和用户态,执行特权指令(系统调用)会陷入内核态。我们认为在用户态下的操作是相对安全的,因此重点关注于一个进程的系统调用序列。与多数使用数据挖掘方法寻找一个重复出现的pattern相比,作者采用了另一种方法,即观察到在一个局部范围内,这些系统调用出现的次序通常是相对固定的。
于是作者根据正在运行的进程中短时间的系统调用序列来定义正常行为,比如设定这些序列的长度为6。然后利用这些长度为6的系统调用序列构建该进程的正常行为数据库,之后该数据库即可用于监视该进程的后续行为。正常的系统调用序列构成的数据库指明了该进程的正常行为模式,异常序列指示正在运行的进程中存在异常。

Example:
整个序列长度为L=8, K=3如下
[open, read, mmap, mmap, open, getrlimit, mmap, close]
则我们可以生成如下的局部系统调用序列call表示首个系统调用,position1表示跟随其后第一个位置上的系统调用,以此类推直到position3

call position1 position2 position3
open read mmap mmap
getrlimit mmap close
read mmap mmap open
mmap mmap open getrlimit
open getrlimit mmap
open getrlimit mmap
close
getrlimit mmap close
close

现在假设我们用以上的局部系统调用构建好了反应进程正常行为的特征库,现在进程生成了长度为L=8的另一串系统调用序列
[open, read, mmap, open, open, getrlimit, mmap, close]
我们可以用如上相同的滑动窗口方法生成以下局部子序列

call position1 position2 position3
open read mmap *open
*open *getrlimit mmap
read mmap *open open
mmap open open getrlimit
close
getrlimit mmap close
close

通过对比正常行为特征的数据库,我们可以发现上图表格有4处系统调用在与相应位置的正常行为产生偏差,我们记录这个数量为4,同时我们又可以通过数学方法计算出最多有
K*(L-K)+(K-1)+(K-2)+....+1 = K(L-(K+1)/2)
种可能的不匹配序列,这里L表示用于检测的整个序列长度。
K=3以及L=8时,共存在18种不正常的局部系统调用序列,则我们可以计算出共有该长度为L=8的系统序列的种异常比例为4/18=22%,我们可以定义一个阀值来判定是否产生了异常。

上一篇 下一篇

猜你喜欢

热点阅读