国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于動態(tài)指令基因的病毒防護(hù)方法研究

2012-06-03 09:15:30白杰
電子技術(shù)應(yīng)用 2012年10期
關(guān)鍵詞:內(nèi)存指令程序

白杰

(光束(北京)國際工程技術(shù)研究院有限公司,北京100083)

在互聯(lián)網(wǎng)高速發(fā)展的今天,網(wǎng)絡(luò)通信和網(wǎng)絡(luò)交易已經(jīng)成為日常生活不可分割的一部分。但病毒生成技術(shù)的提高,已經(jīng)嚴(yán)重影響到世界通信安全和國家的經(jīng)濟(jì)命脈。早期特征碼技術(shù)已經(jīng)無法單獨(dú)應(yīng)對現(xiàn)在的計(jì)算機(jī)病毒。為了解決此問題,近些年國際上提出了依據(jù)程序行為識別病毒的技術(shù)。其原理就是監(jiān)控程序的行為,將程序行為與有害程序行為數(shù)據(jù)庫進(jìn)行比較,判斷被監(jiān)控程序是否為病毒。目前為了提高識別病毒的精度,減少誤報和漏報情況,各國研究人員從不同的角度,定義程序的行為數(shù)據(jù)和獲取行為數(shù)據(jù)的方法,設(shè)置了不同行為數(shù)據(jù)類型的有害行為數(shù)據(jù)庫,但程序仍然存在很大的不穩(wěn)定性、誤識別率,且嚴(yán)重依賴系統(tǒng)并發(fā)資源。

本文提出的利用程序被執(zhí)行過程中的有效指令基因判斷病毒的模型摒棄了目前占主流地位的“通過獲取程序靜態(tài)行為”的思路,通過運(yùn)算出程序被執(zhí)行過程中的動態(tài)指令基因達(dá)到精確識別病毒的目的,該模型突破了目前只能依靠“程序靜態(tài)行為”分析病毒方法,以及目前無法在程序被執(zhí)行過程中達(dá)到同步且動態(tài)實(shí)時監(jiān)控的目標(biāo),并取得了理想的效果,克服了互聯(lián)網(wǎng)防御病毒的技術(shù)障礙。

1 程序動態(tài)指令基因防御病毒的系統(tǒng)模型

通過滑動窗口實(shí)時動態(tài)掃描被檢測程序運(yùn)行過程中在處理器以及存儲器中的數(shù)據(jù)流,計(jì)算出程序指令基因(有效指令結(jié)構(gòu)的指紋數(shù)據(jù))。

1.1 獲取待檢測程序被執(zhí)行過程中的數(shù)據(jù)流

獲取待檢測程序運(yùn)行過程中的內(nèi)存數(shù)據(jù)并將之輸出。使用函數(shù)createtoolhelp32snapshot()創(chuàng)建內(nèi)存快照;將返回句柄傳遞給函數(shù) process32first(),函數(shù) process32next()遍歷內(nèi)存中的進(jìn)程,遇到待檢測程序的進(jìn)程時,保存其進(jìn)程 id;用函數(shù) openprocess()打開該進(jìn)程,獲得該進(jìn)程的句柄;用函數(shù)readprocessmemory()讀取該進(jìn)程句柄;獲得待檢測程序運(yùn)行過程中的內(nèi)存數(shù)據(jù)。圖1是程序的內(nèi)存數(shù)據(jù),標(biāo)示的代碼就是有效指令代碼(指令基因)。

1.2 有效指令基因分析

利用滑動窗口動態(tài)掃描程序的有效指令基因數(shù)據(jù),如圖2、圖3所示。定義該 3個應(yīng)用程序?yàn)椋篍XE1、EXE2、EXE3,指令基因碼分別是:EXE1=[a1,a2,a3,a4,a5,a6,a7…an,a(n+1)]; EXE2=[a1,a0,a02,a3,a02,a6,a7…an,a(n+1)];EXE3=[a1,a06,a2,a3,a08,a6,a7…an,a(n+1)];采用“分段式多指針位移算法”將待掃描數(shù)據(jù)進(jìn)行不間斷式取點(diǎn)分段,設(shè)定多項(xiàng)指針,通過指針段內(nèi)位移,對數(shù)據(jù)進(jìn)行掃描,在實(shí)現(xiàn)過程中采用線程結(jié)構(gòu)。

