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

一種惡意文件的檢測方法及裝置與流程

文檔序號:11432529閱讀:372來源:國知局
一種惡意文件的檢測方法及裝置與流程

本申請涉及計算機技術,特別涉及一種惡意文件的檢測方法及裝置。



背景技術:

超文本預處理器(hypertextpreprocessor,php)語言是一種弱類型編程語言,支持大量的靈活語法格式,熟練掌握php編程語言的惡意攻擊者可以通過充分利用php的語言特性,編寫出大量的網(wǎng)頁后門(webshell)文件對目標腳本文件進行攻擊。

現(xiàn)有技術下,通常是由云服務器在主機層面采用webshell檢測引擎對webshell進行檢測,而webshell檢測引擎的運行原理是基于預設的字符串、正則規(guī)則對目標腳本文件進行排查,判斷其中是否包含有webshell。

然而,無論是字符串還是正則規(guī)則,其配置方式過多地依賴于管理人員對php語言本身以及webshell變形方式的理解,存在一定的主觀性,因而,webshell檢測引擎在采用預設的字符串和正則規(guī)則進行webshell排查時,并不能覆蓋到所有類型的webshell,存在一定程序的漏檢。

另一方面,目前還大量存在“繞過”技術,即通過特殊的語法構造,躲過webshell檢測引擎的檢測,這也會造成webshell檢測引擎的漏檢。

由此可見,現(xiàn)有技術下,webshell檢測引擎的檢測準確性并不高,需要進行優(yōu)化。



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

本申請實施例提供一種惡意文件檢測方法及裝置,用于提高webshell的檢測準確性。

本申請實施例提供的具體的技術方案如下:

一種惡意文件的檢測方法,包括:

將所述第一參數(shù)集合作為輸入?yún)?shù),執(zhí)行指定的目標腳本文件;

當確定目標腳本文件在執(zhí)行所述第一函數(shù)集合中的任意一個函數(shù)的過程中,使用了所述第一參數(shù)集合中的任意一個參數(shù)時,判定所述目標腳本文件為惡意文件;其中,所述第一參數(shù)集合中記錄的每一個參數(shù)均被設置污點標記,所述第一函數(shù)集合中記錄的每一個函數(shù)均為腳本文件運行過程中能夠使用的命令函數(shù)。

較佳的,所述第一參數(shù)集合中記錄的參數(shù)為超全局變量。

較佳的,將所述第一參數(shù)集合作為輸入?yún)?shù),執(zhí)行指定的目標腳本文件之前,進一步包括:

基于所述第一函數(shù)集合中的每一個函數(shù),將待測試的目標腳本文件中對應的函數(shù)插入hook檢測代碼。

較佳的,執(zhí)行指定的目標腳本文件之前,進一步包含:

將所述目標腳本文件與預設的第一白名單及第一黑名單進行匹配,判定所述目標腳本文件未記錄在所述第一白名單及第一黑名單時,確定能夠執(zhí)行所述目標腳本文件。

較佳的,執(zhí)行指定的目標腳本文件之前,進一步執(zhí)行以下操作中的一種或任意組合:

將目標腳本文件與預設的第一一句話webshell集合進行匹配,判定未匹配成功時,確定能夠執(zhí)行所述目標腳本文件,其中,所述第一一句話webshell集合用于描述惡意程序的模式特征;或者,

將目標腳本文件與對應所述目標腳本文件預設的第一多模正則規(guī)則集合進行匹配,判定未匹配成功時,確定能夠執(zhí)行所述目標腳本文件,其中,第二多模正則規(guī)則集合用于描述惡意程序的內容特征;或者,

采用模糊化哈希算法對目標腳本文件進行處理,將處理后的目標腳本文件 與預設的第一大馬惡意樣本集合進行匹配,判定未匹配成功時,確定能夠執(zhí)行所述目標腳本文件,其中,所述第一大馬惡意樣本集合為具有完備功能的惡意腳本文件集合。

較佳的,所述方法應用于客戶端側或者云服務器側。

較佳的,若所述方法應用于客戶端側,則判定目標腳本文件不為惡意文件后,進一步包括:

將目標腳本文件的相關信息上報至云服務器,觸發(fā)云服務器執(zhí)行以下操作中的一種或任意組合:

將目標腳本文件與預設的第二一句話webshell集合進行匹配,判定匹配成功時,確定所述目標腳本文件為惡意文件;其中,所述第二一句話webshell集合用于描述惡意程序的型號特征;或者,

將目標腳本文件與對應所述目標腳本文件預設的第二多模正則規(guī)則集合進行匹配,判定匹配成功時,確定所述目標腳本文件為惡意文件,其中,所述第二多模正則規(guī)則集合用于描述惡意程序的內容特征;或者,

采用模糊化哈希算法對目標腳本文件進行處理,將處理后的目標腳本文件與預設的第二大馬惡意樣本集合進行匹配,判定匹配成功時,確定所述目標腳本文件為惡意文件,其中,所述第二大馬惡意樣本集合為具有完備功能的惡意腳本文件集合。

較佳的,若所述方法應用于客戶端側,則判定目標腳本文件不為惡意文件后,進一步包括:

將目標腳本文件的相關信息上報至云服務器,觸發(fā)云服務器執(zhí)行以下操作:

將第二參數(shù)集合作為輸入?yún)?shù),執(zhí)行所述目標腳本文件;

確定所述目標腳本文件在執(zhí)行所述第二函數(shù)集合中的任意一個函數(shù)的過程中,使用了所述第二參數(shù)集合中的任意一個參數(shù)時,確定所述目標腳本文件為惡意文件;

