摘要:簡要闡述了基于行為變化的研究方法,并通過CPU使用率、內存使用率和程序運行時間三個變量建立監測惡意程序的三維空間模型,講述了三維空間建立的過程和監測進程的方法以及對特殊要求和行為建立的異常處理機制。最后通過實例說明了這個空間模型的可行性。
關鍵詞:惡意程序;信息安全;三維空間;行為變化
0引言
計算機安全,特別是網絡安全狀況不容樂觀,大量的計算機用戶感染過計算機病毒。除了病毒、木馬、蠕蟲等惡意程序,現在的各種軟件、程序也不可避免地存在漏洞,而計算機用戶每天都要不同程度地使用這些軟件、程序,一旦它們出現了運行錯誤,輕則中斷正常的工作或娛樂行為,重則導致用戶大量寶貴數據的丟失,造成極大損失。
因此,如何檢測評價這些軟件、程序,預防和發現惡意程序,對于用戶、整個計算機及網絡的安全極其必要。本文對運行時資源占用超標的程序進行分析,并借助對CPU使用率、內存占用率和運行時間的分析評價,建立起一個三維空間“。J的關系模型,并根據這個模型給程序打分,辨別善惡。對于惡意的以及有危害的行為做出警報,以采取相應的措施。因為病毒等破壞力較大的程序和有漏洞的軟件、程序都有著破壞系統數據的性質,故本文中將兩者統稱為惡意程序,并期望能找到兩者更多的行為特性來指導我們的病毒防護和漏洞軟件的預防。
1 程序的質量和惡意程序
對于軟件設計和編碼來說,任何細小的疏忽以及未知的情況都可能導致軟件、程序存在漏洞。存在漏洞就存在安全隱患。著名的C語言的溢出漏洞大家都知道,可惜還是很容易犯這些錯誤。不過可喜的是,軟件設計人員已經越來越注重軟件的安全問題了。除此之外,惡意程序本身帶有的惡意行為代碼,更是對用戶極大的威脅。因此,對程序進行監測是必要的。要對程序進行性能分析和調試,前提條件是知道好的性能是什么含義,或者是環境中怎樣的性能是合理的。一般我們可以用系統資源的使用情況,即程序運行的主要行為表現來衡量程序性能狀態。
計算機用戶都希望一個軟件或程序能用最少的資源來最好地完成最多的任務。雖然計算機組成比較復雜,但關鍵的系統資源不外乎CPU、內存、磁盤輸入輸出。本文選取CPU使用率和內存占用率作為評價的參數指標,通過比較正常良性程序和惡性程序的執行過程來建立一種機制用以監測新軟件、新程序的運行,一旦這些異常使用CPU和內存的行為發生,可以通過這種機制來發現。該方法能夠適應于病毒的大部分行為監測,也能用于評估新軟件產品。這種機制就是下面所說的三維空間關系模型(圖1)。這個三維空間模型將在下文作粗略介紹,三個變量分別是CPU使用率、內存使用率和監測時間。

1.1空間的向量單位的選取
基于各種計算機本身的硬件環境不一樣,所以我們對于相應CPU和內存參數選取的是百分比。CPU使用率大家非常習慣了,而內存使用率,為被監測的進程的內存使用量與系統物理內存的比值,并用百分數表示。需要指出的是,這里的三個變量都只是正向向量,沒有負向。
1.2異常空間和高危空間以及臨界曲面、正常空間
定義上面的三維空間圖中虛線表示的平面ABC和平面CDE以及平面A’B℃’和平面C’D’E’之間的空間為異常空間,在這個空間分別往CPU軸和Memory軸正方向擴展為高危空間。其中,B、B’、D、D’點是由常規良性程序行為與惡性程序行為比較得到的閥值,結合用戶的實際可以做相應的改動,使得這些空間有更大的靈活性。把前面所述的平面集合粗略地看作一個曲面,這就是臨界曲面的概念。而在整個三維空間中,在異常空間和高危空間之外的就是正常空間,本文中定義的程序正常行為都是在正常空間里運行。
需要說明的是,圖1只是示意圖,實際的臨界曲面可能是任意形狀的,可以是一系列曲面的集合,只要這些曲面有著共同的特征,即滿足閥值需要,能表示定義的閥值。為了容易說明,在下面的案例分析中,將CPU的使用率f(T)和內存的使用率g(T)(均為百分制)滿足下面的條件:600≤f(T)·g(T)≤800的空間稱為異常空間,f(T)·g(T)≥800稱為高危空間,其中參數T為時間,單位為秒。