比較 3個程序的功能和執(zhí)行結(jié)果,得出:K=EXE1=EXE2=EXE3。分別考察 EXE1、EXE2 和 EXE3,得出(a1)、(a2,a3)、(a6,a7)、an,a(n+1)是 有 效 的 基 因 序 列 ,其 余 的是相對于執(zhí)行結(jié)果無效代碼,也就是對于特定的K,其指令元數(shù)據(jù)序列片段“(a1)、(a2,a3)、(a6,a7)、an,a(n+1)”是穩(wěn)定的。

被截獲的待檢測程序能夠完成特定功能或結(jié)果的指令元數(shù)據(jù)序列為源序列。所有源序列的集合:E={e1,e2,e3,…,en,e(n+1)} ,其中 e1,e2,e3,…等為具體的源序列,n為正整數(shù)。在系統(tǒng)S中,產(chǎn)生的源序列v1,v2,…,vi,就是待檢測程序在系統(tǒng) S中的蹤跡,其中 vi∈E,i為正整數(shù),并且i≤n,每個源序列有時間性和執(zhí)行性為 C(vi),指令執(zhí)行 按時間排序,即對所有的i≥1,C(vi)<C(vi+1);假設(shè)執(zhí)行性為 O(vi),表示指令的執(zhí)行性,用pid表示進(jìn)程,則O(vi)∈pid。對任意一個進(jìn)程pi,其指令序列 v1,i1,v2,i2,…,vi,ii,vi+1,ii+1。 其中,i1,……,ii+1分別對應(yīng)指令結(jié)果 v1,v2,…,vi+1的執(zhí)行結(jié)果,進(jìn)程pi對應(yīng)的指令序列為進(jìn)程蹤跡??梢?,pi的進(jìn)程蹤跡是待檢測程序在系統(tǒng)S中蹤跡的子串。假設(shè)被檢測程序在正常運(yùn)行時產(chǎn)生的源序列為:V=v1,v2,…,vm(m≥k),則V可以看作由被檢測程序在系統(tǒng)S中的每一個進(jìn)程的執(zhí)行過程合并而成。按執(zhí)行的時間性將每一個進(jìn)程的子執(zhí)行過程合并排列,形成被檢測程序在正常運(yùn)行時產(chǎn)生的審計(jì)源序列V。假設(shè)被檢測程序運(yùn)行時有兩個進(jìn)程,則V有兩個子串記為V1⊙V2。設(shè)P為程序指令元,其中存儲的典型指令元序列或片斷以源序列V為基礎(chǔ),可以采用滑動窗口技術(shù)獲得。假設(shè)k為滑動窗口大小,則:P={(si,si+1, …,sj)|si, …,sj∈E,i≥1,j≤m,j-i+1=k,si=vi,si+1=vi+1,…,sj=vj},其中m為源序列 V 的長度,可見,程序指令元P中存儲的是源序列V的子集[1]。

設(shè)EXE1的有效指令全集是F(1),EXE2的有效指令全集是 F(2),EXE3的有效指令全集是F(3),其中,F(xiàn)(1)∈F,F(xiàn)(2)∈F,F(xiàn)(3)∈F,F(xiàn)為包 括F(1)、F(2)和F(3)的 有效指令集。則,F(xiàn)(1)、F(2)、F(3)就是被檢測的程序的數(shù)據(jù)源,它們分別為不同的源序列V,是被檢測的對象。也即, 通過預(yù)先定義的程序指令元:VF={y1,y2,y3…yn,y(n+1)},將VF中的元素分別與數(shù)據(jù)源F(1)、F(2)、F(3)進(jìn)行差異運(yùn)算,即可實(shí)現(xiàn)被檢測程序EXE1、EXE2、EXE3的執(zhí)行檢測。

采用滑動窗口、函數(shù)計(jì)算方式順序獲取待檢測程序中能夠完成特定功能或結(jié)果的指令元數(shù)據(jù)。假設(shè)k為滑動窗口的大小,被監(jiān)控程序在運(yùn)行時產(chǎn)生的源序列V:v1,v2,…,vm(m≥k),用滑動窗口在源序列 V上滑動,則滑動窗口內(nèi)的k個事件序列(vi,vi+1,…,vi+k-1)即為待檢測指令元數(shù)據(jù)序列。在不同的實(shí)例中,滑動窗口的大小k,或者所述指令元數(shù)據(jù)序列的長度是不同的,比較典型的k為 7~12,本文的k取值為 10,如圖 3所示。

