本發(fā)明涉及計算機網(wǎng)絡(luò)安全領(lǐng)域,特別涉及一種基于變量名混淆程度的腳本啟發(fā)式檢測方法及系統(tǒng)。
背景技術(shù):
近年來,惡意腳本呈爆炸趨勢增加,其中大量腳本使用了種類繁多的混淆手段,以避免反病毒引擎的查殺,增加了分析人員的時間成本和反病毒引擎的檢測難度。因此對于混淆腳本的檢測能力,成為了對抗惡意腳本的一項關(guān)鍵能力。
傳統(tǒng)的腳本檢測方式是,檢測程序模擬腳本的解釋執(zhí)行,得到其可能的執(zhí)行路徑。這種方法需要針對每種腳本需要開發(fā)專門的虛擬執(zhí)行引擎,實現(xiàn)較為復(fù)雜,具有很高的開發(fā)和維護成本;并且在檢測過程中,還可能消耗大量存儲空間與計算資源,通常運行效率也不高。
技術(shù)實現(xiàn)要素:
本發(fā)明就是要解決以上問題,提出一種基于變量名稱混淆程度的腳本啟發(fā)式檢測方法及系統(tǒng),根據(jù)變量名稱的混淆程度,高效快速判斷惡意腳本。
一種基于變量名混淆程度的腳本啟發(fā)式檢測方法,包括:
收集英文單詞語料庫;
整合收集到的語料庫,使用監(jiān)督類型的機器學(xué)習(xí)方法對收集到的語料庫進行分類模型訓(xùn)練;
解析待檢測腳本,提取出所有變量名稱;
將變量名稱逐一通過分類模型,判斷是否為隨機字符串;
對待檢測腳本中的隨機字符串進行統(tǒng)計;所述統(tǒng)計內(nèi)容至少包括隨機字符串?dāng)?shù)量及平均長度;
若所述統(tǒng)計內(nèi)容中有至少一項超過預(yù)設(shè)值,則所述待檢測腳本為惡意。
所述的方法中,所述監(jiān)督類型的機器學(xué)習(xí)方法為馬爾科夫鏈法。
所述的方法中,馬爾科夫鏈法對收集到的語料庫進行分類模型訓(xùn)練方式具體為:
對語料庫中的所有單詞進行分割,產(chǎn)生多個由兩個字母組成的片段,生成狀態(tài)轉(zhuǎn)移矩陣,對片段進行頻率統(tǒng)計;
選取常規(guī)單詞,以上述相同方式分割,利用上述生成的狀態(tài)轉(zhuǎn)移矩陣,計算常規(guī)單詞的出現(xiàn)頻率均值,作為常規(guī)單詞頻率;
選取隨機非單詞字符串,以上述相同方式分割,利用上述生成的狀態(tài)轉(zhuǎn)移矩陣,計算隨機非單詞字符串的出現(xiàn)頻率均值,作為隨機字符串頻率;上述常規(guī)單詞頻率應(yīng)大于隨機字符串頻率;
根據(jù)常規(guī)單詞頻率及隨機字符串頻率計算分類頻率閾值。
所述的方法中,將變量名稱逐一通過分類模型,判斷是否為隨機字符串,具體為:將變量名傳入分類模型,所述變量名將按照上述方式分割為片段,利用上述生成的狀態(tài)轉(zhuǎn)移矩陣,計算變量名的出現(xiàn)頻率,并與分類頻率閾值比較,若大于分類頻率閾值,則所述變量名為正常,若小于分類頻率閾值,則所述變量名為隨機字符串。
一種基于變量名混淆程度的腳本啟發(fā)式檢測系統(tǒng)中,包括:
語料庫收集模塊,用于收集英文單詞語料庫;
模型訓(xùn)練模塊,用于整合收集到的語料庫,使用監(jiān)督類型的機器學(xué)習(xí)方法對收集到的語料庫進行分類模型訓(xùn)練;
腳本解析模塊,用于解析待檢測腳本,提取出所有變量名稱;
判斷模塊,用于將變量名稱逐一通過分類模型,判斷是否為隨機字符串;
統(tǒng)計模塊,用于對待檢測腳本中的隨機字符串進行統(tǒng)計;所述統(tǒng)計內(nèi)容至少包括隨機字符串?dāng)?shù)量及平均長度;若所述統(tǒng)計內(nèi)容中有至少一項超過預(yù)設(shè)值,則所述待檢測腳本為惡意。
所述的系統(tǒng)中,所述監(jiān)督類型的機器學(xué)習(xí)方法為馬爾科夫鏈法。
所述的系統(tǒng)中,馬爾科夫鏈法對收集到的語料庫進行分類模型訓(xùn)練方式具體為:
對語料庫中的所有單詞進行分割,產(chǎn)生多個由兩個字母組成的片段,生成狀態(tài)轉(zhuǎn)移矩陣,對片段進行頻率統(tǒng)計;
選取常規(guī)單詞,以上述相同方式分割,利用上述生成的狀態(tài)轉(zhuǎn)移矩陣,計算常規(guī)單詞的出現(xiàn)頻率均值,作為常規(guī)單詞頻率;
選取隨機非單詞字符串,以上述相同方式分割,利用上述生成的狀態(tài)轉(zhuǎn)移矩陣,計算隨機非單詞字符串的出現(xiàn)頻率均值,作為隨機字符串頻率;上述常規(guī)單詞頻率應(yīng)大于隨機字符串頻率;
根據(jù)常規(guī)單詞頻率及隨機字符串頻率計算分類頻率閾值。
所述的系統(tǒng)中,將變量名稱逐一通過分類模型,判斷是否為隨機字符串,具體為:將變量名傳入分類模型,所述變量名將按照上述方式分割為片段,利用上述生成的狀態(tài)轉(zhuǎn)移矩陣,計算變量名的出現(xiàn)頻率,并與分類頻率閾值比較,若大于分類頻率閾值,則所述變量名為正常,若小于分類頻率閾值,則所述變量名為隨機字符串。
本發(fā)明所提出的方法,解決了腳本檢測實現(xiàn)及維護復(fù)雜,高資源占用及運行速度慢的問題,使開發(fā)和維護更加容易,且資源占用低,運行效率高。
附圖說明
為了更清楚地說明本發(fā)明或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對實施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明中記載的一些實施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
圖1為本發(fā)明一種基于變量名稱混淆程度的惡意腳本啟發(fā)式檢測方法實施例流程圖;
圖2位本發(fā)明一種基于變量名稱混淆程度的惡意腳本啟發(fā)式檢測系統(tǒng)實施例結(jié)構(gòu)示意圖。
具體實施方式
為了使本技術(shù)領(lǐng)域的人員更好地理解本發(fā)明實施例中的技術(shù)方案,并使本發(fā)明的上述目的、特征和優(yōu)點能夠更加明顯易懂,下面結(jié)合附圖對本發(fā)明中技術(shù)方案作進一步詳細的說明。
本發(fā)明就是要解決以上問題,提出一種基于變量名稱混淆程度的腳本啟發(fā)式檢測方法及系統(tǒng),根據(jù)變量名稱的混淆程度,高效快速判斷惡意腳本。
實施例一給出一種基于變量名混淆程度的腳本啟發(fā)式檢測方法,如圖1所示,包括:
S101:收集英文單詞語料庫;
S102:整合收集到的語料庫,使用監(jiān)督類型的機器學(xué)習(xí)方法對收集到的語料庫進行分類模型訓(xùn)練;
如馬爾科夫鏈法:利用bigram方式對語料庫中的所有單詞進行分割,產(chǎn)生多個由兩個字母組成的片段,生成狀態(tài)轉(zhuǎn)移矩陣T,對片段進行頻率統(tǒng)計;
選取常規(guī)單詞,以上述相同方式分割,利用上述生成的狀態(tài)轉(zhuǎn)移矩陣T,計算常規(guī)單詞的出現(xiàn)頻率均值,作為常規(guī)單詞頻率Pgood;
選取隨機非單詞字符串,以上述相同方式分割,利用上述生成的狀態(tài)轉(zhuǎn)移矩陣T,計算隨機非單詞字符串的出現(xiàn)頻率均值,作為隨機字符串頻率Pbad;上述Pgood>Pbad;
根據(jù)常規(guī)單詞頻率及隨機字符串頻率計算分類頻率閾值:Pthreshold=(Pgood>Pbad)/2
S103:解析待檢測腳本,提取出所有變量名稱;
S104:將變量名稱逐一通過分類模型,判斷是否為隨機字符串;依然以上述方法為例,用bigram方式對變量名進行分割,利用轉(zhuǎn)移矩陣T,計算分割后字符串出現(xiàn)頻率P,如果P> Pthreshold,則所述變量為正常,否則所述變量為隨機字符串;
S105:對待檢測腳本中的隨機字符串進行統(tǒng)計;所述統(tǒng)計內(nèi)容至少包括隨機字符串?dāng)?shù)量及平均長度;
S106:若所述統(tǒng)計內(nèi)容中有至少一項超過預(yù)設(shè)值,則所述待檢測腳本為惡意。
該方法僅僅是通過馬爾科夫鏈進行舉例,在實際應(yīng)用中,還可以通過其他監(jiān)督類型的機器學(xué)習(xí)方法進行模型訓(xùn)練。且模型訓(xùn)練只需要進行一次即可,若語料庫發(fā)生變化,則可以在進行訓(xùn)練。
一種基于變量名混淆程度的腳本啟發(fā)式檢測系統(tǒng)中,如圖2所示,包括:
語料庫收集模塊201,用于收集英文單詞語料庫;
模型訓(xùn)練模塊202,用于整合收集到的語料庫,使用監(jiān)督類型的機器學(xué)習(xí)方法對收集到的語料庫進行分類模型訓(xùn)練;
腳本解析模塊203,用于解析待檢測腳本,提取出所有變量名稱;
判斷模塊204,用于將變量名稱逐一通過分類模型,判斷是否為隨機字符串;
統(tǒng)計模塊205,用于對待檢測腳本中的隨機字符串進行統(tǒng)計;所述統(tǒng)計內(nèi)容至少包括隨機字符串?dāng)?shù)量及平均長度;若所述統(tǒng)計內(nèi)容中有至少一項超過預(yù)設(shè)值,則所述待檢測腳本為惡意。
所述的系統(tǒng)中,所述監(jiān)督類型的機器學(xué)習(xí)方法為馬爾科夫鏈法。
所述的系統(tǒng)中,馬爾科夫鏈法對收集到的語料庫進行分類模型訓(xùn)練方式具體為:
對語料庫中的所有單詞進行分割,產(chǎn)生多個由兩個字母組成的片段,生成狀態(tài)轉(zhuǎn)移矩陣,對片段進行頻率統(tǒng)計;
選取常規(guī)單詞,以上述相同方式分割,利用上述生成的狀態(tài)轉(zhuǎn)移矩陣,計算常規(guī)單詞的出現(xiàn)頻率均值,作為常規(guī)單詞頻率;
選取隨機非單詞字符串,以上述相同方式分割,利用上述生成的狀態(tài)轉(zhuǎn)移矩陣,計算隨機非單詞字符串的出現(xiàn)頻率均值,作為隨機字符串頻率;上述常規(guī)單詞頻率應(yīng)大于隨機字符串頻率;
根據(jù)常規(guī)單詞頻率及隨機字符串頻率計算分類頻率閾值。
所述的系統(tǒng)中,將變量名稱逐一通過分類模型,判斷是否為隨機字符串,具體為:將變量名傳入分類模型,所述變量名將按照上述方式分割為片段,利用上述生成的狀態(tài)轉(zhuǎn)移矩陣,計算變量名的出現(xiàn)頻率,并與分類頻率閾值比較,若大于分類頻率閾值,則所述變量名為正常,若小于分類頻率閾值,則所述變量名為隨機字符串。
本發(fā)明所提出的方法,解決了腳本檢測實現(xiàn)及維護復(fù)雜,高資源占用及運行速度慢的問題,使開發(fā)和維護更加容易,且資源占用低,運行效率高。
本說明書中的各個實施例均采用遞進的方式描述,各個實施例之間相同相似的部分互相參見即可,每個實施例重點說明的都是與其他實施例的不同之處。尤其,對于系統(tǒng)實施例而言,由于其基本相似于方法實施例,所以描述的比較簡單,相關(guān)之處參見方法實施例的部分說明即可。
雖然通過實施例描繪了本發(fā)明,本領(lǐng)域普通技術(shù)人員知道,本發(fā)明有許多變形和變化而不脫離本發(fā)明的精神,希望所附的權(quán)利要求包括這些變形和變化而不脫離本發(fā)明的精神。