對于處于異常空間的程序,應密切關注,并根據實際情況采取相應措施;對于處于高危空間的程序,已經嚴重影響到了系統的正常運行,給別的進程的資源需求造成了侵害,屬于惡意程序的范圍了,應當提醒用戶,由用戶決定是否終止這個程序的運行。
2 程序質量的監測
2.1三維空間的建立
建立惡意程序監測的三維空間模型,關鍵是臨界曲面的選取。臨界曲面的選取需要建立在一定的經驗基礎上,在2.2中選取的空間范圍正是通過對常用的軟件、程序以及一些病毒、木馬進行測試,結合使用者自身感受,得出的粗略印象,估算出的一個臨界曲面的范圍。需要說明的是,對這個測試過程有著比較嚴格的流程要求。
一般來說,測試分為六個步驟。其測試流程如圖2所示。
(1)識別關鍵場景:識別對應用程序性能要求苛刻的場景。
(2)識別工作負載:通過關鍵場景來分配全部的工作負載。
(3)識別計數器:識別那些在測試過程中需要收集的計數器。
(4)創建測試用例:根據關鍵場景來創建測試用例。
(5)模擬負載:使用測試工具來模擬測試用例并獲得計數器的結果。
(6)分析結果:分析已獲得的計數器的數據。
為了排除偶然性的實驗結果,應多次檢測,以得到正確的結果,流程中應重復進稈(3)至(6)這四個步驟。因為本文重點不是如何測試,只是為了引出該監測方法,所以只簡單講述測試過程。
2.2臨界曲面的確定
為了減少硬件環境對測試結果的影響,所有獲得的數據都要轉化為百分比。因為系統運行的時候會利用各種資源,而這些資源之間是互相影響的,所以對于測試的結果分析,也要把各種資源一起考慮。我們將結果作簡單的處理,把相同時刻的CPU使用率和內存占用率相乘,期望這個乘積型參數能用于臨界曲面的建立。
在進行各項實驗后,可以觀察到,當這個乘積小于600時,用戶的各項操作、系統的正常進程能比較迅速的完成。比如,用戶可以隨心所欲地同時聽歌曲、文件備份、瀏覽網頁等,即對用戶的響應時間是在用戶可以忍受的范圍之內。當乘積處于600至800之間時,用戶的操作,如打開--+媒體播放器,可能需要10秒鐘左右,聽歌時會比較頻繁地出現不流暢的情況。如果乘積達到了800,甚至800以上,用戶將發現難以移動屏幕上的鼠標。
3 案例分析
下面對實際的情況進行分析,來驗證這個方法的可行性。
3.1對瀏覽器遨游(Maxthon)的分析
進行測試使用的是1.3.3(build 50)Unicode版本的邀游,運行環境為Windows 2000 Professional SP4操作系統。測試過程使用Sysintemals www.sysintemals.com的PsList v1.2 ProcessInformation Lister來獲取Maxthon運行時的CPU使用率和內存占用率。采樣頻率為每2秒采集一次,總共采集了240組數據,將數據處理以百分數形式表示,并將CPU使用率和內存使用率相乘,最后做出了圖3所示的X-Y折線圖。其中,X軸為時間,Y軸為百分比。需要說明的是,為了便于將CPU使用率和內存使用率的乘積在一張圖中表示出來,本文將二者的乘積除以了10,因此,原來定義的臨界曲面的閥值也變化了,60至80之間為異常空間范圍,大于80位高危空間。
測試時按照用戶的通常行為,同時在播放音樂,用Maxthon同時打開十幾個不同站點的網頁,看新聞,搜索等,并且進行歌曲和軟件等下載等任務。整個測試過程中沒有出現異常情況。數據結果如圖3所示。
這個折線散點圖中有三條折線,即CPU使用率(CPUUsage)f(T)變化折線,內存使用率(Memory Usage)g(T)變化折線,和f(T)·g(T)/10的結果(Result)變化折線。