其中,所述第二參數(shù)集合中記錄的每一個參數(shù)均被設置污點標記,所述第二函數(shù)集合中記錄的每一個函數(shù)均為腳本文件運行過程中能夠使用的命令函數(shù)。

一種惡意文件的檢測裝置,包括:

執(zhí)行單元,用于將所述第一參數(shù)集合作為輸入?yún)?shù),執(zhí)行指定的目標腳本文件;

判定單元,用于當確定目標腳本文件在執(zhí)行所述第一函數(shù)集合中的任意一個函數(shù)的過程中,使用了所述第一參數(shù)集合中的任意一個參數(shù)時,判定所述目標腳本文件為惡意文件;其中,所述第一參數(shù)集合中記錄的每一個參數(shù)均被設置污點標記,所述第一函數(shù)集合中記錄的每一個函數(shù)均為腳本文件運行過程中能夠使用的命令函數(shù)。

較佳的,所述第一參數(shù)集合中記錄的參數(shù)為超全局變量。

較佳的,將所述第一參數(shù)集合作為輸入?yún)?shù),執(zhí)行指定的目標腳本文件之前,所述執(zhí)行單元進一步用于:

基于所述第一函數(shù)集合中的每一個函數(shù),將待測試的目標腳本文件中對應的函數(shù)插入hook檢測代碼。

較佳的,執(zhí)行指定的目標腳本文件之前,所述執(zhí)行單元進一步用于:

將所述目標腳本文件與預設的第一白名單及第一黑名單進行匹配,判定所述目標腳本文件未記錄在所述第一白名單及第一黑名單時,確定能夠執(zhí)行所述目標腳本文件。

較佳的,執(zhí)行指定的目標腳本文件之前,所述執(zhí)行單元進一步執(zhí)行操作中的一種或任意組合:

將目標腳本文件與預設的第一一句話webshell集合進行匹配,判定未匹配成功時,確定能夠執(zhí)行所述目標腳本文件,其中,所述第一一句話webshell集合用于描述惡意程序的模式特征;或者,

將目標腳本文件與對應所述目標腳本文件預設的第一多模正則規(guī)則集合 進行匹配,判定未匹配成功時,確定能夠執(zhí)行所述目標腳本文件,其中,第二多模正則規(guī)則集合用于描述惡意程序的內容特征;或者,

采用模糊化哈希算法對目標腳本文件進行處理,將處理后的目標腳本文件與預設的第一大馬惡意樣本集合進行匹配,判定未匹配成功時,確定能夠執(zhí)行所述目標腳本文件,其中,所述第一大馬惡意樣本集合為具有完備功能的惡意腳本文件集合。

較佳的,所述測試裝置為客戶端,或者,為云服務器。

較佳的,若所述裝置為客戶端,則所述判定單元判定目標腳本文件不為惡意文件后,所述執(zhí)行單元進一步用于:

將目標腳本文件的相關信息上報至云服務器,觸發(fā)云服務器執(zhí)行以下操作中的一種或任意組合:

將目標腳本文件與預設的第二一句話webshell集合進行匹配,判定匹配成功時,確定所述目標腳本文件為惡意文件;其中,所述第二一句話webshell集合用于描述惡意程序的型號特征;或者,

將目標腳本文件與對應所述目標腳本文件預設的第二多模正則規(guī)則集合進行匹配,判定匹配成功時,確定所述目標腳本文件為惡意文件,其中,所述第二多模正則規(guī)則集合用于描述惡意程序的內容特征;或者,

采用模糊化哈希算法對目標腳本文件進行處理,將處理后的目標腳本文件與預設的第二大馬惡意樣本集合進行匹配,判定匹配成功時,確定所述目標腳本文件為惡意文件,其中,所述第二大馬惡意樣本集合為具有完備功能的惡意腳本文件集合。

較佳的,若所述裝置為客戶端,則所述判定單元判定目標腳本文件不為惡意文件后,所述執(zhí)行單元進一步用于:

將目標腳本文件的相關信息上報至云服務器,觸發(fā)云服務器執(zhí)行以下操作:

將第二參數(shù)集合作為輸入?yún)?shù),執(zhí)行所述目標腳本文件;

確定所述目標腳本文件在執(zhí)行第二函數(shù)集合中的任意一個函數(shù)的過程中,使用了所述第二參數(shù)集合中的任意一個參數(shù),確定所述目標腳本文件為惡意文件;

其中,所述第二參數(shù)集合中記錄的每一個參數(shù)均被設置污點標記,所述第二函數(shù)集合中記錄的每一個函數(shù)均為腳本文件運行過程中能夠使用的命令函數(shù)。

本申請實施例中,在主機層面重新設計一個輕量級php語法編譯器/解釋器,以實現(xiàn)對目標腳本文件的動態(tài)檢測,即對關鍵參數(shù)設置污點標記,再以關鍵參數(shù)作為輸入?yún)?shù),執(zhí)行目標腳本文件,以及通過對目標腳本文件中的關鍵函數(shù)進行hook,判斷關鍵函數(shù)執(zhí)行過程中是否使用到了設置了污點標記的關鍵參數(shù),從而判斷目標腳本文件中是否存在變形webshell,這樣,便從webshell的本質出發(fā),抓住了webshell的運行關鍵點,無論webshel如何變形,均可以準確地檢測出webshell,有效地提高了檢測精準度及檢測效率,避免了漏檢及誤報,另一方面,采用本申請實施例提供的技術方案,人需使用簡單的php工具即可完成webshell的檢測,無需使用龐雜的檢測算法,即降低了檢測復雜度,也降低了后期運維成本。

附圖說明

