張宇涵,薛 質(zhì),施 勇,吳毅良
(1.上海交通大學(xué),上海 200240;2.廣東電網(wǎng)公司江門供電局,廣東 江門 529099)
高級持續(xù)性威脅(Advanced Persistent Threat APT)已成為網(wǎng)絡(luò)空間所面臨的主要安全威脅之一[1]。隨著網(wǎng)絡(luò)安全形勢日趨嚴(yán)峻,越來越多的商業(yè)組織和政府機(jī)構(gòu)成為APT 攻擊的目標(biāo),雖然這些被攻擊目標(biāo)通常都已安裝防御和檢測系統(tǒng),用于提升安全防護(hù)能力,但依然遭受APT 攻擊的持續(xù)威脅,部分攻擊可能持續(xù)數(shù)月未被發(fā)現(xiàn)[2]。惡意命令是一種常見的APT 攻擊方式,而反彈Shell 攻擊則是一種典型的惡意命令攻擊。反彈Shell 與SSH 等標(biāo)準(zhǔn)Shell 對應(yīng),本質(zhì)上是網(wǎng)絡(luò)概念中的客戶端與服務(wù)端的角色互換。在通常概念的網(wǎng)絡(luò)攻擊中,攻擊者會(huì)通過端口掃描找到目標(biāo)機(jī)器的漏洞端口,從自己的機(jī)器向目標(biāo)機(jī)器發(fā)起連接,這種方式也被稱為正向連接,形如遠(yuǎn)程桌面、SSH、Telnet 等都是正向連接。但是在一些特殊情況下,正向連接無法使用,比如目標(biāo)機(jī)器在局域網(wǎng)內(nèi),攻擊者無法直接連接;目標(biāo)機(jī)器IP 動(dòng)態(tài)改變,攻擊者不能持續(xù)控制;由于防火墻限制,目標(biāo)機(jī)器只能發(fā)送請求,不能接收請求等。在上述情況下,攻擊者往往就會(huì)采用反彈Shell 來進(jìn)行攻擊。反彈Shell 是通過未檢測到的惡意遠(yuǎn)程訪問木馬(Remote Access Trojan RAT)來進(jìn)行攻擊的[3]。攻擊者首先設(shè)法利用漏洞將偽裝過的木馬腳本植入目標(biāo)主機(jī),使用戶在執(zhí)行命令的同時(shí)運(yùn)行木馬腳本,通過RAT 木馬,被攻擊者會(huì)發(fā)起請求連接到某個(gè)攻擊者正在監(jiān)聽的TCP/UDP 端口,并將其命令行的所有輸入輸出轉(zhuǎn)出到該端口,從而受到攻擊者的遠(yuǎn)程控制。此外,由于使用反向外殼程序而不是綁定外殼程序?qū)⒚钭⑷胧芎τ?jì)算機(jī)中,使得反彈Shell 在網(wǎng)絡(luò)和主機(jī)級別中具有比較好的隱蔽性。
針對用戶Shell 的惡意命令檢測近年來一直是研究的熱點(diǎn)。國內(nèi)外已經(jīng)開展了采用機(jī)器學(xué)習(xí)(貝葉斯模型,馬爾可夫模型等)和深度學(xué)習(xí)(如卷積神經(jīng)網(wǎng)絡(luò)(Convolutional Neural Network,CNN)和遞歸神經(jīng)網(wǎng)絡(luò)(Recurrent Neural Network,RNN)等)技術(shù)在偽裝攻擊檢測中的應(yīng)用研究。L Huang[4]等人的研究在現(xiàn)有基于隱馬爾可夫檢測模型(HMM)的基礎(chǔ)上提出了一種基于輪廓隱式馬爾可夫模型(PHMM)的檢測方法,針對HMM 中的隱藏狀態(tài)進(jìn)行檢測。實(shí)驗(yàn)結(jié)果證明,當(dāng)使用的訓(xùn)練數(shù)據(jù)有限時(shí),最佳的檢測策略是使用PHMM。而當(dāng)積累了足夠的訓(xùn)練數(shù)據(jù)后,使用HMM 會(huì)有更好的效果。Kim H S等人[5]研究了基于 SVM 支持向量機(jī)的方法來進(jìn)行偽裝惡意代碼檢測。J Seo[6]等人對Kim 的方法進(jìn)行了改進(jìn),通過應(yīng)用基于序列的信息檢測來提高偽裝檢測系統(tǒng)的性能,并將SVM 和基于序列的內(nèi)核方法結(jié)合起來,進(jìn)一步降低了檢測系統(tǒng)的誤報(bào)率。Sai Charan[3]等人提出了一種通過分析從被攻擊機(jī)器收集的大量安全信息和事件管理(Security Information and Event Management SIEM)系統(tǒng)事件日志文件,借助長短期記憶神經(jīng)網(wǎng)絡(luò)(Long Short Term Memory LSTM)實(shí)時(shí)檢測惡意命令的技術(shù)。Bhatt[7]等人提出了一種使用具有邏輯層的Apache Hadoop 進(jìn)行行為建模的檢測框架,該框架以描述攻擊方法以及攻擊的預(yù)期效果的方式對多階段攻擊進(jìn)行建模,并結(jié)合日志文件來提升識別攻擊的準(zhǔn)確性。
TF-IDF(Term Frequency -Inverse Document Frequency)是一種用于信息檢索與數(shù)據(jù)挖掘的常用加權(quán)技術(shù)。TF 指的是詞頻(Term Frequency),IDF是逆文本頻率指數(shù)(Inverse Document Frequency)[8]。TF-IDF 是一種基于統(tǒng)計(jì)的方法,用來評估一個(gè)詞條對于一個(gè)文件集的其中一個(gè)文件的重要程度。詞條的重要性隨其在文件中出現(xiàn)過的次數(shù)成正比增加,但是會(huì)隨著其在整個(gè)文件集中出現(xiàn)的頻率成反比下降。
對于第j個(gè)詞條在第i個(gè)文件中的TF 值tfi,j的計(jì)算方法如下:
式中ni,j是第j個(gè)詞條在第i個(gè)文件中的出現(xiàn)次數(shù),∑knk,j是第j個(gè)詞條在其他所有文件中出現(xiàn)過的次數(shù)總和。
對于第i個(gè)文件中的第j個(gè)詞條,它的IDF 值計(jì)算公式如下:
式中|D| 是在語料庫中的文件總數(shù),{di∈D:tj∈di}是包含詞條tj的文件數(shù)目。
TF-IDF 是TF×IDF 的縮寫,如果某個(gè)詞條在特定文件內(nèi)的詞頻率很高,并且該詞條在整個(gè)文件集合中的出現(xiàn)頻率很低,就可以使用該詞條產(chǎn)生出高權(quán)重的TF-IDF。TF-IDF 會(huì)傾向于過濾掉常見詞語而保留重要的詞語。
TF-IDF 算法的結(jié)構(gòu)較為簡潔,容易實(shí)現(xiàn),缺點(diǎn)是沒有考慮詞語的語義信息,無法處理一詞多義與一義多詞的情況,但是在處理Shell 命令特征的過程中有著不錯(cuò)的效果。
長短期記憶網(wǎng)絡(luò)(Long Short Term Memory LSTM)是從循環(huán)神經(jīng)網(wǎng)絡(luò)(Recurrent Neural Network,RNN)中發(fā)展出來的。RNN 是一種用于處理序列數(shù)據(jù)的神經(jīng)網(wǎng)絡(luò)。相比一般的神經(jīng)網(wǎng)絡(luò)來說,RNN能夠結(jié)合上一時(shí)態(tài)的輸出和當(dāng)前時(shí)態(tài)的輸入進(jìn)行學(xué)習(xí),從而能夠處理序列變化的數(shù)據(jù)。而LSTM 網(wǎng)絡(luò)是一種改進(jìn)后的RNN 網(wǎng)絡(luò),主要用于處理長時(shí)序序列訓(xùn)練過程中的梯度消失和梯度爆炸等問題。LSTM 有著與RNN 相同的重復(fù)模塊鏈的結(jié)構(gòu)[9],但與RNN 相比,LSTM 在單個(gè)模塊結(jié)構(gòu)的內(nèi)部做了一些變化,其網(wǎng)絡(luò)結(jié)構(gòu)如圖1、圖2 所示。
圖1 LSTM 鏈?zhǔn)浇Y(jié)構(gòu)
圖2 LSTM 細(xì)胞結(jié)構(gòu)
LSTM 網(wǎng)絡(luò)通過遺忘門、輸入門和輸出門來控制細(xì)胞的狀態(tài)變化。在每輪迭代中,首先將上一輪的輸出ht-1和本輪輸入xt經(jīng)過遺忘門來決定要舍棄的信息。公式為:
第二步是通過輸入門來決定要更新的信息,輸入門中有一個(gè)包含激活函數(shù)的層,將ht-1和xt通過該層最終得到新的候選細(xì)胞信息
然后將遺忘門和輸入門的信息匯總,更新舊細(xì)胞信息Ct-1,并通過得到新的細(xì)胞信息Ct。
最后將ht-1和xt通過輸出門的激活函數(shù)層得到判斷條件,從而決定本輪輸出的細(xì)胞狀態(tài)特征。
LSTM 的結(jié)構(gòu)設(shè)計(jì)特點(diǎn)使得它在學(xué)習(xí)更高級別特征序列中的長程依賴性和時(shí)序性有著很大的優(yōu)勢,可以在前后文之間更好地捕捉語義依賴,提高檢測準(zhǔn)確率。
由于目前尚未有組織或機(jī)構(gòu)制作專門針對Shell命令的數(shù)據(jù)集,因此本實(shí)驗(yàn)采用由AT&T Shanon 實(shí)驗(yàn)室發(fā)布的SEA 實(shí)驗(yàn)數(shù)據(jù)[10]作為基礎(chǔ)數(shù)據(jù)集,并在此基礎(chǔ)上加以修改作為實(shí)驗(yàn)用數(shù)據(jù)集。SEA 數(shù)據(jù)集包含了70 個(gè)用戶的命令日志,對每個(gè)用戶采集了15000 條命令。本實(shí)驗(yàn)從中隨機(jī)選出50 個(gè)用戶,將每個(gè)用戶的數(shù)據(jù)按照連續(xù)50 個(gè)指令一組,劃分為1300 個(gè)塊,作為本實(shí)驗(yàn)的基礎(chǔ)數(shù)據(jù)集,并以此為基礎(chǔ)進(jìn)行后續(xù)的特征提取和訓(xùn)練過程。
由于SEA 數(shù)據(jù)集中的命令僅由Shell 命令短語組成,不包含其他參數(shù),因此本實(shí)驗(yàn)選擇使用TFIDF 算法結(jié)合SEA 數(shù)據(jù)集對收集到的反彈Shell 樣本進(jìn)行分詞并提取特征,提高檢測的準(zhǔn)確率。
將反彈Shell 樣本和部分SEA 數(shù)據(jù)集命令輸入TF-IDF 算法中,提取出的部分特征短語如圖3 所示。
圖3 TF-IDF 特征提取
本實(shí)驗(yàn)將原始SEA 數(shù)據(jù)集中的數(shù)據(jù)塊視為正常數(shù)據(jù),然后從中隨機(jī)抽取一部分?jǐn)?shù)據(jù)塊,將其中的部分命令替換為反彈Shell中提取的特征命令記錄。本實(shí)驗(yàn)將這些被修改過的數(shù)據(jù)塊視為異常數(shù)據(jù)。正常數(shù)據(jù)和異常數(shù)據(jù)的格式如圖4 所示。其中標(biāo)簽設(shè)為1 的是插入了特征命令記錄的異常數(shù)據(jù)塊,標(biāo)簽設(shè)為0 的是未經(jīng)修改的正常數(shù)據(jù)塊。
圖4 數(shù)據(jù)集格式
本研究在SEA 實(shí)驗(yàn)數(shù)據(jù)集的基礎(chǔ)上進(jìn)行了一定改動(dòng),并以此為新數(shù)據(jù)及進(jìn)行實(shí)驗(yàn)。網(wǎng)絡(luò)架構(gòu)基于LSTM 和TF-IDF 特征提取。本實(shí)驗(yàn)隨機(jī)選取了200個(gè)不參與訓(xùn)練的數(shù)據(jù)塊作為測試集檢測訓(xùn)練效果,并使用相同的神經(jīng)網(wǎng)絡(luò)和參數(shù)另外訓(xùn)練了一個(gè)未經(jīng)TF-IDF 特征提取的檢測模型作為對比。通過不斷調(diào)整參數(shù)訓(xùn)練網(wǎng)絡(luò),實(shí)驗(yàn)結(jié)果如表1 所示,對比結(jié)果如表2 所示。
表1 實(shí)驗(yàn)結(jié)果
表2 未經(jīng)TF-IDF 特征提取的實(shí)驗(yàn)結(jié)果
本次實(shí)驗(yàn)共使用了200 個(gè)數(shù)據(jù)塊作為測試數(shù)據(jù),其中正常數(shù)據(jù)塊128 個(gè),異常數(shù)據(jù)塊72 個(gè)。通過表1 和表2 對比可以看到,該模型準(zhǔn)確率超過了98%,誤報(bào)率在2%以下。與未經(jīng)特征提取的模型相比有了較大的提升,展現(xiàn)出了較為出色的預(yù)測能力??梢姡谑欠翊嬖诜磸桽hell 的二分類問題中,本文所設(shè)計(jì)的基于TF-IDF 和LSTM 的反彈Shell 檢測方法展現(xiàn)出了較好的檢測能力。
本文設(shè)計(jì)了一種基于TF-IDF 和LSTM 的針對隱蔽性較高的反彈Shell 檢測方法。LSTM 的結(jié)構(gòu)設(shè)計(jì)特點(diǎn)使得它較為適合處理時(shí)間離散序列數(shù)據(jù),并能夠解決序列中的長程依賴性,可以在前后文之間更好地捕捉語義依賴。結(jié)合TF-IDF 對樣本進(jìn)行特征提取,得到了更高質(zhì)量的特征向量信息,在針對反彈Shell 生成的基于SEA 數(shù)據(jù)集的訓(xùn)練數(shù)據(jù)集中得到了較高的準(zhǔn)確率和較低的誤報(bào)率,展現(xiàn)出較高的綜合檢測能力,與未經(jīng)特征提取的檢測結(jié)果相比有了較大的提升。下一步的研究目標(biāo)在于逐步將模型由有監(jiān)督訓(xùn)練向無監(jiān)督訓(xùn)練轉(zhuǎn)化,從而將監(jiān)測范圍拓寬到更多的攻擊場景,這對模型的構(gòu)建提出了更高的要求。