1.3 形成病毒指令基因數(shù)據(jù)庫

v1、v2、v3、v4為具有相同或相似破壞方式的同一族已知病毒程序。

病毒程序v1的內(nèi)存數(shù)據(jù)00,01,h1,44,b1,a1,33,c1,bw,0i,22,8i,11,2s,yy。

病毒程序v2的內(nèi)存數(shù)據(jù)00,cc,ae,44,b1,q3,33,c1,kh,al,22,8i,11,s3,yy。

病毒程序v3的內(nèi)存數(shù)據(jù)00,2c,3e,44,b1,w3,33,c1,nh,a0,22,8i,11,l3,yy。

病毒程序v4的內(nèi)存數(shù)據(jù)00,24,3o,44,b1,wl,33,c1,0h,ui,22,8i,11,4n,yy。

將這些已知病毒程序的內(nèi)存數(shù)據(jù)相互間具有相同或相似的部分提取出來,其中,該類病毒程序運(yùn)行過程中的內(nèi)存數(shù)據(jù)相互間具有相同的部分:0044,b133,c122,8i,該相同部分的有序排列表示為:#00#44,b1#33,c1#22,8i#。該類病毒運(yùn)行過程中的內(nèi)存數(shù)據(jù)相互間具有相似的部分是:病毒程序v1的內(nèi)存數(shù)據(jù)末尾部分(11,2s,yy)相似于病毒v2的內(nèi)存數(shù)據(jù)末尾部分(11,s3,yy)相似于病毒 v3的內(nèi)存數(shù)據(jù)末尾部分(11,l3,yy)相似于病毒程序v4的內(nèi)存數(shù)據(jù)末尾部分(11,4n,yy),該相似部分可用#11,**,yy#表示。符號“#”代表相同內(nèi)存數(shù)據(jù)以外的內(nèi)存數(shù)據(jù),符號“*”代表相似內(nèi)存數(shù)據(jù)中的不同部分。將#00#44,b1#33,c1#22,8i#存儲進(jìn)數(shù)據(jù)庫;將#11,**,yy#存儲進(jìn)數(shù)據(jù)庫。病毒的運(yùn)行特征數(shù)據(jù)是將已知病毒程序運(yùn)行過程中的內(nèi)存數(shù)據(jù)相互間具有相同或相似的部分提取出來,且按序排列進(jìn)行存儲形成病毒指令基因數(shù)據(jù)庫。

2 具體應(yīng)用描述

無論是待檢測程序還是病毒程序,其運(yùn)行特征數(shù)據(jù)不僅僅只限于運(yùn)行過程中的內(nèi)存數(shù)據(jù),例如某個程序被CPU執(zhí)行過程中的獨(dú)有的運(yùn)行特征數(shù)據(jù)。CIH類型的病毒利用中斷操作,從系統(tǒng)的用戶層強(qiáng)行到系統(tǒng)的內(nèi)核層,破壞計(jì)算機(jī)硬件。

因?yàn)榇祟惒《臼菑南到y(tǒng)的用戶層轉(zhuǎn)到系統(tǒng)的內(nèi)核層,因此在CPU內(nèi)的高速緩存中存在從系統(tǒng)的用戶層到系統(tǒng)的內(nèi)核層區(qū)別于運(yùn)行其他程序的跡象,即:正常的程序被執(zhí)行時,高速緩存順序從內(nèi)存調(diào)取數(shù)據(jù),一般情況下應(yīng)用程序工作在系統(tǒng)的用戶層,此類病毒程序利用處理器的中斷操作從系統(tǒng)的用戶層強(qiáng)行轉(zhuǎn)到系統(tǒng)的內(nèi)核層,因此在高速緩存中存在一些從系統(tǒng)的用戶層向系統(tǒng)的內(nèi)核層跳轉(zhuǎn)的數(shù)據(jù)。但這些數(shù)據(jù)并非都是病毒程序,因?yàn)閭€別的正常程序也用到此方式,獲取跳轉(zhuǎn)到的內(nèi)存相應(yīng)的數(shù)據(jù),并提取此類型病毒對于這部分?jǐn)?shù)據(jù)所共有的部分。