圖1為本申請實施例中測試裝置為客戶端時惡意文件檢測流程示意圖;

圖2為本申請實施例中測試裝置為云服務器時惡意文件檢測流程示意圖;

圖3為本申請實施例中測試裝置功能結構示意圖。

具體實施方式

為了提高webshell的檢測準確性,本申請實施例中,基于對webshell變形本質的理解,重新設計了一種基于php虛擬機沙箱的檢測方法,即預先針對指定的輸入?yún)?shù)設置污點標記,再通過在目標腳本文件中的目 標函數(shù)中插入hook檢測代碼,檢測目標函數(shù)是否使用了攜帶污點標記的輸入?yún)?shù),根據(jù)檢測結果判斷目標腳本文件是否包含了webshell。

下面結合附圖對本申請優(yōu)選的實施方式進行詳細說明。

目前,網(wǎng)上流行的webshell的演變方式雖然多種多樣,但經(jīng)歸納總結后發(fā)現(xiàn)它們都具有一些共同的特點:

1)接收超全局變量作為輸入?yún)?shù)。

2)在命令執(zhí)行部分,部分相關函數(shù)會使用超全局變量作為輸入?yún)?shù)。

基于上述特點,本申請實施例中,設計了一種新的php測試工具,重寫了php內核代碼,用于在目標腳本文件中針對與命令執(zhí)行相關的函數(shù)插入hook檢測代碼,從而實現(xiàn)對輸入?yún)?shù)進行污點標記檢測,以判斷當前輸入?yún)?shù)是否是通過指定的超全局變量傳入,進而判斷當前的目標腳本文件是否具有可疑行為。

本申請實施例中,測試流程即可以在客戶端側執(zhí)行,也可以在網(wǎng)絡側執(zhí)行,即測試裝置既可以是客戶端也可以是云服務器,還可以是客戶端+云服務器的服務結構。下面對這兩種情況分別進行詳細介紹。

第一種情況下,假設測試裝置1為客戶端(如,pc機,筆記本電腦,平板電腦等等)。

參閱圖1所示,測試裝置1進行惡意文件檢測的具體流程如下:

步驟100:測試裝置1確定文件發(fā)生變動時,獲取目標腳本文件。

實際應用中,測試裝置1可以通過客戶端操作系統(tǒng)提供的用于文件變動操作事件通知的api,實時地獲取指定監(jiān)控目錄的文件變動情況(如,創(chuàng)建,更新等等),確定文件發(fā)生變動時,獲取目標腳本文件,所謂的目標腳本文件可以是指定監(jiān)控目錄下已有的但更新后的腳本文件,也可以是指定監(jiān)控目錄下最新創(chuàng)建的腳本文件等等。

步驟101:測試裝置1對目標腳本文件進行編碼預處理。

由于目標腳本文件中可能會存在采用指定語言編碼后的代碼部分,因此, 為了后續(xù)腳本執(zhí)行過程的順利進行,測試裝置1需要提前對目標腳本文件進行編碼預處理,即對目標腳本文件進行解碼,例如,對經(jīng)vbscript、utf7編碼后的文件進行解碼。

步驟102:測試裝置1對目標腳本文件進行規(guī)范化處理。

由于目標腳本文件中可能會存在采用不規(guī)范的語法編寫的代碼部分,因此,為了后續(xù)腳本執(zhí)行過程的順利進行,測試裝置1需要提前對目標腳本文件進行規(guī)范化處理,如,基于動態(tài)服務器頁面(activeserverpage,asp)的標準語法規(guī)則或php的標準語法規(guī)則,對目標腳本文件中的相關語句進行語法規(guī)范化處理。

當然,在正式進行檢測之前,測試裝置1可以采用白名單1和黑名單1對目標腳本文件進行匹配,確定目標腳本文件未記錄在白名單1和黑名單1中時,再執(zhí)行后續(xù)的步驟103。所謂的白名單1和黑名單1可以是測試裝置1根據(jù)之前的測試經(jīng)驗總結的可信名單和不可信名單,如果目標腳本文件的相關信息記錄在這兩份名單中的任意一份名單內,則可以直接確定目標腳本文件是否為惡意文件。采用這種方式,在存在大量的目標腳本文件時,可以預先過濾掉一部分目標腳本文件,以提高測試效率。

當然,若預先已確定目標腳本文件為新創(chuàng)建的文件,則也可以不采用白名單1和黑名單1進行篩選,在此不再贅述。

步驟103:測試裝置1加載對應目標腳本文件預設的規(guī)則配置文件。

較佳的,在執(zhí)行步驟103之后,在執(zhí)行步驟104之前,可以將目標腳本文件與預設的一句話webshell集合1進行匹配,判定未匹配成功時,確定能夠執(zhí)行后續(xù)操作步驟,其中,一句話webshell集合1用于描述惡意程序的模式特征。

本申請實施例中,所謂的一句話webshell,如,<?phpeval($_post[‘op’]);?>是一種極其精簡短小的webshell木馬,由于體積小,攻擊者可以將其插入在腳本文件的任意位置,達到不被注意的目的,因此,在 正式進行測試之前,可以先通過預設的一句話webshell集合1(包含至少一條一句話webshell)對目標腳本文件進行篩選,如果命中(即確定目標腳本文件符合一句話webshell集合1描述的木馬特征,如,文件的型號符合一句話webshell集合1的描述),則可以直接確定目標腳本文件為惡意文件,從而節(jié)省了后續(xù)的測試步驟。采用這種方式,在存在大量的目標腳本文件時,可以預先過濾掉一部分目標腳本文件,以提高測試效率。

