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