• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看

      ?

      Bayes分類技術(shù)在計(jì)算機(jī)病毒檢測(cè)中的研究

      2010-09-17 09:43:40李偉光黃常全
      關(guān)鍵詞:代碼程序病毒

      李偉光 黃常全

      四川理工學(xué)院 四川 643000

      0 前言

      在互聯(lián)網(wǎng)日益發(fā)達(dá)的今天,計(jì)算機(jī)病毒日益猖獗,數(shù)量呈幾何數(shù)據(jù)增長,面對(duì)如此龐大數(shù)量的病毒,如何快速準(zhǔn)確的識(shí)別病毒、如何智能識(shí)別未知病毒是反計(jì)算機(jī)病毒的關(guān)鍵技術(shù)。

      1 病毒程序的特征

      1.1 API函數(shù)特征

      目前的計(jì)算機(jī)操作系統(tǒng)普遍采取了分層結(jié)構(gòu)設(shè)計(jì),應(yīng)用程序只能通過操作系統(tǒng)的API接口才能訪問計(jì)算機(jī)資源。比如說 Windows操作系統(tǒng)上的病毒程序如果想要感染別的文件,不可避免的要使用API函數(shù)CreateFile、WriteFile這類API函數(shù)。一般來說執(zhí)行程序文件幾乎是不需要修改的,顯然一個(gè)程序修改另一個(gè)可執(zhí)行程序的內(nèi)容是一種值得警惕的危險(xiǎn)操作。目前Windows僅僅對(duì)自己的系統(tǒng)文件(Windows下的exe和dll文件)有保護(hù),一旦對(duì)系統(tǒng)文件進(jìn)行修改,則會(huì)彈出警告對(duì)話框提示操作用戶。所以監(jiān)視程序調(diào)用了哪些API函數(shù)是判斷程序功能和動(dòng)作的一個(gè)特征。

      以下列舉一些病毒常用的危險(xiǎn)函數(shù)以及這些函數(shù)在病毒中的作用,如果發(fā)現(xiàn)有程序調(diào)用這些函數(shù),則需要注意。

      API指令 解釋CreateFile /WriteFile打開/寫文件。如果發(fā)現(xiàn)對(duì)可執(zhí)行文件進(jìn)行修改,需要重點(diǎn)注意。VirtualAllocEx分配內(nèi)存函數(shù)。一般程序只會(huì)為自己分配內(nèi)存。如果發(fā)現(xiàn)有程序?qū)e的進(jìn)程進(jìn)行內(nèi)存分配,則需要注意。ReadProcessMemory/WriteProcessMemory讀寫內(nèi)存函數(shù),一般程序應(yīng)該對(duì)自己進(jìn)程內(nèi)空間進(jìn)行讀寫。如果發(fā)現(xiàn)對(duì)其他進(jìn)程空間進(jìn)行讀寫,則需要注意。VirtualProtect/ VirtualProtectEx改變內(nèi)存讀寫屬性函數(shù)。一般程序代碼段為只讀屬性。如果發(fā)現(xiàn)有程序試圖修改代碼的只讀屬性為讀寫屬性,則需要注意。SetWindowsHook/SetWindowsHookEx鉤子函數(shù)。通過該函數(shù)可以入侵其他程序,需要關(guān)注調(diào)用此函數(shù)的程序。CreateRemoteThread創(chuàng)建線程函數(shù)。該函數(shù)可以入侵進(jìn)另一個(gè)進(jìn)程為另一個(gè)進(jìn)程創(chuàng)建一個(gè)線程。需要注意?!?…

      一個(gè)程序需要調(diào)用的API函數(shù)都在PE文件的輸入表中,對(duì)PE文件的輸入表進(jìn)行掃描,就可以基本確定該程序大致需要調(diào)用哪些API函數(shù)。

      1.2 PE文件結(jié)構(gòu)特征

      Windows平臺(tái)下的可執(zhí)行文件是按照PE(Portable Excute)文件格式來組織的。正常的程序一般在編譯程序下會(huì)被將程序中不同的數(shù)據(jù)按照PE文件格式組織在一起。PE文件的真正內(nèi)容劃分成塊,稱之為sections(節(jié))。每節(jié)是一塊擁有共同屬性的數(shù)據(jù),比如代碼/數(shù)據(jù)、讀/寫等。我們可以把PE文件想象成一邏輯磁盤,PE header 是磁盤的boot扇區(qū),而sections就是各種文件,每種文件自然就有不同屬性如只讀、系統(tǒng)、隱藏、文檔等等。節(jié)的劃分是基于各組數(shù)據(jù)的共同屬性,而不是邏輯概念。重要的不是數(shù)據(jù)/代碼是如何使用的,如果PE文件中的數(shù)據(jù)/代碼擁有相同屬性,它們就能被歸入同一節(jié)中。不必關(guān)心節(jié)中類似于“data”,“code”或其他的邏輯概念,如果數(shù)據(jù)和代碼擁有相同屬性,它們就可以被歸入同一個(gè)節(jié)中。下面是常見的節(jié)名及作用:

      DOS MZ Header DOS stub PE header Section table Section 1 Section 2 Section ...Section n

      其中常見的section節(jié)的名字和作用如下:

      節(jié)名 作用.bss 未經(jīng)初始化的數(shù)據(jù).data 已經(jīng)初始化的數(shù)據(jù).rdata 只讀的初始化數(shù)據(jù).reloc 重定位表信息.rsrc 資源.text .exe或.dll文件的可執(zhí)行代碼

      病毒程序與正常程序從PE文件格式比較來看有以下的一些特點(diǎn):

      (1)病毒程序?yàn)榱烁奖愕碾[藏和傳播,一般都有尺寸的限制。而編譯鏈接程序默認(rèn)段大小為一頁(4096字節(jié))的整數(shù)倍,不足一頁的自動(dòng)將不足部分填充為0湊成一頁,即每個(gè)section的尺寸都應(yīng)該為頁面的整數(shù)倍。一般正常程序至少都有4個(gè)段,則理論上浪費(fèi)的空間有4*4096*50%=8K。而病毒程序?yàn)榱丝刂撇《境绦虼笮。瑢⒉煌味己喜橐粋€(gè)段,經(jīng)常將數(shù)據(jù)段、代碼段等合并為一個(gè)段,減少了每個(gè)段都要對(duì)齊整數(shù)倍頁而造成的尺寸浪費(fèi)。并且將編譯器默認(rèn)的4096整頁對(duì)齊更改為8字節(jié)或者16字節(jié)對(duì)齊,以達(dá)到最大限度的壓縮尺寸的目的。

      (2)病毒程序進(jìn)入正常程序后,一般都需要做自修改或者變形,并修改宿主程序的代碼段的代碼,而且將數(shù)據(jù)段和代碼段合并后,數(shù)據(jù)段是應(yīng)該能讀寫修改的,其段屬性應(yīng)該為可讀寫執(zhí)行。正常程序編譯出來的代碼段應(yīng)具有只讀屬性的,而病毒程序需要將代碼段的屬性置為讀寫屬性。

      以VC程序?yàn)槔?,病毒程序一般都?huì)修改編譯選項(xiàng)達(dá)到以上目的:

      #pragma comment(linker, "/merge:.rdata=.data") //只讀屬性初始化數(shù)據(jù)段合并進(jìn)數(shù)據(jù)段

      #pragma comment(linker, "/merge:.text=.data") //代碼段合并進(jìn)數(shù)據(jù)段

      #pragma comment(linker, "/merge:.reloc=.data") //重定位段合并進(jìn)數(shù)據(jù)段

      #pragma comment(linker, "/SECTION:.data, RWE") //數(shù)據(jù)段設(shè)置為可讀可寫殼執(zhí)行

      如果發(fā)現(xiàn)一個(gè)程序只有一兩個(gè)段且代碼段,且應(yīng)該屬于只讀屬性的代碼段具有了讀寫執(zhí)行的屬性就應(yīng)當(dāng)值得警惕。

      1.3 代碼特征

      病毒程序入侵其他程序具有和正常程序不同的操作特征。簡單舉例如下,我們知道一個(gè)可執(zhí)行文件被操作系統(tǒng)裝載的時(shí)候,操作系統(tǒng)會(huì)將操作系統(tǒng)的資源提供給程序,比如操作系統(tǒng)會(huì)加載執(zhí)行程序需要的動(dòng)態(tài)庫進(jìn)入內(nèi)存并將動(dòng)態(tài)庫中的API的正確地址修改到被加載程序當(dāng)中,會(huì)根據(jù)執(zhí)行程序加載地址的不同而修改重定位代碼和數(shù)據(jù)。而病毒代碼入侵其他程序后,并沒有經(jīng)過操作系統(tǒng)裝載器的加載,必須自己完成這些動(dòng)作。為了完成這些動(dòng)作,病毒首先得知道自己的裝載地址。操作系統(tǒng)對(duì)指令指針寄存器EIP進(jìn)行了保護(hù),應(yīng)用程序包括病毒無法直接訪問該寄存器。然而病毒利用call指令會(huì)將函數(shù)返回地址壓入堆棧的特點(diǎn)來獲得自己在內(nèi)存所在位置。特征指令如下:

      指令 解釋 OPCODE特征Call $+5 Pop ebp call $+5:把下一條指令當(dāng)作函數(shù)調(diào)用,執(zhí)行后,堆棧頂部就是返回地址,就是 pop ebp指令的地址。E8 00 00 00 00

      類似特征還有:在內(nèi)存中搜索kernel32.dll的地址、通過FS寄存器訪問kernel32.dll的地址、加載ntdll.dll、user32.dll動(dòng)態(tài)庫。

      1.4 行為特征

      病毒程序?yàn)榱嗽斐晌:途哂幸恍┯形:Φ牟僮?。比如說一個(gè)木馬程序的典型行為特征會(huì)想辦法秘密運(yùn)行,秘密連接internet網(wǎng),下載惡意程序執(zhí)行;調(diào)用具有入侵作用的api函數(shù);病毒程序的自我復(fù)制和繁殖;為了自動(dòng)啟動(dòng)修改操作系統(tǒng)的自動(dòng)啟動(dòng)項(xiàng)目等等。下表列舉了一些病毒常用的行為特征。

      行為 目的和作用設(shè)置系統(tǒng)文件的隱藏屬性。 病毒為了隱藏病毒文件。修改系統(tǒng)開機(jī)啟動(dòng)選項(xiàng)。 為了使病毒在開機(jī)后得到控制權(quán)。讀寫注冊(cè)表敏感位置。對(duì) windows的注冊(cè)表敏感位置(自動(dòng)啟動(dòng)選項(xiàng)、自動(dòng)服務(wù)加載選項(xiàng)、遠(yuǎn)程訪問控制選項(xiàng)等)進(jìn)行讀寫。大規(guī)模的遍歷訪問計(jì)算機(jī)的其他文件。病毒為了感染其他文件,需要對(duì)計(jì)算機(jī)的其他文件進(jìn)行大量的遍歷訪問,以找到需要感染的文件。打開敏感服務(wù)。 病毒為了在計(jì)算機(jī)開”后門”,秘密的打開計(jì)算機(jī)的遠(yuǎn)程訪問服務(wù)。

      續(xù)表

      病毒程序雖然千變?nèi)f化,變種繁多,但是病毒程序的功能、作用和目的還是大體差不多的,使用技術(shù)手段也萬變不離其中,我們可以對(duì)這些病毒的特征進(jìn)行收集和提取。

      2 Bayes分類在病毒檢測(cè)中的應(yīng)用

      根據(jù)Bayes公式:

      我們做如下的約定和說明:

      (1)根據(jù)要求我們把程序分為正常程序 A1和惡意程序A2兩大類別。顯然 P (A1) + P (A2) = 1滿足完備性的條件。

      (2)根據(jù)前面敘述,我們將檢測(cè)到的特征設(shè)為 Bi,程序中出現(xiàn)特征 Bi的概率為 P (Bi) 。 i = 1 ,2,3,4...。如果一個(gè)檢測(cè)到程序有幾個(gè)特征碼,則表示為 P (Bi, Bj, Bk),為了簡單起見令 B = (Bi, Bj, BK) ,P(B ) = P(Bi, Bj, BK)。B表示檢測(cè)到特征Bi, Bj, BK, P (B)表示待檢測(cè)程序同時(shí)具有 Bi, Bj, BK特征的概率。

      則Bayes改寫為

      公式1表示檢測(cè)到程序具有特征B的情況下,判斷該程序?qū)儆趷阂饣蛘哒3绦虻母怕省?/p>

      惡意程序的判別:合理的判別準(zhǔn)則應(yīng)該是根據(jù)對(duì)程序特征檢測(cè),判決準(zhǔn)則如下:

      根據(jù) Bayes公式,我們有 P (A1, B ) = P(B)P(A1|B),P(A2,B ) = P(B)P(A2|B)代入判決準(zhǔn)則得到:

      則判斷程序?yàn)檎3绦?,否則為惡意程序。

      進(jìn)一步變換上面公式得到:

      則為正常程序。

      或者通過似然比門限值來判斷:

      觀察公式4我們得到如下結(jié)論:

      P(B| Ai)是一個(gè)先驗(yàn)概率,可以分別通過統(tǒng)計(jì)病毒庫程序和正常程序的特征來得到。例如以下為幾個(gè)常用函數(shù)的統(tǒng)計(jì)值:

      將這些先驗(yàn)概率數(shù)據(jù)進(jìn)行保存,以便后面病毒檢測(cè)中使用。

      3 總結(jié)

      隨著計(jì)算機(jī)網(wǎng)絡(luò)技術(shù)的不斷發(fā)展,計(jì)算機(jī)給經(jīng)濟(jì)、文化、軍事和社會(huì)活動(dòng)帶來更多便利的同時(shí),也帶來了相當(dāng)巨大的安全挑戰(zhàn)。如今不斷出現(xiàn)各種各樣的新病毒對(duì)目前的病毒檢測(cè)方法和機(jī)制提出了嚴(yán)峻的挑戰(zhàn),本文旨在運(yùn)用當(dāng)前模式識(shí)別與智能檢測(cè)技術(shù)的理論和方法來解決目前病毒檢測(cè)所遇到難題而提出的解決方案。

      [1]程勝利.談冉等.計(jì)算機(jī)病毒與其防治技術(shù).清華大學(xué)出版社.2004.

      [2]張仁斌,李鋼,侯整風(fēng).計(jì)算機(jī)病毒與反病毒技術(shù).清華大學(xué)出版社.2006.

      猜你喜歡
      代碼程序病毒
      病毒
      感冒病毒大作戰(zhàn)
      幼兒園(2021年16期)2021-12-06 01:06:36
      病毒,快滾開
      感冒病毒
      試論我國未決羈押程序的立法完善
      創(chuàng)世代碼
      創(chuàng)世代碼
      創(chuàng)世代碼
      創(chuàng)世代碼
      “程序猿”的生活什么樣
      石景山区| 郸城县| 敦煌市| 大安市| 广西| 安塞县| 名山县| 鄂温| 西乌| 大理市| 西乌珠穆沁旗| 睢宁县| 灵山县| 石阡县| 筠连县| 西充县| 嘉祥县| 鲜城| 遵化市| 竹北市| 西平县| 贺兰县| 南江县| 新晃| 永康市| 沙田区| 潞西市| 泸溪县| 东乡族自治县| 双江| 淮安市| 虎林市| 克山县| 泰兴市| 乐安县| 临朐县| 磴口县| 乌拉特后旗| 鄂尔多斯市| 张家口市| 札达县|