當然,若預先已確定目標腳本文件必定不存在任意一種一句話webshell,則也可以不使用一句話webshell集合1進行篩選,在此不再贅述。

步驟104:測試裝置1獲取目標腳本文件對應的多模正則規(guī)則集合1。

本實施例中,不同類型的目標腳本文件對應不同的多模正則規(guī)則集合,因此,測試裝置1需要加載規(guī)則配置文件,然后根據(jù)目標腳本文件的后綴選取對應的多模正則規(guī)則集合(后續(xù)均稱為多模正則規(guī)則集合1),其中,多模正則規(guī)則集合1用于描述惡意程序的內容特征。

例如,測試裝置1使用的客戶端的多模正則規(guī)則集合1為:

規(guī)則1:

<rule>[^\w](eval|assert|popen|proc_open|shell_exec|passthru|system)\(([^\(\),]*)(\$_get|\$_cookie|\$_post|\$_session|\$_request)\[(.{1,20})\]\)</rule>

上述多模正則規(guī)則表示:字符串中出現(xiàn)由eval、assert、popen、proc_open、shell_exec、passthru、system其中任意一個代表的函數(shù)名,并且其輸入?yún)?shù)為$_get、$_cookie、$_post、$_session、$_request其中的任意一個。

規(guī)則2:

<rule>[^\w](eval|assert)\(\$_(get|post|request)\[.{0,34}\]\)</rule>

上述多模正則規(guī)則表示:字符串中出現(xiàn)由eval、assert其中任意一個代表的函數(shù)名,并且其輸入?yún)?shù)為$_get、$_post、$_request其中任意一個,這3個參數(shù)都代表著php中的超全局數(shù)組,并且其索引下標元素字符串的長 度為1到34個字符之間。

步驟105:測試裝置1采用獲取的多模正則規(guī)則集合1對目標腳本文件進行匹配。

與現(xiàn)有技術下采用的單模正則規(guī)則相比,多模正則規(guī)則集合可以從多方面來描述webshell的惡意特征,因此,具有更高的匹配精準度。采用這種方式,在存在大量的目標腳本文件時,可以預先過濾掉一部分目標腳本文件,以提高測試效率。

當然,若目標腳本文件數(shù)量不多,或者,已預先獲知無需采用多模正則規(guī)則進行篩選,則也可以不使用多模正則規(guī)則集合1進行匹配,在此不再贅述。

步驟106:測試裝置1判斷是否命中(即是否匹配成功);若是,則執(zhí)行步驟110,否則,執(zhí)行步驟107。

進一步地,在執(zhí)行步驟106之后,在執(zhí)行步驟107之前,測試裝置1還可以進一步采用模糊化哈希(hash)算法對目標腳本文件進行處理,將處理后的目標腳本文件與預設的大馬惡意樣本集合1進行匹配,判定匹配成功時,確定目標腳本文件為惡意文件,其中,大馬惡意樣本集合1為具有完備功能的惡意腳本文件集合。采用這種方式,在存在大量的目標腳本文件時,可以預先過濾掉一部分目標腳本文件,以提高測試效率。

模糊化hash算法是一種開源標準化相似度比較算法,該算法通過對目標文件進行分段hash計算,然后綜合判斷所有各段的相似度結果,對局部性、微小修改的兩個文本能計算出較高的相似度,具有較好的容忍度。而所謂大馬,是指用php等腳本編程語言編寫出的具有相當完備功能的腳本文件,其中實現(xiàn)了完整的網(wǎng)站管理功能,例如,文件管理、數(shù)據(jù)庫操作等,可以被黑客利用進行重復入侵利用,和一句話webshell最大的區(qū)別在于大馬沒有明顯的惡意代碼特征,安全運維人員很容易將其誤認為是正常的網(wǎng)站后臺管理文件,因此,可以理解大馬是webshell的一種變形。

因此,本申請實施例中,可以引入模糊化hash算法,對大馬進行檢測, 由于模糊化hash算法對目標腳本文件的微小改動具有較好的容錯性,即使攻擊者對大馬的局部代碼或部分代碼特征進行修改,通過模糊化hash算法和安全人員已知的樣本庫進行相似度比較,仍然能夠獲得較高的檢測成功率。采用這種方式,在存在大量的目標腳本文件時,可以預先過濾掉一部分目標腳本文件,以提高測試效率。

當然,若目標腳本文件數(shù)量不多,或者,已預先確定不存在大馬惡意文件時,則也可以不使用模糊化hash算法進行排查,在此不再贅述。

步驟107:測試裝置1目標腳本文件進行php測試。

具體的,在執(zhí)行步驟107時,可以基于php虛擬機沙箱技術實現(xiàn)php檢測,具體如下:

首先,測試裝置1對php虛擬機進行必要的初始化工作,申請必要的內容及相應的數(shù)據(jù)結構。

其次,測試裝置1對參數(shù)集合1中超全局變量設置污點標記。

其中,所謂的超全局變量即是php語言中預定義的幾個全局變量,超全局變量在php腳本文件的全部作用域中均可使用,不需要特別說明,就可以在函數(shù)及類中使用。

可選的,本申請實施例中,超全局變量可以包含以下參數(shù)中的任意一種或組合:$_server、$_post、$_get、$_cookies和$_files;參數(shù)集合1中的所有元素都被設置污點標記,即向每一個參數(shù)賦值一個特殊的標記字符串。

再次,測試裝置1基于函數(shù)集合1,在目標腳本文件中對相應的函數(shù)加入hook檢測代碼,這樣,在執(zhí)行目標腳本文件時,可以檢測傳入的參數(shù)是否包含污點標記,其中,被設置了hook檢測代碼的函數(shù)均為腳本文件運行過程中能夠使用的命令函數(shù);例如:

