張宇涵,薛 質,施 勇,吳毅良
(1.上海交通大學,上海 200240;2.廣東電網公司江門供電局,廣東 江門 529099)
高級持續性威脅(Advanced Persistent Threat APT)已成為網絡空間所面臨的主要安全威脅之一[1]。隨著網絡安全形勢日趨嚴峻,越來越多的商業組織和政府機構成為APT 攻擊的目標,雖然這些被攻擊目標通常都已安裝防御和檢測系統,用于提升安全防護能力,但依然遭受APT 攻擊的持續威脅,部分攻擊可能持續數月未被發現[2]。惡意命令是一種常見的APT 攻擊方式,而反彈Shell 攻擊則是一種典型的惡意命令攻擊。反彈Shell 與SSH 等標準Shell 對應,本質上是網絡概念中的客戶端與服務端的角色互換。在通常概念的網絡攻擊中,攻擊者會通過端口掃描找到目標機器的漏洞端口,從自己的機器向目標機器發起連接,這種方式也被稱為正向連接,形如遠程桌面、SSH、Telnet 等都是正向連接。但是在一些特殊情況下,正向連接無法使用,比如目標機器在局域網內,攻擊者無法直接連接;目標機器IP 動態改變,攻擊者不能持續控制;由于防火墻限制,目標機器只能發送請求,不能接收請求等。在上述情況下,攻擊者往往就會采用反彈Shell 來進行攻擊。反彈Shell 是通過未檢測到的惡意遠程訪問木馬(Remote Access Trojan RAT)來進行攻擊的[3]。攻擊者首先設法利用漏洞將偽裝過的木馬腳本植入目標主機,使用戶在執行命令的同時運行木馬腳本,通過RAT 木馬,被攻擊者會發起請求連接到某個攻擊者正在監聽的TCP/UDP 端口,并將其命令行的所有輸入輸出轉出到該端口,從而受到攻擊者的遠程控制。此外,由于使用反向外殼程序而不是綁定外殼程序將命令注入受害計算機中,使得反彈Shell 在網絡和主機級別中具有比較好的隱蔽性。
針對用戶Shell 的惡意命令檢測近年來一直是研究的熱點。國內外已經開展了采用機器學習(貝葉斯模型,馬爾可夫模型等)和深度學習(如卷積神經網絡(Convolutional Neural Network,CNN)和遞歸神經網絡(Recurrent Neural Network,RNN)等)技術在偽裝攻擊檢測中的應用研究。L Huang[4]等人的研究在現有基于隱馬爾可夫檢測模型(HMM)的基礎上提出了一種基于輪廓隱式馬爾可夫模型(PHMM)的檢測方法,針對HMM 中的隱藏狀態進行檢測。實驗結果證明,當使用的訓練數據有限時,最佳的檢測策略是使用PHMM。而當積累了足夠的訓練數據后,使用HMM 會有更好的效果。Kim H S等人[5]研究了基于 SVM 支持向量機的方法來進行偽裝惡意代碼檢測。J Seo[6]等人對Kim 的方法進行了改進,通過應用基于序列的信息檢測來提高偽裝檢測系統的性能,并將SVM 和基于序列的內核方法結合起來,進一步降低了檢測系統的誤報率。Sai Charan[3]等人提出了一種通過分析從被攻擊機器收集的大量安全信息和事件管理(Security Information and Event Management SIEM)系統事件日志文件,借助長短期記憶神經網絡(Long Short Term Memory LSTM)實時檢測惡意命令的技術。Bhatt[7]等人提出了一種使用具有邏輯層的Apache Hadoop 進行行為建模的檢測框架,該框架以描述攻擊方法以及攻擊的預期效果的方式對多階段攻擊進行建模,并結合日志文件來提升識別攻擊的準確性。
TF-IDF(Term Frequency -Inverse Document Frequency)是一種用于信息檢索與數據挖掘的常用加權技術。TF 指的是詞頻(Term Frequency),IDF是逆文本頻率指數(Inverse Document Frequency)[8]。TF-IDF 是一種基于統計的方法,用來評估一個詞條對于一個文件集的其中一個文件的重要程度。詞條的重要性隨其在文件中出現過的次數成正比增加,但是會隨著其在整個文件集中出現的頻率成反比下降。
對于第j個詞條在第i個文件中的TF 值tfi,j的計算方法如下:

式中ni,j是第j個詞條在第i個文件中的出現次數,∑knk,j是第j個詞條在其他所有文件中出現過的次數總和。
對于第i個文件中的第j個詞條,它的IDF 值計算公式如下:

式中|D| 是在語料庫中的文件總數,{di∈D:tj∈di}是包含詞條tj的文件數目。
TF-IDF 是TF×IDF 的縮寫,如果某個詞條在特定文件內的詞頻率很高,并且該詞條在整個文件集合中的出現頻率很低,就可以使用該詞條產生出高權重的TF-IDF。TF-IDF 會傾向于過濾掉常見詞語而保留重要的詞語。
TF-IDF 算法的結構較為簡潔,容易實現,缺點是沒有考慮詞語的語義信息,無法處理一詞多義與一義多詞的情況,但是在處理Shell 命令特征的過程中有著不錯的效果。
長短期記憶網絡(Long Short Term Memory LSTM)是從循環神經網絡(Recurrent Neural Network,RNN)中發展出來的。RNN 是一種用于處理序列數據的神經網絡。相比一般的神經網絡來說,RNN能夠結合上一時態的輸出和當前時態的輸入進行學習,從而能夠處理序列變化的數據。而LSTM 網絡是一種改進后的RNN 網絡,主要用于處理長時序序列訓練過程中的梯度消失和梯度爆炸等問題。LSTM 有著與RNN 相同的重復模塊鏈的結構[9],但與RNN 相比,LSTM 在單個模塊結構的內部做了一些變化,其網絡結構如圖1、圖2 所示。

圖1 LSTM 鏈式結構

圖2 LSTM 細胞結構
LSTM 網絡通過遺忘門、輸入門和輸出門來控制細胞的狀態變化。在每輪迭代中,首先將上一輪的輸出ht-1和本輪輸入xt經過遺忘門來決定要舍棄的信息。公式為:

第二步是通過輸入門來決定要更新的信息,輸入門中有一個包含激活函數的層,將ht-1和xt通過該層最終得到新的候選細胞信息

然后將遺忘門和輸入門的信息匯總,更新舊細胞信息Ct-1,并通過得到新的細胞信息Ct。

最后將ht-1和xt通過輸出門的激活函數層得到判斷條件,從而決定本輪輸出的細胞狀態特征。


LSTM 的結構設計特點使得它在學習更高級別特征序列中的長程依賴性和時序性有著很大的優勢,可以在前后文之間更好地捕捉語義依賴,提高檢測準確率。
由于目前尚未有組織或機構制作專門針對Shell命令的數據集,因此本實驗采用由AT&T Shanon 實驗室發布的SEA 實驗數據[10]作為基礎數據集,并在此基礎上加以修改作為實驗用數據集。SEA 數據集包含了70 個用戶的命令日志,對每個用戶采集了15000 條命令。本實驗從中隨機選出50 個用戶,將每個用戶的數據按照連續50 個指令一組,劃分為1300 個塊,作為本實驗的基礎數據集,并以此為基礎進行后續的特征提取和訓練過程。
由于SEA 數據集中的命令僅由Shell 命令短語組成,不包含其他參數,因此本實驗選擇使用TFIDF 算法結合SEA 數據集對收集到的反彈Shell 樣本進行分詞并提取特征,提高檢測的準確率。
將反彈Shell 樣本和部分SEA 數據集命令輸入TF-IDF 算法中,提取出的部分特征短語如圖3 所示。

圖3 TF-IDF 特征提取
本實驗將原始SEA 數據集中的數據塊視為正常數據,然后從中隨機抽取一部分數據塊,將其中的部分命令替換為反彈Shell中提取的特征命令記錄。本實驗將這些被修改過的數據塊視為異常數據。正常數據和異常數據的格式如圖4 所示。其中標簽設為1 的是插入了特征命令記錄的異常數據塊,標簽設為0 的是未經修改的正常數據塊。

圖4 數據集格式
本研究在SEA 實驗數據集的基礎上進行了一定改動,并以此為新數據及進行實驗。網絡架構基于LSTM 和TF-IDF 特征提取。本實驗隨機選取了200個不參與訓練的數據塊作為測試集檢測訓練效果,并使用相同的神經網絡和參數另外訓練了一個未經TF-IDF 特征提取的檢測模型作為對比。通過不斷調整參數訓練網絡,實驗結果如表1 所示,對比結果如表2 所示。

表1 實驗結果

表2 未經TF-IDF 特征提取的實驗結果
本次實驗共使用了200 個數據塊作為測試數據,其中正常數據塊128 個,異常數據塊72 個。通過表1 和表2 對比可以看到,該模型準確率超過了98%,誤報率在2%以下。與未經特征提取的模型相比有了較大的提升,展現出了較為出色的預測能力。可見,在是否存在反彈Shell 的二分類問題中,本文所設計的基于TF-IDF 和LSTM 的反彈Shell 檢測方法展現出了較好的檢測能力。
本文設計了一種基于TF-IDF 和LSTM 的針對隱蔽性較高的反彈Shell 檢測方法。LSTM 的結構設計特點使得它較為適合處理時間離散序列數據,并能夠解決序列中的長程依賴性,可以在前后文之間更好地捕捉語義依賴。結合TF-IDF 對樣本進行特征提取,得到了更高質量的特征向量信息,在針對反彈Shell 生成的基于SEA 數據集的訓練數據集中得到了較高的準確率和較低的誤報率,展現出較高的綜合檢測能力,與未經特征提取的檢測結果相比有了較大的提升。下一步的研究目標在于逐步將模型由有監督訓練向無監督訓練轉化,從而將監測范圍拓寬到更多的攻擊場景,這對模型的構建提出了更高的要求。