專利名稱:基于api hook的惡意代碼自動分析方法和系統的制作方法
技術領域:
本發明涉及惡意代碼。
背景技術:
本發明是利用API鉤子技術和遠程線程注入技術,對樣本進行監控。本發明記錄惡意代碼運行過程中對整個系統的影響,并自動生成動態分析報告,記錄惡意代碼樣本對文件,網絡,注冊表,進程所產生的影響,當樣本運行結束后,將系統恢復到樣本執行前的狀態。它不但具有自動分析功能(整個監控、記錄和還原的過程不需要人工的干預),并且還適用于大量樣本的無人工干預的分析,分析速度比較快,分析報告中的無用信息比較少。目前也有一些相關的專利,以下做些介紹專利2006100804 . X “一種惡意代碼自動分析系統及方法”含有多個相對獨立的模塊構成,惡意代碼運行模塊,文件監視模塊,注冊表監視模塊,函數調用監視模塊,網絡數據監視模塊,程序內部行為監視模塊,惡意代碼行為自動分析模塊,方法含有以下步驟 加載文件監視和注冊表監視的驅動程序,加載預定義要記錄的敏感函數,在惡意代碼運行的過程,同步記錄應用程序接口調用,文件,注冊表的訪問,網絡操作;當惡意代碼進程結束而自動退出,系統對這些行為進行自動分析,輸出自動分析結果;本發明提供的自動分析方法,完全記錄惡意代碼運行的行為,并對于惡意代碼使用的未知殼或變形殼不受影響。大幅度地提高了惡意代碼分析人員的工作效率。專利2006100804 . X在每運行一個樣本后,對系統進行恢復,沒有解決不在人工干預的情況下,自動分析大量樣本的問題。而且監控了整個系統的API調用,可能會有很多無用信息。專利200310106551. 8“一種分層協同的網絡病毒和惡意代碼識別方法”,是分層協同的網絡病毒和惡意代碼識別方法,特征是借鑒生物免疫強大的自我保護機制,將網絡病毒和惡意代碼識別技術和生物免疫系統的多層保護機制對應起來,通過統計分析關鍵詞詞頻判斷待檢測腳本的危險度,基于注冊表操作“自我集”的角度來分析判斷注冊表寫入表項路徑的異常行為,以及對應用程序編程接口執行序列進行非我識別,最終將全部異常行為信息通過網絡發送到網絡控制臺,較好地解決了未知網絡病毒和惡意代碼的異常行為識別問題,對未知網絡病毒和惡意代碼的具較好的識別能力,實現了對單個系統及整個子網中的網絡病毒和惡意代碼異常行為的監控和管理。如果對大量的惡意代碼樣本采用該方法進行識別,分析和檢測的速度會很慢。本發明與以上兩個專利相比,不僅在監控完成后,監控軟件按照樣本對操作系統的操作和影響,進行逆操作,恢復系統到運行樣本前的狀態。還完成了惡意代碼智能分析技術,適用于大量樣本的無人工干預的分析,分析速度比較快,分析報告中的無用信息比較少。本發明的困難性在兩個地方。第一在本發明中,檢測惡意代碼樣本對文件,網絡, 注冊表,進程所產生的影響是最重要的功能。必須在惡意代碼調用API的時候,對API的調用進行攔截,提取出API調用的參數,對這些參數進行解析,然后把這些信息傳送到監控中心,最終生成惡意代碼樣本分析報告。第二本發明必須不需要人工的干預,自動監測惡意代碼樣本。在每個樣本運行結束后,智能分析系統必須能夠恢復系統,然后自動運行下一個樣本,自動生成惡意代碼樣本動態監控報告。
發明內容
本發明是通過修改可執行文件在內存中映像的有關代碼,實現對API調用的動態攔截,獲取代碼的API調用序列和參數,從而達到監控惡意代碼對系統影響的目的。攔截 API的調用序列前需要安裝API鉤子(API Hook)。API鉤子由兩個模塊組成,一個是鉤子服務器(Hook Server)模塊,為EXE的形式;一個是鉤子驅動器(Hook Driver)模塊,為DLL 的形式。鉤子服務器負責向目標進程注入鉤子驅動器,使得鉤子驅動器運行在目標進程的地址空間中。而鉤子驅動器則負責實際的API攔截處理工作,并返回攔截結果,以便后續分析。在注入方式上,我們沒有采用注冊表注入和系統范圍的Windows鉤子,因為這兩種方式會使我們的系統性能嚴重下降,所以我們使用了 CreateRemoteThread函數在目標進程中建立并運行一個遠程線程的動態鏈接庫(DLL)注入方式。首先得到遠程進程的句柄,在遠程進程中為我們自己的動態鏈接庫文件名分配內存,然后使用 CreateRemoteThread函數和LoadLibrary函數把我們的動態鏈接庫映射進遠程進程,這樣就實現了注入。在攔截機制上,我們先找到原先的API函數的地址,然后把該函數開始的幾個字節用一個JMP指令代替,從而使得對該API函數的調用能夠轉向我們自己的函數調用。本發明首先采用掛起的方式啟動惡意代碼樣本程序。這樣惡意代碼進程已經創建,但是并沒有運行。然后將網絡監控模塊,注冊表監控模塊,進程監控模塊和文件監控模塊采用遠程線程注入的方法注入到樣本進程中去,對其進行監控。然后將惡意代碼進程喚醒,讓其繼續運行。惡意代碼對文件,網絡,注冊表,進程等的操作,會被網絡監控模塊,注冊表監控模塊,進程監控模塊和文件監控模塊攔截。各個模塊攔截到API后,對參數進行解析,然后讓樣本調用真正的API執行。監控模塊將監控信息通過socket發送到監控中心, 監控中心整理所有的信息,最終生成分析報告,并恢復系統到運行樣本前的狀態。本專利系統主要包括監控中心、4個監控模塊和系統恢復模塊樣本監控中心從收集到的數據中提取出一個樣本進行運行,實現dll的注入,對樣本主進程及其創建的進程線程進行監控,對監控中反饋的信息進行記錄,最終提交惡意代碼樣本動態監控報告,通過分析樣本動態監控報告中記錄的樣本對系統產生的影響情況,將系統恢復到運行樣本前的狀態。監控模塊(1)文件監控模塊該模塊監控樣本在系統中創建新的文件,修改文件,刪除文件的各種行為。將監控模塊的dll注入到樣本進程中,監控CreateFileAO,feiteFileO, ReadFileO, DeleteFileO等文件操作API的調用情況,將樣本要刪除和修改的文件拷貝到系統備份目錄下,記錄樣本所創建的文件的完整路徑,將獲取的信息傳送給日志記錄模塊。(2)網絡監控模塊監控樣本對外連接的IP或URL,獲取發送或接收的數據,將從網絡上下載的文件存放在樣本監控中心的目錄下,以便以后進一步的分析處理。監控socket建立的函數,以及sendO函數,監控樣本對外連接的網絡地址端口等信息,以及發送的數據內容。并把收集的內容發送給日志記錄模塊。(3)注冊表監控模塊監控樣本對注冊表的添加,刪除,修改等情況,監控 RegOpenEx (),RegDeleteKey (),RegSetValueEx (),RegCreateKeyEx ()等注冊表操作 API 的調用情況,并把獲取的修改信息發送給日志模塊。(4)進程監控模塊監控樣本是否創建新的進程,或注入遠線程到其他進程中,監控 CreateProcess (),ResumeProcess (),CreateRemoteThreadO 等進程或線程操作 API 的調用情況,進一步檢測子線程或子進程的運行情況,并把獲取的信息發送給日志模塊。系統恢復模塊(1)文件系統恢復通過分析日志報告將樣本在系統中創建的文件刪除,將樣本修改、刪除的文件從備份位置拷貝回原位置,使文件系統恢復到樣本運行前的狀態。(2)注冊表恢復通過分析日志報告將樣本在系統注冊表中添加的表項刪除、將樣本修改、刪除的表項恢復成原鍵值,使系統注冊表恢復到樣本運行前的狀態。(3)網絡端口恢復通過分析日志報告將樣本打開的端口關閉。(4)進程恢復通過分析日志報告將樣本創建的進程、線程結束,將樣本加載的 dll庫卸載。
圖1為本專利的具體流程圖;圖2為文件監控模塊流程圖;圖3為系統恢復流程具體實施例方式下面結合附圖對本發明的技術方案作詳細說明。圖1顯示了具體執行本發明的步驟圖,為了清楚地描述本發明,下面描述一個具體的實施例,細化圖1各步驟如下SlOl枚舉系統進程,找到樣本進程,采用遠程線程注入的方式啟動惡意代碼監控系統,注冊和加載各個模塊S102當一個樣本運行完畢,分析完日志報告,系統還原后,檢測樣本集目錄中是否還有樣本,如果沒有則結束S103以suspend狀態啟動樣本進程,此時樣本進程已經創建,但是并沒有運行S104通過使用遠程線程注入的方式把文件監控模塊,網絡監控模塊,注冊表監控模塊,進程監控模塊注入到樣本進程中S105當樣本進程調用被監控的創建文件、修改文件和刪除文件函數時,自動啟動文件監控模塊S106當樣本進程調用被監控的網絡數據接收和發送函數,對外連接IP和URL函數時,自動啟動網絡監控模塊S107當樣本進程調用被監控的注冊表添加、修改和刪除函數時,自動啟動注冊表監控模塊
S108當樣本進程調用被監控的進程、線程創建函數、內存修改函數時,自動啟動進程監控模塊S109解析監控模塊發送過來的函數調用和參數信息,將信息以層次關系的方式記錄到日志報告中,日志報告格式為XML。SllO分析日志報告,將樣本對系統產生的影響以逆序的方式使系統還原到樣本運行前的狀態不難發現本發明專利中主要使用由惡意代碼自動分析系統從收集到的大量樣本中,分析出樣本對系統的影響,最終生成樣本分析報告。最終的分析報告保存在樣本報告庫中。圖2顯示了監控模塊的具體工作過程,下面描述一個具體的實施例,細化圖2各步驟如下S201根據被監控函數的函數原型,創建需要被監控的函數的監控函數S202通過解析樣本進程調用的動態鏈接庫,獲取我們需要監控的函數的地址S203獲得我們自己編寫的監控函數的地址S204初始化鉤子函數的時候,讀取并保存該函數的頭5個字節S205將被監控函數的頭5個字節修改成jump匯編指令,使該函數能跳到我們自己編寫的監控函數S206調用被hook的函數時,程序會轉到并執行我們自己編寫的監控函數S207記錄傳入被監控函數的各項參數S208解析各項參數值,并保存到日志報告S209將被監控函數的頭5個字節重新恢復成原值,使鉤子函數中可以正常使用該函數。S210調用被監控的函數,記錄返回值S211將被監控函數的頭5個字節改回成jump匯編指令,以便當該函數再次被調用時能夠再一次被掛鉤圖3表示系統恢復功能的具體過程,主要是要消除惡意代碼樣本運行后對系統的影響,使下一個樣本的監控信息更加準確。它包含了以下步驟S301當檢測到樣本進程退出時,或者樣本運行15分鐘后,將監控完成標志置為真,此時監控完成S302卸載注入的監控模塊S303終止樣本創建的進程和線程、卸載dll庫S304分析日志報告,將樣本在系統中創建的文件刪除,將樣本修改、刪除的文件從備份位置拷貝回原位置,使文件系統恢復到樣本運行前的狀態S305分析日志報告,將樣本在系統注冊表中添加的表項刪除、將樣本修改、刪除的表項恢復成原鍵值,使系統注冊表恢復到樣本運行前的狀態S306分析日志報告,將樣本打開的端口關閉S307查找樣本集目錄,找到創建時間最早的一個樣本,以suspend狀態啟動樣本進程并進行監控
雖然本說明書只描述了所述方法的細節,而未更多地談及本發明的應用,但由于基于ΑΡΙΗ00Κ的惡意代碼自動分析方法和系統在惡意代碼研究中的重要價值,其應用面是非常廣泛的,所以,本發明的精神和范圍不應該局限于此處所描述的實施例。
權利要求
1.一種基于API HOOK的惡意代碼自動分析方法和系統,利用API鉤子技術和遠線程注入技術,對樣本進行監控。記錄惡意代碼運行過程中對整個系統的影響,并自動生成動態分析報告,記錄惡意代碼樣本對文件,網絡,注冊表,進程所產生的影響,當樣本運行結束后,將系統恢復到樣本執行前的狀態。這種基于ΑΡΙΗ00Κ的惡意代碼自動分析方法和系統主要使用由惡意代碼自動分析系統從收集到的大量樣本中,分析出樣本對系統的影響,最終生成樣本分析報告,最終的分析報告保存在樣本報告庫中。這個系統包括以下模塊監控中心、4個監控模塊(文件監控、網絡監控、注冊表監控、進程監控)和系統恢復模塊。
2.如權利1所述的基于APIHOOK的惡意代碼自動分析方法和系統,其特征在于,監控軟件每次只運行一個樣本,對樣本主進程及其創建的進程線程進行監控,監控完畢后,恢復系統到樣本運行前的狀態。不需要人工的干預,自動監測惡意代碼樣本。
3.如權利1所述的基于APIHOOK的惡意代碼自動分析方法和系統,其特征在于,需要檢測惡意代碼樣本對文件,網絡,注冊表,進程所產生的影響。檢測惡意代碼樣本對文件的創建,刪除,修改等行為;檢測惡意代碼樣本對網絡的操作行為;檢測惡意代碼樣本對注冊表添加,刪除和修改等行為。檢測惡意代碼樣本創建進程的操作行為。最終提交惡意代碼樣本動態監控報告。
4.如權利1所述的基于APIHOOK的惡意代碼自動分析方法和系統,其特征在于,適用于大量樣本的無人工干預的分析,分析速度比較快,分析報告中的無用信息比較少。
5.如權利2所述的基于APIHOOK的惡意代碼自動分析方法和系統,其特征在于,監控完成后,監控軟件按照樣本對操作系統的操作和影響,進行逆操作,恢復系統到運行樣本前的狀態。
6.如權利3所述的基于APIHOOK的惡意代碼自動分析方法和系統,其特征在于,要能智能的監控樣本文件的行為特征,比如文件操作行為,注冊表操作行為,網絡操作行為和進程操作行為,并自動生成樣本文件動態分析報告。通過對動態報告的分析,判斷出樣本是否為惡意代碼。
7.如權利3所述的基于APIHOOK的惡意代碼自動分析方法和系統,其特征在于,由于檢測惡意代碼樣本對文件,網絡,注冊表,進程所產生的影響是最重要的功能,所以必須在惡意代碼調用API的時候,對API的調用進行攔截,提取出API調用的參數,對這些參數進行解析,然后把這些信息傳送到監控中心,最終生成惡意代碼樣本分析報告。
8.如權利5所述的基于APIHOOK的惡意代碼自動分析方法和系統,其特征在于,必須在不需要人工的干預,自動監測惡意代碼樣本。在每個樣本運行結束后,智能分析系統必須能夠恢復系統,然后自動運行下一個樣本,自動生成惡意代碼樣本動態監控報告。
全文摘要
本發明利用API鉤子技術和遠線程注入技術,對樣本進行監控。記錄惡意代碼運行過程中對整個系統的影響,并自動生成動態分析報告,記錄惡意代碼樣本對文件,網絡,注冊表,進程所產生的影響,當樣本運行結束后,將系統恢復到樣本執行前的狀態。整個監控、記錄和還原的過程不需要人工的干預,自動完成。監控軟件每次只運行一個樣本,對樣本主進程及其創建的進程線程進行監控,監控完畢后,恢復系統到樣本運行前的狀態。檢測惡意代碼樣本對文件的創建,刪除,修改等行為;檢測惡意代碼樣本對網絡的操作行為;檢測惡意代碼樣本對注冊表添加,刪除和修改等行為。檢測惡意代碼樣本創建進程的操作行為。最終提交惡意代碼樣本動態監控報告。監控完成后,監控軟件按照樣本對操作系統的操作和影響,進行逆操作,恢復系統到運行樣本前的狀態。本發明提到的惡意代碼智能分析技術,適用于大量樣本的無人工干預的分析,分析速度比較快,分析報告中的無用信息比較少。
文檔編號G06F21/00GK102314561SQ20101021506
公開日2012年1月11日 申請日期2010年7月1日 優先權日2010年7月1日
發明者余圣, 周世杰, 周佩穎, 秦志光, 陳晉福, 陳陪 申請人:電子科技大學