(1)匯編指令:out 70h,al;in al,71h;xor ax,926h; ###jmp 2000:003;add al,bl→機(jī)器碼:9i 7u 16 14 5h a7 3t###77 e1 77 6c 00 d8(假設(shè)“###”左邊部分是利用中斷操作從系統(tǒng)的用戶層強(qiáng)行轉(zhuǎn)到系統(tǒng)的內(nèi)核層,“###”右邊部分是對BIOS芯片的破壞操作)。假定待檢測程序A的運(yùn)行特征如下:[匯編指令:mov ax,1016h]→機(jī)器碼:b8 31 2e;…;[匯編指令:out 70h,al]→機(jī)器碼:9i 7u(與病毒相同的指令基因);[匯編指令:in al,71h]→機(jī)器碼:16 14(與病毒相同的指令基因);[匯編指令:xor ax,926h]→機(jī)器碼:5h a7 3t(與病毒相同的指令基因);…;[匯編指令:mov ah,0]→機(jī)器碼:b4 00; …;[匯編指令:jmp 2000:003]→機(jī)器碼:77 e1 77 6c(與病毒相同的指令基因);[匯編指令:add al,bl]→機(jī)器碼:00 d8(與病毒相同的指令基因)。

(2)待檢測程序 A的運(yùn)行特征:機(jī)器碼 b8 31 2e 0e 21 4d 8h 63 5h 9i 7u 16 14 5h a7 3t 00 7c 2d b8 20 4e 05 16 14 04 9c b4 00 77 e1 77 6c 00 d8,其 中,機(jī) 器碼9i 7u 16 14 5h a7 3t是利用中斷操作從系統(tǒng)的用戶層強(qiáng)行轉(zhuǎn)到系統(tǒng)的內(nèi)核層;機(jī)器碼77 e1 77 6c 00 d8是對芯片的破壞操作。

(3)待檢測程序B的運(yùn)行特征:機(jī)器碼9i 02 11 6h 8i u8 e3 9i 7u 16 14 5h a7 3t b8 31 2e 0e 21 4d 8h 63 7c 2d b8 20 9c b4;雖然待檢測程序B的機(jī)器碼中也存在9i 7u 16 14 5h a7 3t,也同樣利用中斷操作從系統(tǒng)的用戶層強(qiáng)行轉(zhuǎn)到系統(tǒng)的內(nèi)核層,但是檢測程序B的機(jī)器碼中不存在對芯片進(jìn)行破壞的數(shù)據(jù)。

3 病毒的檢測

將 (指令元 1+指令元 2+指令元 3)→(結(jié)果 1+結(jié)果2+結(jié)果 3)=最終結(jié)果,存儲到所述的原則庫中,同時在原則庫中標(biāo)示出病毒程序的最終結(jié)果,表1所示為指令元、有效代碼序列(運(yùn)行特征代碼)、運(yùn)行結(jié)果、危險系數(shù)的關(guān)系。

將獲得的待檢測程序的指令元數(shù)據(jù)與建立的原則庫中的對應(yīng)關(guān)系表達(dá)式相應(yīng)部分進(jìn)行比較,對比較成功的次數(shù)進(jìn)行計(jì)數(shù),當(dāng)比較成功的次數(shù)等于或者超過設(shè)定的閥值時,判定所述待檢測程序?yàn)椴《境绦颉?/p>

獲得的待檢測程序指令元數(shù)據(jù)是:指令元1+指令元2+...指令元X;

原則庫中某項(xiàng)數(shù)據(jù)是:指令元 11+指令元 22+...指令元nn;

假定,指令元 1=指令元 11,指令元 2=指令元 22,則Y的值應(yīng)該等于2。

表1 程序指令元與程序運(yùn)行結(jié)果的關(guān)系結(jié)構(gòu)

