欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

一種數據檢測方法和裝置與流程

文檔序號:12470963閱讀:289來源:國知局
一種數據檢測方法和裝置與流程

本發(fā)明涉及數據檢測技術領域,尤指一種數據檢測方法和裝置。



背景技術:

目前,主要通過兩種方式對數據中的惡意代碼進行檢測,一種是基于傳統(tǒng)特征進行檢測,例如殺毒軟件通常采用這種方式,一個是基于行為進行檢測,例如沙箱通常采用這種方式。

基于傳統(tǒng)特征進行檢測的方式中,都是先由安全廠商的安全分析人員在已捕獲惡意樣本的前提下,對樣本進行特征提取,并通過提取的特征對惡意代碼進行檢測。傳統(tǒng)特征方式,檢測準確,效率高,但由于其特征一般都是無意義的二進制數據(比如文件的MD5值),提取的內容通常只用于確定惡意樣本,沒有額外的功能,在遇到病毒變種,或新的惡意代碼時,它通常無能為力,需要通過安全分析人員重新根據捕獲的惡意樣本進行特征提取。

基于行為進行檢測的方式中,通常是讓樣本在虛擬環(huán)境中運行起來,通過分析樣本的行為來確定樣本中是否存在惡意代碼。這種方式的一個重要弊端是,只有惡意代碼運行起來,才能被檢測到,如果因為環(huán)境不符,沙箱對抗等原因,導致惡意代碼沒有運行,則惡意代碼無法被檢測到,因此這種方式的檢測準確率較低。



技術實現(xiàn)要素:

為了解決上述問題,本發(fā)明提出了一種數據檢測方法和裝置,能夠提高惡意代碼的檢測效率和檢出率。

為了解決上述技術問題,本發(fā)明提出了一種數據檢測方法,包括:

獲取待檢測的機器碼流對應的機器指令;

判斷連續(xù)的合法機器指令的數目是否達到預定的閾值;

如果連續(xù)的合法機器指令的數目達到預定的閾值,則判斷待檢測的機器碼流中存在可疑代碼。

優(yōu)選的,所述獲取待檢測的機器碼流對應的機器指令包括:

根據當前數據地址,對機器碼流進行翻譯,獲取翻譯得到的機器指令;

在所述翻譯執(zhí)行之后,還包括:將當前數據地址跟新為指向下一段未翻譯的機器碼流。

優(yōu)選的,所述判斷連續(xù)的合法機器指令的數目是否達到預定的閾值包括:

在翻譯不能獲得合法機器指令的情況下,將指令計數器設置為0,繼續(xù)執(zhí)行所述根據當前數據地址,對機器碼流進行翻譯的步驟;

在翻譯得到一條合法機器指令的情況下,將指令計數器加1;

判斷指令計數器的計數數目是否達到預定的閾值;如果沒達到,則判斷待檢測的機器碼流是否已全部翻譯完畢;如果沒有全部翻譯完畢,則繼續(xù)執(zhí)行所述根據當前數據地址,對機器碼流進行翻譯的步驟。

優(yōu)選的,在所述獲取待檢測的機器碼流對應的機器指令之后,所述方法還包括:

判斷所述機器指令是否為跳轉指令;

在所述機器指令不是跳轉指令的情況下,繼續(xù)執(zhí)行所述根據當前數據地址,對機器碼流進行翻譯的步驟;

在該機器指令是跳轉指令的情況下,根據跳轉指令的內容更新當前數據地址,繼續(xù)執(zhí)行所述根據當前數據地址,對機器碼進行翻譯的步驟。

優(yōu)選的,所述預定的閾值設置為50~150。

為了解決上述技術問題,本發(fā)明還提出了一種數據檢測裝置,所述裝置包括:

翻譯單元,用于獲取待檢測的機器碼流對應的機器指令;

檢測單元,用于判斷連續(xù)的合法機器指令的數目是否達到預定的閾值;

結果判斷單元,用于在連續(xù)的合法機器指令的數目達到預定的閾值時,則判斷待檢測的機器碼流中存在可疑代碼。

優(yōu)選的,所述翻譯單元包括:

翻譯模塊,用于根據當前數據地址,對機器碼流進行翻譯,獲取翻譯得到的機器指令;

地址更新模塊,用于在翻譯模塊執(zhí)行翻譯之后,將當前數據地址跟新為指向下一段未翻譯的機器碼流。

