專利名稱:一種僵尸網(wǎng)絡追蹤方法
技術(shù)領(lǐng)域:
本發(fā)明屬于網(wǎng)絡安全技術(shù)領(lǐng)域,尤其涉及僵尸網(wǎng)絡的追蹤與防御方法。
背景技術(shù):
當前,計算機已經(jīng)廣泛深入到人們?nèi)粘I钪?,成為人們?jīng)常使用的工具,上網(wǎng)成了必不可少的日常工作。于此同時,各種網(wǎng)絡安全問題也隨之產(chǎn)生。蠕蟲,病毒,木馬,后門, 漏洞利用程序等對網(wǎng)絡安全構(gòu)成了很大的威脅。僵尸網(wǎng)絡的出現(xiàn),更是對網(wǎng)絡安全的一個極大考驗。僵尸網(wǎng)絡是指控制者通過傳播惡意代碼控制與互聯(lián)網(wǎng)相連接的計算機,從而形成的控制者和大量被感染者主機之間的一個可一對多控制的網(wǎng)絡。僵尸控制者通過向僵尸程序發(fā)送各種命令來控制僵尸程序的活動。僵尸網(wǎng)絡與木馬有相似之處,但木馬只會攻擊特定目標,并不會借助被植入木馬的主機再去攻擊其他主機。僵尸網(wǎng)絡不但會攻擊被感染的主機,而且它具有自行展開攻擊的特性。經(jīng)過大量研究表明,僵尸網(wǎng)絡的主要危害包括*分布式拒絕服務攻擊(DDos)這是僵尸網(wǎng)絡的主要危害。攻擊者向自己控制的所有計算機發(fā)送指令,讓它們在特定的時間同時訪問特定的網(wǎng)絡目標。由于僵尸網(wǎng)絡可以形成龐大的規(guī)模,這讓這種DDos比傳統(tǒng)的DDos攻擊手段具有更高的危害性,也更難防范。*傳播蠕蟲對蠕蟲的研究表明,影響一個蠕蟲破壞效果的一個重要因素是釋放蠕蟲的初始節(jié)點的規(guī)模和分布。僵尸網(wǎng)絡控制者可以向大量的計算機發(fā)送蠕蟲代碼,然后讓這些計算機同時運行蠕蟲程序,增加了蠕蟲的破壞性,給國家基礎(chǔ)信息網(wǎng)絡保護帶來更加嚴峻的挑戰(zhàn)。*竊取秘密僵尸網(wǎng)絡控制者可以從僵尸計算機中竊取用戶的各種敏感信息,例如個人賬戶,機密數(shù)據(jù)等。同時,還可以監(jiān)控僵尸計算機用戶的一舉一動,給用戶的個人隱私帶來嚴重的威脅。由于僵尸網(wǎng)絡的危害性很高,對僵尸網(wǎng)絡的檢測和防御成為最近幾年網(wǎng)絡安全的熱點,很多著名的公司和組織均參與其中。目前,比較流行的一種僵尸網(wǎng)絡追蹤方法包括以下部分首先,獲取惡意代碼樣本??梢酝ㄟ^主動爬蟲系統(tǒng)或被動蜜罐系統(tǒng)獲取惡意代碼樣本。然后,分析惡意代碼的網(wǎng)絡行為。一種常用的方法是借助Hook技術(shù)實現(xiàn)對獲得的惡意代碼的自動化分析。最后,模擬僵尸程序追蹤僵尸網(wǎng)絡。根據(jù)所獲得的僵尸程序的網(wǎng)絡行為,追蹤程序嚴格按照其通信方式與僵尸網(wǎng)絡進行通信,并記錄接收到的僵尸網(wǎng)絡控制者發(fā)來命令。上述僵尸網(wǎng)絡追蹤方法的缺點是需要不斷的運行惡意代碼樣本來獲得樣本的網(wǎng)絡行為,然后利用這些網(wǎng)絡行為與僵尸網(wǎng)絡交互,需要多個線程完成追蹤任務,這樣使得操作系統(tǒng)負擔較大。
發(fā)明內(nèi)容
因此,本發(fā)明的目的在于提供一種僵尸網(wǎng)絡追蹤方法來克服上述現(xiàn)有技術(shù)的缺陷。本發(fā)明的目的是通過以下技術(shù)方案實現(xiàn)的本發(fā)明的一個實施例中,提供了一種僵尸網(wǎng)絡追蹤方法,所述方法包括步驟1) 根據(jù)每個惡意代碼樣本的網(wǎng)絡行為生成相應的追蹤模板,所述追蹤模板記錄所述惡意代碼樣本與僵尸網(wǎng)絡控制者的通信過程;步驟2)利用所述追蹤模板來對相應的僵尸網(wǎng)絡進行追蹤。根據(jù)本發(fā)明實施例的追蹤方法,其中,步驟1)中將每個惡意代碼樣本的網(wǎng)絡行為寫入一個單獨的與這個惡意代碼樣本對應的模板并且要按照樣本網(wǎng)絡行為捕獲的先后順序來將其寫入追蹤模板。根據(jù)本發(fā)明實施例的追蹤方法,步驟1)包括以下步驟步驟11)運行惡意代碼樣本;步驟1 捕獲所述惡意代碼樣本產(chǎn)生的網(wǎng)絡行為,步驟13)將所述網(wǎng)絡行為記錄到追蹤模板中。根據(jù)本發(fā)明實施例的追蹤方法,其中對于每個網(wǎng)絡行為,所述追蹤模板記錄的內(nèi)容包括收到命令的時間、命令名稱、執(zhí)行命令需要的參數(shù),所述命令負載執(zhí)行該網(wǎng)絡行為。根據(jù)本發(fā)明實施例的追蹤方法,其中步驟2、包括以下步驟從所生成的追蹤模板中依次讀取相應的網(wǎng)絡行為;按照所述網(wǎng)絡行為與僵尸網(wǎng)絡進行交互。根據(jù)本發(fā)明實施例的追蹤方法,其中步驟2、包括以下步驟步驟2-1)為追蹤模板中所記錄的每個網(wǎng)絡行為編寫對應的命令處理函數(shù);步驟2-2、打開模板文件,步驟2- 順序讀取每個網(wǎng)絡行為并調(diào)用該網(wǎng)絡行為所對應的命令處理函數(shù);根據(jù)本發(fā)明實施例的追蹤方法,其中在步驟1)之前還包括以下步驟持續(xù)運行爬蟲程序,其自動將被惡意代碼感染的URL寫到URL列表中;每個固定時間,爬蟲程序?qū)RL列表傳輸?shù)矫酃尴到y(tǒng),并清空原URL列表的內(nèi)容;蜜罐系統(tǒng)分析URL列表,獲得惡意代碼樣本并按照MD5值的不同將其存入惡意代碼數(shù)據(jù)庫中相應的位置。根據(jù)本發(fā)明實施例的追蹤方法,其中所述蜜罐系統(tǒng)搭建在虛擬機平臺上。與現(xiàn)有技術(shù)相比,本發(fā)明的優(yōu)點在于通過預先生成的追蹤模板,編寫追蹤程序。 追蹤程序根據(jù)追蹤模板上的步驟,模擬僵尸程序與僵尸網(wǎng)絡控制者進行通信,從而不再需要運行真正的僵尸程序,避免運行真實僵尸程序追蹤時帶來的危害,同時減少了追蹤僵尸網(wǎng)絡的代價,并可以利用多線程的方式并發(fā)的追蹤大量的僵尸網(wǎng)絡。
以下參照附圖對本發(fā)明實施例作進一步說明,其中圖1為根據(jù)本發(fā)明一個實施例的主動爬蟲與被動蜜罐結(jié)合獲取惡意代碼樣本的流程圖;圖2為根據(jù)本發(fā)明一個實施例的追蹤程序利用追蹤模板追蹤僵尸網(wǎng)絡的流程圖。
具體實施例方式為了使本發(fā)明的目的,技術(shù)方案及優(yōu)點更加清楚明白,以下結(jié)合附圖通過具體實施例對本發(fā)明進一步詳細說明。應當理解,此處所描述的具體實施例僅僅用以解釋本發(fā)明, 并不用于限定本發(fā)明。在本發(fā)明的一個實施例中,提供了一種基于模板的僵尸網(wǎng)絡追蹤方法。首先,從網(wǎng)上獲取惡意代碼樣本(也可以稱為惡意代碼樣本程序或簡稱為樣本程序);接著,分析僵尸程序的網(wǎng)絡行為,并自動生成網(wǎng)絡行為的追蹤模板(在下文中也可簡稱為模板);然后,追蹤程序利用追蹤模板對僵尸網(wǎng)絡進行追蹤。具體實施步驟描述如下首先,獲取惡意代碼樣本。在一些實施例中,可以采用本領(lǐng)域技術(shù)人員所熟知的任何方法來獲取惡意代碼樣本,例如爬蟲系統(tǒng)、蜜罐系統(tǒng)等。在一個實施例中,可以采用結(jié)合主動爬蟲技術(shù)和被動蜜罐技術(shù)兩種惡意代碼樣本捕獲方式。圖1描述了主動爬蟲與被動蜜罐結(jié)合獲取惡意代碼樣本的流程圖。先采用爬蟲程序生成被惡意代碼感染的url列表url. txt,然后利用被動蜜罐技術(shù)來分析url. txt中的每一個url,獲取惡意代碼樣本。具體步驟如下準備過程在Vmware虛擬機上搭建被動蜜罐系統(tǒng),并生成快照;利用VC6. 0在主機編寫網(wǎng)絡爬蟲程序Spiderfro,并建立保存惡意代碼的數(shù)據(jù)庫。步驟1. 1)在主機上持續(xù)運行爬蟲程序,利用getURL函數(shù)獲得被惡意代碼感染的 url列表文件url. txt。其中,函數(shù)getURL的功能主要是自動下載exe格式惡意代碼樣本并將惡意代碼樣本按照MD5值的不同存入惡意代碼數(shù)據(jù)庫中相應的位置,同時將被惡意代碼感染的url寫到url. txt中。函數(shù)getURL (url)定義如下void getURL (url){定義保存url列表的隊列Q ;初始化Q,將參數(shù)中的url入隊;While (^!不為空)or (時間不超過24小時)){從Q中讀取一個url;打開該url ;下載打開的網(wǎng)頁中的所有內(nèi)容;按固定格式分析下載內(nèi)容,找出exe下載鏈接和其它url ;從exe下載鏈接中下載exe文件,判斷該文件的MD5值,如果數(shù)據(jù)庫中已經(jīng)存在, 將相應樣本數(shù)量加1,否則插入數(shù)據(jù)庫樣本文件中;判斷獲得的url是否已經(jīng)存在url列表中,如果存在,則舍棄,否則將獲得的url 插入Q,同時將url寫入url. txt文件中;}程序結(jié)束;}以上函數(shù)getURL (url)的定義僅起示例和說明的作用,本領(lǐng)域普通技術(shù)人員應理解可以在現(xiàn)有的操作系統(tǒng)平臺上使用已有的任何編程語言來實現(xiàn)該函數(shù)的功能,即獲取被惡意代碼感染的ur 1列表。步驟1. 2)利用虛擬機編程接口 VIX API編寫傳輸url. txt文件程序,每隔M小時,程序?qū)rl. txt文件傳入虛擬機上的蜜罐系統(tǒng)中,同時清空原url. txt中的內(nèi)容。步驟1. 3)虛擬機中的蜜罐系統(tǒng)動態(tài)分析url. txt文件中的每個url。如果虛擬機上蜜罐系統(tǒng)返回結(jié)果中有exe文件,判斷其MD5值,如果已經(jīng)在數(shù)據(jù)庫中,則將數(shù)據(jù)庫中對應的樣本數(shù)量加1,否則,將新樣本插入數(shù)據(jù)庫中。要在虛擬機中執(zhí)行蜜罐系統(tǒng)是為了防止對主機操作系統(tǒng)的破壞,蜜罐系統(tǒng)本來就是為了捕獲惡意代碼樣本而設(shè)的,在虛擬機中運行那些被惡意代碼感染的url列表,惡意代碼會趁機入侵到虛擬機中。惡意代碼入侵時, 必須要拷貝一份exe文件到本地電腦,蜜罐系統(tǒng)就可以捕獲這些惡意代碼。蜜罐系統(tǒng)捕獲惡意代碼后,會將惡意代碼樣本返回給事先定義的處理程序,該程序會利用惡意代碼的MD5 來判斷惡意代碼樣本是否已經(jīng)存在于前面的惡意代碼數(shù)據(jù)庫中。步驟1. 4)當url. txt分析完畢后,傳輸程序調(diào)用虛擬機編程接口 VIX API提供的 RevertToSnapshot ()函數(shù)將虛擬機上的蜜罐系統(tǒng)恢復到分析url. txt文件之前的快照點, 等待分析新的url. txt文件?,F(xiàn)有技術(shù)主要是利用主動爬蟲或者被動蜜罐中的一種來捕獲樣本。主動爬蟲的優(yōu)點是能夠快速獲得大量惡意URL,但是準確率較低,容易出現(xiàn)誤報;而被動蜜罐的優(yōu)點是不依賴于任何復雜的檢測技術(shù),誤報率和漏報率都比較低,缺點是需要較多的時間和精力投入。相比而言在本實施例中采用主動爬蟲和被動蜜罐系統(tǒng)相結(jié)合來獲取惡意代碼樣本的方法,結(jié)合這兩種技術(shù)的優(yōu)點,提高了收集樣本的效率和準確率,可以持續(xù)高效獲得惡意代碼樣本。接著,分析惡意代碼樣本的網(wǎng)絡行為,自動生成追蹤模板。惡意代碼的網(wǎng)絡行為可以理解為樣本在網(wǎng)絡上執(zhí)行了什么動作,比如與僵尸控制者建立通信(connect),向僵尸控制者發(fā)送數(shù)據(jù)(send),接收僵尸控制者的命令(recv)等。 在一些實施例中,可以使用本領(lǐng)域技術(shù)人員已知技術(shù)來分析惡意代碼樣本并獲得樣本的網(wǎng)絡行為,例如利用各種已知的主動爬蟲或者被動蜜罐技術(shù)獲取惡意代碼樣本,采用各種攔截技術(shù)捕獲惡意代碼的網(wǎng)絡行為。但是,在現(xiàn)有方法中捕獲惡意代碼的網(wǎng)絡行為只是為了利用這些信息操縱惡意代碼樣本與僵尸網(wǎng)絡進行交互,從而得到僵尸網(wǎng)絡的范圍以及危害程度等信息。而在本發(fā)明中,獲得網(wǎng)絡行為是為了生成特定的追蹤模板,也就是運行惡意代碼樣本程序,將該程序與僵尸網(wǎng)絡控制者詳細的通信過程記錄為追蹤模板。這些追蹤模板將會在后面的追蹤中代替原有惡意代碼樣本的功能,這樣,就可以不再依賴于原來的惡意代碼樣本。而且與傳統(tǒng)的僵尸網(wǎng)絡追蹤方法相比,本發(fā)明在追蹤時不需要運行原來的惡意代碼樣本程序,只需要讀取模板,按照模板上的記錄執(zhí)行相應的動作即可,這項任務可以利用一個線程來實現(xiàn),這樣就降低了系統(tǒng)同時運行多個程序的負擔,只需采用多線程的方式, 即可實現(xiàn)對多個僵尸網(wǎng)絡的并發(fā)追蹤。在本發(fā)明的一個實施例中,通過分析惡意代碼樣本的網(wǎng)絡行為來自動生成追蹤模板。追蹤模板格式例如但不限于以起始標記(例如“commandstart”)開頭,以結(jié)束標記 (例如“commandend”)結(jié)束,其中的內(nèi)容依次為收到命令的時間,命令名稱和執(zhí)行命令需要的參數(shù)。下面以send命令為例說明模板的格式如果接到的命令是send,則先向模板中寫入“commandstart”,換一行,寫入“Time 該命令收到的時間”,再換一下,寫入“command send",再換一行,寫入“IP :ip地址”,再換一行,寫入“Port 端口號”,再換一行,寫入 "Message 要發(fā)送的信息”,再換一行,寫入“commandend”。這樣發(fā)送信息的模板就定制完成。對于其他的命令,按照類似的格式來生成模板,所述格式例如“起始標記收到命令的時間;命令名稱;執(zhí)行命令需要的參數(shù);結(jié)束標記”。其中, 應指出,追蹤模板的寫入順序要嚴格按照樣本網(wǎng)絡行為發(fā)生的先后順序。獲取惡意代碼網(wǎng)絡行為可以通過多種Hook技術(shù)。在本實施例中,利用Detours (一個在x86平臺上截獲任意Win32函數(shù)調(diào)用的工具庫)庫來分析僵尸程序的網(wǎng)絡行為。利用 Detours庫編寫用于掛接系統(tǒng)函數(shù)的動態(tài)鏈接庫程序DetoursApi. dll,在虛擬機上運行前面捕獲的惡意代碼樣本,根據(jù)DetoursApi. dll截獲的惡意代碼樣本運行時調(diào)用的系統(tǒng)API 來獲得惡意代碼的網(wǎng)絡行為,將捕獲的惡意代碼的網(wǎng)絡行為寫入一個對應的模板中。其中, 捕獲的某個惡意代碼產(chǎn)生的網(wǎng)絡行為必須寫入一個單獨的與這個惡意代碼對應的模板,不可將不同的惡意代碼的網(wǎng)絡行為寫在一起,而且寫入時要按照網(wǎng)絡行為捕獲的先后順序。 將生成的記錄惡意代碼網(wǎng)絡行為的模板文件存入固定的目錄下保存,以便后面程序可以利用這些模板來模仿對應惡意代碼,與僵尸網(wǎng)絡進行交互。具體步驟如下(1)利用Detours庫編寫用于掛接系統(tǒng)函數(shù)的動態(tài)鏈接庫程序DetoursApi??梢詮腗icrosoft網(wǎng)站下載Detours庫并安裝,在VC6下創(chuàng)建一個Win32Dl 1工程,命名為DetoursApi。在DetourApi中能夠掛接產(chǎn)生網(wǎng)絡行為的關(guān)鍵API函數(shù)。所掛接的關(guān)鍵 API 包括 SocketWSASocket (Socket 通信函數(shù)),Connect\WSAConnect (連接遠程主機)、Send\WSASend (TCP 發(fā)送信息)、Recv\WSARecv (TCP 接收信息)、Closesocket (關(guān)閉套接字)、Sendto\WSASendto (udp 套接字發(fā)送)、Recvfrom\WSARecvFrom(udp 套接字接收函數(shù))、gethostbyname\gethostname (返回 IP\ 返回主機名)、InternetOpenUr 1A\ InternetOpenUrlK 打開 Url 的 Internet 文件)等。為闡述清晰,下面以截獲MessageBoxA函數(shù)為例,說明如何用Detours攔截惡意代碼樣本所調(diào)用的系統(tǒng)API #T1C DetoursApi 巾 IS 胃 f 白勺 MessageBoxA 01 , IvT^ % MessageBox_Mine。 MessageBox_Mine函數(shù)的參數(shù)必須與MessageBoxA函數(shù)的參數(shù)完全相同。接著,在DetoursApi項目入口函數(shù)中的加載DLL事件中加入SystemMessageBox = (MessageBoxSys)DetoursFindFunction( "user32.dll", “MessageBoxA,,)-J/ 從 user32. dll 文件中找到 MessageBoxA 函數(shù)的入口地址 If (SystemMessageBox = = NULL){return FALSE ;}H如果沒有找到,說明出錯Real_MessageBox = (MessageBoxSys) DetourFindFunction ((PBYTE) SystemMessageBox, (PBYTE)MessageBox_Mine) -J/ 將程序地址轉(zhuǎn)到自己定義的 MessageBoxAΠ, ^ Φ MessageBox_Mine 0 g DetoursApi 巾 IS 胃白勺 f 的MessageBoxA函數(shù),MessageBox_Mine函數(shù)的參數(shù)必須與MessageBoxA函數(shù)的參數(shù)完全相同。這樣確保惡意代碼調(diào)用系統(tǒng)MessageBoxA函數(shù)時調(diào)用到自己實現(xiàn)編寫好的 MessageBox_Mine函數(shù),該函數(shù)可以記錄惡意代碼的網(wǎng)絡行為。
然后,在DetoursApi項目入口函數(shù)中的卸載Dll事件中添加 DetoursRemove ((PBYTE) Real_MessageBox, (PBYTE) MessageBox_Mine)。這樣就可以截獲對 MessageBox函數(shù)的調(diào)用了。//捕獲完成以后,必須將原來的函數(shù)還原,以免影響其他程序的調(diào)用。(2)以Release模式(程序的發(fā)布版本,保證生成的程序可以在自己電腦之外的電腦上運行)編寫DetoursApi,輸出的DetoursApi.dll即是所需的動態(tài)鏈接程序。(3)利用Detours自帶的SetDll. exe重寫二進制可執(zhí)行文件(即要運行的惡意代碼樣本)。在保證其原有功能的前提下,為其加入對DetoursApi. dll的依賴,從而保證惡意代碼運行時調(diào)用DetoursApi. dll中的函數(shù)。以M. exe為例(假設(shè)該程序運行時調(diào)用 MessageBoxA()函數(shù),而MessageBoxA()函數(shù)已在DetoursApi. dll中被定義)來說明利用 SetDll. exe重寫二進制文件的方法。setdll/d:DetoursApi. dll Μ· exe (假設(shè) Μ· exe 放在 d 盤)此時已經(jīng)為M. exe添力口了對DetoursApi. dll的依賴。(4)搭建虛擬主機。將Detours已經(jīng)提供的功能模塊withdll編譯后的exe文件放置在Windows系統(tǒng)目錄(C:\WIND0WS\system32)中,同時將編譯好的DetoursApi. dll文件放入該目錄。(5)利用VIX API (VMware為用戶提供的能夠?qū)崿F(xiàn)自動化操作虛擬機的編程接口) 編寫程序,將前面獲得的惡意代碼樣本傳入虛擬機中運行。每傳入一個新的樣本,程序調(diào)用 VIX API中的“RevertToSnapshotO ”將虛擬機上的操作系統(tǒng)自動恢復到未運行惡意代碼時的快照點,保證PC機器沒有被其他樣本污染。(6)運行惡意代碼樣本程序,將該程序與僵尸網(wǎng)絡控制者詳細的通信過程記錄為追蹤模板。按照樣本網(wǎng)絡行為發(fā)生的先后順序。模板格式為以“commandstart”開頭,以 “commandend”結(jié)束,內(nèi)容依次為收到命令的時間,命令名稱和執(zhí)行命令需要的參數(shù)。(7)當捕獲到close命令時,停止該惡意代碼樣本的運行,并傳入一個新樣本。(8)將生成的模板保存到一個固定的目錄。保存惡意代碼樣本的數(shù)據(jù)庫表中設(shè)置 path和flag屬性。將模板的存儲路徑保存到對應的樣本中的path里面,同時將flag設(shè)置為0,表明模板未被使用。以上步驟僅起示例和說明的作用,本領(lǐng)域普通技術(shù)人員應理解在其他實施例中可以在現(xiàn)有的操作系統(tǒng)平臺上使用已有的任何編程語言來實現(xiàn)捕獲惡意代碼樣本的網(wǎng)絡行為的功能,并按照本發(fā)明實施例中定義的追蹤模板格式和內(nèi)容來生成追蹤模板。最后,利用生成的追蹤模板對相應的僵尸網(wǎng)絡進行追蹤。追蹤模板可以簡化對僵尸網(wǎng)絡進行追蹤的過程,只需按照模板上記錄的相關(guān)信息做出相應的動作即可對相應的僵尸網(wǎng)絡進行追蹤。在本發(fā)明的一個實施例中,用Python2. 5 編寫追蹤程序TracePro。在追蹤之前應根據(jù)利用生成的追蹤模板所記錄的信息為每個網(wǎng)絡行為編寫一個實現(xiàn)函數(shù);在追蹤時讀取模板中所記錄的每個網(wǎng)絡行為并調(diào)用該網(wǎng)絡行為所對應的實現(xiàn)函數(shù)。具體步驟包括(1)根據(jù)追蹤模板記錄的網(wǎng)絡行為信息,為每個網(wǎng)絡行為編寫一個實現(xiàn)函數(shù),每個函數(shù)對應一個命令的實現(xiàn)。下面以connect命令的實現(xiàn)函數(shù)NewConnect為例說明命令處理函數(shù)的定義方式
函數(shù)NewConnectO定義如下
從模板中讀入IP地址;從模板中讀入端口號;利用IP地址和端口號嘗試鏈接服務器;如果連接成功,返回TRUE ;否則,等待IOmins;如果連接三次未能成功,返回FALSE ;(2)用Python語言定義讀取模板函數(shù)getTemplate ()和追蹤函數(shù)traceWithTemp late(templatePath)。模板函數(shù)getTemplate ()定義如下讀取數(shù)據(jù)庫中模板的路徑;將對應的flag值置為1 ;//已經(jīng)被使用返回模板文件路徑;追蹤函數(shù) traceWithTemplate (templatePath)定義如下按照模板文件路徑打開追蹤模板;while模板文件沒有讀完從模板中讀取一行;分析該行的動作;//例如讀入的命令可以是connect、send、receive等;根據(jù)讀取的命令調(diào)用相應的命令處理函數(shù);返回新的命令;(3)循環(huán)調(diào)用getTemplate函數(shù)從數(shù)據(jù)庫中讀取通信模板地址。(4)將獲得的通信模板地址傳入traceWithTemplate函數(shù)中。(5) traceWithTemplate函數(shù)根據(jù)傳入的模板地址打開模板文件,按行讀取模板中的命令。分析命令的含義,并根據(jù)不同的命令調(diào)用對應的命令處理函數(shù)。(6)判斷命令處理函數(shù)的返回值,如果為TRUE,轉(zhuǎn)(7);如果為FLASE,則停止對應模板的追蹤線程。(7)利用變量saveOldTime變量保存當前命令的時間。利用saveNewTime變量保存下一條命令的時間,計算出兩條命令的時間間隔。(8)追蹤程序按照(7)中得到的時間隔,休眠同樣的一段時間,然后讀取下一條命令。(9)如果得到的命令是close,則程序休眠M小時,轉(zhuǎn)(3)從上文所述的實施例可以看出,與傳統(tǒng)的僵尸網(wǎng)絡追蹤方法相比,本發(fā)明對僵尸網(wǎng)絡追蹤時不是操縱原來的惡意代碼樣本與之交互,而是利用自己編寫的追蹤程序,讀取前面生成的追蹤模板。追蹤程序的功能比原來的惡意代碼要簡單的多,它只需要讀取模板中的命令,調(diào)用對應的命令處理函數(shù)來處理這個命令即可。由于追蹤模板中詳細的記錄了原來的惡意代碼與僵尸網(wǎng)絡交互時的完整通信過程,追蹤程序可以從模板中讀出與僵尸網(wǎng)絡交互所需要的各種參數(shù)。按照模板記錄的順序,追蹤程序完全可以重現(xiàn)惡意代碼與僵尸網(wǎng)絡的交互過程。由于追蹤過程非常簡單,可以利用一個線程來完成這任務。因此可以調(diào)用多個線程同時讀取相同數(shù)量的追蹤模板,從而可以實現(xiàn)并發(fā)的對多個僵尸網(wǎng)絡進行追蹤,并及時的將追蹤結(jié)果返回。由于可利用多線程的方式追蹤僵尸網(wǎng)絡,與現(xiàn)有技術(shù)中同時運行多個程序追蹤僵尸網(wǎng)絡相比,既降低了運行時的內(nèi)存代價,又提高了追蹤效率,而且不會降低準確率。應指出,本發(fā)明所提供的僵尸網(wǎng)絡追蹤方法不局限于任何軟件或硬件平臺,在上述實施例中所使用的具體的操作系統(tǒng)平臺、編程語言、數(shù)據(jù)庫以及庫函數(shù)等均起示例的作用,本領(lǐng)域普通的技術(shù)人員應理解可以使用其他現(xiàn)有的技術(shù)來實現(xiàn)本發(fā)明所提供的僵尸追
蹤方法。通過上述本發(fā)明具體實施例,可以脫離原來的惡意代碼樣本,利用追蹤程序和自動生成的追蹤模板深入僵尸網(wǎng)絡監(jiān)視其內(nèi)部活動,而且還可以并發(fā)追蹤多個僵尸網(wǎng)絡,因此可以及時獲得僵尸網(wǎng)絡的動向,對減少僵尸網(wǎng)絡的危害具有重要意義。雖然本發(fā)明已經(jīng)通過優(yōu)選實施例進行了描述,然而本發(fā)明并非局限于這里所描述的實施例,在不脫離本發(fā)明范圍的情況下還包括所作出的各種改變以及變化。
權(quán)利要求
1.一種僵尸網(wǎng)絡追蹤方法,所述方法包括步驟1)根據(jù)每個惡意代碼樣本的網(wǎng)絡行為生成相應的追蹤模板,所述追蹤模板記錄所述惡意代碼樣本與僵尸網(wǎng)絡控制者的通信過程;步驟2、利用所述追蹤模板來對相應的僵尸網(wǎng)絡進行追蹤。
2.根據(jù)權(quán)利要求1所述的追蹤方法,其中,步驟1)中將每個惡意代碼樣本的網(wǎng)絡行為寫入一個單獨的與這個惡意代碼樣本對應的模板并且要按照樣本網(wǎng)絡行為捕獲的先后順序來將其寫入追蹤模板。
3.根據(jù)權(quán)利要求1或2所述的追蹤方法,步驟1)包括以下步驟 步驟11)運行惡意代碼樣本;步驟1 捕獲所述惡意代碼樣本產(chǎn)生的網(wǎng)絡行為, 步驟1 將所述網(wǎng)絡行為記錄到追蹤模板中。
4.根據(jù)權(quán)利要求3所述的追蹤方法,其中對于每個網(wǎng)絡行為,所述追蹤模板記錄的內(nèi)容包括收到命令的時間、命令名稱、執(zhí)行命令需要的參數(shù),所述命令負載執(zhí)行該網(wǎng)絡行為。
5.根據(jù)權(quán)利要求1或2所述的追蹤方法,其中步驟2、包括以下步驟 從所生成的追蹤模板中依次讀取相應的網(wǎng)絡行為;按照所述網(wǎng)絡行為與僵尸網(wǎng)絡進行交互。
6.根據(jù)權(quán)利要求1或2所述的追蹤方法,其中步驟2、包括以下步驟 步驟2-1)為追蹤模板中所記錄的每個網(wǎng)絡行為編寫對應的命令處理函數(shù); 步驟2-2)打開模板文件,步驟2- 順序讀取每個網(wǎng)絡行為并調(diào)用該網(wǎng)絡行為所對應的命令處理函數(shù)。
7.根據(jù)權(quán)利要求1所述的追蹤方法,其中在步驟1)之前還包括以下步驟 持續(xù)運行爬蟲程序,其自動將被惡意代碼感染的URL寫到URL列表中;每個固定時間,爬蟲程序?qū)RL列表傳輸?shù)矫酃尴到y(tǒng),并清空原URL列表的內(nèi)容; 蜜罐系統(tǒng)分析URL列表,獲得惡意代碼樣本并按照MD5值的不同將其存入惡意代碼數(shù)據(jù)庫中相應的位置。
8.根據(jù)權(quán)利要求7所述的追蹤方法,其中所述蜜罐系統(tǒng)搭建在虛擬機平臺上。
全文摘要
本發(fā)明提供一種基于模板的僵尸網(wǎng)絡追蹤方法,通過預先生成追蹤模板,編寫追蹤程序。追蹤程序根據(jù)追蹤模板上的步驟,模擬僵尸程序與僵尸網(wǎng)絡控制者進行通信,從而不再需要運行真正的僵尸程序,避免運行真實僵尸程序追蹤時帶來的危害,同時減少了追蹤僵尸網(wǎng)絡的代價,并可以利用多線程的方式并發(fā)的追蹤大量的僵尸網(wǎng)絡。
文檔編號H04L29/06GK102291397SQ201110222229
公開日2011年12月21日 申請日期2011年8月4日 優(yōu)先權(quán)日2011年8月4日
發(fā)明者王帥 申請人:中國科學院計算技術(shù)研究所