vm_builtin_eval;

m_builtin_assert;

caseph7_op_call;

vm_builtin_require;

vm_builtin_require_once;

vm_builtin_include;

vm_builtin_include_once;

vm_builtin_ob_start;

vm_builtin_json_decode;

vm_builtin_extract;

vm_builtin_call_user_func。

最后,測試裝置1將參數(shù)集合1作為輸入?yún)?shù)執(zhí)行目標腳本文件,在執(zhí)行過程中,如果測試裝置1在設置有hook檢測代碼的任意一個函數(shù)中發(fā)現(xiàn)傳入的參數(shù)中包含污點標記(即發(fā)現(xiàn)任意一個函數(shù)使用了參數(shù)集合1中的參數(shù)),則說明目前腳本文件在進行危險操作,即確定檢測到webshell,因為,其執(zhí)行過程將外部傳入的被設置有污點標記的參數(shù)直接帶入了較為敏感的函數(shù)執(zhí)行過程。

步驟108:測試裝置1判斷是否命中(即是否測試到webshell);若是,則執(zhí)行步驟110,否則,執(zhí)行步驟109。

步驟110:測試裝置1向云服務器上報目標腳本文件的相關信息,即向云服務器報告目標腳本文件是否為惡意文件。

相應的,云服務器獲得測試裝置1上報的目標腳本文件后,若獲知目標腳本文件已被判定為包含有webshell的惡意文件,則記錄在樣本庫中,若獲知目標腳本文件未被判定為包含有webshell的惡意文件,則會進一步地對目標腳本文件進行排查,由于云服務器處于網(wǎng)絡側,可以收集各個客戶端上報的惡意文件,因此,云服務器的樣本庫更為精準,排查的準確度也越高。因而,可以在客戶端無法確定的情況下,云服務器可以進一步協(xié)助進行仲裁,這一點將在后續(xù)實施例中進行說明。

對應上述第一種情況,在第二種情況下,假設測試裝置2云服務器。云服務器既可以單獨針對目標腳本文件進行websehll檢測,其具體過程參照步驟100-步驟110相類似,也可以在步驟100-步驟110的基礎上作進一步仲裁,本實施例中,以進一步仲裁為例進行說明。

參閱圖2所示,測試裝置2進行惡意文件檢測的具體流程如下:

步驟200:測試裝置2獲取目標腳本文件。

本實施例中,假設測試裝置2是云服務器,并且假設測試裝置2是接收測試裝置1上報的目標腳本文件后作進一步仲裁,因此,測試裝置2是通過測試裝置1獲取目標腳本文件。

而實際應用中,若測試裝置2單獨執(zhí)行檢測任務,則也可以通過實時監(jiān)控獲取指定監(jiān)控目錄的文件變動情況(如,創(chuàng)建,更新等等),確定文件發(fā)生變動時,獲取目標腳本文件,在此不再贅述。

步驟201:測試裝置2判斷目標腳本文件是否存在于預設的白名單2中?若是,則執(zhí)行步驟210;否則,執(zhí)行步驟202。

步驟202:測試裝置判斷目標腳本文件是否存在于預設的黑名單2中,若是,則執(zhí)行步驟211;否則,執(zhí)行步驟203。

從步驟201和步驟202可以看出,測試裝置2在云端維護了的一套非黑即白的海量惡意文件hash庫,可以對目標腳本文件對待檢測樣本先進行一次hash快速匹配,采用這種方式,在存在大量的目標腳本文件時,可以預先過濾掉一部分目標腳本文件,以提高測試效率。

相較于白名單1和黑名單1,云端維護的白名單2和黑名單2的精準度更高,仲裁結果更為準確,因此,即使在測試裝置1上經(jīng)過黑白名單的篩選,在云端也可以再次進行一次黑白名單的篩選。

另一方面,本實施例是以測試裝置2針對測試裝置1上報的目標腳本文件作進一步仲裁為例進行介紹,因此,將測試裝置2使用的黑白名單稱為白名單2和黑名單2以示區(qū)分。而實際應用中,若測試裝置2單獨執(zhí)行檢測任務,則 也可以將測試裝置2使用的黑白名單稱為白名單1和黑名單1,在此不再贅述。

當然,若預先已確定目標腳本文件為新創(chuàng)建的文件,則也可以不采用白名單2和黑名單2進行篩選,在此不再贅述。

步驟203:測試裝置2確定目標腳本文件在上報源(即測試裝置1)執(zhí)行php檢測時未命中。

如果上報源執(zhí)行php檢測時命中,則測試裝置會將目標腳本文件直接記載至數(shù)據(jù)庫。

步驟204:測試裝置2判斷目標腳本文件是否命中預設的一句話webshell集合2,若是,則執(zhí)行步驟205;否則,執(zhí)行步驟206。

其中,一句話webshell集合2用于描述惡意程序的模式特征,如文件型號(size),因為有些目標腳本文件看似完整,打開后里面卻通常只有一行代碼,這種通常情況下都是websehll,因此,通過文件size便可以初步判斷是否是惡意文件。采用這種方式,在存在大量的目標腳本文件時,可以預先過濾掉一部分目標腳本文件,以提高測試效率。

相較于一句話webshell集合1,云端維護的一句話webshell集合2的精準度更高,仲裁結果更為準確,因此,即使在測試裝置1上經(jīng)過一句話webshell集合1的篩選,在云端也可以再次進行一次一句話webshell集合2的篩選。

