摘要:簡要闡述了基于行為變化的研究方法,并通過CPU使用率、內(nèi)存使用率和程序運行時間三個變量建立監(jiān)測惡意程序的三維空間模型,講述了三維空間建立的過程和監(jiān)測進程的方法以及對特殊要求和行為建立的異常處理機制。最后通過實例說明了這個空間模型的可行性。
關(guān)鍵詞:惡意程序;信息安全;三維空間;行為變化
0引言
計算機安全,特別是網(wǎng)絡(luò)安全狀況不容樂觀,大量的計算機用戶感染過計算機病毒。除了病毒、木馬、蠕蟲等惡意程序,現(xiàn)在的各種軟件、程序也不可避免地存在漏洞,而計算機用戶每天都要不同程度地使用這些軟件、程序,一旦它們出現(xiàn)了運行錯誤,輕則中斷正常的工作或娛樂行為,重則導(dǎo)致用戶大量寶貴數(shù)據(jù)的丟失,造成極大損失。
因此,如何檢測評價這些軟件、程序,預(yù)防和發(fā)現(xiàn)惡意程序,對于用戶、整個計算機及網(wǎng)絡(luò)的安全極其必要。本文對運行時資源占用超標(biāo)的程序進行分析,并借助對CPU使用率、內(nèi)存占用率和運行時間的分析評價,建立起一個三維空間“。J的關(guān)系模型,并根據(jù)這個模型給程序打分,辨別善惡。對于惡意的以及有危害的行為做出警報,以采取相應(yīng)的措施。因為病毒等破壞力較大的程序和有漏洞的軟件、程序都有著破壞系統(tǒng)數(shù)據(jù)的性質(zhì),故本文中將兩者統(tǒng)稱為惡意程序,并期望能找到兩者更多的行為特性來指導(dǎo)我們的病毒防護和漏洞軟件的預(yù)防。
1 程序的質(zhì)量和惡意程序
對于軟件設(shè)計和編碼來說,任何細小的疏忽以及未知的情況都可能導(dǎo)致軟件、程序存在漏洞。存在漏洞就存在安全隱患。著名的C語言的溢出漏洞大家都知道,可惜還是很容易犯這些錯誤。不過可喜的是,軟件設(shè)計人員已經(jīng)越來越注重軟件的安全問題了。除此之外,惡意程序本身帶有的惡意行為代碼,更是對用戶極大的威脅。因此,對程序進行監(jiān)測是必要的。要對程序進行性能分析和調(diào)試,前提條件是知道好的性能是什么含義,或者是環(huán)境中怎樣的性能是合理的。一般我們可以用系統(tǒng)資源的使用情況,即程序運行的主要行為表現(xiàn)來衡量程序性能狀態(tài)。
計算機用戶都希望一個軟件或程序能用最少的資源來最好地完成最多的任務(wù)。雖然計算機組成比較復(fù)雜,但關(guān)鍵的系統(tǒng)資源不外乎CPU、內(nèi)存、磁盤輸入輸出。本文選取CPU使用率和內(nèi)存占用率作為評價的參數(shù)指標(biāo),通過比較正常良性程序和惡性程序的執(zhí)行過程來建立一種機制用以監(jiān)測新軟件、新程序的運行,一旦這些異常使用CPU和內(nèi)存的行為發(fā)生,可以通過這種機制來發(fā)現(xiàn)。該方法能夠適應(yīng)于病毒的大部分行為監(jiān)測,也能用于評估新軟件產(chǎn)品。這種機制就是下面所說的三維空間關(guān)系模型(圖1)。這個三維空間模型將在下文作粗略介紹,三個變量分別是CPU使用率、內(nèi)存使用率和監(jiān)測時間。
1.1空間的向量單位的選取
基于各種計算機本身的硬件環(huán)境不一樣,所以我們對于相應(yīng)CPU和內(nèi)存參數(shù)選取的是百分比。CPU使用率大家非常習(xí)慣了,而內(nèi)存使用率,為被監(jiān)測的進程的內(nèi)存使用量與系統(tǒng)物理內(nèi)存的比值,并用百分?jǐn)?shù)表示。需要指出的是,這里的三個變量都只是正向向量,沒有負(fù)向。
1.2異??臻g和高危空間以及臨界曲面、正常空間
定義上面的三維空間圖中虛線表示的平面ABC和平面CDE以及平面A’B℃’和平面C’D’E’之間的空間為異??臻g,在這個空間分別往CPU軸和Memory軸正方向擴展為高??臻g。其中,B、B’、D、D’點是由常規(guī)良性程序行為與惡性程序行為比較得到的閥值,結(jié)合用戶的實際可以做相應(yīng)的改動,使得這些空間有更大的靈活性。把前面所述的平面集合粗略地看作一個曲面,這就是臨界曲面的概念。而在整個三維空間中,在異??臻g和高危空間之外的就是正??臻g,本文中定義的程序正常行為都是在正??臻g里運行。
需要說明的是,圖1只是示意圖,實際的臨界曲面可能是任意形狀的,可以是一系列曲面的集合,只要這些曲面有著共同的特征,即滿足閥值需要,能表示定義的閥值。為了容易說明,在下面的案例分析中,將CPU的使用率f(T)和內(nèi)存的使用率g(T)(均為百分制)滿足下面的條件:600≤f(T)·g(T)≤800的空間稱為異??臻g,f(T)·g(T)≥800稱為高??臻g,其中參數(shù)T為時間,單位為秒。
對于處于異??臻g的程序,應(yīng)密切關(guān)注,并根據(jù)實際情況采取相應(yīng)措施;對于處于高??臻g的程序,已經(jīng)嚴(yán)重影響到了系統(tǒng)的正常運行,給別的進程的資源需求造成了侵害,屬于惡意程序的范圍了,應(yīng)當(dāng)提醒用戶,由用戶決定是否終止這個程序的運行。
2 程序質(zhì)量的監(jiān)測
2.1三維空間的建立
建立惡意程序監(jiān)測的三維空間模型,關(guān)鍵是臨界曲面的選取。臨界曲面的選取需要建立在一定的經(jīng)驗基礎(chǔ)上,在2.2中選取的空間范圍正是通過對常用的軟件、程序以及一些病毒、木馬進行測試,結(jié)合使用者自身感受,得出的粗略印象,估算出的一個臨界曲面的范圍。需要說明的是,對這個測試過程有著比較嚴(yán)格的流程要求。
一般來說,測試分為六個步驟。其測試流程如圖2所示。
(1)識別關(guān)鍵場景:識別對應(yīng)用程序性能要求苛刻的場景。
(2)識別工作負(fù)載:通過關(guān)鍵場景來分配全部的工作負(fù)載。
(3)識別計數(shù)器:識別那些在測試過程中需要收集的計數(shù)器。
(4)創(chuàng)建測試用例:根據(jù)關(guān)鍵場景來創(chuàng)建測試用例。
(5)模擬負(fù)載:使用測試工具來模擬測試用例并獲得計數(shù)器的結(jié)果。
(6)分析結(jié)果:分析已獲得的計數(shù)器的數(shù)據(jù)。
為了排除偶然性的實驗結(jié)果,應(yīng)多次檢測,以得到正確的結(jié)果,流程中應(yīng)重復(fù)進稈(3)至(6)這四個步驟。因為本文重點不是如何測試,只是為了引出該監(jiān)測方法,所以只簡單講述測試過程。
2.2臨界曲面的確定
為了減少硬件環(huán)境對測試結(jié)果的影響,所有獲得的數(shù)據(jù)都要轉(zhuǎn)化為百分比。因為系統(tǒng)運行的時候會利用各種資源,而這些資源之間是互相影響的,所以對于測試的結(jié)果分析,也要把各種資源一起考慮。我們將結(jié)果作簡單的處理,把相同時刻的CPU使用率和內(nèi)存占用率相乘,期望這個乘積型參數(shù)能用于臨界曲面的建立。
在進行各項實驗后,可以觀察到,當(dāng)這個乘積小于600時,用戶的各項操作、系統(tǒng)的正常進程能比較迅速的完成。比如,用戶可以隨心所欲地同時聽歌曲、文件備份、瀏覽網(wǎng)頁等,即對用戶的響應(yīng)時間是在用戶可以忍受的范圍之內(nèi)。當(dāng)乘積處于600至800之間時,用戶的操作,如打開--+媒體播放器,可能需要10秒鐘左右,聽歌時會比較頻繁地出現(xiàn)不流暢的情況。如果乘積達到了800,甚至800以上,用戶將發(fā)現(xiàn)難以移動屏幕上的鼠標(biāo)。
3 案例分析
下面對實際的情況進行分析,來驗證這個方法的可行性。
3.1對瀏覽器遨游(Maxthon)的分析
進行測試使用的是1.3.3(build 50)Unicode版本的邀游,運行環(huán)境為Windows 2000 Professional SP4操作系統(tǒng)。測試過程使用Sysintemals www.sysintemals.com的PsList v1.2 ProcessInformation Lister來獲取Maxthon運行時的CPU使用率和內(nèi)存占用率。采樣頻率為每2秒采集一次,總共采集了240組數(shù)據(jù),將數(shù)據(jù)處理以百分?jǐn)?shù)形式表示,并將CPU使用率和內(nèi)存使用率相乘,最后做出了圖3所示的X-Y折線圖。其中,X軸為時間,Y軸為百分比。需要說明的是,為了便于將CPU使用率和內(nèi)存使用率的乘積在一張圖中表示出來,本文將二者的乘積除以了10,因此,原來定義的臨界曲面的閥值也變化了,60至80之間為異??臻g范圍,大于80位高??臻g。
測試時按照用戶的通常行為,同時在播放音樂,用Maxthon同時打開十幾個不同站點的網(wǎng)頁,看新聞,搜索等,并且進行歌曲和軟件等下載等任務(wù)。整個測試過程中沒有出現(xiàn)異常情況。數(shù)據(jù)結(jié)果如圖3所示。
這個折線散點圖中有三條折線,即CPU使用率(CPUUsage)f(T)變化折線,內(nèi)存使用率(Memory Usage)g(T)變化折線,和f(T)·g(T)/10的結(jié)果(Result)變化折線。
從圖中可以看到,該程序運行的結(jié)果(Result)折線都在60閥值下,即在定義的正常空間下。從多次實驗得出的體驗感覺是,在這個閥值下,多道程序運行都比較流暢。
3.2對Ntdll.exe進程的分析
進程Ntdll.exe是后門程序Backdoor/Bionet.318.c2發(fā)作后的表現(xiàn)。病毒運行后,ntdll.exe自我復(fù)制到系統(tǒng)目錄下,并將其屬性設(shè)置為只讀、隱藏;程序?qū)⒆陨砑尤脒M程,相應(yīng)用戶顯示為“系統(tǒng)”,以欺騙用戶;修改注冊表,實現(xiàn)后門程序的開機自啟;開啟并監(jiān)聽指定TCP端口,偵聽黑客指令。
Bionet在實驗的機器上修改了注冊表,添加了如下鍵值達到自啟動功能:
[HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows
CurrentVersion\\Run]
\"Ntdll exe\"=\"C:\\\\Winnt\\\\System32\\\\Ntdn.exe\"
Bionet運行時,將NtdU.exe復(fù)制到了系統(tǒng)目錄System32下。Ntdll.exe名稱與系統(tǒng)重要文件Ntdn.dll極其相似,對用戶有一定的迷惑性。
當(dāng)中了后門程序Bionet.318.c的時候,開機會自動啟動進程Ntdll.exe,進程Ntdll.exe運行時占用了大量的系統(tǒng)資源,CPU使用率和內(nèi)存占用率居高不下。如下為用與案例一同樣的方式采集的數(shù)據(jù)結(jié)果圖(圖4):
可以看到進程Ntdll.exe運行的時候,f(t)·g(t)/10的折線大部分時間都是居高不下,遠遠超過高??臻g80的范圍,占用了大量的資源,嚴(yán)重影響了系統(tǒng)的正常運行。當(dāng)在Windows任務(wù)管理器中結(jié)束了這個進程后,系統(tǒng)恢復(fù)正常,即圖中顯示的最后一段,CPU和內(nèi)存使用率都降為零。
3.3對卡巴斯基(Kaspersky Anti-Virus)的分析
卡巴斯基(Kaspersky Anti-Virus)是國際一著名殺毒軟件,測試用的是卡巴斯基反病毒軟件單機版5.0.227。測試時進行電腦的全面殺毒,在這個過程中,采集了卡巴斯基殺毒時使用系統(tǒng)資源的一些情況。
測試方法和環(huán)境同上面的兩個例子。數(shù)據(jù)處理后得出的X-Y折線圖如圖5所示。從圖中可以發(fā)現(xiàn),當(dāng)卡巴斯基全面掃描電腦時雖然CPU的使用率平均在60%以上,但是它的內(nèi)存占用率并不高,都低于20%。如果不考慮掃描時運行其它太多程序的話,這個掃描殺毒的過程,我們認(rèn)為是可以接受的。不過,從圖中開始的部分,可以看到f(t)·g(t)/10的結(jié)果(Result)折線遠超出了高??臻g的閥值,并且在運行過程中會有一些時候出現(xiàn)在異??臻g中。
這并不與這個空間模型的定義矛盾,因為這個空間定義是為了檢驗異常行為,而殺毒軟件全面執(zhí)行殺毒的過程相對于系統(tǒng)程序和用戶常用軟件運行有著巨大的差別,這也算是一種異常行為。不過我們需要這種異常行為,就像需要變異,雖然變異可能產(chǎn)生不利后代。
4 結(jié)束語
通過案例分析可以看出,這個三維空間模型,臨界曲面、異常空間、高危空間的定義是合理的,可以解決一些實際問題,對于病毒,特別是新的病毒,可以基于其異常行為來發(fā)現(xiàn)它。但是,對于設(shè)計精巧、目的特殊的病毒、木馬等惡意程序,如果CPU使用率和內(nèi)存占用率都極低,將難以發(fā)現(xiàn)。不過,惡意程序既然為惡意程序,其必將有破壞表現(xiàn)的情況,仍可用類似方法來發(fā)現(xiàn)并制止它,所以空間模型可以擴展到多維,增加線程、I/O吞吐量、文件讀寫I/O等等監(jiān)測向量,構(gòu)建—個全方位、多向量的監(jiān)測機制,那么防治病毒的成功率會是明顯的。
按照傳統(tǒng)病毒監(jiān)控的基本模式,應(yīng)該以阻止帶毒文件的運行(獲取系統(tǒng)控制權(quán))為目的(即前報原則),而我們的方法是基于行為判定的后報技術(shù);對于未知的PE文件病毒,特別是未知的木馬/后門等程序,傳統(tǒng)的檢測方式存在不足,而基于行為判定的方法在這個方面是特長,但是也存在誤報情況。所以如何處理這些檢測方式、如何更好地發(fā)展基于行為判定的病毒檢測機制以及提高檢測的正確率還有很長的路需要走。