新四季網

針對計算機病毒的動態行為捕獲方法

2023-12-09 01:25:16 2


專利名稱::針對計算機病毒的動態行為捕獲方法
技術領域:
:本發明涉及計算機病毒防治和數據分析與處理領域,特別涉及一種應用於用來防治計算機病毒的自動化分析系統中的計算機病毒的動態行為捕獲方法。
背景技術:
:所謂計算機病毒是指編制或者在電腦程式中插入的破壞計算機功能或者毀壞數據,影響計算機使用,並能自我複製的一組計算機指令或者程序代碼;計算機病毒具有以下幾個基本特徵(l)潛伏在計算機存儲介質及程序中;(2)當達到一定條件時被激活;(3)對計算機資源具有破壞作用的程序或者指令集合;就像生物病毒一樣,計算機病毒有獨特的自我複製能力,它們能把自身附著在各種類型的文件上,當文件被複製或從一個用戶傳送到另一個用戶時,它們就隨同文件一起蔓延開來。隨著計算機軟硬體水平的不斷發展,近年來,計算機病毒技術也是突飛猛進,黑客和間諜技術也在不斷更新改進,計算機病毒對人類造成的影響也越來越大;當前,計算機病毒正呈現出傳播方式、傳播途徑以及破壞方式更加多樣化的趨勢。據國家計算機病毒應急處理中心綜合觀察分析認為"目前計算機病毒的網絡化趨勢更加明顯,病毒的入侵主要來自蠕蟲病毒,同時集病毒、黑客、木馬等功能於一身綜合型病毒不斷湧現",計算機病毒表現出以下特點傳播方式和途徑多樣化;病毒的欺騙性日益增強;病毒的傳播速度極快;病毒的製作成本降低;病毒變種增多;病毒難以控制和根治;病毒傳播更具有不確定性和跳躍性;病毒版本自動在線升級和自我保護能力;病毒編制採用了集成方式等。綜合上述分析,今後計算機病毒的發展趨勢是群發郵件病毒將大量出現;針對系統漏洞的具有遠程控制功能的病毒將越發突出;病毒和垃圾郵件編寫者將不斷加強合作;病毒編寫者更加年輕化、更有組織性。計算機病毒具有極強的繁殖感染能力,而因計算機病毒所造成的危害正在加劇,病毒危害主要包括系統崩潰、網絡癱疾、系統設置被修改、電腦使用受限、數據丟失等。常見的病毒檢測方法有以下幾種(1)特徵碼技術特徵碼技術是一種基於對已知病毒分析、查解的反病毒技術。它作為反病毒技術中最基本的技術被沿用至今,也是到目前為止各類反病毒軟體仍普遍採用的技術。特徵碼是一串二進位位信息,它能唯一標識某一非法程序,研究人員通過對非法程序樣本的分析,提取出"特徵碼"寫入反病毒軟體的特徵碼庫,通過對用戶指定的某個或某幾個文件進行掃描,以確定是否包含非法程序的特徵碼。特徵碼技術的優點是檢測準確快速、可識別病毒的名稱、誤報警率低,被公認為檢測已知病毒的最簡單、開銷較小的方法;其缺點是不能檢測新病毒、捕獲已知病毒的特徵代碼,費用開銷大、在網絡上效率低,因長時間檢索會使整個網絡性能降低。(2)虛擬機技術虛擬機技術是一種啟發式探測未知病毒的反病毒技術。虛擬機技術的主要作用是能夠運行一定規則的描述語言;由於病毒的最終判定準則是其複製傳染性,而這個標準是不易被使用和實現的,如果病毒已經傳染了才判定它是病毒,定會給病毒的清除帶來麻煩。虛擬機實質是在反病毒系統中設置的一種程序機制,它能在內存中模擬一個作業系統環境,待查文件在虛擬機上執行,其效果如同物理機。虛擬機實際是用軟體的方法模擬地執行所有的或者設計者關心的CPU指令,營造一個虛擬的、可觀察的、可控制的目標程序運行環境。在處理加殼或變形的木馬和蠕蟲方面,虛擬機被作為一個比較理想的選擇。虛擬機技術仍需要與傳統技術相結合,其本質上的檢測判斷方法依然是特徵碼檢査,對於那些經過修改而不是簡單的加殼後的惡意軟體效果比較有限。(3)啟發式掃描技術啟發式掃描技術是一種基於人工智慧領域啟發式分析手段的檢測技術,啟發式掃描能夠發現一些應用了已有機制或行為方式的未知病毒。啟發式掃描一般包括靜態掃描方式和動態掃描方式兩種。啟發式掃描是通過分析指令出現的順序,或特定組合情況等常見病毒的標準特徵來決定是否為病毒。靜態啟發式掃描技術和基於特徵碼的靜態掃描類似,也是靜態掃描待測程序的代碼,但不同的是前者査找非法程序的特徵碼,而後者則査找非法程序的行為,而這些行為是通過某些相應的代碼序列來確定的;通過掃描某個待測文件當中的可執行代碼,查找與非法程序行為相對應的代碼序列,掃描結束後,關聯所有査找到的序列,並與非法程序的典型行為模式相對照,最終做出判斷。靜態掃描的優點是這種技術在掃描代碼時通過査找某些代碼序列,確定程序是否具有某種類別的病毒的行為,因此,它也具有了檢測未知病毒的能力。它的掃描速度比較快,未知病毒的檢出率也比較高。另外,和行為分析技術不同,它能在代碼未運行的情況下,就確定代碼的行為並檢測非法程序。缺點是:目前病毒、木馬等非法程序的編寫者為了讓這些程序儘可能地傳播和運行,大都對其作了加密、變形、加殼等處理,那麼至少在其未運行的情況下,通常很難在它的代碼當中找到對應於非法程序行為的代碼序列。所謂行為分析就是採用一系列的規則定義非法程序,相應地採用另一套規則定義合法程序,如果某個程序違背了合法程序的某項規則或者符合非法程序的某項規則,便可判定其非法。與傳統的基於特徵碼的靜態掃描技術不同的是,行為分析技術監控並限制應用程式運行過程中的動態行為,和靜態啟發式掃描技術相對,它也被稱為動態啟發式掃描。某些行為是木馬、後門和蠕蟲等非法程序的共同行為,但在合法程序中卻比較罕見,也就是說,它們成了非法程序的行為特徵,可作為判別應用程式是否非法的依據或者規則。但是,行為分析技術同樣存在以下的不足1、需要儘可能全面的監控。2、考慮到軟體的實用性,行為分析軟體一般不會採用過於複雜的分析算法,一般多採用簡單加權算法來進行分析。3、無法應對那些能造成直接破壞的惡意代碼。由於行為分析技術具有可檢測未知非法程序的特點,所以成為目前反病毒領域研究的熱點。然而,現有的添加了行為分析這一功能模塊的軟體一般只檢測某些單獨的行為項(如修改註冊表自啟動項、文件關聯、IE瀏覽器的起始頁等)。它們所表現出來的工作流程也較為相似,都是通過用戶判斷來學習對某一軟體的識別。(4)主動防禦主動防禦技術已被殺毒軟體、軟體防火牆、HIPS等安全軟體廣泛採用,現有的後門木馬、Rootkit等惡意軟體面臨嚴峻考驗。無論傳統的惡意軟體功能有多強大隱蔽性有多高,初次安裝以及工作時都會被主動防禦功能攔截並提示用戶,使其無法正常安裝和工作。主動防禦的原理主要採用了hook思想,截獲系統相關API調用,對相應的可疑行為進行報警,提示用戶做出選擇。具體來說,主動防禦常用SSDTHook、InlineHook、HookDriverDispatch、FilterDriver等內核技術,對惡意程序所需要的各類函數進行掛接,實行函數行為掛接,監控其行為。除了上述幾種病毒檢測方法和原理,我們通過對大量現有常見病毒的研究和分析,歸納出常見病毒在安裝階段的兩個步驟第一步隱藏程序。通常,病毒程序會被拷貝或者安裝到系統目錄下,由於該目錄下存在著大量重要的系統文件,病毒程序很難被發現,加之這些文件的命名往往和系統文件非常相似,更增加了定位這些文件的難度。另外,即使用戶對這些文件產生懷疑,也可能因為擔心破壞系統文件而不會輕易修改或者刪除它們。第二步自啟動設置,使病毒在一定條件下自動啟動運行。這個步驟的實現途徑較多,常用的有在註冊表設置自啟動項、修改文件關聯、修改系統配置文件。第三步感染文件。可執行文件.COM或.EXE感染上了病毒,例如黑色星期五病毒,它駐入內存的條件是在執行被傳染的文件時進入內存的。一旦進入內存,便開始監視系統的運行。當它發現被傳染的目標時,進行如下操作(1)首先對運行的可執行文件特定地址的標識位信息進行判斷是否已感染了病毒;(2)當條件滿足,利用INT13H將病毒連結到可執行文件的首部或尾部或中間,並存大磁碟中;(3)完成傳染後,繼續監視系統的運行,試圖尋找新的攻擊目標;通過從行為特徵的角度來觀察,我們歸納出上述三個步驟的各種實現途徑對應的病毒行為及行為作用的對象。病毒被成功安裝到目標機器以後,通常就會開始運行並進行"進程隱藏",即讓病毒進程在各種査看進程的工具軟體或程序中不可見,如Windows任務管理器。我們認為這是各類病毒在該階段的最顯著的特徵。"進程隱藏"又分為"偽隱藏"和"真隱藏"兩類。進程的"偽隱藏"是指進程雖然在查看工具中不可見,但仍實際存在;進程的"真隱藏"則指病毒程序不以一個進程的方式運行。進程的"偽隱藏"一般有兩種實現途徑(1)將病毒程序註冊為系統服務。在Win9X系統下,病毒程序被註冊為服務模式進程後,病毒進程就不會出現在"Windows任務管理器"中。著名的B02K木馬針對Win9X系統採用的就是這種方法。但這在WinNT系統下是無效的——即使是系統服務進程,也會出現在WinNT系統的"任務管理器"當中。隨著WinNT系統的普及,"註冊系統服務"已基本不再被各類病毒作為進程隱藏的途徑。(2)採用API攔截技術。這種技術能夠截獲指定的API調用,進而獲取或修改API輸入參數、改變API內部的執行流程以及修改API的返回值。由於進程查看工具一般使用WindowsSDK提供的processstatusAPI(進程狀態API,簡稱PSAPI)、PerformanceDataHelper(簡稱PDH)或者ToolHelpAPI査看系統當前的進程信息,某些病毒就攔截這類API,執行與原API類似的進程信息獲取工作,但在這個過程中,如果取到的進程ID為病毒進程ID,就直接跳過,使返回給進程查看工具的信息中不包含病毒進程。這種方法在目前流行的Windows2000和WindowsXP作業系統中均可行。進程"真隱藏"一般通過以下方式實現進程"真隱藏"的病毒一般都是動態連結庫(DynamicLinkLibrary,簡稱DLL),並且依靠系統中的正常進程加載和運行它。由於病毒本身不以進程的方式運行,所以不會出現在進程查看工具的進程列表中。DLL形式的病毒要依靠其它進程運行,有以下幾種常用的方法:(a)遠程線程注射遠程線程注射是指某個進程創建一個運行於其它進程虛擬地址空間的新線程,或者說把一個新線程"注射"到其它進程中。這個新線程擁有訪問被注射進程所有對象的權限。(b)特洛伊DLL特洛伊DLL替換作業系統的某個或某幾個正常的DLL文件,截獲並處理某些函數調用,而將其它調用轉發給原DLL。但是從Windows2000開始,Windows作業系統就引入一種文件保護機制(WindowsFileProtection),它可以有效地保護某些重要的系統文件(如DLL、OCX、SYS、CPL等類型的文件)。同時,由於特洛伊DLL本身有一定的缺陷,如安裝補丁、系統升級、數字籤名等方法都可能導致其失效,所以它並不是實現進程真隱藏的最優選擇。(c)基於SPI的DLL技術SPI是ServiceProviderInterface的縮寫,即服務提供者接口,它是WindowsSocket2的新特性。Winsock2不僅提供了供應用程式訪問網絡服務的WindowsSocket應用程式編程接口(API),還包含了Winsock服務提供者接口(SPI)和ws2_32.dll,其中SPI由傳輸服務提供者和名字解析服務提供者實現。應用程式、ws2_32.dll和傳輸服務提供者(TransportServiceProvider)之間的層次關係如圖1所示。服務提供者通常不只一個,它們按一定的順序安裝在系統中,構成一個服務提供者資料庫。系統會按照應用程式的輸入參數搜索匹配的服務提供者。有些木馬伺服器的DLL文件被作為一個傳輸服務提供者安裝到服務提供者資料庫的最前端,這樣木馬DLL就會被系統網絡服務加載,它通常在入口函數DllMain中創建木馬線程。這種形式的DLL木馬只需安裝一次,以後每次系統啟動都會被自動加載到使用網絡服務的進程中。這類木馬也被稱為SPI木馬。其工作原理如圖2所示。例如,IE瀏覽器進程iexplorer.exe需要使用網絡服務,它啟動後,就會加載木馬DLL並啟動木馬線程。這樣即使木馬通過某個埠對外通信,該埠關聯到的進程也只是合法進程iexplorer.exe。可見,基於SPI的DLL木馬技術能達到木馬伺服器自啟動和進程隱藏和的雙重目的。另外,木馬會被多個網絡服務加載,而且,由於在系統關閉時網絡服務才會關閉,木馬可以在系統運行期間一直保持激活狀態。在Win32環境下運行的任何程序,包括木馬等常見病毒,都必須通過Win32API來實現,即Windows作業系統的應用程式接口。為了實現對病毒動態行為的捕獲和分析,就需要儘可能地截獲這些對這些Win32API函數的調用。實現這一目的的關鍵是自定義相應的鉤子函數,並在系統內安裝針對某些API調用的鉤子,便可在真正API調用發生前,先調用鉤子函數。而在鉤子函數內部可以預先自定義邏輯流程,觸發反病毒引擎,使其結合截獲的函數參數做出判斷,結果可能是調用真正的API、退出程序或執行其它代碼。我們通過對Windows公開的幾百個API函數進行分析和比較,並結合木馬等常見病毒的行為,我們歸納總結出表1(病毒行為調用的API函數)中所列舉的API函數,這麼函數在對計算機系統可能造成危害的API中佔了很高的比例,因此,我們將此表中列舉的API視為疑似API。tableseeoriginaldocumentpage10tableseeoriginaldocumentpage11tableseeoriginaldocumentpage12表
發明內容根據上述技術分析,本發明的目的是提供一種應用於用來防治計算機病毒的自動化分析系統中的計算機病毒的動態行為捕獲方法。該方法能夠在Win32環境下自動化捕獲大量病毒樣本的動態行為,應用這種技術所製備的病毒動態行為自動化分析系統能夠實現自動獲取並分析病毒樣本的動態行為。從而更加有效地提升計算機在網絡環境下對病毒的防禦能力,提高網絡的安全性。在描述本發明方法之前,先介紹一下本什麼是病毒行為。對於病毒行為的定義,可以認為是API與其調用參數的結合。API是應用程式接口,由於Microsoft作業系統對內核的保護,目前大部分惡意代碼包括計算機病毒對計算機系統的侵入和破壞是通過調用API來實現的。例如,對於改寫一個系統文件,病毒製造者會使用writefileex這個API,同時在使用這個API還必須指明這個系統文件的絕對路徑。所以,writefileex結合系統文件路徑就是一個惡意改寫系統文件的行為。本發明方法就是用來實現對於這個行為的捕獲過程,具體步驟如下1)將API的調用設置為調試事件,由系統內核捕獲這個事件後通知調試器;2)通過在指定API調用入口處設置調試斷點,捕獲程序執行到調試斷點便會發生中斷事件;3)系統內核通過捕獲工具注射一個動態連結庫至惡意代碼進程空間,用這個動態連結庫來分析API的堆棧內容。上述第二步驟,具體需要在表1中提到的API函數的入口處設置斷點中斷。中斷是一種使CPU中止正在執行的程序而轉去處理特殊事件的操作,而程序中安排的中斷指令INT產生的中斷被稱為軟體中斷,在Intel體系上用於中斷調試的指令有二(1)INT1:單步中斷使用單步中斷可以一條一條指令地跟蹤程序的流程,觀察CPU每執行一條指令後,各個寄存器及有關存儲單元的變化,從而指出和確定產生錯誤的原因。(2)INT3:斷點中斷斷點中斷也是供DEBUG調試程序使用的,它的中斷類型號為3。通常調試程序時,把程序按功能分為幾段,然後每段設置一個斷點。當CPU執行到斷點時便產生中斷,這時可以檢査各寄存器及有關存儲單元的內容。斷點可以設置在程序的任何地方,設置斷點實際上是把一條斷點指令INT3插入樣本程序進程中,CPU每執行到斷點處的INT3指令便產生一個中斷。使用中斷指令來實時劫持OS執行,需要注意兩點-(1)定義我們的斷點處理程序和與斷點時間關聯。即設置探測點,就是在我們指定的OS調用函數的內存位置上設置斷點。(2)被調試程序須在用戶空間中執行。當樣本進程遇到斷點(OxCC),該進程會發生異常弁BP(INT3),Win32調試子系統會截獲中斷。調試器通過此埠完成對調試子系統的掛接,進而接收和處理調試事件。調試器實際上是一個很寬泛的概念,凡是能夠以某種形式監控其他程序執行過程的程序,都可以泛稱為調試器。在Windows平臺上,根據調試器的實現原理大概可以將之分為三類內核態調試器、用戶態調試器和偽代碼調試器。用戶態調試器直接使用Win32API提供的調試接口,遵循Win32的事件驅動的設計思想,其調試接口的伺服器端的實現思路是調試服務的伺服器端接口實際上是存在於被調試進程的調試埠(DebugPort),此核心對象實現上跟Win32的完成埠類似,都是通過一個核心隊列實現的LPC埠。啟動調試伺服器實際上就是掛接Win32的調試子系統到被調試進程,並在被調試進程內構造調試埠。調試器通過調試埠與Win32的調試子系統通訊;調試子系統響應系統操作所引發的調試事件,並通過調試埠將調試事件分發給用戶態調試器。按照本發明方法設計的捕獲引擎正是採用這樣的調試器技術。如圖3所示,我們需要捕獲某個樣本調用CopyFileExA函數的情況,則在這個函數的入口處設置斷點中斷。一旦樣本程序執行到此斷點處(即樣本調用CopyFileExA函數),會告知Win32調試子系統,調試子系統會檢索是否有用戶調試器在等待中斷,如果發生的中斷屬於某個調試器需要監視的內容範圍,則交由這個調試器處理。捕獲引擎在啟動時,創建新的進程空間用以執行樣本,並告知調試子系統,該進程內發生的斷點中斷事件由捕獲引擎來處理。以下結合附圖和具體實施方式來進一步說明本發明。圖1為Winsock2層次結構圖。圖2為SPI木馬工作原理示意圖。圖3為捕獲引擎設計原理圖。圖4為自動化分析系統各模塊關係圖。圖5為動態行為自動化分析系統框架示意圖。圖6為動態行為自動化行為分析系統拓撲圖。圖7為行為數據表E-R圖。圖8為組件關係圖。圖9為APITracer處理流程示意圖。圖10為HOOKDLL示意圖。圖11為HOOKDLL處理流程示意圖。具體實施例方式為了使本發明實現的技術手段、創作特徵、達成目的與功效易於明白了解,下面結合具體圖示,進一步闡述本發明。本發明方法具體通過所製備的病毒動態行為自動化分析系統來實現。該系統的主要功能是為了自動化獲取並分析樣本程序的動態行為數據。該系統由以下幾個模塊組成(1)樣本庫樣本庫包括兩類樣本,分別為黑樣本庫(病毒樣本)、白樣本庫(合法程序)。(2)入庫篩選模塊負責將指定網絡上能夠直接訪問的某文件或某文件夾裡的文件的信息保存到指定資料庫,同時將檢驗樣本是否符合自動化行為分析系統的運行條件,只有符合條件的樣本才能存在於相應的樣本庫中。(3)捕獲引擎模塊包括捕獲引擎和插件,用來捕獲病毒和合法程序的行為,並將行為數據入庫;(4)黑樣本行為庫用來將捕獲的黑樣本行為數據記入資料庫中並進行統計,並轉化成易於建模的二維表,具體形式見表2和表3。(5)白樣本行為庫用來將捕獲的白樣本行為數據記入資料庫中並進行統計,並轉化成易於建模的二維表,具體形式見表2和表3。tableseeoriginaldocumentpage15表2tableseeoriginaldocumentpage16表3如圖4所示,捕獲引擎對程序性質已確定的黑白樣本庫中的程序通過自動入庫模塊倒入到系統後進行行為捕獲;再將捕獲的數據交由黑/白樣本行為庫,並形成格式化的數據。tableseeoriginaldocumentpage16表4在
背景技術:
中我們歸納了6個行為相關類和35種具體行為,用於建立描述病毒動態行為的35維特徵向量。表4(病毒行為特徵向量表)列舉了部分行為。本文設計的病毒動態行為自動化分析系統即用於捕獲表4中的35種樣本程序的動態行為。、如圖5所示,這種病毒動態行為自動化分析系統的系統框架由以下三層構成(1)數據層。該層有兩個組成部分,樣本庫和病毒行為庫。樣本庫是用來放置樣本的文件伺服器,而病毒行為庫是用來存放自動化行為分析系統的捕獲的行為數據的資料庫。(2)控制層。該層是一個物理聯機系統,每個集權單元都有一個封閉的虛擬運行環境用來運行病毒樣本。集權單元的核心是控制程序,它的作用是①從樣本庫中提取病毒樣本;②向虛擬機發送控制指令,如開啟虛擬機、加載樣本程序、運行行為捕獲③接受虛擬機發送的有病毒行為的XML文件,並解析這個文件,將相關的病毒行為通過普通socket連接記錄至病毒行為庫中;(3)運行層。運行層可以看作是一個"沙框"(sandbox)。"沙框"可以檢測是否處於被調試狀態是否以SHELL方式隱蔽啟動外部程序是否以Winexec方式啟動外部程序修改其它進程在內存中的數據在其它進程中創建遠程線程強行終止其它進程進程相關類行為看作為一個安全的軟體系統,用來將一些未知的或不可信任的程序放置在一個孤立的且同外界隔離的環境中運行,因為這些程序是不能冒險放在個人系統或網絡環境下運行的。而虛擬機系統為實現這個"沙框"創造了技術條件,因為虛擬機是同作業系統物理隔離,並且運行在我們常用的桌面系統,易用且易於控制。如設計得當,將病毒樣本放置虛擬機運行不會對物理作業系統造成任何危害。在運行層中除了VMware虛擬機外還有行為捕獲引擎和擴展插件。下面介紹該系統的運行環境。(-)物理機運行環境;硬體環境配置4臺高性能PC(IntelE6320,4G內存)作為行為捕獲引擎,每臺捕獲引擎都採用支持IntelVT技術的硬體,使得VMWare在此平臺上的運行效率將優於其它平臺。1臺資料庫伺服器(DELLPOWEREDGE860)。1臺百兆交換機。軟體環境配置WindowsXPProfessionalSP2,資料庫為MySql5.O,V麗areWorkstation6.0.2。系統網絡配置如圖6所示。(二)虛擬機運行環境;本系統採用VMwareWorkstation6.0以上的版本,使用的開發包為VMWareVIXSDK1.1。我們的實驗環境擁有幾種不同的作業系統的虛擬主機,每一個作業系統代表惡意軟體可能攻擊的目標。這樣便於在本地環境中觀察惡意程序。為了對付惡意軟體,我們採取一些預防措施不讓生產系統網絡受到感染。具體方法如下(1)跟上VMware安全補丁的步伐,經常瀏覽其網站,下載其最新的補丁。(2)將某物理主機用於基於VMware的試驗環境,不用於其它用途。(3)不將物理試驗系統連接到生產性網絡。(4)用基於主機的入侵檢測軟體監視物理主機,如一個文件集成檢查器。(5)用克隆軟體定期重鏡象物理主機,如NortonGhots。搭載病毒樣本的虛擬機系統與之對應的物理機進行邏輯隔離,本文實驗採用的具體方法是將這兩種不同的系統分置在不同的網段,以防止如Viking等病毒,這些病毒具有很強的嗅探能力,能夠突破同區域網下所以機器的漏洞,並將其注入。系統的資料庫設計如下系統的資料庫是基於MySql5.0開發設計,數據結構及表應用資料庫腳本生成。這些數據表之間的E-R圖如圖7所示。其中關鍵的三個表是tbl_prog、tbl_trace禾口tbl—traceevent。表tbl_prog用來存放樣本的一些基本信息,比如存放文件路徑,這裡要注意的是文件路徑為共享路徑,這個路徑應當被分析引擎順利訪問。表tbl-trace用來記錄被分析樣本的狀態,因為在分析的過程中,被分析的樣本會出現超時、崩潰等情況,具體處理將在下文詳細介紹。表tbl一traceevent用來記錄被分析樣本的API調用及使用的參數,這裡的數據將是建模中的關鍵性數據。當然,整個自動化分析系統是由如下幾個組件協同工作完成(1)入庫程序。入庫程序是將樣本庫中的樣本路徑等信息存入資料庫中,使得控制程序能夠獲取到樣本的路徑信息。(2)Contro1(控制程序)。運行在物理機上,用於控制虛擬機的運行,並負責提取病毒樣本和超時管理。(3)VMTracer(捕獲引擎)。VMTracer是捕獲系統中的核心,負責檢査被分析樣本進程加載了哪些系統DLL,然後根據H00KDLL的導出函數表,來確定需要在被分析樣本進程中哪些API調用處設置調試斷點。當樣本進程執行到調試斷點處會產生中斷事件,通過調試子系統獲得斷點發生時被分析樣本進程的執行環境(指令寄存器、堆棧寄存器等多個寄存器的值),並將中斷時的堆棧參數送至H00KDLL中相應的處理函數進行具體分析。(4)H00KDLL。負責接收捕獲引擎捕獲的API函數及其實際參數,並對實際參數進行具體分析,將分析的結果進行格式化輸出到資料庫或文件中。從圖8可以看出在系統的三層框架下,入庫程序作為組件位於數據層中的樣本庫文件伺服器中。它作為一個前端工具,用於將樣本信息存入資料庫中,在自動化系統所有組件中只有入庫程序是人機互動的。而控制程序是無人值守的,是無須人機互動的。控制程序是所有組件的核心,它負責從樣本庫中提取樣本、運行虛擬機、並向行為庫傳送病毒行為數據。捕獲引擎及其插件(HookDll)是協同工作在虛擬環境下捕獲病毒的行為,並寫入XML文件回傳至控制機。這裡需要著重指出的是捕獲引擎(APITracer)是本系統中的核心,在確定對指定樣本進程進行分析之後,檢查被分析樣本進程加載了哪些系統DLL,然後根據工作目錄下的H00KDLL的導出函數表,來確定需要在被分析樣本進程中哪些API調用處設置調試斷點。當樣本進程執行到調試斷點處會產生中斷事件,通過調試子系統獲得斷點發生時被分析樣本進程的執行環境(指令寄存器、堆棧寄存器等多個寄存器的值),並將中斷時的堆棧參數送至HOOKDLL中相應的處理函數進行具體分析。捕獲引擎的功能(1)根據工作目錄下的HOOKDLL對指定API調用入口處設置調試斷點;(2)通過作業系統調試子系統中獲取需要捕獲的API調用事件及其參數;(3)向HOOKDLL中相應的處理函數傳遞斷點發生處的堆棧信息;捕獲引擎的輸入項(1)樣本進程;(2)捕獲引擎的所在目錄;(3)目錄下所有HOOKDLL名及HOOKDLL導出函數表;捕獲引擎的輸出項捕獲引擎在捕獲到調試中斷之後,會調用HOOKDLL中相應的函數進行處理,這些函數採用相同的參數表,這個參數表就是行為捕獲引擎的輸出,定義為TracerFunc函數指針,具體定義如下typedefVOIDOTracerF畫)(DWORDTraceMode,CTracelnfo*pInfo,API—TRACE_INFO&pApiInfo,DWORD*pdwRet,ADV_C0NTR0L*pControl);〃該接口由所有的HookDll處理函數共享以對SendMessageW函數的捕獲處理為例,當發生調試斷點事件之後,捕獲引擎調用HOOKDLL中的MySendMessageW函數進行處理,MySendMessageW函數定義如下'VOIDMySendMessageW(DWORDTraceMode,CTracelnfo氺plnfo,API_TRACE_INF0&ApiInfo,DWORD*pdwRet,ADV一CO證OL*pAdvCtrl)其中TraceMode若為CALL—TRACE—MODE,表明是在捕獲的API調用前進行處理。TmceMode若為RETURN—TRACE—MODE,表明是在捕獲的API調用後進行處理;plnfo為CTracelnfo*類型的句柄,用於結構化列印數據,相當於stdout;pdwRet用來通知捕獲引擎修改被捕獲函數的返回值;pAdvCtrl是系統保留,為了將來擴充功能保留。Apilnfo為API_TRACE—INFO結構體的指針變量,存儲了斷點發生時,被分析樣本進程的執行環境,包括API名,堆棧指針等,具體定義如下API—TRACE—INFO{HANDLEhProcess;〃樣本進程句柄constchar氺ProcessName;〃樣本進程名constchar*DllName;//API導出的DLL名constchar*ApiName;〃API函數名VOID*dwStackAddr;〃API函數實際參數堆棧指針}API_TRACE—INFO;如圖9所示,捕獲引擎的處理流程捕獲引擎的主要部分是一個循環,處理來自內核的調試事件,循環體內先等待一個調試事件,然後處理之,最後將控制權交還給調試伺服器,就好像一個窗口消息循環一樣。捕獲引擎關注EXCEPTION—DEBUG_EVENT調試事件的發生,每次Win32API一旦被調用,就觸發一次EXCEPTION—DEBUG_EVENT事件。每調用一次Win32API,APITracer査找這些動態連結庫是否存在有同名函數,一旦發現即轉入HOOLDLL動態連結庫。其實現的方法是在調試器開始的時候,啟動要調試程序的新進程或者掛接(attach)到一個已運行進程上,此時啟動調試接口的伺服器端;使用WaitForDebugEvent函數等待調試伺服器端的調試事件的發生;根據事件進行相應的處理;最後使用ContinueDebugEvent函數請求調試伺服器繼續執行被調試進程,以等待並處理下一個調試事件;if(bNewProcess)CreateProcess(...,DEBUG—PROCESS,...);6lS6DebugActiveProcess(dwPID)while(1==WaitForDebugEvent(&DbgEvt,INFINITE))switch(DbgEvt.dwDebugEventCode)caseEXIT_PROCESS_DEBUG—EVENT:break;//othercasesContinueDebugEvent(…);捕獲引擎的接口(1)CTracelnfo用於控制和輸出;(2)API—TRACE—INF0{HANDLEhProcess;〃樣本進程句柄constchar*ProcessName;〃樣本進程名constchar*DllName;〃API導出的DLL名constchar*ApiName;//API函數名VOID*dwStackAddr;〃API函數實際參數堆棧指針}API—TRACE—INFO;(3)pdwRet用來設置被攔截函數的返回值;(4)pAdvCtrl為了將來擴充功能保留;H00KDLLHOOKDLL組件主要是接收捕獲引擎捕獲的API函數及其實際參數,並對實際參數進行具體分析,將分析的結果進行格式化輸出到資料庫或文件中。格式化輸出的分析內容有兩種,Trace型即記錄API調用的記錄而不關注其參數,Analysis型即把API和參數進行結合判斷後再記錄其行為特徵。HOOKDLL的功能(1)解析捕獲引擎傳遞的函數參數內容;(2)檢査參數內容與對應的API可能產生的惡意行為做規則匹配;(3)輸出Trace類型記錄;(4)輸出Analysis類型記錄;HOOKDLL的輸入項typedefVOID(*TracerFunc)(DWORDTraceMode,CTracelnfo*pInfo,API—TRACE—INFO&pApiInfo,DWORD*pdwRet,ADV—CONTROL*pControl);〃該接口由所有的HookDll處理函數共享以對WSAConnect函數的捕獲處理為例,病毒調用此API函數,必定引用了系統DLL,即Ws2—32.dll,與之對應的HOOKDLL是H_Ws2_32.dll,則對WSAConnect函數參數的具體分析轉入H—Ws2—32.dll中的MyWSAConnect函數進行處理,MyWSAConnect函數定義如下VOIDMyWSAConnect(DWORDTraceMode,CTracelnfo氺plnfo,API—TRACE—INFO&ApiInfo,DWORD*pdwRet,ADV一CONTROL*pAdvCtrl)MyWSAConnect首先判斷TraceMode的類型,然後從API—TRACE—INFO中的堆棧指針獲得參數內容在內存的地址,進而讀取這些內容並將其解析。Trace類型的記錄就是API調用事件和參數內容的輸出,Analysis類型的記錄是分析函數參數的內容是否同與該函數相關的惡意代碼行為規則所匹配,如果匹配則該行為作為Analysis類型的記錄被輸出。HOOKDLL的輸出項HOOKDLL的輸出項是使用類CTracelnfo派生的對象進行控制和輸出。以分析WSAConnect函數Trace類型為例VOIDMyWSAConnect(DWORDTraceModeCTracelnfo氺plnfo,API—TRACE—INFO&ApiInfo,DWORD*pdwRet,ADV—CONTROL*pAdvCtrl){plnfo-〉TracePrintA(INFO—CLASS—TRACE,EVENT—CLASS—NETWORK,EVENT—ID—TRACE—NETWORK—CONNECT,&ApiInfo,0,"connectto%d.%d.%d.%d:%u〃,\name.sin_addr.S—un.S_un_b.s—bl,\name,sin—addr.S—un.S_un—b.s一b2,\name,sin—addr.S—un.S—un一b.s—b3,\name,sin一addr.S—un.S—un—b.s_b4,\uPort);Trace類型記錄是將上述輸出語句中的INFO—CLASS—TRACE,和EVENT—ID—TRACE—NETW0RK_C0NNECT分別改為INFO—CLASS_ANALYSIS和EVENT—ID一ANALYSIS—NETWORK一CONNECT。HookDll的處理流程一旦調試事件EXCEPTION_DEBUG_EVENT發生,捕獲引擎即阻塞被跟蹤程序的執行,示意圖見圖10。如圖10所示,APITracer在跟蹤至某一系統API函數TestFunc,此時中斷TestFunc,記錄當前函數地址0xl7fa,並指針轉至能夠處理該函數的擴展插件,這個插件我們命名為HOOKDLL。然後,HOOKDLL記錄下此API調用,此外還有調用的時間戳及其相關參數,比如關聯的文件名、訪問的磁碟分區或修改註冊表的鍵值。完畢後,將指針重定向至0xl7fa處,釋放中斷。HOOKDLL的內部處理流程如圖11所示TraceMode為CALL—TRACE—MOED表明當前API函數的參數內容可以在調用前得到,而TraceMode為RETURN—TRACE_MOED則表明當前API函數的參數必須在函數調用後得到,同時還需要指明是否修改函數返回值。H00KDLL實現過程中使用的主要類庫和變量是CTracelnfo類和API—TRACE—INFO結構。CTracelnfo類在CommUtils.h頭文件中聲明,該類主要用於分析處理和記錄調試的相關信息。API_TRACE_INF0結構在CommUtils.h中聲明。這個結構包含了被攔截dll函數所在的進程句柄(hProcess),調用本函數的模塊名(Caller),調用本函數的Dll名(DllName),以及本函數的函數名(ApiName),函數參數堆棧指針(dwStackAddr)等。dwRet用來設置被攔截函數的返回值,而pAdvCtrl是為了將來擴充功能保留。根據表l,我們在系統中設計和實現了八個HOOKDLL,見下表5:tableseeoriginaldocumentpage25表5以上顯示和描述了本發明的基本原理和主要特徵和本發明的優點。本行業的技術人員應該了解,本發明不受上述實施例的限制,上述實施例和說明書中描述的只是說明本發明的原理,在不脫離本發明精神和範圍的前提下,本發明還會有各種變化和改進,這些變化和改進都落入要求保護的本發明範圍內。本發明要求保護範圍由所附的權利要求書及其等效物界定。權利要求1.針對計算機病毒的動態行為捕獲方法,其特徵在於,包括以下步驟(1)將API的調用設置為調試事件,由系統內核捕獲這個事件後通知調試器;(2)通過在指定API調用入口處設置調試斷點,捕獲程序執行到調試斷點便會發生中斷事件;(3)系統內核通過捕獲工具注射一個動態連結庫至惡意代碼進程空間,用這個動態連結庫來分析API的堆棧內容。2、根據權利要求1的針對計算機病毒的動態行為捕獲方法,其特徵在於,所述方法通過設置捕獲引擎來實現,該捕獲弓I擎在確定對指定樣本進程進行分析之後,檢査被分析樣本進程加載了哪些系統DLL,然後根據工作目錄下的H00KDLL的導出函數表,來確定需要在被分析樣本進程中哪些API調用處設置調試斷點;當樣本進程執行到調試斷點處會產生中斷事件,通過調試子系統獲得斷點發生時被分析樣本進程的執行環境,並將中斷時的堆棧參數送至H00KDLL中相應的處理函數進行具體分析。3、根據權利要求2的針對計算機病毒的動態行為捕獲方法,其特徵在於,所述捕獲引擎的輸入項包括樣本進程、捕獲引擎的所在目錄和目錄下所有H00KDLL名及H00KDLL導出函數表。4、根據權利要求2的針對計算機病毒的動態行為捕獲方法,其特徵在於,所述捕獲引擎在捕獲到調試中斷之後,會調用H00KDLL中相應的函數進行處理,這些函數採用相同的參數表,這個參數表就是行為捕獲引擎的輸出,定義為TracerF匿函數指針。5、根據權利要求2的針對計算機病毒的動態行為捕獲方法,其特徵在於,所述捕獲引擎的主要部分是一個循環,處理來自內核的調試事件,循環體內先等待一個調試事件,然後處理之,最後將控制權交還給調試伺服器,就好像一個窗口消息循環一樣。6、根據權利要求2的針對計算機病毒的動態行為捕獲方法,其特徵在於,所述捕獲引擎關注EXCEPTION—DEBUG—EVENT調試事件的發生,每次Win32API一旦被調用,就觸發一次EXCEPTION—DEBUG—EVENT事件;每調用一次Win32API,APITracer查找這些動態連結庫是否存在有同名函數,一旦發現即轉入HOOLDLL動態連結庫。7、根據權利要求6的針對計算機病毒的動態行為捕獲方法,其特徵在於,所述在調試器開始的時候,啟動要調試程序的新進程或者掛接到一個已運行進程上,此時啟動調試接口的伺服器端;使用WaitForDebugEvent函數等待調試伺服器端的調試事件的發生;根據事件進行相應的處理;最後使用ContinueDebugEvent函數請求調試伺服器繼續執行被調試進程,以等待並處理下一個調試事件。全文摘要本發明公開了一種應用於用來防治計算機病毒的自動化分析系統中的計算機病毒的動態行為捕獲方法。該方法通過將API的調用設置為調試事件,由系統內核捕獲這個事件後通知調試器;並且通過在指定API調用入口處設置調試斷點,捕獲程序執行到調試斷點便會發生中斷事件;然後系統內核通過捕獲工具注射一個動態連結庫至惡意代碼進程空間,用這個動態連結庫來分析API的堆棧內容。文檔編號G06F21/00GK101373501SQ20081003727公開日2009年2月25日申請日期2008年5月12日優先權日2008年5月12日發明者強候,姚靜晶,沈寒輝,肖新光,胡永濤,剛黃申請人:公安部第三研究所