從圖中可以看到,該程序運行的結果(Result)折線都在60閥值下,即在定義的正常空間下。從多次實驗得出的體驗感覺是,在這個閥值下,多道程序運行都比較流暢。
3.2對Ntdll.exe進程的分析
進程Ntdll.exe是后門程序Backdoor/Bionet.318.c2發作后的表現。病毒運行后,ntdll.exe自我復制到系統目錄下,并將其屬性設置為只讀、隱藏;程序將自身加入進程,相應用戶顯示為“系統”,以欺騙用戶;修改注冊表,實現后門程序的開機自啟;開啟并監聽指定TCP端口,偵聽黑客指令。
Bionet在實驗的機器上修改了注冊表,添加了如下鍵值達到自啟動功能:
[HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows
CurrentVersion\\Run]
\"Ntdll exe\"=\"C:\\\\Winnt\\\\System32\\\\Ntdn.exe\"
Bionet運行時,將NtdU.exe復制到了系統目錄System32下。Ntdll.exe名稱與系統重要文件Ntdn.dll極其相似,對用戶有一定的迷惑性。
當中了后門程序Bionet.318.c的時候,開機會自動啟動進程Ntdll.exe,進程Ntdll.exe運行時占用了大量的系統資源,CPU使用率和內存占用率居高不下。如下為用與案例一同樣的方式采集的數據結果圖(圖4):
可以看到進程Ntdll.exe運行的時候,f(t)·g(t)/10的折線大部分時間都是居高不下,遠遠超過高危空間80的范圍,占用了大量的資源,嚴重影響了系統的正常運行。當在Windows任務管理器中結束了這個進程后,系統恢復正常,即圖中顯示的最后一段,CPU和內存使用率都降為零。
3.3對卡巴斯基(Kaspersky Anti-Virus)的分析
卡巴斯基(Kaspersky Anti-Virus)是國際一著名殺毒軟件,測試用的是卡巴斯基反病毒軟件單機版5.0.227。測試時進行電腦的全面殺毒,在這個過程中,采集了卡巴斯基殺毒時使用系統資源的一些情況。

測試方法和環境同上面的兩個例子。數據處理后得出的X-Y折線圖如圖5所示。從圖中可以發現,當卡巴斯基全面掃描電腦時雖然CPU的使用率平均在60%以上,但是它的內存占用率并不高,都低于20%。如果不考慮掃描時運行其它太多程序的話,這個掃描殺毒的過程,我們認為是可以接受的。不過,從圖中開始的部分,可以看到f(t)·g(t)/10的結果(Result)折線遠超出了高危空間的閥值,并且在運行過程中會有一些時候出現在異常空間中。
這并不與這個空間模型的定義矛盾,因為這個空間定義是為了檢驗異常行為,而殺毒軟件全面執行殺毒的過程相對于系統程序和用戶常用軟件運行有著巨大的差別,這也算是一種異常行為。不過我們需要這種異常行為,就像需要變異,雖然變異可能產生不利后代。

4 結束語
通過案例分析可以看出,這個三維空間模型,臨界曲面、異常空間、高危空間的定義是合理的,可以解決一些實際問題,對于病毒,特別是新的病毒,可以基于其異常行為來發現它。但是,對于設計精巧、目的特殊的病毒、木馬等惡意程序,如果CPU使用率和內存占用率都極低,將難以發現。不過,惡意程序既然為惡意程序,其必將有破壞表現的情況,仍可用類似方法來發現并制止它,所以空間模型可以擴展到多維,增加線程、I/O吞吐量、文件讀寫I/O等等監測向量,構建—個全方位、多向量的監測機制,那么防治病毒的成功率會是明顯的。
按照傳統病毒監控的基本模式,應該以阻止帶毒文件的運行(獲取系統控制權)為目的(即前報原則),而我們的方法是基于行為判定的后報技術;對于未知的PE文件病毒,特別是未知的木馬/后門等程序,傳統的檢測方式存在不足,而基于行為判定的方法在這個方面是特長,但是也存在誤報情況。所以如何處理這些檢測方式、如何更好地發展基于行為判定的病毒檢測機制以及提高檢測的正確率還有很長的路需要走。