第二個意義的閾值是:待檢測程序的指令元數(shù)據(jù)或指令元數(shù)據(jù)的集合與所述的最終結(jié)果有關(guān)聯(lián)關(guān)系或者待檢測程序的指令元數(shù)據(jù)或指令元數(shù)據(jù)的集合能夠?qū)е滤龅淖罱K結(jié)果,此為第二個意義的閾值。如獲得的待檢測程序 i.exe指令元數(shù)據(jù)是:指令元 i1+指令元 i2+指令元i3;獲得的待檢測程序g.exe指令元數(shù)據(jù)是:指令元 g1+指令元 g2+指令元 g3+指令元 g4+指令元g5;原則庫中某項(xiàng)數(shù)據(jù)是:(指令元1+指令元 2+指令元 3)→(結(jié)果1+結(jié)果 2+結(jié)果 3)=最終結(jié)果;其中,指令元(g1+指令元g2+指令元 g3+指令元 g4+指令元 g5)=(指令元 1+指令元2+指令元 3)→(結(jié)果 1+結(jié)果2+結(jié)果 3)=最終結(jié)果;(指令元 i1+指令元 i2+指令元 i3)≠(指令元1+指令元 2+指令元 3)。 因此,待檢測程序 i.exe判定為不是病毒程序,待檢測程序 g.exe判定為病毒程序。

分別獲取待檢測程序 l.exe與 m.exe的運(yùn)行特征數(shù)據(jù) :l.exe 的 運(yùn) 行 特 征 數(shù) 據(jù) 是 :a0,qo,9i,80,5h,3h,jg,pq,ci,c1,8k,00,0k,ab,c3,ck;m.exe 的 運(yùn) 行 特 征 數(shù) 據(jù) 是 :1a,2b,c3,4d,f5,6h,7k,j8,9k,10,11,22,33,44,55,6i;原則庫中某項(xiàng)數(shù)據(jù)是:(#qo,9i,80,**,3h,jg#)→病毒運(yùn)行后對系統(tǒng)造成的惡性結(jié)果;待檢測程序 l.exe判定為病毒程序,m.exe判定為不是病毒程序。

4 實(shí)驗(yàn)過程與結(jié)果

由于采用的是基于指令基因的方式,在實(shí)驗(yàn)中不需真實(shí)且可運(yùn)行的病毒體,可直接指定待檢測出的指令基因數(shù)據(jù)集即可。Windows系統(tǒng)中可完成目標(biāo)功能的指令基因元為n,形成有效組合為m,對5個進(jìn)程進(jìn)行檢測,每個進(jìn)程包含的指令元為N,有效組合為M,N>n,M>m。根據(jù)表2,平均準(zhǔn)確率為 91.7%,平均誤報率為0.19%,漏報率為0。檢測分類表如表2所示。

表2 檢測分類表(以下均為平均值)

本技術(shù)解決了目前世界上非特征碼技術(shù)錯誤率高的技術(shù)難題。且能夠直接檢測程序運(yùn)行過程中的內(nèi)存數(shù)據(jù),不需要對加殼病毒等進(jìn)行解密、脫殼操作,極大地減少了對于系統(tǒng)資源的消耗。在實(shí)踐應(yīng)用中取得了較好的結(jié)果。

[1]張衡,卞洪流,吳禮發(fā),等.基于 LSM 的程序行為控制研究[J].軟件學(xué)報,2005,16(06):1151-1158.

猜你喜歡
內(nèi)存指令程序
聽我指令:大催眠術(shù)
“春夏秋冬”的內(nèi)存
試論我國未決羈押程序的立法完善
ARINC661顯控指令快速驗(yàn)證方法
LED照明產(chǎn)品歐盟ErP指令要求解讀
電子測試(2018年18期)2018-11-14 02:30:34
“程序猿”的生活什么樣
英國與歐盟正式啟動“離婚”程序程序
創(chuàng)衛(wèi)暗訪程序有待改進(jìn)
坐標(biāo)系旋轉(zhuǎn)指令數(shù)控編程應(yīng)用
基于內(nèi)存的地理信息訪問技術(shù)
卢湾区| 乌海市| 潜山县| 东安县| 太仓市| 连山| 东兰县| 余江县| 互助| 潜江市| 云龙县| 彩票| 固原市| 泰安市| 广东省| 富源县| 武山县| 镇赉县| 丘北县| 民勤县| 罗定市| 信阳市| 句容市| 宿松县| 武安市| 班戈县| 罗江县| 大竹县| 株洲县| 石城县| 湘西| 巴彦县| 彭山县| 海城市| 肇庆市| 云龙县| 娱乐| 邢台市| 工布江达县| 高安市| 湛江市|