優(yōu)選的,所述檢測單元包括:

指令計數模塊,用于在翻譯單元執(zhí)行翻譯不能獲得合法機器指令的情況下,將指令計數器設置為0,并繼續(xù)通過翻譯模塊執(zhí)行所述根據當前數據地址,對機器碼流進行翻譯;在翻譯單元執(zhí)行翻譯得到一條合法機器指令的情況下,將指令計數器加1;

計數檢測模塊,用于判斷指令計數器的計數數目是否達到預定的閾值;如果沒達到,則判斷待檢測的機器碼流是否已全部翻譯完畢;如果沒有全部翻譯完畢,則繼續(xù)通過翻譯模塊執(zhí)行所述根據當前數據地址,對機器碼流進行翻譯。

優(yōu)選的,所述檢測單元還包括:跳轉檢測模塊,用于

在翻譯單元獲取待檢測的機器碼流對應的機器指令之后,判斷所述機器指令是否為跳轉指令;在該機器指令是跳轉指令的情況下,通知地址更新模塊根據跳轉指令的內容更新當前數據地址。

優(yōu)選的,所述預定的閾值設置為50~150。

與現(xiàn)有技術相比,本發(fā)明提供的技術方案包括:獲取待檢測的機器碼流對應的機器指令;判斷連續(xù)的合法機器指令的數目是否達到預定的閾值;如果連續(xù)的合法機器指令的數目達到預定的閾值,則判斷待檢測的機器碼流中存在可疑代碼。通過本發(fā)明的方案,通過對連續(xù)的機器指令進行計數的方式進行檢測。在檢測可以代碼時,不需要提取惡意樣本,因此在病毒變種或者面對新的惡意代碼時,不會由于確認惡意樣本而無法識別,本發(fā)明的檢測方法具有較好的適應性和較快的應變能力,此外,本發(fā)明實施例提供的檢測方法中,不需要運行樣本,不會由于環(huán)境不符或沙箱對抗導致惡意代碼沒有運行時,而造成惡意代碼無法被檢測到,因此,具有較高的檢出率,檢測準確率較高。

附圖說明

下面對本發(fā)明實施例中的附圖進行說明,實施例中的附圖是用于對本發(fā)明的進一步理解,與說明書一起用于解釋本發(fā)明,并不構成對本發(fā)明保護范圍的限制。

圖1為本發(fā)明實施例提供的一種數據檢測方法的流程圖;

圖2為本發(fā)明實施例提供的另一種數據檢測方法的流程圖;

圖3A和圖3B分別為本發(fā)明實施例提供的數據檢測裝置的結構示意圖。

具體實施方式

為了便于本領域技術人員的理解,下面結合附圖對本發(fā)明作進一步的描述,并不能用來限制本發(fā)明的保護范圍。需要說明的是,在不沖突的情況下,本申請中的實施例及實施例中的各種方式可以相互組合。

參見圖1,本發(fā)明提出了一種數據檢測方法,所述方法包括:

步驟110,獲取數據中待檢測的機器碼流對應的機器指令;

步驟120,判斷連續(xù)的合法機器指令的數目是否達到預定的閾值;

步驟130,如果連續(xù)的合法機器指令的數目達到預定的閾值,則判斷待檢測的機器碼流中存在可疑代碼。

其中,步驟110中,所述獲取機器碼流對應的機器指令包括:

根據當前數據地址,對機器碼流進行翻譯,從而得到對應的機器指令。在所述翻譯執(zhí)行之后,還包括:將當前數據地址跟新為指向下一段未翻譯的機器碼流。

參見圖2,本發(fā)明提出了一種數據檢測方法,所述方法包括:

步驟210,根據當前數據地址,對機器碼流進行翻譯。

其中,根據預定的合法性規(guī)則,對機器碼流進行翻譯,例如,合法性規(guī)則可以是基于某CPU平臺的指令集,根據指令集定義的機器碼流與機器指令之間的映射關系,對機器碼流進行翻譯。

步驟220,在翻譯不能獲得機器指令的情況下,將指令計數器設置為0;更新當前數據地址,繼續(xù)執(zhí)行步驟210;

本發(fā)明實施例中,指令計數器用于對連續(xù)的機器指令進行計數,指令計數器的初始值為0。