同类文章

一種新型多功能組合攝影箱的製作方法

一種新型多功能組合攝影箱的製作方法【專利摘要】本實用新型公開了一種新型多功能組合攝影箱,包括敞開式箱體和前攝影蓋,在箱體頂部設有移動式光源盒,在箱體底部設有LED脫影板,LED脫影板放置在底板上;移動式光源盒包括上蓋,上蓋內設有光源,上蓋部設有磨沙透光片,磨沙透光片將光源封閉在上蓋內;所述LED脫影

壓縮模式圖樣重疊檢測方法與裝置與流程

本發明涉及通信領域,特別涉及一種壓縮模式圖樣重疊檢測方法與裝置。背景技術:在寬帶碼分多址(WCDMA,WidebandCodeDivisionMultipleAccess)系統頻分復用(FDD,FrequencyDivisionDuplex)模式下,為了進行異頻硬切換、FDD到時分復用(TDD,Ti

個性化檯曆的製作方法

專利名稱::個性化檯曆的製作方法技術領域::本實用新型涉及一種檯曆,尤其涉及一種既顯示月曆、又能插入照片的個性化檯曆,屬於生活文化藝術用品領域。背景技術::公知的立式檯曆每頁皆由月曆和畫面兩部分構成,這兩部分都是事先印刷好,固定而不能更換的。畫面或為風景,或為模特、明星。功能單一局限性較大。特別是畫

一種實現縮放的視頻解碼方法

專利名稱:一種實現縮放的視頻解碼方法技術領域:本發明涉及視頻信號處理領域,特別是一種實現縮放的視頻解碼方法。背景技術: Mpeg標準是由運動圖像專家組(Moving Picture Expert Group,MPEG)開發的用於視頻和音頻壓縮的一系列演進的標準。按照Mpeg標準,視頻圖像壓縮編碼後包

基於加熱模壓的纖維增強PBT複合材料成型工藝的製作方法

本發明涉及一種基於加熱模壓的纖維增強pbt複合材料成型工藝。背景技術:熱塑性複合材料與傳統熱固性複合材料相比其具有較好的韌性和抗衝擊性能,此外其還具有可回收利用等優點。熱塑性塑料在液態時流動能力差,使得其與纖維結合浸潤困難。環狀對苯二甲酸丁二醇酯(cbt)是一種環狀預聚物,該材料力學性能差不適合做纖

一種pe滾塑儲槽的製作方法

專利名稱:一種pe滾塑儲槽的製作方法技術領域:一種PE滾塑儲槽一、 技術領域 本實用新型涉及一種PE滾塑儲槽,主要用於化工、染料、醫藥、農藥、冶金、稀土、機械、電子、電力、環保、紡織、釀造、釀造、食品、給水、排水等行業儲存液體使用。二、 背景技術 目前,化工液體耐腐蝕貯運設備,普遍使用傳統的玻璃鋼容

釘的製作方法

專利名稱:釘的製作方法技術領域:本實用新型涉及一種釘,尤其涉及一種可提供方便拔除的鐵(鋼)釘。背景技術:考慮到廢木材回收後再加工利用作業的方便性與安全性,根據環保規定,廢木材的回收是必須將釘於廢木材上的鐵(鋼)釘拔除。如圖1、圖2所示,目前用以釘入木材的鐵(鋼)釘10主要是在一釘體11的一端形成一尖

直流氧噴裝置的製作方法

專利名稱:直流氧噴裝置的製作方法技術領域:本實用新型涉及ー種醫療器械,具體地說是ー種直流氧噴裝置。背景技術:臨床上的放療過程極易造成患者的局部皮膚損傷和炎症,被稱為「放射性皮炎」。目前對於放射性皮炎的主要治療措施是塗抹藥膏,而放射性皮炎患者多伴有局部疼痛,對於止痛,多是通過ロ服或靜脈注射進行止痛治療

新型熱網閥門操作手輪的製作方法

專利名稱:新型熱網閥門操作手輪的製作方法技術領域:新型熱網閥門操作手輪技術領域:本實用新型涉及一種新型熱網閥門操作手輪,屬於機械領域。背景技術::閥門作為流體控制裝置應用廣泛,手輪傳動的閥門使用比例佔90%以上。國家標準中提及手輪所起作用為傳動功能,不作為閥門的運輸、起吊裝置,不承受軸向力。現有閥門

用來自動讀取管狀容器所載識別碼的裝置的製作方法

專利名稱:用來自動讀取管狀容器所載識別碼的裝置的製作方法背景技術:1-本發明所屬領域本發明涉及一種用來自動讀取管狀容器所載識別碼的裝置,其中的管狀容器被放在循環於配送鏈上的文檔匣或託架裝置中。本發明特別適用於,然而並非僅僅專用於,對引入自動分析系統的血液樣本試管之類的自動識別。本發明還涉及專為實現讀