另一方面,本實施例是以測試裝置2針對測試裝置1上報的目標腳本文件作進一步仲裁為例進行介紹,因此,稱測試裝置2使用的是一句話webshel集合2以示區(qū)分。而實際應用中,若測試裝置2單獨執(zhí)行檢測任務,則也可以稱測試裝置2使用的是一句話webshell集合1,在此不再贅述。

當然,若預先已確定目標腳本文件必定不存在任意一種一句話webshell,則也可以不使用一句話webshell集合2進行篩選,在此不再贅述。

步驟205:測試裝置2確定刪除webshell。

本申請實施例中,刪除webshell是確定存在websehll時一種特殊的操作方式,只針對一句話webshell適用,這么做的目的是出于以下幾個方面考慮:

1、攻擊者往往會將惡意代碼插入到被害用戶的正常網(wǎng)站文件中,導致產品雖然檢測出相關樣本存在惡意行為,也無法執(zhí)行刪除工作

2、同時存在另一類樣本,其自身就是一個純粹的惡意文件,即是一個獨立的包含惡意代碼的文件,刪除此類文件不影響用戶網(wǎng)站的正常運行,所以將這類樣本單獨分出來,執(zhí)行刪除操作,直接從用戶機器上刪除此類文件,阻止此類文件給用戶帶來進一步損失。

步驟206:測試裝置2獲取目標腳本文件對應的多模正則規(guī)則集合2對目標腳本文件進行匹配。

本實施例中,不同類型的目標腳本文件對應不同的多模正則規(guī)則集合,因此,測試裝置2需要根據(jù)目標腳本文件的后綴獲取相應的多模正則規(guī)則集合2來執(zhí)行匹配操作。

測試裝置2在云端維護的規(guī)則配置方式相較于測試裝置1,其差別在于檢測強度不同,測試裝置1使用的客戶端的多模正則規(guī)則集合1相當于一個粗粒度網(wǎng),會將大量可疑的目標腳本文件都進行上報,而測試裝置2使用的云端的多模正則規(guī)則集合2相當于一張細粒度網(wǎng),會篩選出真正存在webshell的惡意文件,以防止漏報。采用這種方式,在存在大量的目標腳本文件時,可以預先過濾掉一部分目標腳本文件,以提高測試效率。

例如,測試裝置2使用的云端的多模正則規(guī)則集合2為:

規(guī)則1:

<rule>function\\s{0,}(lambda_n).*?</rule>

上述多模正則規(guī)則表示:字符中出現(xiàn)名字為lambda_n的函數(shù)聲明。

規(guī)則2:

<rule>[^\w](eval|assert|popen|proc_open|shell_exec|passthru|system)\(([^\(\) ,]*)(\$_get|\$_cookie|\$_post|\$_session|\$_request)\[(.{1,20})\]\)</rule>

上述多模正則規(guī)則表示:字符串中出現(xiàn)由eval、assert、popen、proc_open、shell_exec、passthru、system其中任意一個代表的函數(shù)名,并且其輸入?yún)?shù)為$_get、$_cookie、$_post、$_session、$_request其中任意一個。

規(guī)則3:

<rule>\\1\\(\\\s{0,}\)</rule>

上述多模正則規(guī)則表示:字符串中出現(xiàn)名字為lambda_n的函數(shù)聲明,并且在其他地方出現(xiàn)了lambda_n()這種函數(shù)調用的代碼結構。

測試裝置1和測試裝置2使用的不同檢測強度的多模正則規(guī)則集合,均可以通過編寫php擴展腳本來實現(xiàn)。

另一方面,本實施例是以測試裝置2針對測試裝置1上報的目標腳本文件作進一步仲裁為例進行介紹,因此,稱測試裝置2使用的是多模正則規(guī)則集合2以示區(qū)分。而實際應用中,若測試裝置2單獨執(zhí)行檢測任務,則也可以稱測試裝置2使用的是多模正則規(guī)則集合1,在此不再贅述。

當然,若目標腳本文件數(shù)量不多,或者,已預先獲知無需采用多模正則規(guī)則進行篩選,則也可以不使用多模正則規(guī)則集合2進行匹配,在此不再贅述。

步驟207:測試裝置2判斷是否命中(即是否匹配成功),若是,則執(zhí)行步驟211;否則,執(zhí)行步驟208。

進一步地,在執(zhí)行步驟207之后,在執(zhí)行步驟208之前,測試裝置2還可以進一步采用模糊化hash算法對目標腳本文件進行處理,將處理后的目標腳本文件與預設的大馬惡意樣本集合2進行匹配,判定匹配成功時,確定目標腳本文件為惡意文件,其中,大馬惡意樣本集合2為具有完備功能的惡意腳本文件集合。采用這種方式,在存在大量的目標腳本文件時,可以預先過濾掉一部分目標腳本文件,以提高測試效率。

相較于大馬惡意樣本集合1,云端維護的大馬惡意樣本集合2的精準度更 高,仲裁結果更為準確,因此,即使在測試裝置1上經(jīng)過大馬惡意樣本集合1的篩選,在云端也可以再次進行一次大馬惡意樣本集合2的篩選。

另一方面,本實施例是以測試裝置2針對測試裝置1上報的目標腳本文件作進一步仲裁為例進行介紹,因此,稱測試裝置2使用的是大馬惡意樣本集合2以示區(qū)分。而實際應用中,若測試裝置2單獨執(zhí)行檢測任務,則也可以稱測試裝置2使用的是大馬惡意樣本集合1,在此不再贅述。

當然,若目標腳本文件數(shù)量不多,或者,已預先確定不存在大馬惡意文件時,則也可以不使用模糊化hash算法進行排查,在此不再贅述。