步驟230,在翻譯得到一條機器指令的情況下,將指令計數器加1;

在當前指令計數器為非零的情況下,只有當翻譯得到的機器指令與上一條機器指令是連續(xù)的機器指令,才會將指令計數器加1,如果檢測到無法翻譯成機器指令的機器碼流片段,則會將指令計數器設置為0。

步驟240,判斷指令計數器的計數數目是否達到預定的閾值;

步驟250,如果指令計數器的計數數目達到預定的閾值,則判斷數據中存在可疑代碼;

步驟260,如果指令計數器的計數數目沒有達到預定的閾值,判斷該機器指令是否為跳轉指令;

在該機器指令不是跳轉指令的情況下,根據更新的當前數據地址,繼續(xù)執(zhí)行步驟210;

步驟270,在該機器指令是跳轉指令的情況下,根據跳轉指令的內容更新當前數據地址,繼續(xù)執(zhí)行步驟210;

本發(fā)明實施例中的跳轉指令是指call指令以外的跳轉指令,也就是說對call指令以外的跳轉指令進行地址跳轉翻譯操作。

本實施例中,有兩種翻譯方式,第一種翻譯方式是,對機器碼流進行翻譯時,能夠翻譯成機器指令的部分,則翻譯成機器指令,機器指令指合法的機器指令,不能翻譯成機器指令的部分,放棄翻譯成機器指令,第二種翻譯方式是,對于不能翻譯成機器指令的部分,則翻譯成預設的翻譯代碼,該翻譯代碼和合法的機器指令統(tǒng)稱為翻譯指令,上述實施例中,采用第一種翻譯方式。下面結合另一個具體的示例進行說明。該實例中,采用第一種翻譯方式。

步驟310,對數據對應的機器碼流進行翻譯,并獲取對應的翻譯指令;

本發(fā)明實施例中,根據機器指令的相關定義制定翻譯規(guī)則,并將根據翻譯規(guī)則對機器碼流進行翻譯得到的內容稱為翻譯指令。

步驟320,在獲取翻譯指令之后,檢測翻譯指令是否為合法的機器指令;

其中,檢測翻譯指令是否為合法的機器指令包括:根據預定的合法性規(guī)則判斷所述翻譯指令是否為合法的機器指令。

其中,機器指令是在CPU平臺中根據預定的指令規(guī)則預定義好的,符合這個預定規(guī)則的翻譯指令稱為合法的機器指令,不符合的稱為非法指令。

步驟330,判斷連續(xù)的合法的機器指令的數目是否達到預定的閾值;

步驟340,如果連續(xù)的合法的機器指令的數目達到預定的閾值,則判斷數據中存在可疑代碼。

步驟350,是否完成全部機器碼流的翻譯,如果已經完成全部機器碼流的翻譯,執(zhí)行步驟360,如果沒有完成全部機器碼流的翻譯,執(zhí)行步驟310。

本實施例中,步驟310和其他的步驟不存在特定的執(zhí)行順序,對機器碼流的翻譯可以持續(xù)進行,翻譯得到的翻譯指令由其他單元進行相應的處理。

步驟360,判斷數據中不存在可疑代碼。

其中,步驟330中,可以通過指令計數器對合法的機器指令進行計數,從而判斷連續(xù)的合法的機器指令的數目是否達到預定的閾值。

所述判斷連續(xù)的合法的機器指令的數目是否達到預定的閾值包括:

如果翻譯指令是合法的機器指令,將指令計數器加1,如果翻譯指令不是合法的機器指令,將指令計數器清零;

判斷指令計數器的計數值是否到達預定的閾值;

本發(fā)明實施例中,所述預定的閾值設置為50~150。其中,可以根據經驗對預定的閾值進行設置。

下面結合具體的實施場景進行說明,

參見表1,為對機器碼流進行翻譯的示意數據。

表1為對機器碼流進行翻譯的示意數據

左側為機器碼流,例如,60、8B 74 24 24等均為機器碼流,其中,60對應的當前數據地址為0000009B,8B 74 24 24對應的當前數據地址為0000009C;右側為根據機器碼流進行翻譯所得到的機器指令,例如,通過對60進行翻譯,得到的對應的當前數據地址為00000098為pusha;通過對E8 97 00 00 00進行翻譯,得到的翻譯指令為call sub_13C。

