僵尸網(wǎng)絡(luò)控制協(xié)議挖掘方法和裝置制造方法
【專利摘要】本發(fā)明涉及一種僵尸網(wǎng)絡(luò)控制協(xié)議的挖掘方法和裝置。所述方法包括以下步驟:捕捉僵尸程序的執(zhí)行軌跡;對所述執(zhí)行軌跡進(jìn)行代碼塊劃分;統(tǒng)計(jì)所述執(zhí)行軌跡對每個(gè)代碼塊的覆蓋次數(shù),計(jì)算得到每個(gè)代碼塊的覆蓋率;對所述代碼塊的覆蓋次數(shù)及覆蓋率分析得到第一類代碼塊和第二類代碼塊;根據(jù)所述第一類代碼塊和第二類代碼塊在執(zhí)行軌跡中定位可疑區(qū)域;對所述可疑區(qū)域進(jìn)行分析提取出惡意控制命令及其對應(yīng)的特定程序指令;引導(dǎo)所述惡意控制命令所對應(yīng)的程序覆蓋僵尸程序,得到僵尸網(wǎng)絡(luò)的控制協(xié)議。上述僵尸網(wǎng)絡(luò)控制協(xié)議的挖掘方法和裝置,提高了分析的準(zhǔn)確率,分析的更全面。此外,簡化執(zhí)行軌跡中的指令數(shù)目,大幅減小分析所需的時(shí)間復(fù)雜度和空間復(fù)雜度。
【專利說明】僵尸網(wǎng)絡(luò)控制協(xié)議挖掘方法和裝置
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及計(jì)算機(jī)技術(shù),特別是涉及一種僵尸網(wǎng)絡(luò)控制協(xié)議挖掘方法和裝置。
【背景技術(shù)】
[0002]隨著互聯(lián)網(wǎng)的發(fā)展,僵尸網(wǎng)絡(luò)逐漸發(fā)展成規(guī)模龐大、功能多樣的惡意網(wǎng)絡(luò),給當(dāng)前的信息安全帶來了不容忽視的威脅。其中,僵尸網(wǎng)絡(luò)是指采用一種或多種傳播手段將主機(jī)感染僵尸病毒,從而在控制者與被感染主機(jī)之間形成的可一對多控制的網(wǎng)絡(luò)。在很多情況下,僵尸網(wǎng)絡(luò)的控制協(xié)議和僵尸程序的高級語言形式的源代碼難以得到,能夠得到的僅僅是一些通過監(jiān)視CPU (Central Processing Unit,中央處理器)的執(zhí)行及其狀態(tài)而捕捉到的僵尸程序執(zhí)行部分命令時(shí)的二進(jìn)制執(zhí)行軌跡。如何利用這些執(zhí)行軌跡挖掘出僵尸程序的全部命令,進(jìn)而挖掘出該僵尸程序所在僵尸網(wǎng)絡(luò)的控制協(xié)議是一個(gè)亟待解決的問題。
[0003]傳統(tǒng)的對僵尸網(wǎng)絡(luò)的命令和控制協(xié)議的挖掘主要包括動(dòng)態(tài)分析和靜態(tài)分析。動(dòng)態(tài)分析的研究對象是僵尸網(wǎng)絡(luò)的數(shù)據(jù)包,通過統(tǒng)計(jì)分析挖掘數(shù)據(jù)包中的特征,然后開發(fā)網(wǎng)絡(luò)過濾工具阻斷僵尸網(wǎng)絡(luò)的通信;靜態(tài)分析一般是由病毒分析員手工完成的,從僵尸網(wǎng)絡(luò)的惡意代碼樣本中找出其中包含的命令與控制協(xié)議。然而傳統(tǒng)的技術(shù)方案成本較高,需要大量的人力資源,分析的效率低,需要較長的分析時(shí)間,漏報(bào)率高。
【發(fā)明內(nèi)容】
[0004]基于此,有必要針對傳統(tǒng)的對僵尸網(wǎng)絡(luò)的控制協(xié)議的挖掘中漏報(bào)率高的問題,提供一種能提高分析準(zhǔn)確率的僵尸網(wǎng)絡(luò)控制協(xié)議的挖掘方法。
[0005]此外,還有必要針對傳統(tǒng)的對僵尸網(wǎng)絡(luò)的控制協(xié)議的挖掘中漏報(bào)率高的問題,提供一種能提高分析準(zhǔn)確率的僵尸網(wǎng)絡(luò)控制協(xié)議的挖掘裝置。
[0006]一種僵尸網(wǎng)絡(luò)控制協(xié)議的挖掘方法,包括以下步驟:
[0007]捕捉僵尸程序的執(zhí)行軌跡;
[0008]對所述執(zhí)行軌跡進(jìn)行代碼塊劃分;
[0009]統(tǒng)計(jì)所述執(zhí)行軌跡對每個(gè)代碼塊的覆蓋次數(shù),計(jì)算得到每個(gè)代碼塊的覆蓋率;
[0010]對所述代碼塊的覆蓋次數(shù)及覆蓋率分析得到第一類代碼塊和第二類代碼塊,所述第一類代碼塊為僅被預(yù)設(shè)數(shù)量的執(zhí)行軌跡中的一個(gè)覆蓋的代碼塊,第二類代碼塊為代碼塊的覆蓋率為百分百、每個(gè)執(zhí)行軌跡對該代碼塊的覆蓋次數(shù)均不同且都小于指定閾值的代碼塊;
[0011]根據(jù)所述第一類代碼塊和第二類代碼塊在執(zhí)行軌跡中定位可疑區(qū)域;
[0012]對所述可疑區(qū)域進(jìn)行分析提取出惡意控制命令及其對應(yīng)的特定程序指令;
[0013]引導(dǎo)所述惡意控制命令所對應(yīng)的程序覆蓋僵尸程序,得到僵尸網(wǎng)絡(luò)的控制協(xié)議。
[0014]一種僵尸網(wǎng)絡(luò)控制協(xié)議的挖掘裝置,包括:
[0015]捕捉模塊,用于捕捉僵尸程序的執(zhí)行軌跡;
[0016]劃分模塊,用于對所述執(zhí)行軌跡進(jìn)行代碼塊劃分;[0017]獲取模塊,用于統(tǒng)計(jì)所述執(zhí)行軌跡對每個(gè)代碼塊的覆蓋次數(shù),計(jì)算得到每個(gè)代碼塊的覆蓋率;
[0018]分析模塊,用于對所述代碼塊的覆蓋次數(shù)及覆蓋率分析得到第一類代碼塊和第二類代碼塊,所述第一類代碼塊為僅被預(yù)設(shè)數(shù)量的執(zhí)行軌跡中的一個(gè)覆蓋的代碼塊,第二類代碼塊為代碼塊的覆蓋率為百分百、每個(gè)執(zhí)行軌跡對該代碼塊的覆蓋次數(shù)均不同且都小于指定閾值的代碼塊;
[0019]定位模塊,用于根據(jù)所述第一類代碼塊和第二類代碼塊在執(zhí)行軌跡中定位可疑區(qū)域;
[0020]提取模塊,用于對所述可疑區(qū)域進(jìn)行分析提取出惡意控制命令及其對應(yīng)的特定程序指令;
[0021]引導(dǎo)模塊,用于引導(dǎo)所述惡意控制命令所對應(yīng)的程序覆蓋僵尸程序,得到僵尸網(wǎng)絡(luò)的控制協(xié)議。
[0022]上述僵尸網(wǎng)絡(luò)控制協(xié)議的挖掘方法和裝置,對僵尸網(wǎng)絡(luò)的執(zhí)行軌跡進(jìn)行劃分代碼塊后,對代碼塊的覆蓋率及被覆蓋次數(shù)進(jìn)行分析定位可疑區(qū)域,針對可疑區(qū)域進(jìn)行分析提取出惡意控制命令及對應(yīng)的特定程序,將提取的惡意控制命令及特定程序覆蓋到僵尸程序,可分析得到僵尸程序的全部控制命令,如此提高了分析的準(zhǔn)確率,分析的更全面。且無須高級語言形式的語義支持,能直接通過二進(jìn)制執(zhí)行軌跡分析,處理簡單。
【專利附圖】
【附圖說明】
[0023]圖1為在一個(gè)實(shí)施例中僵尸網(wǎng)絡(luò)控制協(xié)議的挖掘方法的流程示意圖;
[0024]圖2為代碼塊劃分前執(zhí)行軌跡中一組指令示例;
[0025]圖3為圖2中執(zhí)行軌跡的一組指令進(jìn)行代碼塊劃分后的第一代碼塊;
[0026]圖4為圖2中執(zhí)行軌跡的一組指令進(jìn)行代碼塊劃分后的第二個(gè)代碼塊;
[0027]圖5為某個(gè)執(zhí)行軌跡劃分代碼塊后得到的代碼塊序列中的一部分;
[0028]圖6為化簡前的執(zhí)行軌跡中的一組按序執(zhí)行的指令示例;
[0029]圖7為圖6中指令簡化后的示例;
[0030]圖8為代碼塊覆蓋次數(shù)示例;
[0031]圖9為計(jì)算得到的代碼塊覆蓋率的示例;
[0032]圖10為代碼塊覆蓋次數(shù)、覆蓋率結(jié)合示例;
[0033]圖11為第一類代碼塊示例;
[0034]圖12為設(shè)置閾值r為50時(shí)篩選出來的SCB ;
[0035]圖13為設(shè)置閾值r為30時(shí)篩選出來的SCB ;
[0036]圖14為Zeus僵尸網(wǎng)絡(luò)的僵尸程序?qū)?yīng)的執(zhí)行軌跡中定位到的可疑區(qū)域;
[0037]圖15為代碼塊26d879a_>26d879c和在它之前執(zhí)行的代碼示例;
[0038]圖16為一個(gè)實(shí)施例中僵尸網(wǎng)絡(luò)控制協(xié)議的挖掘裝置的結(jié)構(gòu)示意圖;
[0039]圖17為另一個(gè)實(shí)施例中僵尸網(wǎng)絡(luò)控制協(xié)議的挖掘裝置的結(jié)構(gòu)示意圖。
【具體實(shí)施方式】
[0040]下面結(jié)合具體的實(shí)施例及附圖對僵尸網(wǎng)絡(luò)控制協(xié)議的挖掘方法和裝置的技術(shù)方案進(jìn)行詳細(xì)的描述,以使其更加清楚。
[0041]如圖1所示,在一個(gè)實(shí)施例中,一種僵尸網(wǎng)絡(luò)控制協(xié)議的挖掘方法,包括以下步驟:
[0042]步驟S102,捕捉僵尸程序的執(zhí)行軌跡。
[0043]本實(shí)施例中,捕捉僵尸程序中預(yù)設(shè)數(shù)量個(gè)不同輸入對應(yīng)的不同二進(jìn)制執(zhí)行軌跡,并將二進(jìn)制執(zhí)行軌跡反匯編成匯編指令格式的執(zhí)行軌跡。具體的,在一個(gè)全系統(tǒng)模擬器中運(yùn)行僵尸程序,監(jiān)視僵尸程序的執(zhí)行過程,捕捉僵尸程序在輸入為ti的情況下的二進(jìn)制執(zhí)行軌跡TRi (i = I, 2,…,η)。然后將這η個(gè)二進(jìn)制執(zhí)行軌跡TRi反匯編成匯編指令格式的執(zhí)行軌跡tri (i = I, 2,…,η)。后續(xù)步驟中所指的“執(zhí)行軌跡”均指匯編語言格式的執(zhí)行軌跡,η為輸入不同的執(zhí)行軌跡的總個(gè)數(shù)。
[0044]例如在全系統(tǒng)模擬器中運(yùn)行Zeus僵尸網(wǎng)絡(luò)的僵尸程序,捕捉到10個(gè)輸入不同命令時(shí)的二進(jìn)制執(zhí)行軌跡,然后將這10個(gè)二進(jìn)制執(zhí)行軌跡進(jìn)行反匯編,得到10個(gè)匯編語言格式的執(zhí)行軌跡。對每條指令的格式可如下:
[0045]地址:匯編指令、參與操作的寄存器或存儲(chǔ)器中的數(shù)據(jù)污點(diǎn)信息。
[0046]步驟S104,對該執(zhí)行軌跡進(jìn)行代碼塊劃分。
[0047]具體的,首先將匯編指令分為兩類,一類是可能會(huì)直接引起程序執(zhí)行過程中的執(zhí)行路徑或功能發(fā)生變化 或指令地址發(fā)生轉(zhuǎn)移的指令,即程序轉(zhuǎn)移指令,如無條件轉(zhuǎn)移指令(jump)、條件轉(zhuǎn)移指令(jz、jnz、je、jne、jb 等)、循環(huán)指令(loop、loopz、loopnz 等)、過程調(diào)用指令(call)、調(diào)用返回指令(ret)、中斷指令(INT等)等;另一類是非程序轉(zhuǎn)移指令。
[0048]然后再以程序轉(zhuǎn)移指令作為代碼塊的邊界對執(zhí)行軌跡進(jìn)行代碼塊劃分。且所有代碼塊中包含的指令集合的并集等于執(zhí)行軌跡中包含的指令集合,任意兩個(gè)代碼塊的交集為空。如,將執(zhí)行軌跡tri (i = 1,2, - ,η)劃分成m個(gè)代碼塊Cb11Cb2,...,cbm,滿足
m
【權(quán)利要求】
1.一種僵尸網(wǎng)絡(luò)控制協(xié)議的挖掘方法,包括以下步驟: 捕捉僵尸程序的執(zhí)行軌跡; 對所述執(zhí)行軌跡進(jìn)行代碼塊劃分; 統(tǒng)計(jì)所述執(zhí)行軌跡對每個(gè)代碼塊的覆蓋次數(shù),計(jì)算得到每個(gè)代碼塊的覆蓋率; 對所述代碼塊的覆蓋次數(shù)及覆蓋率分析得到第一類代碼塊和第二類代碼塊,所述第一類代碼塊為僅被預(yù)設(shè)數(shù)量的執(zhí)行軌跡中的一個(gè)覆蓋的代碼塊,第二類代碼塊為代碼塊的覆蓋率為百分百、每個(gè)執(zhí)行軌跡對該代碼塊的覆蓋次數(shù)均不同且都小于指定閾值的代碼塊;根據(jù)所述第一類代碼塊和第二類代碼塊在執(zhí)行軌跡中定位可疑區(qū)域; 對所述可疑區(qū)域進(jìn)行分析提取出惡意控制命令及其對應(yīng)的特定程序指令; 引導(dǎo)所述惡意控制命令所對應(yīng)的程序覆蓋僵尸程序,得到僵尸網(wǎng)絡(luò)的控制協(xié)議。
2.根據(jù)權(quán)利要求1所述的僵尸網(wǎng)絡(luò)控制協(xié)議的挖掘方法,其特征在于,所述捕捉僵尸程序的執(zhí)行軌跡的步驟包括: 捕捉僵尸程序中預(yù)設(shè)數(shù)量個(gè)不同輸入對應(yīng)的不同二進(jìn)制執(zhí)行軌跡,并將所述二進(jìn)制執(zhí)行軌跡反匯編成匯編指令格式的執(zhí)行軌跡。
3.根據(jù)權(quán)利要求1所述的僵尸網(wǎng)絡(luò)控制協(xié)議的挖掘方法,其特征在于,在對所述執(zhí)行軌跡進(jìn)行代碼塊劃分的 步驟之前,還包括步驟: 對所述執(zhí)行軌跡進(jìn)行簡化處理。
4.根據(jù)權(quán)利要求1所述的僵尸網(wǎng)絡(luò)控制協(xié)議的挖掘方法,其特征在于,所述計(jì)算得到每個(gè)代碼塊的覆蓋率的步驟包括: 統(tǒng)計(jì)預(yù)設(shè)數(shù)量個(gè)執(zhí)行軌跡對每個(gè)代碼塊的覆蓋狀態(tài),計(jì)算覆蓋代碼塊的執(zhí)行軌跡的個(gè)數(shù)與該預(yù)設(shè)數(shù)量的比值,將所述比值作為相應(yīng)的代碼塊的覆蓋率。
5.根據(jù)權(quán)利要求1所述的僵尸網(wǎng)絡(luò)控制協(xié)議的挖掘方法,其特征在于,在根據(jù)所述第一類代碼塊和第二類代碼塊在執(zhí)行軌跡中定位可疑區(qū)域的步驟之后,還包括步驟: 獲取每個(gè)代碼塊的污點(diǎn)狀態(tài),將沒有污點(diǎn)的代碼塊從所述可疑區(qū)域中剔除。
6.根據(jù)權(quán)利要求1所述的僵尸網(wǎng)絡(luò)控制協(xié)議的挖掘方法,其特征在于,所述對所述執(zhí)行軌跡進(jìn)行代碼塊劃分的步驟包括: 以程序轉(zhuǎn)移指令作為代碼塊的邊界對執(zhí)行軌跡進(jìn)行代碼塊劃分,且所有代碼塊中包含的指令集合的并集等于執(zhí)行軌跡中包含的指令集合,任意兩個(gè)代碼塊的交集為空。
7.一種僵尸網(wǎng)絡(luò)控制協(xié)議的挖掘裝置,其特征在于,包括: 捕捉模塊,用于捕捉僵尸程序的執(zhí)行軌跡; 劃分模塊,用于對所述執(zhí)行軌跡進(jìn)行代碼塊劃分; 獲取模塊,用于統(tǒng)計(jì)所述執(zhí)行軌跡對每個(gè)代碼塊的覆蓋次數(shù),計(jì)算得到每個(gè)代碼塊的覆蓋率; 分析模塊,用于對所述代碼塊的覆蓋次數(shù)及覆蓋率分析得到第一類代碼塊和第二類代碼塊,所述第一類代碼塊為僅被預(yù)設(shè)數(shù)量的執(zhí)行軌跡中的一個(gè)覆蓋的代碼塊,第二類代碼塊為代碼塊的覆蓋率為百分百、每個(gè)執(zhí)行軌跡對該代碼塊的覆蓋次數(shù)均不同且都小于指定閾值的代碼塊; 定位模塊,用于根據(jù)所述第一類代碼塊和第二類代碼塊在執(zhí)行軌跡中定位可疑區(qū)域; 提取模塊,用于對所述可疑區(qū)域進(jìn)行分析提取出惡意控制命令及其對應(yīng)的特定程序指令; 引導(dǎo)模塊,用于引導(dǎo)所述惡意控制命令所對應(yīng)的程序覆蓋僵尸程序,得到僵尸網(wǎng)絡(luò)的控制協(xié)議。
8.根據(jù)權(quán)利要求7所述的僵尸網(wǎng)絡(luò)控制協(xié)議的挖掘裝置,其特征在于,所述裝置還包括反匯編模塊,所述捕捉模塊還用于捕捉僵尸程序中預(yù)設(shè)數(shù)量個(gè)不同輸入對應(yīng)的不同二進(jìn)制執(zhí)行軌跡;所述反匯編模塊用于將所述二進(jìn)制執(zhí)行軌跡反匯編成匯編指令格式的執(zhí)行軌跡。
9.根據(jù)權(quán)利要求7所述的僵尸網(wǎng)絡(luò)控制協(xié)議的挖掘裝置,其特征在于,所述裝置還包括: 簡化模塊,用于對所述執(zhí)行軌跡進(jìn)行簡化處理。
10.根據(jù)權(quán)利要求7所述的僵尸網(wǎng)絡(luò)控制協(xié)議的挖掘裝置,其特征在于,所述獲取模塊還用于統(tǒng)計(jì)預(yù)設(shè)數(shù)量個(gè)執(zhí)行軌跡對每個(gè)代碼塊的覆蓋狀態(tài),計(jì)算覆蓋代碼塊的執(zhí)行軌跡的個(gè)數(shù)與該預(yù)設(shè)數(shù)量的比值,將所述比值作為相應(yīng)的代碼塊的覆蓋率。
11.根據(jù)權(quán)利要求7所述的僵尸網(wǎng)絡(luò)控制協(xié)議的挖掘裝置,其特征在于,所述裝置還包括: 剔除模塊,用于獲取每個(gè)代碼塊的污點(diǎn)狀態(tài),將沒有污點(diǎn)的代碼塊從所述可疑區(qū)域中剔除。
12.根據(jù)權(quán)利要求7所述的僵尸網(wǎng)絡(luò)控制協(xié)議的挖掘裝置,其特征在于,所述劃分模塊還用于以程序轉(zhuǎn)移指令作為代碼塊的邊界對執(zhí)行軌跡進(jìn)行代碼塊劃分,且所有代碼塊中包含的指令集合的并集等于 執(zhí)行軌跡中包含的指令集合,任意兩個(gè)代碼塊的交集為空。
【文檔編號】G06F21/56GK103902895SQ201210568194
【公開日】2014年7月2日 申請日期:2012年12月24日 優(yōu)先權(quán)日:2012年12月24日
【發(fā)明者】王志, 鄒贊, 張曉康, 賈春福, 蔡亞運(yùn) 申請人:騰訊科技(深圳)有限公司, 南開大學(xué)