前言
本篇論文是一篇早期的針對主機入侵檢測的論文汁雷,其中一些思想具有開創(chuàng)性。
入侵檢測的目標
作者認為基于先驗知識的入侵檢測是不完備的薪缆,一個好的入侵檢測系統(tǒng)更應當和生物的免疫系統(tǒng)相近渔呵,即要滿足以下三點目標
- 檢測系統(tǒng)應當是分布式的且每個檢測系統(tǒng)應當具有特例性。生物的身體每個部分的功能不同正歼,其對于異常的判定也不盡相同,在計算機系統(tǒng)中拷橘,我們不應當用一個統(tǒng)一的標準去做用于所有的進程,而是更應當根據(jù)每個進程本身的運行特性去制定一個相應的檢測規(guī)則喜爷。
- 檢測系統(tǒng)是基于概率的冗疮,并且是實時的在線的。實時性應當是入侵檢測系統(tǒng)中最重要的一環(huán)檩帐。
- 就像生物的免疫系統(tǒng)一樣术幔,識別出的入侵行為,不應當僅局限于之前見到過的(即不應當完全是基于先驗知識的)而是要對新出現(xiàn)的異常行為也能夠做出反應湃密。
如何刻畫進程行為诅挑?
想要做到上述的目標,首先我們要轉(zhuǎn)變思路泛源,即從如何定義異常轉(zhuǎn)化為如何定義正常拔妥。在此之前我們首先要解決的,是如何刻畫一個進程的行為达箍。我們知道進程的行為及其復雜没龙,我們不可能考慮所有的行為。因此我們關(guān)注的是其中一些比較重要的操作缎玫,操作系統(tǒng)分為內(nèi)核態(tài)和用戶態(tài)硬纤,執(zhí)行特權(quán)指令(系統(tǒng)調(diào)用)會陷入內(nèi)核態(tài)。我們認為在用戶態(tài)下的操作是相對安全的赃磨,因此重點關(guān)注于一個進程的系統(tǒng)調(diào)用序列筝家。與多數(shù)使用數(shù)據(jù)挖掘方法尋找一個重復出現(xiàn)的pattern
相比,作者采用了另一種方法邻辉,即觀察到在一個局部范圍內(nèi)溪王,這些系統(tǒng)調(diào)用出現(xiàn)的次序通常是相對固定的腮鞍。
于是作者根據(jù)正在運行的進程中短時間的系統(tǒng)調(diào)用序列來定義正常行為,比如設(shè)定這些序列的長度為6
在扰。然后利用這些長度為6
的系統(tǒng)調(diào)用序列構(gòu)建該進程的正常行為數(shù)據(jù)庫缕减,之后該數(shù)據(jù)庫即可用于監(jiān)視該進程的后續(xù)行為。正常的系統(tǒng)調(diào)用序列構(gòu)成的數(shù)據(jù)庫指明了該進程的正常行為模式芒珠,異常序列指示正在運行的進程中存在異常桥狡。
- 構(gòu)建進程正常行為數(shù)據(jù)庫
假設(shè)給我們一個正常的的系統(tǒng)調(diào)用序列,其長度L
吧碾,我們可以采用滑動窗口的方法生成局部的系統(tǒng)調(diào)用序列宪祥,假設(shè)我們的窗口尺寸為K+1
,那我們每次可以提取窗口最左端的系統(tǒng)調(diào)用,以及緊隨其后的
1
到K
個系統(tǒng)調(diào)用作為一個局部系統(tǒng)調(diào)用序列院促,然后將窗口向右移動一個位置來獲取下一個局部系統(tǒng)調(diào)用序列娜汁。
Example:
整個序列長度為L=8
,K=3
如下
[open, read, mmap, mmap, open, getrlimit, mmap, close]
則我們可以生成如下的局部系統(tǒng)調(diào)用序列call
表示首個系統(tǒng)調(diào)用,position1
表示跟隨其后第一個位置上的系統(tǒng)調(diào)用嫂易,以此類推直到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 |
現(xiàn)在假設(shè)我們用以上的局部系統(tǒng)調(diào)用構(gòu)建好了反應進程正常行為的特征庫,現(xiàn)在進程生成了長度為
L=8
的另一串系統(tǒng)調(diào)用序列
[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 |
通過對比正常行為特征的數(shù)據(jù)庫掐禁,我們可以發(fā)現(xiàn)上圖表格有
4
處系統(tǒng)調(diào)用在與相應位置的正常行為產(chǎn)生偏差怜械,我們記錄這個數(shù)量為4
,同時我們又可以通過數(shù)學方法計算出最多有
種可能的不匹配序列,這里L
表示用于檢測的整個序列長度傅事。
當K=3
以及L=8
時缕允,共存在18
種不正常的局部系統(tǒng)調(diào)用序列,則我們可以計算出共有該長度為L=8
的系統(tǒng)序列的種異常比例為4/18=22%
蹭越,我們可以定義一個閥值來判定是否產(chǎn)生了異常障本。