步驟208:測試裝置2目標腳本文件進行php測試。

具體的,在執(zhí)行步驟208時,可以基于php虛擬機沙箱技術實現(xiàn)php檢測,具體如下:

首先,測試裝置2對參數(shù)集合2中超全局變量設置污點標記,其中,所謂的超全局變量可以包含以下參數(shù)中的任意一種或組合:$_server、$_post、$_get、$_cookies和$_files;參數(shù)集合2中的所有元素都被設置污點標記,即向每一個參數(shù)賦值一個特殊的標記字符串。

其次,測試裝置2基于函數(shù)集合2,在目標腳本文件中對相應的函數(shù)加入hook檢測代碼,這樣,在執(zhí)行目標腳本文件時,可以檢測傳入的參數(shù)是否包含污點標記,其中,被設置了hook檢測代碼的函數(shù)均為腳本文件運行過程中能夠使用的命令函數(shù);例如:

vm_builtin_eval;

m_builtin_assert;

caseph7_op_call;

vm_builtin_require;

vm_builtin_require_once;

vm_builtin_include;

vm_builtin_include_once;

vm_builtin_ob_start;

vm_builtin_json_decode;

vm_builtin_extract;

vm_builtin_call_user_func。

最后,測試裝置2將參數(shù)集合2作為輸入?yún)?shù)執(zhí)行目標腳本文件,在執(zhí)行過程中,如果測試裝置2在設置有hook檢測代碼的任意一個函數(shù)中發(fā)現(xiàn)傳入的參數(shù)中包含污點標記(即發(fā)現(xiàn)任意一個函數(shù)使用了參數(shù)集合2中的參數(shù)),則說明目前腳本文件在進行危險操作,即確定檢測到webshell,因為,其執(zhí)行過程將外部傳入的被設置有污點標記的參數(shù)直接帶入了較為敏感的函數(shù)執(zhí)行過程。

實際應用中,相較于參數(shù)集合1和函數(shù)集合1,參數(shù)集合2和函數(shù)集合2可以設置得更為精細,因此,在測試裝置1上對目標腳本文件進行php測試后,在測試裝置2上還是可以再進行一次php測試,以提高測試精準度。

另一方面,本實施例是以測試裝置2針對測試裝置1上報的目標腳本文件作進一步仲裁為例進行介紹,因此,稱測試裝置2使用的是參數(shù)集合2和函數(shù)集合2以示區(qū)分。而實際應用中,若測試裝置2單獨執(zhí)行檢測任務,則也可以稱測試裝置2使用的是參數(shù)集合1和函數(shù)集合1,在此不再贅述。

步驟209:測試裝置2判斷是否命中(即是否測試到webshell);若是,則執(zhí)行步驟211,否則,執(zhí)行步驟210。

步驟210:測試裝置2確定目標腳本文件中不存在webshell。

步驟211:測試裝置2確定目標腳本文件中存在webshell。

基于上述實施例,參閱圖3所示,本申請實施例中,測試裝置至少包括執(zhí)行單元30和判定單元31,其中,

執(zhí)行單元30,用于將第一參數(shù)集合作為輸入?yún)?shù),執(zhí)行指定的目標腳本文件;

判定單元31,用于當確定目標腳本文件在執(zhí)行第一函數(shù)集合中的任意一個 函數(shù)的過程中,使用了所述第一參數(shù)集合中的任意一個參數(shù)時,判定所述目標腳本文件為惡意文件;其中,所述第一參數(shù)集合中記錄的每一個參數(shù)均被設置污點標記,所述第一函數(shù)集合中記錄的每一個函數(shù)均為腳本文件運行過程中能夠使用的命令函數(shù)。

較佳的,所述第一參數(shù)集合中記錄的參數(shù)為超全局變量。

較佳的,將所述第一參數(shù)集合作為輸入?yún)?shù),執(zhí)行指定的目標腳本文件之前,執(zhí)行單元30進一步用于:

基于所述第一函數(shù)集合中的每一個函數(shù),將待測試的目標腳本文件中對應的函數(shù)插入hook檢測代碼。

較佳的,執(zhí)行指定的目標腳本文件之前,執(zhí)行單元30進一步用于:

將所述目標腳本文件與預設的第一白名單及第一黑名單進行匹配,判定所述目標腳本文件未記錄在所述第一白名單及第一黑名單時,確定能夠執(zhí)行所述目標腳本文件。

執(zhí)行指定的目標腳本文件之前,執(zhí)行單元30進一步執(zhí)行操作中的一種或任意組合:

將目標腳本文件與預設的第一一句話webshell集合進行匹配,判定未匹配成功時,確定能夠執(zhí)行所述目標腳本文件,其中,所述第一一句話webshell集合用于描述惡意程序的模式特征;或者,

將目標腳本文件與對應所述目標腳本文件預設的第一多模正則規(guī)則集合進行匹配,判定未匹配成功時,確定能夠執(zhí)行所述目標腳本文件,其中,第二多模正則規(guī)則集合用于描述惡意程序的內容特征;或者,

采用模糊化哈希算法對目標腳本文件進行處理,將處理后的目標腳本文件與預設的第一大馬惡意樣本集合進行匹配,判定未匹配成功時,確定能夠執(zhí)行所述目標腳本文件,其中,所述第一大馬惡意樣本集合為具有完備功能的惡意腳本文件集合。

較佳的,所述測試裝置為客戶端,或者,為云服務器。

較佳的,若測試裝置裝置為客戶端,則判定單元31判定目標腳本文件不為惡意文件后,執(zhí)行單元30進一步用于:

將目標腳本文件的相關信息上報至云服務器,觸發(fā)云服務器執(zhí)行以下操作中的一種或任意組合:

