李智宏 王瑤
(中國(guó)移動(dòng)通信集團(tuán)海南有限公司 海南???570125)
近年來,大規(guī)模網(wǎng)絡(luò)攻擊和信息安全事故層出不窮,涉及的領(lǐng)域越來越廣,造成的危害也越來越大[1]。2006年末,“熊貓燒香”事件轟動(dòng)全國(guó),進(jìn)近兩個(gè)月的時(shí)間,病毒感染無數(shù)門戶網(wǎng)站,上百萬臺(tái)電腦感染,凡是中了病毒的電腦,頁面上都會(huì)顯示一張熊貓手中握著香的圖片[2]。2010年7月,“震網(wǎng)”(Stuxnet)蠕蟲攻擊事件浮出水面,震網(wǎng)病毒感染了全球超過20萬臺(tái)電腦,摧毀了伊朗濃縮鈾工廠1/5的離心機(jī),只靠U盤傳播的震網(wǎng)病毒,破壞了伊朗的核計(jì)劃[3]。2017年5月“WannaCry”勒索病毒肆虐,短短一個(gè)月的時(shí)間就席卷全球150多個(gè)國(guó)家,中毒者要支付大量贖金來解鎖自己的電腦文件,如果沒有備份,只能乖乖支付贖金,或者放棄治療,經(jīng)濟(jì)損失高達(dá)80億美元[4]。網(wǎng)絡(luò)攻擊和安全事件已經(jīng)逐步由黑客炫耀技術(shù)轉(zhuǎn)變?yōu)楹诳蛯?duì)經(jīng)濟(jì)利益的追逐,轉(zhuǎn)變?yōu)閲?guó)家之間綜合實(shí)力的競(jìng)爭(zhēng)。
無論是病毒、木馬還是蠕蟲,絕大多數(shù)的入侵行為都是通過攻擊特權(quán)進(jìn)程或者創(chuàng)建特權(quán)進(jìn)程來破壞業(yè)務(wù)系統(tǒng)的安全性,特定進(jìn)程通常需要完成有限的、特定的、惡意的行為,因此其行為在時(shí)間和空間上比其他業(yè)務(wù)程序更加異常,如不會(huì)像系統(tǒng)進(jìn)程、業(yè)務(wù)進(jìn)程一樣在絕大部分主機(jī)上存在,只在被入侵的主機(jī)上少數(shù)存在。基于此,本文介紹了一種基于K-Core來對(duì)進(jìn)程流行度進(jìn)行排序的算法,根據(jù)流行度獲取業(yè)務(wù)系統(tǒng)主機(jī)進(jìn)程白名單庫及疑似惡意進(jìn)程庫,來幫助用戶識(shí)別主機(jī)異常進(jìn)程。
圖1 異常進(jìn)程檢測(cè)流程圖
進(jìn)程是系統(tǒng)動(dòng)態(tài)執(zhí)行操作的基本單位,服務(wù)器中的進(jìn)程不僅是程序的動(dòng)態(tài)實(shí)現(xiàn),還包括對(duì)資源的調(diào)度和分配活動(dòng)。服務(wù)器中任何惡意程序的執(zhí)行都會(huì)啟動(dòng)相應(yīng)的異常進(jìn)程,如木馬病毒、蠕蟲、僵尸網(wǎng)絡(luò)和DDoS攻擊等惡意攻擊都會(huì)事先在服務(wù)器中安插后門進(jìn)程。如果能在惡意程序執(zhí)行初期檢測(cè)出服務(wù)器中的相應(yīng)異常進(jìn)程,并采取一定的措施,就能避免遭受更大的損失。
目前對(duì)網(wǎng)絡(luò)攻擊的主要防護(hù)手段是防火墻和入侵檢測(cè)技術(shù)。防火墻作為內(nèi)網(wǎng)和外網(wǎng)的一道警戒線,有效地阻擋了大部分的惡意攻擊。但防火墻的功能具有較大局限性,它的防御策略是靜態(tài)的,且只能阻擋來自于外網(wǎng)的攻擊。入侵檢測(cè)技術(shù)有效的彌補(bǔ)了防火墻的缺陷,它可以監(jiān)控主機(jī)狀態(tài)以判斷用戶行為是否正常。進(jìn)程監(jiān)控是網(wǎng)絡(luò)安全技術(shù)的重要實(shí)現(xiàn)環(huán)節(jié),許多入侵檢測(cè)系統(tǒng)和殺毒軟件都會(huì)有監(jiān)控主機(jī)進(jìn)程的功能。然而入侵檢測(cè)技術(shù)對(duì)于異常進(jìn)程檢測(cè)的時(shí)效性較差,且忽略了進(jìn)程的全局特性。
圖2 異常進(jìn)程檢測(cè)流程
圖3 進(jìn)程網(wǎng)絡(luò)圖
圖5 進(jìn)程無向圖
圖7 原始進(jìn)程無向網(wǎng)絡(luò)圖
針對(duì)現(xiàn)有異常進(jìn)程檢測(cè)技術(shù)和工具存在的缺陷,本文的目的在于提供一種檢測(cè)服務(wù)器中異常進(jìn)程的方法與裝置,提高異常進(jìn)程檢測(cè)的時(shí)效性。具體解決的技術(shù)問題如下。
(1)部署采集器,采集目標(biāo)服務(wù)器中的進(jìn)程日志;
(2)基于黑進(jìn)程庫對(duì)歷史進(jìn)程日志進(jìn)行篩選,隨后采用K-Core算法訓(xùn)練,通過劃定閾值產(chǎn)生白進(jìn)程庫;
(3)基于白進(jìn)程庫,利用大數(shù)據(jù)平臺(tái)對(duì)目標(biāo)服務(wù)器中的進(jìn)程日志進(jìn)行實(shí)時(shí)且高效的合法性判決。
圖4 K-Core算法分解示例圖
圖6 進(jìn)程流行度分析運(yùn)算圖
圖8 執(zhí)行兩次過程圖
圖9 執(zhí)行25次結(jié)果圖
本文介紹一種自動(dòng)對(duì)采集到的進(jìn)程按照流行程度進(jìn)行排序的算法,該算法能夠自動(dòng)生成進(jìn)程白名單和疑似異常進(jìn)程,有效擺脫了“過分依賴人”束縛的同時(shí),能夠有效應(yīng)對(duì)大數(shù)據(jù)和云計(jì)算發(fā)展過程中設(shè)備數(shù)量眾多帶來的進(jìn)程數(shù)量巨大的問題。
表1 主機(jī)-進(jìn)程統(tǒng)計(jì)表
表2 進(jìn)程關(guān)聯(lián)統(tǒng)計(jì)表
本文提出一種主機(jī)異常進(jìn)程檢測(cè)算法(見圖1),并將算法封裝成一種檢測(cè)裝置。整個(gè)裝置分為兩個(gè)白進(jìn)程庫生成和異常進(jìn)程實(shí)時(shí)檢測(cè)兩個(gè)單元,第一個(gè)單元是根據(jù)歷史進(jìn)程數(shù)據(jù),自動(dòng)生成進(jìn)程流行度序列,基于序列生成進(jìn)程白名單和疑似名單,第二個(gè)單是對(duì)實(shí)時(shí)采集進(jìn)程進(jìn)行實(shí)時(shí)檢測(cè),識(shí)別出疑似異常進(jìn)程。
本文提出的異常進(jìn)程檢測(cè)裝置包含四大功能模塊,分別是進(jìn)程日志采集模塊、白進(jìn)程庫生成模塊、進(jìn)程日志傳輸模塊以及異常進(jìn)程檢測(cè)模塊。
2.2.1 進(jìn)程日志采集模塊
監(jiān)控服務(wù)器關(guān)于內(nèi)核的偽文件系統(tǒng)中的進(jìn)程信息文件夾,并實(shí)時(shí)將內(nèi)核創(chuàng)建的進(jìn)程寫入進(jìn)程日志文件,進(jìn)程信息包括進(jìn)程的創(chuàng)建和銷毀、進(jìn)程的運(yùn)行狀態(tài)和運(yùn)行時(shí)間、資源占用情況和進(jìn)程訪問網(wǎng)絡(luò)資源情況。
設(shè)置時(shí)間窗口定時(shí)獲取服務(wù)器中所有進(jìn)程的快照并寫入進(jìn)程日志文件,所述進(jìn)程包括系統(tǒng)進(jìn)程、第三方服務(wù)程序啟動(dòng)的進(jìn)程和用戶啟動(dòng)的進(jìn)程。
2.2.2 白進(jìn)程庫生成模塊
首先,根據(jù)黑進(jìn)程庫對(duì)進(jìn)程歷史日志進(jìn)行篩選,過濾出顯著的異常進(jìn)程。針對(duì)剩余進(jìn)程日志,構(gòu)建如圖3所示的進(jìn)程網(wǎng)絡(luò)圖,在服務(wù)器中比較流行的進(jìn)程對(duì)應(yīng)的頂點(diǎn)在進(jìn)程網(wǎng)絡(luò)中的重要性較高。因此找出服務(wù)器進(jìn)程網(wǎng)絡(luò)中的重要頂點(diǎn),即可找出服務(wù)器中的合法進(jìn)程,進(jìn)而建立白進(jìn)程庫。具體檢測(cè)流程如圖2所示。
利用K-Core算法計(jì)算進(jìn)程網(wǎng)絡(luò)圖各頂點(diǎn)的Core值,Core值高于閾值的頂點(diǎn)對(duì)應(yīng)的進(jìn)程為合法進(jìn)程,并寫入白進(jìn)程庫,步驟如下:
(2)找出網(wǎng)絡(luò)中“度值”最小的頂點(diǎn),其“度值”為k,然后取,然后依次剪除度為k的節(jié)點(diǎn),這些被剪除的節(jié)點(diǎn)對(duì)應(yīng)的K-Core值為;
(4)重復(fù)步驟(2),直到網(wǎng)絡(luò)中所有節(jié)點(diǎn)均被剪除,即可得到頂點(diǎn)的重要性分組。
2.2.3 服務(wù)器進(jìn)程日志傳輸模塊
利用數(shù)據(jù)管道如Kafka,從目標(biāo)服務(wù)器獲取進(jìn)程數(shù)據(jù)并傳輸?shù)酱髷?shù)據(jù)分析平臺(tái)。如圖4所示,實(shí)時(shí)輸入目標(biāo)服務(wù)器的所有進(jìn)程數(shù)據(jù),經(jīng)過Kafka傳輸,Spark大數(shù)據(jù)平臺(tái)分析,然后向用戶實(shí)時(shí)輸出異常進(jìn)程的相關(guān)信息。
2.2.4 異常進(jìn)程檢測(cè)模塊
在大數(shù)據(jù)平臺(tái)上利用白進(jìn)程庫實(shí)時(shí)檢測(cè)目標(biāo)服務(wù)器異常進(jìn)程,并從服務(wù)器進(jìn)程日志中抽取異常進(jìn)程的特征信息,包括進(jìn)程啟動(dòng)時(shí)間、運(yùn)行時(shí)間、資源占用情況、狀態(tài)、文件關(guān)聯(lián)和用戶關(guān)聯(lián)信息等。
在上文提到的四個(gè)模塊中,白進(jìn)程庫生成模塊是本文的核心,為了更便于理解這一部分將已一個(gè)示例說明異常進(jìn)程及白名單庫生成的全過程,并利用python對(duì)采集到的進(jìn)程樣本進(jìn)行仿真實(shí)驗(yàn)。
兩個(gè)進(jìn)程若存在在同一臺(tái)主機(jī)上,說明進(jìn)程有聯(lián)系,統(tǒng)計(jì)所有兩兩進(jìn)程同時(shí)出現(xiàn)的次數(shù),如表2所示。
根據(jù)表2繪制對(duì)應(yīng)進(jìn)程無向圖如圖5所示。
利用K-Core[5-8]對(duì)進(jìn)程流行度進(jìn)行排序(見圖6),首先排除在外的是E節(jié)點(diǎn),E節(jié)點(diǎn)排除后還要考慮對(duì)其他進(jìn)程節(jié)點(diǎn)的影響,本文中按照70%的影響因子計(jì)算刪除節(jié)點(diǎn)對(duì)其他節(jié)點(diǎn)的影響。
經(jīng)過K-Core算法計(jì)算后主機(jī)進(jìn)程重要性排序?yàn)?A、C)、D、B、E。大部分主機(jī)都存在的是系統(tǒng)進(jìn)程、業(yè)務(wù)進(jìn)程的可能性較高,而只有少部分主機(jī)存在的進(jìn)程為異常進(jìn)程的可能性高,基于這個(gè)原則,設(shè)定一定的閾值,將重要性排序靠前的納入進(jìn)程白名單庫,而重要性排序靠后的納入疑似異常進(jìn)程庫,告警進(jìn)行人工核實(shí)。
為了驗(yàn)證算法的有效性,本文挑選一個(gè)25臺(tái)服務(wù)器規(guī)模的小型業(yè)務(wù)系統(tǒng),25臺(tái)服務(wù)器共采集到503個(gè)進(jìn)程采集其進(jìn)程進(jìn)行利用python進(jìn)行效果仿真,實(shí)驗(yàn)結(jié)果如圖7~圖9所示。
最終試驗(yàn)結(jié)果顯示,該小型業(yè)務(wù)系統(tǒng)流行度較高的進(jìn)程為bash、kworker、watchdog、kthreadd這些為系統(tǒng)進(jìn)程,因此納入白名單庫。而流行度較低的疑似異常進(jìn)程為ueksinzina、obggtvdung這種只有少數(shù)兩臺(tái)管理服務(wù)器才安裝的業(yè)務(wù)進(jìn)程,雖然在本文中不是異常進(jìn)程,但是在大型應(yīng)用場(chǎng)景,該類只有少數(shù)主機(jī)才存在的進(jìn)程需要納入疑似異常進(jìn)程進(jìn)行人工核實(shí)。
經(jīng)過仿真實(shí)驗(yàn),可以看到本文提出的識(shí)別異常進(jìn)程的算法具有一定的可行性,能夠?qū)I(yè)務(wù)系統(tǒng)主機(jī)進(jìn)程根據(jù)流行程度進(jìn)行排序,重要性排序靠前的進(jìn)程的確為業(yè)務(wù)正常進(jìn)程,重要性排序靠后的進(jìn)程雖然不是異常進(jìn)程,但是流行程度較低。
本文提出的基于K-Core主機(jī)異常進(jìn)程識(shí)別算法的與現(xiàn)有技術(shù)相比,具有以下幾個(gè)先進(jìn)性,首先文章將圖計(jì)算方法應(yīng)用于服務(wù)器異常進(jìn)程檢測(cè),其次可通過無監(jiān)督的方式產(chǎn)生服務(wù)器進(jìn)程白名單庫以及疑似異常進(jìn)程庫,最后結(jié)合大數(shù)據(jù)平臺(tái)能夠?qū)崟r(shí)分析大量服務(wù)器上的進(jìn)程日志并提取異常的進(jìn)程相關(guān)信息。
本文介紹了一種構(gòu)建“服務(wù)器—進(jìn)程”的網(wǎng)絡(luò)拓補(bǔ)圖,并基于K-Core算法對(duì)主機(jī)節(jié)點(diǎn)流行度進(jìn)行排序構(gòu)建進(jìn)程白名單和識(shí)別異常進(jìn)程的算法,并提取小型業(yè)務(wù)系統(tǒng)主機(jī)進(jìn)程對(duì)算法進(jìn)行驗(yàn)證,實(shí)驗(yàn)結(jié)果表明本文將圖計(jì)算方法應(yīng)用于異常進(jìn)程識(shí)別,算法簡(jiǎn)單有效,能夠準(zhǔn)確識(shí)別流行度較高的業(yè)務(wù)進(jìn)程、系統(tǒng)進(jìn)程,并發(fā)現(xiàn)流行度較低的疑似惡意進(jìn)程。
目前算法僅在小型業(yè)務(wù)系統(tǒng)進(jìn)行驗(yàn)證,隨著云計(jì)算、物聯(lián)網(wǎng)技術(shù)的發(fā)展,主機(jī)規(guī)模成倍劇增,下一步作者將進(jìn)一步研究將算法應(yīng)用于大量服務(wù)器進(jìn)程日志場(chǎng)景中。