• 沒有找到結果。

執行時間負擔(Runtime overhead)

第五章、 系統架構

6.2 執行時間負擔(Runtime overhead)

本節將評估我們AMA-IPS系統之時間負擔(runtime overhead)。本系統的主要 時間負擔(runtime overhead)來自於狀態的轉換。我們設計第一個測試程式為一個 複製檔案的程式,開啟一個文字檔並將內容複製到另一個檔案,程式執行時每個 read,write系統呼叫皆會造成監督此程式之FSM實體的狀態轉換,得到結果如圖

35。不論複製的檔案大小多大,系統花在狀態轉換的時間為固定值,約為1300 μs,因此當複製的檔案越大,程式花在作I/O的時間越長,則花在做狀態轉換上 的比例越小,整體的時間負擔(runtime overhead)便會越小,如表4所示。

0

執行時間(μ second)

未安裝AMA 安裝AMA

圖 35 檔案大小與執行時間關係圖 表 4 時間負擔(runtime overhead)關係表

檔案大小 512k 1M 2M 3M 4M 5M

增 加 的 時 間 負 擔 (runtime overhead) 百分比

35.8% 17.7% 10.6% 8.3% 5.5% 3.5%

然而第一個測試程式與攻擊樣板的組合可說是最差狀況。通常使用者在制定 攻擊樣板時,攻擊樣板上的關鍵系統呼叫都是極少發生的,因為一般程式執行 時,跟正常行為比起來,攻擊行為的比率非常低,並不會像上例一樣頻繁的做狀

態轉換。因此在第二個測試程式中,我們將實驗複製2M檔案之程式,改變其行 為條件與攻擊樣板,降低系統呼叫中會造成樣板狀態轉換之系統呼叫所佔的百分 比,結果如圖36。可以看出造成樣板的狀態轉換之系統呼叫所佔的百分比在10%

以下時,時間負擔(runtime overhead)幾近於0。

0.00%

時間負擔(runtime overhead)

圖 36 狀態轉換百分比與時間負擔(runtime overhead)關係圖

一般程式正常執行時,狀態轉換的百分比是很低的,我們以實際上的應用程 式作實驗,此程式為一個搜尋檔案內資訊、並做分析統計的perl程式,因為大部 分的時間在做CPU的運算,屬於CPU-Bound類型的程式,甚少執行系統呼叫、意 即甚少發生FSM實體的狀態轉換。其結果在無安裝本系統的情況下,平均執行 時間為4.982681秒,而載入本系統後的平均執行時間為4.954225秒,時間負擔 (runtime overhead)只有0.5%。

以上實驗皆是系統中只有單一程式被單一攻擊樣板監督的情形,接著我們以 複製2M檔案之程式,實驗攻擊樣板數目增加與同時執行多個受監督之程式的情 形。圖37為單一程式被多個攻擊樣板監督之關係圖,可看出即使程式符合多個不 同的攻擊樣板之監督條件,同時被多個攻擊樣板監督,只要程式仍是正常執行,

對於執行時之時間負擔(runtime overhead)仍能維持在一定的平穩狀態,不會因同 時符合多個監督條件而造成程式執行的效率變差。這是因為即使程式符合多個監 督條件而受監督,但在正常執行下並不會造成多個樣板同時做頻繁的狀態轉換,

因此可維持穩定的低執行時間負擔(runtime overhead)。

圖38為同時執行數個需被監督的程式時,時間負擔(runtime overhead)之變化 情形。可看出同時執行多個受監督的程式時,執行時間負擔(runtime overhead) 亦能維持穩定,主要原因是攔截到某個程式發出的系統呼叫時,尋找監督此程式 的FSM實體是採用hash的方式來搜尋,因此同時多個程式執行只會增加尋找對應 之FSM實體的時間,這部份的時間非常少,因此可維持穩定的低執行時間負擔 (runtime overhead)。

0.00%

時間負擔(runtime overhead)

圖 37 監督樣板數與時間負擔(runtime overhead)關係圖

0.00%

時間負擔(runtime overhead)

圖 38 process 數目與時間負擔(runtime overhead)關係圖

最後我們實驗同時多個程式執行,且每個程式皆被多個攻擊樣板所監督的情 形,如圖39。圖中每一線段代表同時執行之程式數目,可見在如此複雜的監督情 形下,我們的系統仍能維持穩定的低時間負擔(runtime overhead),並不會因程式 數目增多與樣板數增加而造成執行效率不彰。

時間負擔(runtime overhead)

5 processes 10 processes

圖 39 受監督程式數與樣板數之關係圖

setreuid(0,0) , open(“/etc/passwd") , write(“/etc/passwd")

在pH IDS的偵測方式中,假設window size為3,我們只要在其中插入一個 no-op的系統呼叫,例如read,使得攻擊的系統呼叫順序如下:

setreuid(0,0), open(“/etc/passwd") , read(“/etc/passwd"),write(“/etc/passwd") 便可以逃過pH IDS的偵測,因為當window size為n時,插入若干的no-op的系統呼