將目標腳本文件與預設的第二一句話webshell集合進行匹配,判定匹配成功時,確定所述目標腳本文件為惡意文件;其中,所述第二一句話webshell集合用于描述惡意程序的型號特征;或者,

將目標腳本文件與對應所述目標腳本文件預設的第二多模正則規(guī)則集合進行匹配,判定匹配成功時,確定所述目標腳本文件為惡意文件,其中,所述第二多模正則規(guī)則集合用于描述惡意程序的內容特征;或者,

采用模糊化哈希算法對目標腳本文件進行處理,將處理后的目標腳本文件與預設的第二大馬惡意樣本集合進行匹配,判定匹配成功時,確定所述目標腳本文件為惡意文件,其中,所述第二大馬惡意樣本集合為具有完備功能的惡意腳本文件集合。

較佳的,若所述裝置為客戶端,則判定單元31判定目標腳本文件不為惡意文件后,執(zhí)行單元30進一步用于:

將目標腳本文件的相關信息上報至云服務器,觸發(fā)云服務器執(zhí)行以下操作:

將第二參數(shù)集合作為輸入?yún)?shù),執(zhí)行所述目標腳本文件;

確定所述目標腳本文件在執(zhí)行第二函數(shù)集合中的任意一個函數(shù)的過程中,使用了所述第二參數(shù)集合中的任意一個參數(shù),確定所述目標腳本文件為惡意文件;

其中,所述第二參數(shù)集合中記錄的每一個參數(shù)均被設置污點標記,所述第二函數(shù)集合中記錄的每一個函數(shù)均為腳本文件運行過程中能夠使用的命令函數(shù)。

綜上所述,本申請實施例中,在主機層面重新設計一個輕量級php語法 編譯器/解釋器,以實現(xiàn)對目標腳本文件的動態(tài)檢測,即對關鍵參數(shù)設置污點標記,再以關鍵參數(shù)作為輸入?yún)?shù),執(zhí)行目標腳本文件,以及通過對目標腳本文件中的關鍵函數(shù)進行hook,判斷關鍵函數(shù)執(zhí)行過程中是否使用到了設置了污點標記的關鍵參數(shù),從而判斷目標腳本文件中是否存在變形webshell,這樣,便從webshell的本質出發(fā),抓住了webshell的運行關鍵點,無論webshel如何變形,均可以準確地檢測出webshell,有效地提高了檢測精準度及檢測效率,避免了漏檢及誤報,另一方面,采用本申請實施例提供的技術方案,人需使用簡單的php工具即可完成webshell的檢測,無需使用龐雜的檢測算法,即降低了檢測復雜度,也降低了后期運維成本。

本領域內的技術人員應明白,本申請的實施例可提供為方法、系統(tǒng)、或計算機程序產品。因此,本申請可采用完全硬件實施例、完全軟件實施例、或結合軟件和硬件方面的實施例的形式。而且,本申請可采用在一個或多個其中包含有計算機可用程序代碼的計算機可用存儲介質(包括但不限于磁盤存儲器、cd-rom、光學存儲器等)上實施的計算機程序產品的形式。

本申請是參照根據(jù)本申請實施例的方法、設備(系統(tǒng))、和計算機程序產品的流程圖和/或方框圖來描述的。應理解可由計算機程序指令實現(xiàn)流程圖和/或方框圖中的每一流程和/或方框、以及流程圖和/或方框圖中的流程和/或方框的結合??商峁┻@些計算機程序指令到通用計算機、專用計算機、嵌入式處理機或其他可編程數(shù)據(jù)處理設備的處理器以產生一個機器,使得通過計算機或其他可編程數(shù)據(jù)處理設備的處理器執(zhí)行的指令產生用于實現(xiàn)在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能的裝置。

這些計算機程序指令也可存儲在能引導計算機或其他可編程數(shù)據(jù)處理設備以特定方式工作的計算機可讀存儲器中,使得存儲在該計算機可讀存儲器中的指令產生包括指令裝置的制造品,該指令裝置實現(xiàn)在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能。

這些計算機程序指令也可裝載到計算機或其他可編程數(shù)據(jù)處理設備上,使 得在計算機或其他可編程設備上執(zhí)行一系列操作步驟以產生計算機實現(xiàn)的處理,從而在計算機或其他可編程設備上執(zhí)行的指令提供用于實現(xiàn)在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能的步驟。

盡管已描述了本申請的優(yōu)選實施例,但本領域內的技術人員一旦得知了基本創(chuàng)造性概念,則可對這些實施例作出另外的變更和修改。所以,所附權利要求意欲解釋為包括優(yōu)選實施例以及落入本申請范圍的所有變更和修改。

顯然,本領域的技術人員可以對本申請實施例進行各種改動和變型而不脫離本申請實施例的精神和范圍。這樣,倘若本申請實施例的這些修改和變型屬于本申請權利要求及其等同技術的范圍之內,則本申請也意圖包含這些改動和變型在內。

當前第1頁1 2 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
屏东市| 峨边| 张家港市| 通榆县| 梁山县| 化隆| 龙口市| 惠来县| 个旧市| 峨眉山市| 田东县| 两当县| 深圳市| 铜陵市| 漾濞| 凤台县| 河池市| 武定县| 措勤县| 安图县| 昂仁县| 郑州市| 讷河市| 曲松县| 方山县| 台中市| 日照市| 永康市| 平利县| 桦川县| 汝城县| 和林格尔县| 秀山| 林西县| 辽中县| 岳阳县| 广丰县| 望都县| 富阳市| 东海县| 秦安县|