對于當前數據地址為000000A0時,根據機器碼流E8 97 00 00 00進行翻譯所得到的機器指令為call sub_13C,該機器指令為跳轉指令,但是,本發(fā)明實施例僅對call指令以外的跳轉指令進行地址跳轉翻譯操作,因此翻譯得到call sub_13C之后,當前數據地址繼續(xù)指向下一段機器碼流,即將當前數據地址更新為000000A5之后,對000000A5的機器碼流繼續(xù)進行翻譯。

本發(fā)明實施例中,當前數據地址為000000BA時,根據機器碼流進行翻譯所得到的機器指令為inz short loc B7,該機器指令為跳轉指令,根據該跳轉指令,當前數據地址會跳轉至000000B7,即loc B7對應的地址。

可以看出,000000B7~000000BA構成循環(huán)內容,指令計數器會根據該循環(huán)內容反復執(zhí)行加1操作,最終將導致檢測結果為存在可疑代碼。

SHELLCODE,即可疑代碼,通常都是一段連續(xù)的機器碼流,而在正常的非可執(zhí)行文件中以及網絡數據流中,通常是不會存在的,換句話說,如果我們在非可執(zhí)行文件或網絡數據流中發(fā)現(xiàn)一段可連續(xù)執(zhí)行的指令流,我們就可以將其視為SHELLCODE。

基于與上述實施例相同或相似的構思,本發(fā)明實施例還提供一種數據檢測裝置,參見圖3A和圖3B,本發(fā)明提出的一種數據檢測裝置包括:

翻譯單元10,用于獲取待檢測的機器碼流對應的機器指令;

檢測單元20,用于判斷連續(xù)的合法機器指令的數目是否達到預定的閾值;

結果判斷單元30,用于在連續(xù)的合法機器指令的數目達到預定的閾值時,則判斷待檢測的機器碼流中存在可疑代碼。

本發(fā)明實施例中,所述翻譯單元10包括:

翻譯模塊11,用于根據當前數據地址,對機器碼流進行翻譯,獲取翻譯得到的機器指令;

地址更新模塊12,用于在翻譯模塊執(zhí)行翻譯之后,將當前數據地址跟新為指向下一段未翻譯的機器碼流。

本發(fā)明實施例中,所述檢測單元20包括:

指令計數模塊21,用于在翻譯單元執(zhí)行翻譯不能獲得合法機器指令的情況下,將指令計數器設置為0,并繼續(xù)通過翻譯模塊執(zhí)行所述根據當前數據地址,對機器碼流進行翻譯;在翻譯單元執(zhí)行翻譯得到一條合法機器指令的情況下,將指令計數器加1;

計數檢測模塊22,用于判斷指令計數器的計數數目是否達到預定的閾值;如果沒達到,則判斷待檢測的機器碼流是否已全部翻譯完畢;如果沒有全部翻譯完畢,則繼續(xù)通過翻譯模塊執(zhí)行所述根據當前數據地址,對機器碼流進行翻譯。

本發(fā)明實施例中,所述檢測單元20還包括:跳轉檢測模塊23,用于

在翻譯單元獲取待檢測的機器碼流對應的機器指令之后,判斷所述機器指令是否為跳轉指令;在該機器指令是跳轉指令的情況下,通知地址更新模塊根據跳轉指令的內容更新當前數據地址。

本發(fā)明實施例中,所述預定的閾值設置為50~150。

需要說明的是,以上所述的實施例僅是為了便于本領域的技術人員理解而已,并不用于限制本發(fā)明的保護范圍,在不脫離本發(fā)明的發(fā)明構思的前提下,本領域技術人員對本發(fā)明所做出的任何顯而易見的替換和改進等均在本發(fā)明的保護范圍之內。

當前第1頁1 2 3 
網友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
花垣县| 华坪县| 苍山县| 苏尼特右旗| 万州区| 青岛市| 昌吉市| 岳阳市| 明水县| 临潭县| 莲花县| 凌云县| 南城县| 北票市| 河曲县| 怀柔区| 舒城县| 芮城县| 芦溪县| 丰都县| 饶河县| 屏山县| 玉田县| 鄂尔多斯市| 汝城县| 南汇区| 枣庄市| 信阳市| 浠水县| 武义县| 巩义市| 九台市| 达州市| 健康| 钟山县| 台湾省| 都江堰市| 定西市| 顺义区| 沅陵县| 河曲县|