李旭陽,牛 鑫,胡軍星,袁俊鋒,孟 晗
(1. 國網(wǎng)河南省電力公司 經(jīng)濟技術(shù)研究院,河南 鄭州 450000;2.大河南九域騰龍信息工程有限公司,河南 鄭州 450000)
隨著信息通信及互聯(lián)網(wǎng)技術(shù)的發(fā)展,智能電網(wǎng)逐步發(fā)展起來,并給電力系統(tǒng)帶來了巨大變革。智能電網(wǎng)是一種新型的電力系統(tǒng),它能夠監(jiān)測分析客戶、電網(wǎng)設(shè)備及網(wǎng)絡(luò)節(jié)點上電力流與信息流,控制電力流與信息流雙向流動,實現(xiàn)電網(wǎng)自主優(yōu)化運行。
智能電網(wǎng)是建立在集成的、高速雙向通信網(wǎng)絡(luò)的基礎(chǔ)上,通過先進的傳感和測量技術(shù)、先進的設(shè)備技術(shù)、先進的控制方法以及先進的決策支持系統(tǒng)技術(shù),實現(xiàn)電網(wǎng)的可靠、安全、經(jīng)濟、高效、環(huán)境友好和使用安全的目標(biāo),其主要特征包括自愈、激勵和包括用戶、抵御攻擊、提供滿足21世紀(jì)用戶需求的電能質(zhì)量、容許各種不同發(fā)電形式的接入、啟動電力市場以及資產(chǎn)的優(yōu)化高效運行[1-2]。
智能電網(wǎng)給人們生活帶來巨大的便利的同時,也面臨著一些安全威脅,特別是惡意軟件威脅。在智能電網(wǎng)中,主機系統(tǒng)安全關(guān)系著信息系統(tǒng)的正確性,攻擊者通過向主機植入惡意軟件,以達到破壞電力監(jiān)控系統(tǒng)或篡改、偽造信息流的目的,進而影響電力系統(tǒng)的穩(wěn)定性。常見的基于惡意軟件的攻擊類型包括C&C、APT等。
為了能有效抵御惡意軟件威脅,常通過部署惡意軟件檢測系統(tǒng)對智能電網(wǎng)主機操作系統(tǒng)進行掃描和檢測。早期惡意軟件檢測方法常通過提取惡意軟件可執(zhí)行程序的Hash碼對其進行唯一標(biāo)志,并提取可采集的所有已知惡意軟件的Hash碼構(gòu)建惡意軟件Hash碼庫,通過匹配待檢測樣本與庫中的Hash碼以判別待檢測樣本是否是惡意軟件。然而,隨著惡意軟件未知變種的泛濫(惡意軟件變種的Hash碼已發(fā)生改變),傳統(tǒng)惡意軟件檢測方法已不再適用于檢測未知變種。近幾年學(xué)術(shù)界一些學(xué)者提出基于機器學(xué)習(xí)的檢測方法以應(yīng)對惡意軟件未知變種威脅,然而受限于單一訓(xùn)練數(shù)據(jù)集和單一機器學(xué)習(xí)方法的局限性,基于機器學(xué)習(xí)的檢測方法的魯棒性存在一定不足。
針對上述問題,提出一種基于集成學(xué)習(xí)的惡意軟件未知變種檢測方法,采用集成學(xué)習(xí)方法,融合由多個數(shù)據(jù)集和多種機器學(xué)習(xí)方法訓(xùn)練得到的模型,以提升惡意軟件未知變種檢測的準(zhǔn)確性和魯棒性。研究的貢獻包括:1)提出一種基于集成學(xué)習(xí)的惡意軟件檢測方法,集成多源數(shù)據(jù)和多種機器學(xué)習(xí)方法實現(xiàn)惡意軟件未知變種檢測;2)提出一種基于Logistic的集成學(xué)習(xí)方法,集成由支持向量機和卷積神經(jīng)網(wǎng)絡(luò)訓(xùn)練得到的單一檢測模型;3)實驗結(jié)果表明,提出的基于集成學(xué)習(xí)的惡意軟件未知變種檢測方法的精度約為93%,召回率約為97%。
隨著機器學(xué)習(xí)等人工智能技術(shù)的發(fā)展,為檢測惡意軟件未知變種提供新的技術(shù)方法支撐。近年來,一些學(xué)者紛紛提出基于機器學(xué)習(xí)的惡意軟件未知變種檢測方法,通過提取惡意軟件變種共性語義特征,并采用機器學(xué)習(xí)算法,如支持向量機[3]、卷積神經(jīng)網(wǎng)絡(luò)[4]、深度信念網(wǎng)絡(luò)[5]等,訓(xùn)練惡意軟件變種檢測模型以判別未知樣本是否為惡意軟件。
McLaughlin等人[6]對惡意軟件操作碼n-gram模型進行分布式表征,并采用卷積神經(jīng)網(wǎng)絡(luò)自適應(yīng)修正分布式表征的連接權(quán)值,以訓(xùn)練惡意軟件檢測模型。Zhang等人[7]通過n-gram模型和統(tǒng)計表征表示惡意軟件操作碼序列和API調(diào)用,分別采用卷積神經(jīng)網(wǎng)絡(luò)和多層感知器提取惡意軟件操作碼特征和API調(diào)用特征,通過合并操作碼特征和API調(diào)用特征并采用分類器訓(xùn)練惡意軟件檢測模型。Zhang等人[8]通過計算操作碼bi-gram邊緣概率矩陣,并以此構(gòu)建操作碼圖像,最后采用K近鄰方法通過比較操作碼圖像的相似性來檢測惡意軟件。Yan等人[9]提取若干段等長的惡意軟件操作碼序列以構(gòu)建等寬二維操作碼圖像,并以此為特征,通過采用卷積神經(jīng)網(wǎng)絡(luò)訓(xùn)練惡意軟件檢測模型。Cesare等人[10]基于操作碼控制流圖表示惡意軟件,并采用EditString算法比較待檢測的未知樣本與已知惡意樣本間的相似性來判別未知樣本是否為惡意樣本。Joshua等人[11]采用基于bi-gram模型提取惡意軟件字節(jié)碼特征,并采用深度神經(jīng)網(wǎng)絡(luò)算法訓(xùn)練惡意軟件檢測模型。陳志鋒等人[12]采用動態(tài)分析技術(shù),提出了一種基于數(shù)據(jù)特征的內(nèi)核惡意軟件檢測方法。該方法首先通過分析內(nèi)核數(shù)據(jù)生命周期內(nèi)的訪問行為以構(gòu)建內(nèi)核數(shù)據(jù)對象訪問模型,并利用擴展頁表監(jiān)控內(nèi)核對象訪問操作,提取惡意軟件內(nèi)核數(shù)據(jù)特征,最后基于該特征進行檢測。Huang等人[13]通過分析用戶接口與程序頂層函數(shù)之間的交互,基于相似度方法檢測隱藏的惡意行為。Bai等人[14]通過分析惡意軟件運行時執(zhí)行路徑中觸發(fā)的惡意行為,提取行為特征并采用機器學(xué)習(xí)分類算法訓(xùn)練惡意軟件檢測模型。
盡管基于機器學(xué)習(xí)的惡意軟件未知變種檢測方法已取得一定進展,但仍存在一些問題,主要體現(xiàn)在:1)訓(xùn)練樣本有限,導(dǎo)致模型覆蓋的特征分布不全面;2)模型擬合性能有限,利用有限的數(shù)據(jù)樣本進行訓(xùn)練,容易產(chǎn)生過擬合問題。因此,提出一種基于集成學(xué)習(xí)的惡意軟件未知變種檢測方法,采用集成學(xué)習(xí)方法進一步提升惡意軟件未知變種檢測的準(zhǔn)確性和魯棒性。
集成學(xué)習(xí)方法主要分為bagging和boosting兩類,bagging方法通過對若干子模型的結(jié)果進行加權(quán)平均以綜合多模型的決策結(jié)果;boosting方法通過利用上一模型的錯誤分類樣本重新訓(xùn)練子模型并對所有子模型的結(jié)果進行加權(quán)平均以綜合多模型的決策結(jié)果,如Adaboost[15]、隨機森林[16]等。
基于機器學(xué)習(xí)的惡意軟件未知變種檢測方法利用有限的已標(biāo)記的惡意/良性樣本訓(xùn)練檢測模型,以檢測惡意軟件未知變種。然而,一方面受限于有限的訓(xùn)練樣本及其特征分布,另一方面受限于單一模型擬合性能的局限性,惡意軟件未知變種檢測模型的準(zhǔn)確性有待進一步提升,特別在開放環(huán)境下現(xiàn)有惡意軟件未知變種檢測模型的魯棒性存在明顯不足,在檢測多來源樣本數(shù)據(jù)時,檢測結(jié)果存在較嚴(yán)重的偏斜,制約模型實際應(yīng)用效果。
筆者提出一種基于集成學(xué)習(xí)的惡意軟件未知變種檢測方法,采用bi-gram模型提取惡意/良性軟件特征,并采用2種機器學(xué)習(xí)方法分別利用3個來源不同的樣本數(shù)據(jù)集進行訓(xùn)練,構(gòu)建6個惡意軟件未知變種單一檢測模型,并基于bagging策略,設(shè)計一種Logistic集成學(xué)習(xí)方法通過集成6個單一模型最終形成統(tǒng)一的檢測模型,進一步提升惡意軟件未知變種檢測的準(zhǔn)確性和魯棒性,并利用該集成模型對未知惡意軟件變種進行檢測,如圖1所示。
圖1 總體方案Fig. 1 The architecture of approach
筆者采用IDA Pro提取惡意/良性軟件的操作碼序列,并采用bi-gram模型通過計算相鄰兩兩操作之間的局部語義關(guān)系。令操作碼序列OP={op1,op2,…,opn},其中opi表示序列中第個i操作碼,采用bi-gram模型提取操作碼序列中相鄰兩操作碼之間的概率以表示惡意/良性代碼局部語義bi-gram={
基于上述提取的惡意/良性操作碼序列局部語義特征p(bi-gram),分別采用支持向量機(SVM, support vector machine)和卷積神經(jīng)網(wǎng)絡(luò)(CNN, convolution neural network)2種機器學(xué)習(xí)算法,利用來源于VxHeaven、Microsoft和企業(yè)云安全中心的樣本數(shù)據(jù)集,交叉訓(xùn)練6種惡意軟件檢測模型:SVMvxheaven、SVMMicrosoft、SVMsecurity_center、CNNvxheaven、CNNMicrosoft、CNNsecurity_center。其中支持向量機算法核函數(shù)采用線性核,訓(xùn)練一組權(quán)重W={w1,w2,…,wn},使得W={w1,w2,…,wn}滿足公式(1),p(bi-gram)malw表示惡意軟件特征,p(bi-gram)benign表示良性代碼特征。卷積神經(jīng)網(wǎng)絡(luò)采用損失函數(shù)為最小平方誤差,如公式(2)所示,通過訓(xùn)練一組權(quán)重W={w1,w2,…,wn},使得損失函數(shù)最小。
W·p(bi-gram)malw+b≥1或W·p(bi-gram)benign+b≤-1,
(1)
Loss=(h(W·p(hi-gram))-y)2。
(2)
基于上述6種惡意軟件檢測模型,基于bagging策略,設(shè)計一種Logistic集成學(xué)習(xí)方法集成6個模型。令6個模型的判別結(jié)果(輸出的置信度向量)為X={x1,x2,…,x6},并為每個模型分別分配一個隨機初始化的決策權(quán)重W′={w1′,w2′,…,w6′},根據(jù)樣本標(biāo)簽y,基于Logistic函數(shù)進行有監(jiān)督訓(xùn)練,如公式(3)所示,自適應(yīng)優(yōu)化每個模型的決策權(quán)重。每個模型輸出的置信度作為Logistic函數(shù)的輸入,Logistic函數(shù)的權(quán)重采用隨機初始化,利用樣本標(biāo)簽進行有監(jiān)督訓(xùn)練,經(jīng)過若干次迭代后決策權(quán)重收斂,此時Logistic函數(shù)中的權(quán)重即為每個模型的決策權(quán)重。當(dāng)決策權(quán)重收斂時,6個模型通過該logistic函數(shù)集成為統(tǒng)一的判別模型。其中損失函數(shù)采用交叉熵,如公式(4)所示,采用梯度下降法進行訓(xùn)練,權(quán)重W′根據(jù)公式(5)進行迭代更新。
(3)
Loss=-(y·h(W′·X)+(1-y)·(1-h(W′·X))),
(4)
(5)
基于上述統(tǒng)一的判別模型對未知樣本進行檢測,通過提取未知樣本的操作碼bi-gram特征輸入至模型中,模型對未知樣本的bi-gram特征進行計算得到惡意/良性分類的置信度,如果惡意類別的置信度大于良性類別的置信度,則說明未知樣本屬于惡意樣本,否則則屬于良性樣本。
所有實驗均在相同計算機軟硬件環(huán)境和配置中進行,其中CPU為Intel i5-3470 @ 3.20 GHz,內(nèi)存容量為16.0 GB,操作系統(tǒng)為Ubuntu 16.04,編譯器采用Eclipse 3.5/JRE 1.8。
實驗所采用的惡意軟件數(shù)據(jù)集來源于VxHeaven、Microsoft和企業(yè)云安全中心,其中VxHeaven包括17 000余個惡意樣本,Microsoft包括5 000余個惡意樣本,企業(yè)云安全中心收集4 000余個惡意樣本,包含6類樣本家族,其數(shù)量分布如表1所示。訓(xùn)練階段和測試階段均采用了惡意樣本和良性樣本,其中3個惡意樣本數(shù)據(jù)集中的50%樣本用于分別訓(xùn)練單一檢測模型,合并3個惡意樣本數(shù)據(jù)集中剩下50%樣本形成新的數(shù)據(jù)集用于模型測試。良性樣本從若干用戶計算機采集,約11 000余個,其中隨機選取50%的良性樣本用于訓(xùn)練單一檢測模型,剩余50%的良性樣本用于模型測試。
表1 惡意軟件數(shù)據(jù)集Table 1
所有實驗均采取K-折交驗證法,其中K=10。評估指標(biāo)包括精度PRE、召回率REC和F1值。精度表示模型判別結(jié)果中正確結(jié)果的比例,如公式(6)所示,召回率表示惡意樣本中被檢測出來的比例,如公式(7)所示,F(xiàn)1值表示精度和召回率重要程度相同時的準(zhǔn)確性,如公式(8)所示。其中,TP(true positive)表示驗證集中被模型正確識別的高風(fēng)險網(wǎng)絡(luò)節(jié)點數(shù)量,F(xiàn)P(false positive)表示驗證集中被模型錯誤識別的高風(fēng)險網(wǎng)絡(luò)節(jié)點數(shù)量,TN(true negative)表示驗證集中被模型正確識別的低風(fēng)險網(wǎng)絡(luò)節(jié)點數(shù)量,F(xiàn)N(false negative)表示驗證集中被模型錯誤識別的低風(fēng)險網(wǎng)絡(luò)節(jié)點數(shù)量。根據(jù)TP、FP、TN、FN,計算準(zhǔn)確度精度(PRE)、召回率(REC)和F1值。
(6)
(7)
(8)
通過測試集樣本對比分析多個單一檢測模型以及集成模型的精度、召回率和F1值,從而驗證集成模型相較于單一模型在準(zhǔn)確性方面有顯著優(yōu)勢,實驗結(jié)果如圖2所示,結(jié)果表明:
圖2 準(zhǔn)確性對比實驗結(jié)果Fig. 2 The accuracy comparison results
1)對比分析采用相同機器學(xué)習(xí)算法、不同訓(xùn)練集的單一檢測模型,單一檢測模型的準(zhǔn)確性受有限訓(xùn)練樣本的影響較大,因此在準(zhǔn)確性方面,利用不同數(shù)據(jù)集訓(xùn)練的模型準(zhǔn)確性存在一定差異。
2)對比分析采用相同訓(xùn)練集、不同機器學(xué)習(xí)算法的單一檢測模型,卷積神經(jīng)網(wǎng)絡(luò)的擬合性能相較于支持向量機的擬合性能更好。
3)對比分析集成模型和單一檢測模型,集成模型的精度有一定提升,召回率呈現(xiàn)顯著提升,說明集成模型的魯棒性明顯優(yōu)于單一檢測模型。
對比分析集成模型和單一檢測模型的檢測時間開銷,如圖3所示,結(jié)果表明:集成模型的檢測時間略高于單一卷積神經(jīng)網(wǎng)絡(luò)模型,雖然單一支持向量機模型的檢測時間開銷相較單一卷積神經(jīng)網(wǎng)絡(luò)模型和集成模型,但在精度和召回率等指標(biāo)方面存在明顯不足。
圖3 檢測時間對比實驗結(jié)果Fig. 3 The time cost comparison results
提出一種基于集成學(xué)習(xí)的惡意軟件未知變種檢測方法。該方法實現(xiàn)多種惡意軟件未知變種檢測模型的集成,以進一步提升惡意軟件未知變種的檢測性能?;诩蓪W(xué)習(xí)的惡意軟件未知變種檢測方法可以綜合多個檢測模型的性能,覆蓋更多的樣本數(shù)據(jù)特征,以改善單一檢測模型樣本特征和收斂性能的局限性。最后對提出的模型集成方法進行了實驗分析,結(jié)果表明方法相比于單一檢測模型,集成模型可以達到更高的精度、召回率和F1值。