摘要:本文討論了基于代碼特征的分析方法,基于代碼語義的分析方法,外部觀察法和跟蹤調(diào)試法等四種惡意代碼分析方法
關(guān)鍵詞:惡意代碼 靜態(tài)分析技術(shù) 動(dòng)態(tài)分析技術(shù)
中圖分類號: 文獻(xiàn)標(biāo)識碼: 文獻(xiàn)編號:1674-098X(2012)01(c)-0036-01
1 靜態(tài)分析方法
靜態(tài)分析法就是在不運(yùn)行惡意代碼的情況下,利用分析工具對惡意代碼的靜態(tài)特征和功能模塊進(jìn)行分析的方法,利用靜態(tài)分析方法,可以找到惡意代碼的特征字符串、特征代碼段等,還可以得到惡意代碼的功能模塊和各個(gè)功能模塊的流程圖。靜態(tài)分析的好處是可以避免惡意代碼執(zhí)行過程對分析系統(tǒng)的破壞。惡意代碼從本質(zhì)上是由計(jì)算機(jī)指令構(gòu)成的,根據(jù)分析過程是否考慮構(gòu)成惡意代碼的計(jì)算機(jī)指令的語義,可以把靜態(tài)分析方法分成基于代碼特征的分析方法和基于代碼語義的分析方法兩種類型。
1.1 基于代碼特征的分析方法
基于代碼特征的分析方法在分析過程中,不考慮惡意代碼的指令意義,而是分析指令的統(tǒng)計(jì)特性、代碼的結(jié)構(gòu)特性等。特征量分析方法常用于對執(zhí)行程序類型的惡意代碼進(jìn)行分析。在Windows系統(tǒng)環(huán)境下,可執(zhí)行程序通常是PE文件,PE文件相當(dāng)于一個(gè)索引文件結(jié)構(gòu),一個(gè)PE文件由節(jié)(section)構(gòu)成,其中有一些節(jié)專門用于存儲(chǔ)程序中用到的靜態(tài)數(shù)據(jù)。如果用c語言編寫的程序中存在一條語句CteateMuetex(NULL,NULL,“MYTESTMUTEX”)。那么在生成的P E文件中會(huì)存在一個(gè)靜態(tài)數(shù)據(jù)“MYTESTMUTEX”通過分析PE結(jié)構(gòu)可以從靜態(tài)數(shù)據(jù)節(jié)中提取靜態(tài)數(shù)據(jù)。在某個(gè)特定的惡意代碼中,這些靜態(tài)數(shù)據(jù)會(huì)在程序的特定位置出現(xiàn),并且不會(huì)隨著程序拷貝副本而變化,雖然這些靜態(tài)數(shù)據(jù)在其他PE文件中也有可能存在,但是在相同位置出現(xiàn)的可能性是非常小的,所以,完全可以使用這些靜態(tài)數(shù)據(jù)和其出現(xiàn)的位置作為描述惡意代碼的特征。
對于有網(wǎng)絡(luò)功能的惡意代碼,其執(zhí)行程序中通常會(huì)封裝一些需要訪問的網(wǎng)絡(luò)地址。比如,用c語言編寫的惡意代碼中使用下面的語句uRLDowntoadToFile(O,"http://www.microsoft.com/a.exe","C:\\a.exe",0.O)從網(wǎng)站下載可執(zhí)行程序到c盤根目錄,這個(gè)動(dòng)作很有可能是進(jìn)行惡意代碼升級,這種情況下,在惡意代碼的靜態(tài)數(shù)據(jù)部分可以看到下載地址和下載的文件名,通過這些具有明顯網(wǎng)絡(luò)地址特征的靜態(tài)數(shù)據(jù)可以判定部分惡意代碼的部分網(wǎng)絡(luò)功能。當(dāng)然有些惡意代碼在設(shè)計(jì)過程中,考慮到信息暴露的問題而將靜態(tài)數(shù)據(jù)進(jìn)行拆分,甚至不使用靜態(tài)數(shù)據(jù),這種情況就只能通過語義分析或者動(dòng)態(tài)跟蹤分析得到具體信息了。
1.2 基于代碼語義的分析方法
基于代碼語義惡意代碼分析方法要求考慮構(gòu)成惡意代碼的指令的含義,通過理解指令語義建立惡意代碼的流程圖和功能框圖,進(jìn)一步分析惡意代碼的功能結(jié)構(gòu)。基于代碼語義的分析過程,首先使用反匯編工具對惡意代碼執(zhí)行體進(jìn)行反匯編,然后通過理解惡意代碼的反匯編程序了解惡意代碼的功能。從理論上講,通過這種方法可以得到惡意代碼所有功能特征。但是,目前基干語義的惡意代碼分析方法主要還是依靠人工來完成,人工分析的過程需要花費(fèi)分析人員的大量時(shí)間,對分析人員本身的要求也很高。本文的五章就是在粗粒度的語義識別的基礎(chǔ)上,實(shí)現(xiàn)惡意代碼語義分析的自動(dòng)化。
2 動(dòng)態(tài)分析方法
動(dòng)態(tài)分析法是通過監(jiān)視惡意代碼運(yùn)行過程從而了解惡意代碼功能。根據(jù)分析過程中是否需要考慮惡意代碼的語義特征,將動(dòng)態(tài)分析方法分為外部觀察法和跟蹤調(diào)試法兩種。
2.1 外部觀察法
外部觀察法是利用系統(tǒng)監(jiān)視工具觀察惡意代碼運(yùn)行過程中系統(tǒng)環(huán)境的變化,通過分析這些變化判斷惡意代碼功能的分析方法。惡意代碼作為一段程序在運(yùn)行過程中通常會(huì)對系統(tǒng)造成一定的影響,有些惡意代碼為了保證自己的自啟動(dòng)功能和進(jìn)程隱藏的功能,通常會(huì)修改系統(tǒng)注冊表和系統(tǒng)文件,或者會(huì)修改系統(tǒng)配置。反過來,通過觀察惡意代碼運(yùn)行過程中系統(tǒng)文件、系統(tǒng)配置和系統(tǒng)注冊表的變化就可以分析惡意代碼的自啟動(dòng)實(shí)現(xiàn)方法和進(jìn)程隱減方法。另外,惡意代碼通常會(huì)有一些比較特別的網(wǎng)絡(luò)行為,比如通過網(wǎng)絡(luò)進(jìn)行傳播、繁殖和拒絕服務(wù)攻擊等破壞活動(dòng),或者通過網(wǎng)絡(luò)進(jìn)行詐騙等犯罪活動(dòng),或者通過網(wǎng)絡(luò)將搜集到的機(jī)密信息傳遞給惡意代碼的控制者,或者在本地開啟一些端口、服務(wù)等后門等待惡意代碼控制者對受害主機(jī)的控制訪問。通過觀察惡意代碼運(yùn)行過程中的網(wǎng)絡(luò)活動(dòng)情況可以了解惡意代碼的網(wǎng)絡(luò)功能。雖然通過觀測惡意代碼執(zhí)行過程對系統(tǒng)的影響可以得到的信息有限,但是這種分析方法相對簡單,效果明顯,已經(jīng)成為分析惡意代碼的常用手段之一。
2.2 跟蹤調(diào)試法
跟蹤調(diào)試法是通過跟蹤惡意代碼執(zhí)行過程使用的系統(tǒng)函數(shù)和指令特征分析惡意代碼功能的技術(shù)。在實(shí)際分析過程中,跟蹤調(diào)試可以有兩種方法,一種方法是單步跟蹤惡意代碼執(zhí)行過程,監(jiān)視惡意代碼的每一個(gè)執(zhí)行步驟,在分析過程中也可以在適當(dāng)?shù)臅r(shí)候執(zhí)行惡意代碼的一個(gè)片斷,這種分析方法可以全面監(jiān)視惡意代碼的執(zhí)行過程,但是分析過程相當(dāng)耗時(shí)。另外一種方法是利用系統(tǒng)hook技術(shù)監(jiān)視惡意代碼執(zhí)行過程中的系統(tǒng)調(diào)用和API使用狀態(tài)來分析惡意代碼的功能,這種方法經(jīng)常用于惡意代碼檢測。