一種文件篡改的檢測方法及裝置的制造方法
【專利摘要】本發(fā)明提供了一種文件篡改的檢測方法及裝置,方法包括:在系統(tǒng)內(nèi)核中設(shè)置至少一個(gè)檢測點(diǎn),并在每一個(gè)檢測點(diǎn)中插入鉤子函數(shù);利用二進(jìn)制加密方式針對每一個(gè)檢測點(diǎn)所對應(yīng)的內(nèi)核對象進(jìn)行二進(jìn)制加密,得到相應(yīng)的二進(jìn)制密文;利用編碼規(guī)則對各個(gè)二進(jìn)制密文分別進(jìn)行編碼,并存儲(chǔ)各個(gè)編碼信息;在系統(tǒng)內(nèi)核運(yùn)行到目標(biāo)檢測點(diǎn)時(shí),利用鉤子函數(shù)對目標(biāo)檢測點(diǎn)處的目標(biāo)內(nèi)核對象的運(yùn)行請求進(jìn)行攔截;利用二進(jìn)制加密方式和編碼規(guī)則獲取目標(biāo)內(nèi)核對象所對應(yīng)的當(dāng)前編碼信息;比較目標(biāo)內(nèi)核對象的當(dāng)前編碼信息與存儲(chǔ)的編碼信息,在相同時(shí),允許目標(biāo)內(nèi)核對象的運(yùn)行請求。根據(jù)上述方案,可以實(shí)現(xiàn)對內(nèi)核對象是否被篡改的檢測,提高系統(tǒng)內(nèi)核的安全性。
【專利說明】
一種文件篡改的檢測方法及裝置
技術(shù)領(lǐng)域
[0001]本發(fā)明涉及安全技術(shù)領(lǐng)域,特別涉及一種文件篡改的檢測方法及裝置。
【背景技術(shù)】
[0002]隨著網(wǎng)絡(luò)技術(shù)的迅速發(fā)展,衍生出了很多惡意攻擊他人服務(wù)器的黑客,為了能夠保護(hù)重要業(yè)務(wù)的正常運(yùn)轉(zhuǎn)或重要數(shù)據(jù)不被破壞,目前,在大多監(jiān)控系統(tǒng)中,使用文件的屬性信息對文件進(jìn)行校驗(yàn)匹配,以確定文件是否被篡改的,然而,現(xiàn)有技術(shù)存在如下缺點(diǎn):若篡改文件的同時(shí)也篡改了文件屬性信息,以使篡改后的文件屬性信息與篡改后的文件相對應(yīng),則會(huì)導(dǎo)致監(jiān)控系統(tǒng)無法監(jiān)控到文件是否被篡改。
【發(fā)明內(nèi)容】
[0003]本發(fā)明實(shí)施例提供了一種文件篡改的檢測方法及裝置,以實(shí)現(xiàn)對篡改信息的檢測。
[0004]第一方面,本發(fā)明實(shí)施例提供了一種文件篡改的檢測方法,包括:
[0005]在系統(tǒng)內(nèi)核中設(shè)置至少一個(gè)檢測點(diǎn),并在每一個(gè)檢測點(diǎn)中插入鉤子函數(shù);
[0006]利用二進(jìn)制加密方式針對每一個(gè)檢測點(diǎn)所對應(yīng)的內(nèi)核對象進(jìn)行二進(jìn)制加密,得到相應(yīng)的二進(jìn)制密文;利用編碼規(guī)則對各個(gè)二進(jìn)制密文分別進(jìn)行編碼,并存儲(chǔ)各個(gè)編碼信息;
[0007]在系統(tǒng)內(nèi)核運(yùn)行到目標(biāo)檢測點(diǎn)時(shí),利用鉤子函數(shù)對所述目標(biāo)檢測點(diǎn)處的目標(biāo)內(nèi)核對象的運(yùn)行請求進(jìn)行攔截;
[0008]利用所述二進(jìn)制加密方式和所述編碼規(guī)則獲取所述目標(biāo)內(nèi)核對象所對應(yīng)的當(dāng)前編碼信息;比較所述目標(biāo)內(nèi)核對象的當(dāng)前編碼信息與存儲(chǔ)的編碼信息,在相同時(shí),確定所述目標(biāo)內(nèi)核對象未被篡改,允許所述目標(biāo)內(nèi)核對象的運(yùn)行請求。
[0009]優(yōu)選地,所述利用二進(jìn)制加密方式針對每一個(gè)檢測點(diǎn)所對應(yīng)的內(nèi)核對象進(jìn)行二進(jìn)制加密,得到相應(yīng)的二進(jìn)制密文,包括:
[0010]針對每一個(gè)當(dāng)前內(nèi)核對象執(zhí)行如下操作:
[0011]獲取當(dāng)前內(nèi)核對象所對應(yīng)的目標(biāo)字符串;
[0012]計(jì)算所述目標(biāo)字符串的MD5值,得到十六進(jìn)制密文;
[0013]根據(jù)所述十六進(jìn)制密文的位數(shù)定義相應(yīng)個(gè)數(shù)的數(shù)組;
[0014]在所述十六進(jìn)制密文中按第一目標(biāo)順序依次取兩位字符放置到相應(yīng)數(shù)組中,每個(gè)數(shù)組中包括兩位十六進(jìn)制字符;
[0015]將每個(gè)數(shù)組中所包括的兩位十六進(jìn)制字符轉(zhuǎn)換為八位二進(jìn)制字符,并將所有數(shù)組中轉(zhuǎn)換后的八位二進(jìn)制字符按照所述第一目標(biāo)順序連接起來,得到二進(jìn)制密文。
[0016]優(yōu)選地,所述利用二進(jìn)制加密方式針對每一個(gè)檢測點(diǎn)所對應(yīng)的內(nèi)核對象進(jìn)行二進(jìn)制加密,得到相應(yīng)的二進(jìn)制密文,包括:
[0017]針對每一個(gè)當(dāng)前內(nèi)核對象執(zhí)行如下操作:
[0018]獲取當(dāng)前內(nèi)核對象所對應(yīng)的多個(gè)字符串,所述多個(gè)字符串之間按照第二目標(biāo)順序排列;
[0019]將每一個(gè)字符串映射為ACSII編碼中的八位二進(jìn)制字符;
[0020]將所有字符串分別對應(yīng)的八位二進(jìn)制字符按照所述第二目標(biāo)順序連接在一起,組成二進(jìn)制密文。
[0021 ]優(yōu)選地,進(jìn)一步包括:預(yù)先獲取編碼轉(zhuǎn)化表;
[0022]所述利用編碼規(guī)則對各個(gè)二進(jìn)制密文分別進(jìn)行編碼,包括:在所述二進(jìn)制密文中按從高位到低位的順序依次取連續(xù)的六位二進(jìn)制字符;將取的六位二進(jìn)制字符的高位補(bǔ)0,生成相應(yīng)的八位二進(jìn)制字符;根據(jù)所述編碼轉(zhuǎn)化表,將生成的每一個(gè)八位二進(jìn)制字符轉(zhuǎn)化為相應(yīng)的編碼。
[0023]優(yōu)選地,將下述內(nèi)核對象設(shè)置為檢測點(diǎn):任務(wù)、程序、文件系統(tǒng)、Socket套接字、管道、文件、網(wǎng)絡(luò)緩沖區(qū)、網(wǎng)絡(luò)設(shè)備、Semaphore信號(hào)和消息中的至少一種。
[0024]第二方面,本發(fā)明實(shí)施例還提供了一種文件篡改的檢測裝置,包括:
[0025]配置單元,用于在系統(tǒng)內(nèi)核中設(shè)置至少一個(gè)檢測點(diǎn),并在每一個(gè)檢測點(diǎn)中插入鉤子函數(shù);
[0026]二進(jìn)制加密單元,用于利用二進(jìn)制加密方式針對每一個(gè)檢測點(diǎn)所對應(yīng)的內(nèi)核對象進(jìn)行二進(jìn)制加密,得到相應(yīng)的二進(jìn)制密文;
[0027]編碼單元,用于利用編碼規(guī)則對各個(gè)二進(jìn)制密文分別進(jìn)行編碼,并存儲(chǔ)各個(gè)編碼信息;
[0028]攔截單元,用于在系統(tǒng)內(nèi)核運(yùn)行到目標(biāo)檢測點(diǎn)時(shí),利用鉤子函數(shù)對所述目標(biāo)檢測點(diǎn)處的目標(biāo)內(nèi)核對象的運(yùn)行請求進(jìn)行攔截;
[0029]第一獲取單元,用于利用所述二進(jìn)制加密方式和所述編碼規(guī)則獲取所述目標(biāo)內(nèi)核對象所對應(yīng)的當(dāng)前編碼信息;
[0030]比較單元,用于比較所述目標(biāo)內(nèi)核對象的當(dāng)前編碼信息與存儲(chǔ)的編碼信息,在相同時(shí),確定所述目標(biāo)內(nèi)核對象未被篡改,允許所述目標(biāo)內(nèi)核對象的運(yùn)行請求。
[0031]優(yōu)選地,所述二進(jìn)制加密單元,具體用于針對每一個(gè)當(dāng)前內(nèi)核對象執(zhí)行如下操作:
[0032]獲取當(dāng)前內(nèi)核對象所對應(yīng)的目標(biāo)字符串;
[0033]計(jì)算所述目標(biāo)字符串的MD5值,得到十六進(jìn)制密文;
[0034]根據(jù)所述十六進(jìn)制密文的位數(shù)定義相應(yīng)個(gè)數(shù)的數(shù)組;
[0035]在所述十六進(jìn)制密文中按第一目標(biāo)順序依次取兩位字符放置到相應(yīng)數(shù)組中,每個(gè)數(shù)組中包括兩位十六進(jìn)制字符;
[0036]將每個(gè)數(shù)組中所包括的兩位十六進(jìn)制字符轉(zhuǎn)換為八位二進(jìn)制字符,并將所有數(shù)組中轉(zhuǎn)換后的八位二進(jìn)制字符按照所述第一目標(biāo)順序連接起來,得到二進(jìn)制密文。
[0037]優(yōu)選地,所述二進(jìn)制加密單元,具體用于針對每一個(gè)當(dāng)前內(nèi)核對象執(zhí)行如下操作:
[0038]獲取當(dāng)前內(nèi)核對象所對應(yīng)的多個(gè)字符串,所述多個(gè)字符串之間按照第二目標(biāo)順序排列;
[0039]將每一個(gè)字符串映射為ACSII編碼中的八位二進(jìn)制字符;
[0040]將所有字符串分別對應(yīng)的八位二進(jìn)制字符按照所述第二目標(biāo)順序連接在一起,組成二進(jìn)制密文。
[0041 ]優(yōu)選地,進(jìn)一步包括:第二獲取單元,用于獲取編碼轉(zhuǎn)化表;
[0042]所述編碼單元,具體用于在所述二進(jìn)制密文中按從高位到低位的順序依次取連續(xù)的六位二進(jìn)制字符;將取的六位二進(jìn)制字符的高位補(bǔ)O,生成相應(yīng)的八位二進(jìn)制字符;根據(jù)所述編碼轉(zhuǎn)化表,將生成的每一個(gè)八位二進(jìn)制字符轉(zhuǎn)化為相應(yīng)的編碼。
[0043]本發(fā)明實(shí)施例提供了一種文件篡改的檢測方法及裝置,通過鉤子函數(shù)將設(shè)置的檢測點(diǎn)處的內(nèi)核對象的運(yùn)行請求攔截,并利用在計(jì)算存儲(chǔ)的每一個(gè)內(nèi)核對象對應(yīng)的編碼信息時(shí)使用的二進(jìn)制加密方式和編碼規(guī)則,計(jì)算該攔截的內(nèi)核對象的編碼信息,并與存儲(chǔ)的編碼信息進(jìn)行比較,只有在比較結(jié)果相同時(shí),才表明該內(nèi)核對象未被篡改,通過該二進(jìn)制加密方式和編碼規(guī)則的雙重計(jì)算,可以有效防止黑客對該雙重計(jì)算方式的破解,從而可以進(jìn)一步保證內(nèi)核對象的安全性。
【附圖說明】
[0044]為了更清楚地說明本發(fā)明實(shí)施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對實(shí)施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖是本發(fā)明的一些實(shí)施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動(dòng)的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
[0045]圖1是本發(fā)明一個(gè)實(shí)施例提供的一種文件篡改的檢測方法流程圖;
[0046]圖2是本發(fā)明一個(gè)實(shí)施例提供的另一種文件篡改的檢測方法流程圖;
[0047]圖3是本發(fā)明一個(gè)實(shí)施例提供的裝置所在設(shè)備的硬件架構(gòu)圖;
[0048]圖4是本發(fā)明一個(gè)實(shí)施例提供的一種裝置結(jié)構(gòu)示意圖;
[0049]圖5是本發(fā)明一個(gè)實(shí)施例提供的另一種裝置結(jié)構(gòu)示意圖。
【具體實(shí)施方式】
[0050]為使本發(fā)明實(shí)施例的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚,下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例,基于本發(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動(dòng)的前提下所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。
[0051]如圖1所示,本發(fā)明實(shí)施例提供了一種文件篡改的檢測方法,該方法可以包括以下步驟:
[0052]步驟101:在系統(tǒng)內(nèi)核中設(shè)置至少一個(gè)檢測點(diǎn),并在每一個(gè)檢測點(diǎn)中插入鉤子函數(shù)。
[0053]步驟102:利用二進(jìn)制加密方式針對每一個(gè)檢測點(diǎn)所對應(yīng)的內(nèi)核對象進(jìn)行二進(jìn)制加密,得到相應(yīng)的二進(jìn)制密文;利用編碼規(guī)則對各個(gè)二進(jìn)制密文分別進(jìn)行編碼,并存儲(chǔ)各個(gè)編碼?目息。
[0054]步驟103:在系統(tǒng)內(nèi)核運(yùn)行到目標(biāo)檢測點(diǎn)時(shí),利用鉤子函數(shù)對所述目標(biāo)檢測點(diǎn)處的目標(biāo)內(nèi)核對象的運(yùn)行請求進(jìn)行攔截。
[0055]步驟104:利用所述二進(jìn)制加密方式和所述編碼規(guī)則獲取所述目標(biāo)內(nèi)核對象所對應(yīng)的當(dāng)前編碼信息;比較所述目標(biāo)內(nèi)核對象的當(dāng)前編碼信息與存儲(chǔ)的編碼信息,在相同時(shí),確定所述目標(biāo)內(nèi)核對象未被篡改,允許所述目標(biāo)內(nèi)核對象的運(yùn)行請求。
[0056]可見,通過鉤子函數(shù)將設(shè)置的檢測點(diǎn)處的內(nèi)核對象的運(yùn)行請求攔截,并利用在計(jì)算存儲(chǔ)的每一個(gè)內(nèi)核對象對應(yīng)的編碼信息時(shí)使用的二進(jìn)制加密方式和編碼規(guī)則,計(jì)算該攔截的內(nèi)核對象的編碼信息,并與存儲(chǔ)的編碼信息進(jìn)行比較,只有在比較結(jié)果相同時(shí),才表明該內(nèi)核對象未被篡改,通過該二進(jìn)制加密方式和編碼規(guī)則的雙重計(jì)算,可以有效防止黑客對該雙重計(jì)算方式的破解,從而可以進(jìn)一步保證內(nèi)核對象的安全性。
[0057]為了防止黑客對存儲(chǔ)的加密信息進(jìn)行破解篡改,需要使用復(fù)雜的加密編碼方式生成內(nèi)核對象的加密信息,上述實(shí)施例通過利用二進(jìn)制加密方式首先內(nèi)核對象進(jìn)行二進(jìn)制加密,然后在對二進(jìn)制加密后的二進(jìn)制密文進(jìn)行編碼,將得到的編碼信息用于實(shí)現(xiàn)對內(nèi)核對象是否被篡改的校驗(yàn)。
[0058]本發(fā)明實(shí)施例中,至少可以利用如下兩種二進(jìn)制加密方式中的任意一種實(shí)現(xiàn)對內(nèi)核對象的二進(jìn)制加密:
[0059]1、所述利用二進(jìn)制加密方式針對每一個(gè)檢測點(diǎn)所對應(yīng)的內(nèi)核對象進(jìn)行二進(jìn)制加密,得到相應(yīng)的二進(jìn)制密文,包括:
[0060]針對每一個(gè)當(dāng)前內(nèi)核對象執(zhí)行如下操作:
[0061 ]獲取當(dāng)前內(nèi)核對象所對應(yīng)的目標(biāo)字符串;
[0062]計(jì)算所述目標(biāo)字符串的MD5值,得到十六進(jìn)制密文;
[0063]根據(jù)所述十六進(jìn)制密文的位數(shù)定義相應(yīng)個(gè)數(shù)的數(shù)組;
[0064]在所述十六進(jìn)制密文中按目標(biāo)順序依次取兩位字符放置到相應(yīng)數(shù)組中,每個(gè)數(shù)組中包括兩位十六進(jìn)制字符;
[0065]將每個(gè)數(shù)組中所包括的兩位十六進(jìn)制字符轉(zhuǎn)換為八位二進(jìn)制字符,并將所有數(shù)組中轉(zhuǎn)換后的八位二進(jìn)制字符按照所述目標(biāo)順序連接起來,得到二進(jìn)制密文。
[0066]2、所述利用二進(jìn)制加密方式針對每一個(gè)檢測點(diǎn)所對應(yīng)的內(nèi)核對象進(jìn)行二進(jìn)制加密,得到相應(yīng)的二進(jìn)制密文,包括:
[0067]針對每一個(gè)當(dāng)前內(nèi)核對象執(zhí)行如下操作:
[0068]獲取當(dāng)前內(nèi)核對象所對應(yīng)的多個(gè)字符串,所述多個(gè)字符串之間按照目標(biāo)順序排列;
[0069]將每一個(gè)字符串映射為ACSII編碼中的八位二進(jìn)制字符;
[0070]將所有字符串分別對應(yīng)的八位二進(jìn)制字符按照所述目標(biāo)順序連接在一起,組成二進(jìn)制密文。
[0071]在本發(fā)明一個(gè)實(shí)施例中,為了實(shí)現(xiàn)對二進(jìn)制密文的編碼,可以采用如下編碼規(guī)則對二進(jìn)制密文進(jìn)行編碼,得到相應(yīng)的編碼?目息:
[0072]進(jìn)一步包括:預(yù)先獲取編碼轉(zhuǎn)化表;
[0073]所述利用編碼規(guī)則對各個(gè)二進(jìn)制密文分別進(jìn)行編碼,包括:在所述二進(jìn)制密文中按從高位到低位的順序依次取連續(xù)的六位二進(jìn)制字符;將取的六位二進(jìn)制字符的高位補(bǔ)0,生成相應(yīng)的八位二進(jìn)制字符;根據(jù)所述編碼轉(zhuǎn)化表,將生成的每一個(gè)八位二進(jìn)制字符轉(zhuǎn)化為相應(yīng)的編碼。
[0074]在本發(fā)明一個(gè)實(shí)施例中,為了保證系統(tǒng)內(nèi)核的安全,可以將下述內(nèi)核對象設(shè)置為檢測點(diǎn):任務(wù)、程序、文件系統(tǒng)、Socket套接字、管道、文件、網(wǎng)絡(luò)緩沖區(qū)、網(wǎng)絡(luò)設(shè)備、Semaphore信號(hào)和消息中的至少一種,從而可以對系統(tǒng)內(nèi)核中敏感結(jié)構(gòu)進(jìn)行檢測。
[0075]為使本發(fā)明的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚,下面結(jié)合附圖及具體實(shí)施例對本發(fā)明作進(jìn)一步地詳細(xì)描述。
[0076]如圖2所示,本發(fā)明實(shí)施例提供了一種文件篡改的檢測方法,該方法可以包括以下步驟:
[0077]步驟201:在系統(tǒng)內(nèi)核中設(shè)置至少一個(gè)檢測點(diǎn)。
[0078]在本實(shí)施例中,為了保證系統(tǒng)內(nèi)核在啟動(dòng)過程中,不被惡意程序攻擊,需要在系統(tǒng)內(nèi)核中設(shè)置至少一個(gè)檢測點(diǎn),以保證在系統(tǒng)內(nèi)核的啟動(dòng)過程中,對設(shè)置的檢測點(diǎn)進(jìn)行安全檢測,以保證啟動(dòng)的系統(tǒng)內(nèi)核是未經(jīng)篡改的。
[0079]為了實(shí)現(xiàn)對系統(tǒng)內(nèi)核更加全面的檢測,可以針對下述至少一個(gè)內(nèi)核對象設(shè)置為檢測點(diǎn):
[0080]task_struct結(jié)構(gòu):代表任務(wù)[0081 ] linux_binprm 結(jié)構(gòu):代表程序
[0082]super_block結(jié)構(gòu):代表文件系統(tǒng)
[0083]inode結(jié)構(gòu):代表管道,文件,或者Socket套接字
[0084]file結(jié)構(gòu):代表打開的文件
[0085]sk_buff結(jié)構(gòu):代表網(wǎng)絡(luò)緩沖區(qū)
[0086]net_device結(jié)構(gòu):代表網(wǎng)絡(luò)設(shè)備
[0087]kern_ipc_perm結(jié)構(gòu):代表Semaphore信號(hào),共享內(nèi)存段,或者消息隊(duì)列
[0088]msg_msg:代表單個(gè)的消息
[0089]步驟202:在每一個(gè)檢測點(diǎn)中插入鉤子函數(shù)。
[0090]為了實(shí)現(xiàn)在系統(tǒng)內(nèi)核運(yùn)行到該檢測點(diǎn)時(shí)對該檢測點(diǎn)的運(yùn)行文件進(jìn)行攔截,需要在該檢測點(diǎn)中插入鉤子函數(shù)。
[0091 ] 上述步驟202和步驟203,可以通過LSM(Linux Secrity Module,Linux安全模塊)框架來實(shí)現(xiàn),LSM是一個(gè)輕量級(jí)通用的訪問控制框架。它通過在內(nèi)核當(dāng)中的特點(diǎn)位置增加檢測點(diǎn),并在檢測點(diǎn)插入鉤子函數(shù)。這樣,當(dāng)用戶需要施加額外的訪問控制的時(shí)候,自己可以改寫這些鉤子函數(shù)如增加一個(gè)鉤子程序,從而獲得安全增強(qiáng)。
[0092]LSM框架可以對系統(tǒng)內(nèi)核進(jìn)行錯(cuò)誤檢查、DAC(Discret1nary Access Control,自主訪問控制)檢查,并在檢查結(jié)束之后,在Linux內(nèi)核試圖對內(nèi)核對象進(jìn)行訪問之前,鉤子函數(shù)調(diào)用一個(gè)LSM模塊所提供的函數(shù),以能夠?qū)υ搩?nèi)核對象的訪問請求進(jìn)行攔截。
[0093]步驟203:利用二進(jìn)制加密方式針對每一個(gè)檢測點(diǎn)所對應(yīng)的內(nèi)核對象進(jìn)行二進(jìn)制加密,得到相應(yīng)的二進(jìn)制密文。
[0094]在本實(shí)施例中,可以利用如下兩種方式對內(nèi)核對象進(jìn)行二進(jìn)制加密:
[0095]1、MD5加密方式。
[0096]S1:獲取當(dāng)前內(nèi)核對象所對應(yīng)的目標(biāo)字符串。
[0097]S 2:計(jì)算所述目標(biāo)字符串的M D 5值,得到十六進(jìn)制密文:098f6bcd4621d373cade832627b4f6。
[0098]S3:根據(jù)所述十六進(jìn)制密文的位數(shù)定義相應(yīng)個(gè)數(shù)的數(shù)組。
[0099]其中,定義的數(shù)組的個(gè)數(shù)是十六進(jìn)制密文位數(shù)的一半。上述十六進(jìn)制密文的位數(shù)為32位,那么需要定義16個(gè)數(shù)組array[]。
[0100]S4:在所述十六進(jìn)制密文中按第一目標(biāo)順序依次取兩位字符放置到相應(yīng)數(shù)組中,每個(gè)數(shù)組中包括兩位十六進(jìn)制字符。
[0101]其中,該第一目標(biāo)順序可以是從高位向低位取,也可以是從低位向高位取。
[0? O2 ] 以第一目標(biāo)順序?yàn)閺母呶幌虻臀蝗槔?,array [O] =09, array [ I ] = 8f,array [ 2 ]=6b,......, array [15] =f6o
[0103]S5:將每個(gè)數(shù)組中所包括的兩位十六進(jìn)制字符轉(zhuǎn)換為八位二進(jìn)制字符,并將所有數(shù)組中轉(zhuǎn)換后的八位二進(jìn)制字符按照第一目標(biāo)順序連接起來,得到二進(jìn)制密文。
[0104]以array[0]=09為例,轉(zhuǎn)換為八位的二進(jìn)制字符為0000 1001。其他數(shù)組依次類推。
[0105]在將得到的16個(gè)八位二進(jìn)制字符連接起來時(shí),需要按照數(shù)組在取兩位十六進(jìn)制字符時(shí)的順序進(jìn)行連接,以保證其有序性。
[0106]在S4中的是按照從高位向低位的順序取的十六進(jìn)制字符,因此,將數(shù)組對應(yīng)的八位二進(jìn)制字符按照從高位向低位的順序連接,得到128位二進(jìn)密文。
[0107]例如,該I 2 8位二進(jìn)制密文如下所示:00001000100011110110110111100111001000110001000011110001111001010110111101000001100100110001010001011010011110110。
[0108]2、ACSSI 編碼方式。
[0109]S1:獲取當(dāng)前內(nèi)核對象所對應(yīng)的多個(gè)字符串,該多個(gè)字符串之間按照第二目標(biāo)順序排列。
[0110]S2:將每一個(gè)字符串映射為ACSII編碼中的八位二進(jìn)制字符。
[0111]其中,ASCII碼使用指定的7位或8位二進(jìn)制數(shù)組合來表示128或256種可能的字符。因此,可以將每一個(gè)字符串映射為ACSII中的八位二進(jìn)制字符。例如,內(nèi)核對象對應(yīng)三個(gè)字符串,將字符串I映射為二進(jìn)制字符為:01001101,將字符串2映射為二進(jìn)制字符為:01100100,將字符串3映射為二進(jìn)制字符為:00110101。
[0112]S3:將所有字符串分別對應(yīng)的八位二進(jìn)制字符按照第二目標(biāo)順序連接在一起,組成二進(jìn)制密文。
[0113]其中,根據(jù)S2可知,該二進(jìn)制密文為:0100110101100100 00110101。
[0114]步驟204:利用編碼規(guī)則對各個(gè)二進(jìn)制密文分別進(jìn)行編碼,并存儲(chǔ)各個(gè)編碼信息。
[0115]在本實(shí)施例中,無論在步驟203中使用的是哪一種二進(jìn)制加密方式,均可以利用編碼規(guī)則對步驟203中得到的二進(jìn)制密文進(jìn)行編碼,以上述第I種二進(jìn)制加密方式為例,對該編碼規(guī)則進(jìn)行詳細(xì)說明,該編碼規(guī)則可以包括如下內(nèi)容:
[0116]S1:在二進(jìn)制密文中按從高位到低位的順序依次取連續(xù)的六位二進(jìn)制字符。
[0117]其中,取出的各組六位二進(jìn)制字符分別為:000010、001000、111101、……、110110。
[0118]S2:將取的六位二進(jìn)制字符的高位補(bǔ)0,生成相應(yīng)的八位二進(jìn)制字符。
[0119]對于SI中取出的各組六位二進(jìn)制字符進(jìn)行高位補(bǔ)0,得到如下各組八位二進(jìn)制字符:00000010、00001000、00111101、……、00110110。
[0120]S3:根據(jù)編碼轉(zhuǎn)化表,將生成的每一個(gè)八位二進(jìn)制字符轉(zhuǎn)化為相應(yīng)的編碼。
[0121 ]在本實(shí)施例中,還需要預(yù)先獲取編碼轉(zhuǎn)化表,在該編碼轉(zhuǎn)化表中,可以將0-63分別對應(yīng)A?Z、a?z和O?9以及“+”和,共64個(gè)字符。其中,使用A?Z、a?z和O?9作為編碼轉(zhuǎn)化表中的62個(gè)碼,V’和作為數(shù)字的符號(hào),該符號(hào)在不同的系統(tǒng)中表述不同。
[0122]根據(jù)該編碼轉(zhuǎn)換表,可以將上述各組八位二進(jìn)制字符生成相應(yīng)的編碼。
[0123]以第一組八位二進(jìn)制字符為例,二進(jìn)制字符00000010對應(yīng)的編碼為C。
[0124]通過上述編碼方式,不僅存儲(chǔ)的編碼信息簡短,同時(shí)也具有不可讀性,從而可以保證存儲(chǔ)的編碼信息的安全性。
[0125]步驟205:啟動(dòng)系統(tǒng)內(nèi)核,在每運(yùn)行到一個(gè)檢測點(diǎn)時(shí),利用鉤子函數(shù)對該檢測點(diǎn)處的內(nèi)核對象的運(yùn)行請求進(jìn)行攔截。
[0126]步驟206:利用相同的二進(jìn)制加密方式和編碼規(guī)則,計(jì)算該內(nèi)核對象當(dāng)前的編碼信息。
[0127]為了保證此時(shí)計(jì)算的該內(nèi)核對象當(dāng)前的編碼信息與存儲(chǔ)的編碼信息的一致性,需要使用與計(jì)算存儲(chǔ)的編碼信息時(shí)相同的二進(jìn)制加密方式和編碼規(guī)則。
[0128]步驟207:比較該當(dāng)前的編碼信息與存儲(chǔ)的編碼信息,在比較結(jié)果相同時(shí),執(zhí)行步驟208,在比較結(jié)果不相同時(shí),執(zhí)行步驟209。
[0129]在本實(shí)施例中,在存儲(chǔ)編碼信息時(shí),可以同時(shí)內(nèi)核對象的標(biāo)識(shí)和該編碼信息,從而便于比較時(shí)的方便。
[0130]步驟208:確定該內(nèi)核對象未被篡改,允許該內(nèi)核對象的運(yùn)行請求,執(zhí)行步驟205,直到系統(tǒng)內(nèi)核結(jié)束。
[0131 ]步驟209:確定該內(nèi)核對象被篡改,拒絕該內(nèi)核對象的運(yùn)行請求,并對該篡改信息進(jìn)行報(bào)警,結(jié)束。
[0132]如圖3、圖4所示,本發(fā)明實(shí)施例提供了一種文件篡改的檢測裝置。裝置實(shí)施例可以通過軟件實(shí)現(xiàn),也可以通過硬件或者軟硬件結(jié)合的方式實(shí)現(xiàn)。從硬件層面而言,如圖3所示,為本發(fā)明實(shí)施例提供的一種文件篡改的檢測裝置所在設(shè)備的一種硬件結(jié)構(gòu)圖,除了圖3所示的處理器、內(nèi)存、網(wǎng)絡(luò)接口、以及非易失性存儲(chǔ)器之外,實(shí)施例中裝置所在的設(shè)備通常還可以包括其他硬件,如負(fù)責(zé)處理報(bào)文的轉(zhuǎn)發(fā)芯片等等。以軟件實(shí)現(xiàn)為例,如圖4所示,作為一個(gè)邏輯意義上的裝置,是通過其所在設(shè)備的CPU將非易失性存儲(chǔ)器中對應(yīng)的計(jì)算機(jī)程序指令讀取到內(nèi)存中運(yùn)行形成的。本實(shí)施例提供的一種文件篡改的檢測裝置,包括:
[0133]配置單元401,用于在系統(tǒng)內(nèi)核中設(shè)置至少一個(gè)檢測點(diǎn),并在每一個(gè)檢測點(diǎn)中插入鉤子函數(shù);
[0134]二進(jìn)制加密單元402,用于利用二進(jìn)制加密方式針對每一個(gè)檢測點(diǎn)所對應(yīng)的內(nèi)核對象進(jìn)行二進(jìn)制加密,得到相應(yīng)的二進(jìn)制密文;
[0135]編碼單元403,用于利用編碼規(guī)則對各個(gè)二進(jìn)制密文分別進(jìn)行編碼,并存儲(chǔ)各個(gè)編碼?目息;
[0136]攔截單元404,用于在系統(tǒng)內(nèi)核運(yùn)行到目標(biāo)檢測點(diǎn)時(shí),利用鉤子函數(shù)對所述目標(biāo)檢測點(diǎn)處的目標(biāo)內(nèi)核對象的運(yùn)行請求進(jìn)行攔截;
[0137]第一獲取單元405,用于利用所述二進(jìn)制加密方式和所述編碼規(guī)則獲取所述目標(biāo)內(nèi)核對象所對應(yīng)的當(dāng)前編碼信息;
[0138]比較單元406,用于比較所述目標(biāo)內(nèi)核對象的當(dāng)前編碼信息與存儲(chǔ)的編碼信息,在相同時(shí),確定所述目標(biāo)內(nèi)核對象未被篡改,允許所述目標(biāo)內(nèi)核對象的運(yùn)行請求。
[0139]在本發(fā)明一個(gè)實(shí)施例中,所述二進(jìn)制加密單元402,具體用于針對每一個(gè)當(dāng)前內(nèi)核對象執(zhí)行如下操作:
[0140]獲取當(dāng)前內(nèi)核對象所對應(yīng)的目標(biāo)字符串;
[0141]計(jì)算所述目標(biāo)字符串的MD5值,得到十六進(jìn)制密文;
[0142]根據(jù)所述十六進(jìn)制密文的位數(shù)定義相應(yīng)個(gè)數(shù)的數(shù)組;
[0143]在所述十六進(jìn)制密文中按第一目標(biāo)順序依次取兩位字符放置到相應(yīng)數(shù)組中,每個(gè)數(shù)組中包括兩位十六進(jìn)制字符;
[0144]將每個(gè)數(shù)組中所包括的兩位十六進(jìn)制字符轉(zhuǎn)換為八位二進(jìn)制字符,并將所有數(shù)組中轉(zhuǎn)換后的八位二進(jìn)制字符按照所述第一目標(biāo)順序連接起來,得到二進(jìn)制密文。
[0145]在本發(fā)明一個(gè)實(shí)施例中,所述二進(jìn)制加密單元402,具體用于針對每一個(gè)當(dāng)前內(nèi)核對象執(zhí)行如下操作:
[0146]獲取當(dāng)前內(nèi)核對象所對應(yīng)的多個(gè)字符串,所述多個(gè)字符串之間按照第二目標(biāo)順序排列;
[0147]將每一個(gè)字符串映射為ACSII編碼中的八位二進(jìn)制字符;
[0148]將所有字符串分別對應(yīng)的八位二進(jìn)制字符按照所述第二目標(biāo)順序連接在一起,組成二進(jìn)制密文。
[0149]在本發(fā)明一個(gè)實(shí)施例中,請參考圖5,該文件篡改的檢測裝置可以進(jìn)一步包括:
[0150]第二獲取單元501,用于獲取編碼轉(zhuǎn)化表;
[0151]所述編碼單元403,具體用于在所述二進(jìn)制密文中按從高位到低位的順序依次取連續(xù)的六位二進(jìn)制字符;將取的六位二進(jìn)制字符的高位補(bǔ)0,生成相應(yīng)的八位二進(jìn)制字符;根據(jù)所述編碼轉(zhuǎn)化表,將生成的每一個(gè)八位二進(jìn)制字符轉(zhuǎn)化為相應(yīng)的編碼。
[0152]綜上,本發(fā)明實(shí)施例至少可以實(shí)現(xiàn)如下有益效果:
[0153]1、在本發(fā)明實(shí)施例中,通過鉤子函數(shù)將設(shè)置的檢測點(diǎn)處的內(nèi)核對象的運(yùn)行請求攔截,并利用在計(jì)算存儲(chǔ)的每一個(gè)內(nèi)核對象對應(yīng)的編碼信息時(shí)使用的二進(jìn)制加密方式和編碼規(guī)則,計(jì)算該攔截的內(nèi)核對象的編碼信息,并與存儲(chǔ)的編碼信息進(jìn)行比較,只有在比較結(jié)果相同時(shí),才表明該內(nèi)核對象未被篡改,通過該二進(jìn)制加密方式和編碼規(guī)則的雙重計(jì)算,可以有效防止黑客對該雙重計(jì)算方式的破解,從而可以進(jìn)一步保證內(nèi)核對象的安全性。
[0154]2、在本發(fā)明實(shí)施例中,通過將下述內(nèi)核對象設(shè)置為檢測點(diǎn):任務(wù)、程序、文件系統(tǒng)、Socket套接字、管道、文件、網(wǎng)絡(luò)緩沖區(qū)、網(wǎng)絡(luò)設(shè)備、Semaphore信號(hào)和消息中的至少一種,從而可以對系統(tǒng)內(nèi)核中敏感結(jié)構(gòu)進(jìn)行檢測,保證了系統(tǒng)內(nèi)核的安全。
[0155]3、在本發(fā)明實(shí)施例中,通過利用本發(fā)明實(shí)施例提供的編碼方式,不僅存儲(chǔ)的編碼信息簡短,同時(shí)也具有不可讀性,從而可以保證存儲(chǔ)的編碼信息的安全性。
[0156]上述裝置內(nèi)的各單元之間的信息交互、執(zhí)行過程等內(nèi)容,由于與本發(fā)明方法實(shí)施例基于同一構(gòu)思,具體內(nèi)容可參見本發(fā)明方法實(shí)施例中的敘述,此處不再贅述。
[0157]需要說明的是,在本文中,諸如第一和第二之類的關(guān)系術(shù)語僅僅用來將一個(gè)實(shí)體或者操作與另一個(gè)實(shí)體或操作區(qū)分開來,而不一定要求或者暗示這些實(shí)體或操作之間存在任何這種實(shí)際的關(guān)系或者順序。而且,術(shù)語“包括”、“包含”或者其任何其他變體意在涵蓋非排他性的包含,從而使得包括一系列要素的過程、方法、物品或者設(shè)備不僅包括那些要素,而且還包括沒有明確列出的其他要素,或者是還包括為這種過程、方法、物品或者設(shè)備所固有的要素。在沒有更多限制的情況下,由語句“包括一個(gè)〃.....”限定的要素,并不排除在包括所述要素的過程、方法、物品或者設(shè)備中還存在另外的相同因素。
[0158]本領(lǐng)域普通技術(shù)人員可以理解:實(shí)現(xiàn)上述方法實(shí)施例的全部或部分步驟可以通過程序指令相關(guān)的硬件來完成,前述的程序可以存儲(chǔ)在計(jì)算機(jī)可讀取的存儲(chǔ)介質(zhì)中,該程序在執(zhí)行時(shí),執(zhí)行包括上述方法實(shí)施例的步驟;而前述的存儲(chǔ)介質(zhì)包括:ROM、RAM、磁碟或者光盤等各種可以存儲(chǔ)程序代碼的介質(zhì)中。
[0159]最后需要說明的是:以上所述僅為本發(fā)明的較佳實(shí)施例,僅用于說明本發(fā)明的技術(shù)方案,并非用于限定本發(fā)明的保護(hù)范圍。凡在本發(fā)明的精神和原則之內(nèi)所做的任何修改、等同替換、改進(jìn)等,均包含在本發(fā)明的保護(hù)范圍內(nèi)。
【主權(quán)項(xiàng)】
1.一種文件篡改的檢測方法,其特征在于,包括: 在系統(tǒng)內(nèi)核中設(shè)置至少一個(gè)檢測點(diǎn),并在每一個(gè)檢測點(diǎn)中插入鉤子函數(shù); 利用二進(jìn)制加密方式針對每一個(gè)檢測點(diǎn)所對應(yīng)的內(nèi)核對象進(jìn)行二進(jìn)制加密,得到相應(yīng)的二進(jìn)制密文;利用編碼規(guī)則對各個(gè)二進(jìn)制密文分別進(jìn)行編碼,并存儲(chǔ)各個(gè)編碼信息;在系統(tǒng)內(nèi)核運(yùn)行到目標(biāo)檢測點(diǎn)時(shí),利用鉤子函數(shù)對所述目標(biāo)檢測點(diǎn)處的目標(biāo)內(nèi)核對象的運(yùn)行請求進(jìn)行攔截; 利用所述二進(jìn)制加密方式和所述編碼規(guī)則獲取所述目標(biāo)內(nèi)核對象所對應(yīng)的當(dāng)前編碼信息;比較所述目標(biāo)內(nèi)核對象的當(dāng)前編碼信息與存儲(chǔ)的編碼信息,在相同時(shí),確定所述目標(biāo)內(nèi)核對象未被篡改,允許所述目標(biāo)內(nèi)核對象的運(yùn)行請求。2.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述利用二進(jìn)制加密方式針對每一個(gè)檢測點(diǎn)所對應(yīng)的內(nèi)核對象進(jìn)行二進(jìn)制加密,得到相應(yīng)的二進(jìn)制密文,包括: 針對每一個(gè)當(dāng)前內(nèi)核對象執(zhí)行如下操作: 獲取當(dāng)前內(nèi)核對象所對應(yīng)的目標(biāo)字符串; 計(jì)算所述目標(biāo)字符串的MD5值,得到十六進(jìn)制密文; 根據(jù)所述十六進(jìn)制密文的位數(shù)定義相應(yīng)個(gè)數(shù)的數(shù)組; 在所述十六進(jìn)制密文中按第一目標(biāo)順序依次取兩位字符放置到相應(yīng)數(shù)組中,每個(gè)數(shù)組中包括兩位十六進(jìn)制字符; 將每個(gè)數(shù)組中所包括的兩位十六進(jìn)制字符轉(zhuǎn)換為八位二進(jìn)制字符,并將所有數(shù)組中轉(zhuǎn)換后的八位二進(jìn)制字符按照所述第一目標(biāo)順序連接起來,得到二進(jìn)制密文。3.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述利用二進(jìn)制加密方式針對每一個(gè)檢測點(diǎn)所對應(yīng)的內(nèi)核對象進(jìn)行二進(jìn)制加密,得到相應(yīng)的二進(jìn)制密文,包括: 針對每一個(gè)當(dāng)前內(nèi)核對象執(zhí)行如下操作: 獲取當(dāng)前內(nèi)核對象所對應(yīng)的多個(gè)字符串,所述多個(gè)字符串之間按照第二目標(biāo)順序排列; 將每一個(gè)字符串映射為ACSII編碼中的八位二進(jìn)制字符; 將所有字符串分別對應(yīng)的八位二進(jìn)制字符按照所述第二目標(biāo)順序連接在一起,組成二進(jìn)制密文。4.根據(jù)權(quán)利要求1-3中任一所述的方法,其特征在于, 進(jìn)一步包括:預(yù)先獲取編碼轉(zhuǎn)化表; 所述利用編碼規(guī)則對各個(gè)二進(jìn)制密文分別進(jìn)行編碼,包括:在所述二進(jìn)制密文中按從高位到低位的順序依次取連續(xù)的六位二進(jìn)制字符;將取的六位二進(jìn)制字符的高位補(bǔ)O,生成相應(yīng)的八位二進(jìn)制字符;根據(jù)所述編碼轉(zhuǎn)化表,將生成的每一個(gè)八位二進(jìn)制字符轉(zhuǎn)化為相應(yīng)的編碼。5.根據(jù)權(quán)利要求1所述的方法,其特征在于,將下述內(nèi)核對象設(shè)置為檢測點(diǎn):任務(wù)、程序、文件系統(tǒng)、Socket套接字、管道、文件、網(wǎng)絡(luò)緩沖區(qū)、網(wǎng)絡(luò)設(shè)備、Semaphore信號(hào)和消息中的至少一種。6.一種文件篡改的檢測裝置,其特征在于,包括: 配置單元,用于在系統(tǒng)內(nèi)核中設(shè)置至少一個(gè)檢測點(diǎn),并在每一個(gè)檢測點(diǎn)中插入鉤子函數(shù); 二進(jìn)制加密單元,用于利用二進(jìn)制加密方式針對每一個(gè)檢測點(diǎn)所對應(yīng)的內(nèi)核對象進(jìn)行二進(jìn)制加密,得到相應(yīng)的二進(jìn)制密文; 編碼單元,用于利用編碼規(guī)則對各個(gè)二進(jìn)制密文分別進(jìn)行編碼,并存儲(chǔ)各個(gè)編碼信息;攔截單元,用于在系統(tǒng)內(nèi)核運(yùn)行到目標(biāo)檢測點(diǎn)時(shí),利用鉤子函數(shù)對所述目標(biāo)檢測點(diǎn)處的目標(biāo)內(nèi)核對象的運(yùn)行請求進(jìn)行攔截; 第一獲取單元,用于利用所述二進(jìn)制加密方式和所述編碼規(guī)則獲取所述目標(biāo)內(nèi)核對象所對應(yīng)的當(dāng)前編碼信息; 比較單元,用于比較所述目標(biāo)內(nèi)核對象的當(dāng)前編碼信息與存儲(chǔ)的編碼信息,在相同時(shí),確定所述目標(biāo)內(nèi)核對象未被篡改,允許所述目標(biāo)內(nèi)核對象的運(yùn)行請求。7.根據(jù)權(quán)利要求6所述的文件篡改的檢測裝置,其特征在于,所述二進(jìn)制加密單元,具體用于針對每一個(gè)當(dāng)前內(nèi)核對象執(zhí)行如下操作: 獲取當(dāng)前內(nèi)核對象所對應(yīng)的目標(biāo)字符串; 計(jì)算所述目標(biāo)字符串的MD5值,得到十六進(jìn)制密文; 根據(jù)所述十六進(jìn)制密文的位數(shù)定義相應(yīng)個(gè)數(shù)的數(shù)組; 在所述十六進(jìn)制密文中按第一目標(biāo)順序依次取兩位字符放置到相應(yīng)數(shù)組中,每個(gè)數(shù)組中包括兩位十六進(jìn)制字符; 將每個(gè)數(shù)組中所包括的兩位十六進(jìn)制字符轉(zhuǎn)換為八位二進(jìn)制字符,并將所有數(shù)組中轉(zhuǎn)換后的八位二進(jìn)制字符按照所述第一目標(biāo)順序連接起來,得到二進(jìn)制密文。8.根據(jù)權(quán)利要求6所述的文件篡改的檢測裝置,其特征在于,所述二進(jìn)制加密單元,具體用于針對每一個(gè)當(dāng)前內(nèi)核對象執(zhí)行如下操作: 獲取當(dāng)前內(nèi)核對象所對應(yīng)的多個(gè)字符串,所述多個(gè)字符串之間按照第二目標(biāo)順序排列; 將每一個(gè)字符串映射為ACSII編碼中的八位二進(jìn)制字符; 將所有字符串分別對應(yīng)的八位二進(jìn)制字符按照所述第二目標(biāo)順序連接在一起,組成二進(jìn)制密文。9.根據(jù)權(quán)利要求6-8中任一所述的文件篡改的檢測裝置,其特征在于, 進(jìn)一步包括:第二獲取單元,用于獲取編碼轉(zhuǎn)化表; 所述編碼單元,具體用于在所述二進(jìn)制密文中按從高位到低位的順序依次取連續(xù)的六位二進(jìn)制字符;將取的六位二進(jìn)制字符的高位補(bǔ)O,生成相應(yīng)的八位二進(jìn)制字符;根據(jù)所述編碼轉(zhuǎn)化表,將生成的每一個(gè)八位二進(jìn)制字符轉(zhuǎn)化為相應(yīng)的編碼。
【文檔編號(hào)】H04L29/06GK105933303SQ201610236587
【公開日】2016年9月7日
【申請日】2016年4月15日
【發(fā)明人】闞洪敏, 戴鴻君, 于治樓
【申請人】浪潮集團(tuán)有限公司