許彩滇, 劉曉麗
(中國刑事警察學(xué)院網(wǎng)絡(luò)犯罪偵查系, 遼寧沈陽 110035)
隨著網(wǎng)絡(luò)交互的增多,記錄用戶網(wǎng)絡(luò)行為的數(shù)據(jù)(以下稱網(wǎng)絡(luò)行為數(shù)據(jù))呈現(xiàn)數(shù)據(jù)量大、類別繁多、分布稀疏等特點(diǎn)。同時(shí),當(dāng)前的網(wǎng)絡(luò)入侵行為取證主要依賴于人工統(tǒng)計(jì)分析及提取[1],或者人工操作取證軟件進(jìn)行取證。因此,面對(duì)復(fù)雜、量大、證據(jù)價(jià)值分散的網(wǎng)絡(luò)行為數(shù)據(jù),當(dāng)前的網(wǎng)絡(luò)入侵行為取證方法往往要耗費(fèi)大量人力和時(shí)間,操作人員須具備豐富的工作經(jīng)驗(yàn),才能合理完整地分析行為數(shù)據(jù)的自身及整體性規(guī)律,提煉整合分散的網(wǎng)絡(luò)入侵行為信息。
針對(duì)上述問題,提出一種基于改進(jìn)K-means算法的網(wǎng)絡(luò)入侵行為取證方法,利用神經(jīng)網(wǎng)絡(luò)及機(jī)器學(xué)習(xí)減少取證過程的人力、時(shí)間及經(jīng)驗(yàn)依賴,提升網(wǎng)絡(luò)入侵行為取證效率。該方法首先預(yù)處理待取證的網(wǎng)絡(luò)行為數(shù)據(jù),去除冗余信息,并向量化網(wǎng)絡(luò)行為信息,將網(wǎng)絡(luò)行為信息集合映射為特征向量集,再利用改進(jìn)K-means算法對(duì)特征向量集進(jìn)行歸類,實(shí)現(xiàn)網(wǎng)絡(luò)行為數(shù)據(jù)的歸類自動(dòng)化。然后,基于已知IP的入侵行為信息,關(guān)聯(lián)出具有同種入侵行為的未知用戶IP及其入侵情況,并完整地發(fā)現(xiàn)已知入侵IP的具體入侵情況及相關(guān)行為,實(shí)現(xiàn)入侵行為間的關(guān)聯(lián)取證。
網(wǎng)絡(luò)行為除了正常的網(wǎng)絡(luò)行為外,包含著拒絕訪問服務(wù)(DOS)、身份欺騙、垃圾搜尋、漏洞利用等入侵行為。本文以常見的分布式拒絕訪問服務(wù)(DDOS)入侵行為作為研究對(duì)象,選用Linux系統(tǒng)中的用戶認(rèn)證日志Auth.log[2]作為網(wǎng)絡(luò)行為數(shù)據(jù)集。該網(wǎng)絡(luò)行為數(shù)據(jù)集包含正常網(wǎng)絡(luò)行為信息、DDOS入侵行為信息和入侵相關(guān)行為信息,Auth.log的網(wǎng)絡(luò)行為信息示例見表1。
為使網(wǎng)絡(luò)行為信息能夠被神經(jīng)網(wǎng)絡(luò)和機(jī)器學(xué)習(xí)算法理解歸類及關(guān)聯(lián)提取,需要在取證前對(duì)網(wǎng)絡(luò)行為信息中的文本內(nèi)容進(jìn)行向量化表達(dá),將文本信息映射為多維數(shù)值型特征向量,使算法能夠以向量間的相似度衡量網(wǎng)絡(luò)行為間的相似度[3],為基于改進(jìn)K-means算法的網(wǎng)絡(luò)入侵行為取證提供基礎(chǔ)。
網(wǎng)絡(luò)行為信息中存在時(shí)間記錄、用戶IP記錄和行為描述信息,這3部分內(nèi)容是取證分析和關(guān)聯(lián)的主要依據(jù)。其中,行為描述信息代表著網(wǎng)絡(luò)行為的具體屬性。在取證前,應(yīng)對(duì)這3部分的信息進(jìn)行分別提取保存,既便于在關(guān)聯(lián)提取階段依據(jù)時(shí)間和用戶IP對(duì)入侵行為進(jìn)行取證,又便于直接利用行為描述進(jìn)行向量化。然而,網(wǎng)絡(luò)行為描述中存在部分無關(guān)信息,如無關(guān)標(biāo)點(diǎn)符號(hào)及停用詞等,且這些信息會(huì)干擾網(wǎng)絡(luò)行為向量化的準(zhǔn)確表達(dá)。因此,在向量化網(wǎng)絡(luò)行為信息前,應(yīng)對(duì)部分無關(guān)信息進(jìn)行處理去除。
分別提取網(wǎng)絡(luò)行為信息的時(shí)間、用戶IP和行為描述,便于接下來去除無關(guān)信息、向量化、關(guān)聯(lián)及提取等。利用Python的re模塊和正則表達(dá)式語句,搜索和記錄每條網(wǎng)絡(luò)行為信息中的時(shí)間和用戶IP,并保留對(duì)應(yīng)的網(wǎng)絡(luò)行為描述,將結(jié)果記錄在信息存儲(chǔ)列表list。上述過程見圖1。
圖1 網(wǎng)絡(luò)行為信息提取保存
無關(guān)的標(biāo)點(diǎn)符號(hào)被空格符替代去除后,便于統(tǒng)一分詞及減少冗余信息。由于日志auth.log的每條行為描述以英文記錄,網(wǎng)絡(luò)行為描述的單詞多以空格間隔開,少部分被符號(hào)(如“,”“:”等)隔開,為了便于分詞及去停用詞,利用Python的replace函數(shù)將無關(guān)符號(hào)替換為空格,如圖2所示。
圖2 無關(guān)符號(hào)的去除
由于神經(jīng)網(wǎng)絡(luò)向量化模型是以詞匯為單位構(gòu)建特征向量的[4],故對(duì)網(wǎng)絡(luò)行為描述進(jìn)行分詞。停用詞是一種無特別含義且能在多種不同行為描述共存的冗余詞匯,分詞后進(jìn)行去除,能夠提升向量化模型的運(yùn)算速度,以及特征向量的準(zhǔn)確度。在每條行為描述去除無關(guān)符號(hào)后,每條行為描述的詞匯以空格間隔排列。因此,利用Python的split函數(shù),基于空格對(duì)每條行為描述進(jìn)行分詞。然后,參照常用的英文停用詞匯表,檢查每條行為描述中是否存在停用詞,若有則去除,僅保留非停用詞,上述過程如圖3所示。
圖3 分詞及去停用詞過程
網(wǎng)絡(luò)行為信息本質(zhì)上是一種文本信息,其可以通過詞袋模型或者神經(jīng)網(wǎng)絡(luò)模型,基于網(wǎng)絡(luò)行為信息集合全局和單個(gè)信息局部進(jìn)行特征向量構(gòu)建,實(shí)現(xiàn)每個(gè)網(wǎng)絡(luò)行為信息映射出相應(yīng)的特征向量。常見的詞袋模型有One-hot Representation和TF-IDF等[5],但詞袋模型構(gòu)建的特征向量缺少詞序信息的反映,不能夠準(zhǔn)確表達(dá)網(wǎng)絡(luò)行為信息的特征。而神經(jīng)網(wǎng)絡(luò)模型的出現(xiàn),使基于詞義和詞序構(gòu)建特征向量,變得準(zhǔn)確可行。
PV-DM[6]是一種基于神經(jīng)網(wǎng)絡(luò)向量化文本信息的模型,其能夠準(zhǔn)確快速生成包含詞義和詞序信息的特征向量,且使特征向量間的關(guān)系反映出對(duì)應(yīng)文本間的關(guān)系。該模型利用單層神經(jīng)網(wǎng)絡(luò)以及隨機(jī)梯度下降,訓(xùn)練詞義向量和詞序向量,并基于詞義向量和詞序向量,通過梯度上升計(jì)算出句向量[7]。其中,詞義向量記錄單個(gè)詞義信息,由于各句子間大概率存在相同的詞匯,使得詞義信息會(huì)在各句子間交叉共享,具有全局關(guān)聯(lián)性;詞序向量記錄詞序信息,不與其他句子交叉共享,具有獨(dú)立唯一性[8]。如圖4所示,每一個(gè)句子被映射為一個(gè)固定長度的詞序向量,并作為矩陣D的一列;每一個(gè)詞也被映射為一個(gè)固定長度的詞義向量,并作為矩陣W的一列,然后模型以求平均或首尾相連的方法組合這些矩陣[9]。
圖4 PV-DM向量化網(wǎng)絡(luò)行為描述
網(wǎng)絡(luò)入侵行為取證主要分為3個(gè)過程:網(wǎng)絡(luò)行為信息預(yù)處理、網(wǎng)絡(luò)行為信息屬性判斷歸類、網(wǎng)絡(luò)入侵行為信息關(guān)聯(lián)提取。而K-means算法作為一種常用的數(shù)據(jù)聚類算法[10],其能夠通過聚合相似度較高的數(shù)據(jù)集群,實(shí)現(xiàn)數(shù)據(jù)屬性判斷及歸類,是一種基于數(shù)據(jù)的網(wǎng)絡(luò)行為信息分析方法。因此,在網(wǎng)絡(luò)行為信息預(yù)處理后,K-means算法可應(yīng)用于網(wǎng)絡(luò)入侵行為取證中的信息分析過程,實(shí)現(xiàn)網(wǎng)絡(luò)行為信息屬性判斷歸類,為接下來的入侵行為信息關(guān)聯(lián)提取提供基礎(chǔ)。
然而,在網(wǎng)絡(luò)入侵行為取證中的信息分析過程中,K-means算法不能直接對(duì)網(wǎng)絡(luò)行為信息進(jìn)行判斷歸類,而是在網(wǎng)絡(luò)行為信息集合映射為相應(yīng)的特征向量集后,對(duì)特征向量集進(jìn)行聚類。由于網(wǎng)絡(luò)行為信息集合映射為相應(yīng)的特征向量集后,特征向量集內(nèi)各向量的關(guān)系等同于網(wǎng)絡(luò)行為信息集合內(nèi)各網(wǎng)絡(luò)行為間的關(guān)系[11],所以特征向量集的聚類結(jié)果即為網(wǎng)絡(luò)行為信息集合的聚類結(jié)果。基于K-means算法的網(wǎng)絡(luò)行為信息分析算法步驟如下:
Step1:在特征向量集data中隨機(jī)選取K個(gè)初始簇中心Ci(i=1,…,K);
Step2:計(jì)算每個(gè)向量與簇中心Ci的余弦相似度cosθ;
Step3:將每個(gè)向量劃分到與其相似度最大的簇中心Ci,聚合成簇;
Step5:循環(huán)Step2~Step4,當(dāng)簇中心不再改變時(shí),結(jié)束聚類;
當(dāng)K-means聚類結(jié)束后,算法判斷出每一類網(wǎng)絡(luò)行為,并將同一類網(wǎng)絡(luò)行為劃分進(jìn)同一個(gè)簇內(nèi)。
現(xiàn)實(shí)中,網(wǎng)絡(luò)行為信息條目數(shù)通常是以萬為單位計(jì)數(shù)的。當(dāng)K-means算法應(yīng)用于分析大樣本量的網(wǎng)絡(luò)行為信息集合時(shí),其K值(即網(wǎng)絡(luò)行為的種類數(shù)目)難以依靠人為經(jīng)驗(yàn)準(zhǔn)確判斷出來[12]。若K值的預(yù)設(shè)值過小,K-means算法會(huì)將兩個(gè)或兩個(gè)以上的不同類網(wǎng)絡(luò)行為判斷為同一類行為,造成錯(cuò)誤的分析結(jié)果,進(jìn)而會(huì)導(dǎo)致網(wǎng)絡(luò)入侵行為信息關(guān)聯(lián)提取不準(zhǔn)確。同時(shí),K-means聚類的初始簇中心是隨機(jī)選取的,這為聚類結(jié)果帶來隨機(jī)性[13],這將間接引起網(wǎng)絡(luò)入侵行為取證結(jié)果不穩(wěn)定。顯然,若取證結(jié)果不穩(wěn)定,該網(wǎng)絡(luò)入侵行為取證方法則不具有應(yīng)用價(jià)值,其結(jié)果將無法滿足訴訟過程的要求。
針對(duì)上述K-means算法的不足,本文提出一種以凝聚態(tài)中心為初始聚類中心的K-means算法。該改進(jìn)的K-means算法,首先以處于凝聚態(tài)中心(即在各數(shù)據(jù)子集中向量間相似度和最大)的向量作為初始聚類中心,并默認(rèn)凝聚態(tài)中心的數(shù)目等于K值。然后,計(jì)算每個(gè)向量與各簇中心的相似度,將每個(gè)向量劃分到相似度最大的簇中心。并且,經(jīng)過多次迭代聚類和均值化更新簇中心后,能實(shí)現(xiàn)簇的優(yōu)化修正,保證聚類結(jié)果的準(zhǔn)確性。
Step1:制作特征向量集data的副本向量集copydata;
Step2:將向量集copydata中的每條記錄視作一個(gè)向量,計(jì)算每個(gè)向量Xi與其他向量Xj的余弦相似度cosθij;
Step4:將COSi值最大的向量Xmax作為簇的初始中心,即Ci=Xmax;
此次研究抽取的胃潰瘍患者76例,收治時(shí)間為2016年3月至2017年3月。將所有患者依據(jù)治療方法的差異性均分研究和參照兩組,患者各38例。研究組中,男性患者、女性患者分別為21例、17例,最大年齡為73歲,最小年齡為21歲,中位年齡統(tǒng)計(jì)后為(53.48士7.36)歲。參照組中,男性患者、女性患者分別為25例、13例,最大年齡為74歲,最小年齡為22歲,中位年齡統(tǒng)計(jì)后為(54.19士7.40)歲。在統(tǒng)計(jì)軟件SPSS19.0中將研究組和參照組胃潰瘍患者的基本信息輸入,組間差異呈P>0.05,則表示數(shù)據(jù)結(jié)果不具有統(tǒng)計(jì)學(xué)意義。
Step5:計(jì)算初始簇中心Ci的凸點(diǎn)相似度cosmin;
Step6:以Ci為圓心,將大于凸點(diǎn)相似度cosmin的向量從向量集copydata中去除;
Step7:循環(huán)Step2~Step6,直到簇中心數(shù)不再變化;
Step8:將Step2~Step7過程中得到的簇中心作為初始的聚類中心;
Step9:在向量集data中,計(jì)算每個(gè)向量到各個(gè)聚類中心的余弦相似度cosθ;
Step10:將每個(gè)向量劃分與其相似度最大的簇中心,聚合成簇;
Step11:計(jì)算同一個(gè)簇所有向量的均值,將此均值點(diǎn)更新為新的簇中心;
Step12:迭代循環(huán)Step9~Step11,當(dāng)簇中心不再改變時(shí),結(jié)束聚類過程;
Step13:為每個(gè)簇的向量標(biāo)記類別號(hào),輸出各類的向量集datasetj及各類的中心向量Ci。
凸點(diǎn)相似度cosmin:首先計(jì)算向量xi與其他向量xj的余弦相似度cosθij,將相似度集{j=1,…,n(j≠i)|cosθij}從大到小排序,得到新的相似度集{1≤m≤(n-1)|cosθm};然后以相似度集{1≤m≤(n-1)|cosθm}作“m-cosθm”曲線圖(橫坐標(biāo)為cosθm的序號(hào)m,縱坐標(biāo)為相似度cosθm);最后以最小二乘法的曲線擬合原理,利用三次方程擬合“m-cosθm”二維曲線;并利用一階求導(dǎo)得出曲線凸點(diǎn)對(duì)應(yīng)的縱坐標(biāo)值,此值為凸點(diǎn)相似度cosmin。
待取證的網(wǎng)絡(luò)行為數(shù)據(jù)集經(jīng)過預(yù)處理和向量化后,得到PV-DM模型,并且從該模型中導(dǎo)出每個(gè)網(wǎng)絡(luò)行為信息對(duì)應(yīng)的特征向量,構(gòu)成待取證行為向量集。然后,將該向量集輸入改進(jìn)K-means算法中,使該向量集自動(dòng)劃分為不同類別的子集dataseti,并得到各類別的中心向量Ci,如圖5所示。
在具有已知網(wǎng)絡(luò)入侵行為的情況下,可利用歸類過程中產(chǎn)生的PV-DM向量化模型及歸類結(jié)果,發(fā)現(xiàn)已知入侵行為的類。首先,預(yù)處理已知網(wǎng)絡(luò)入侵行為信息,輸入PV-DM模型中訓(xùn)練得到該入侵行為的特征向量n。然后,計(jì)算向量n與各類中心向量Ci的余弦相似度,判斷出與向量n最相似的j類中心Ci,并在歸類結(jié)果中找到j(luò)類的向量集datasetj,如圖6所示。最后,基于向量和網(wǎng)絡(luò)行為信息一一對(duì)應(yīng)的關(guān)系,利用向量集datasetj發(fā)現(xiàn)待取證的網(wǎng)絡(luò)行為數(shù)據(jù)集中已知入侵行為的類。
圖5 待取證網(wǎng)絡(luò)行為數(shù)據(jù)歸類
圖6 發(fā)現(xiàn)已知行為的類
在發(fā)現(xiàn)的已知入侵行為類中,利用各向量與已知入侵行為向量n的相似度對(duì)類中的網(wǎng)絡(luò)行為向量重新排序,實(shí)現(xiàn)行為間的關(guān)聯(lián),進(jìn)而讓入侵嫌疑越大的行為往前排列,便于取證人員判斷提取,然后在已知入侵行為類中提取所有未知IP,實(shí)現(xiàn)具有入侵行為的未知IP被及時(shí)發(fā)現(xiàn),如圖7所示。
圖7 j類入侵行為的未知IP關(guān)聯(lián)提取
對(duì)網(wǎng)絡(luò)入侵的行為往往不止單次,并且可能附帶其他類別的入侵行為。為了完整地對(duì)所有入侵行為進(jìn)行取證,一是需要發(fā)現(xiàn)同一入侵類別下某入侵IP的所有入侵行為,按時(shí)間線輸出;二是判斷入侵IP是否有其他類別入侵相關(guān)行為。
發(fā)現(xiàn)同一入侵類別下某入侵IP的所有入侵行為。在發(fā)現(xiàn)的已知入侵行為類中,對(duì)照信息存儲(chǔ)列表list,將某入侵IP的網(wǎng)絡(luò)行為信息抽取出來,然后按時(shí)間排列,輸出保存為該IP的已知入侵行為集合。
判斷入侵IP是否有其他類別入侵相關(guān)行為。首先,在信息存儲(chǔ)列表list中,將某入侵IP的網(wǎng)絡(luò)行為信息抽取出來,去除已知類別的入侵行為信息,然后取證人員對(duì)剩余信息進(jìn)行判斷,若發(fā)現(xiàn)入侵IP有其他類別入侵行為,判斷這些類別行為所屬的具體數(shù)據(jù)子集,進(jìn)行提取保存。此時(shí),其他類別入侵相關(guān)行為由未知轉(zhuǎn)化為已知,可利用這些入侵行為信息和上述的歸類、發(fā)現(xiàn)、關(guān)聯(lián)方法,發(fā)現(xiàn)同類的入侵行為集和未知的入侵IP,提升發(fā)現(xiàn)網(wǎng)絡(luò)入侵行為的能力。
同時(shí),在利用改進(jìn)K-means算法歸類待取證網(wǎng)絡(luò)行為數(shù)據(jù)后,取證人員可以直接判斷各類網(wǎng)絡(luò)行為信息集合是否為入侵類別。對(duì)于入侵類別的網(wǎng)絡(luò)行為信息集合,取證人員可對(duì)照信息存儲(chǔ)列表list,提取其中的IP、時(shí)間和具體入侵行為。
為驗(yàn)證的有效性,采用Linux系統(tǒng)中的用戶認(rèn)證日志Auth.log作為網(wǎng)絡(luò)行為數(shù)據(jù)集,該用戶認(rèn)證日志記錄86 939條用戶登陸連接行為信息。已知的入侵行為信息假設(shè)為“Nov 30 17:47:58 ip-172-31-27-153 sshd[22964]: Invalid user avconroot from 218.26.11.118”。
日志Auth.log經(jīng)過預(yù)處理和向量化后,得到信息儲(chǔ)存列表list及PV-DM向量化模型,并從PV-DM中導(dǎo)出日志Auth.log中各條記錄的特征向量。然后,將這些特征向量作為數(shù)據(jù)集合輸入改進(jìn)的K-means算法中進(jìn)行歸類,得到8類網(wǎng)絡(luò)行為數(shù)據(jù)子集,以及各數(shù)據(jù)子集的中心向量。
將實(shí)驗(yàn)假設(shè)的已知入侵行為信息導(dǎo)入PV-DM向量化模型,得到已知入侵行為向量n。然后計(jì)算向量n與各中心向量的相似度,將相似度最大的中心對(duì)應(yīng)的第5類數(shù)據(jù)子集導(dǎo)出,并且計(jì)算向量n與第5類數(shù)據(jù)子集中各向量的相似度,接著按相似度從大到小對(duì)第5類數(shù)據(jù)子集重新排序。
最后,基于歸類關(guān)聯(lián)結(jié)果和信息儲(chǔ)存列表list進(jìn)行統(tǒng)計(jì)分析,對(duì)入侵行為信息進(jìn)行關(guān)聯(lián)提取。
在完成已知入侵行為的數(shù)據(jù)子集(即第5類)發(fā)現(xiàn)后,提取其中的所有用戶IP地址及其對(duì)應(yīng)的入侵次數(shù),然后排除已知IP(218.26.11.118),得到第5類數(shù)據(jù)子集未知入侵IP情況,如表2所示。該結(jié)果是通過已知IP的具體入侵行為信息,關(guān)聯(lián)出具有同種入侵行為的且取證人員未知的入侵IP及其具體入侵次數(shù),便于取證人員發(fā)現(xiàn)未知入侵IP,也利于取證中的定性和定量分析。
表2 第5類數(shù)據(jù)子集的部分入侵IP情況
同時(shí),在已知入侵行為的數(shù)據(jù)子集(即第5類)中,顯示已知IP(218.26.11.118)共進(jìn)行108次入侵,并呈現(xiàn)出短間隔的時(shí)間規(guī)律,如表3所示。該結(jié)果可表明IP(218.26.11.118)以多次惡意連接進(jìn)行入侵,具體的入侵規(guī)律、次數(shù)和行為信息可作為其入侵行為的證明。
表3 部分已知IP(218.26.11.118)的入侵時(shí)間分布
在信息儲(chǔ)存列表list中排除已知IP(218.26.11.118)的第5類行為信息后,查看list中已知IP的其他行為,發(fā)現(xiàn)有其他兩類入侵相關(guān)行為:主動(dòng)斷開連接、IP及其主機(jī)名反解析,在聚類算法歸類結(jié)果中分別屬于第2和第4類。由此可判斷第2及第4類是入侵相關(guān)行為的數(shù)據(jù)子集,可進(jìn)一步在第2和第4類中關(guān)聯(lián)發(fā)現(xiàn)未知入侵IP,提取相關(guān)入侵信息。
表4 已知IP(218.26.11.118)的其他入侵相關(guān)行為
綜上所述,基于改進(jìn)K-means算法進(jìn)行網(wǎng)絡(luò)入侵行為取證,能夠利用聚類算法自動(dòng)判斷行為屬性進(jìn)行行為歸類,使得取證人員能夠基于已知行為關(guān)聯(lián)提取未知用戶IP及其入侵情況,并且保證完整提取到已知或未知IP的入侵情況,提高了取證效率。
基于改進(jìn)K-means算法的網(wǎng)絡(luò)入侵行為取證研究,根據(jù)網(wǎng)絡(luò)行為數(shù)據(jù)環(huán)境行為多變、數(shù)據(jù)量大等特點(diǎn),構(gòu)建自適應(yīng)準(zhǔn)確設(shè)置初始聚類中心的K-means算法,使網(wǎng)絡(luò)行為數(shù)據(jù)自動(dòng)合理地按行為屬性歸類,可替代取證過程中人為判斷歸類的過程。同時(shí),基于改進(jìn)K-means算法的網(wǎng)絡(luò)入侵行為取證思路,提升關(guān)聯(lián)分析數(shù)據(jù)的效率和完整性。然而,發(fā)現(xiàn)已知入侵IP的其他相關(guān)行為仍依賴于人工判斷,并且存在誤判的可能。因此,下一步的研究將通過網(wǎng)絡(luò)行為特征向量間的關(guān)系,使算法自動(dòng)判斷出其他相關(guān)行為,進(jìn)一步提高取證效率。