魏峰, 張馴
(國網甘肅省電力公司, 電力科學研究院,甘肅, 蘭州 730070)
高級持續性威脅(APT)攻擊[1]已經對全球范圍內的重要企業和政府機構造成了重大危害,盡管企業在網絡安全防護領域中的能力有所提高,基于特征碼識別和模式匹配的傳統檢測系統已經可以識別大部分的網絡惡意行為,如端口掃描、分布式拒絕服務攻擊、木馬蠕蟲等,但是對攻擊技術高超、持續時間持久、隱蔽能力極強的APT攻擊的檢測效果卻差強人意,因為黑客往往通過流量加密[2]、DGA生成C&C域名[3]、0day漏洞躲避網絡安防系統的檢測[4]。
針對APT攻擊的檢測與防范,一些全球知名安全公司在對APT攻擊展開持續跟蹤和分析后的報告中指出,雖然在攻擊過程中黑客使用的惡意代碼變化速度快,變異程度高,通過文件特征對其識別十分困難,但是黑客在攻擊成功時操縱受害者與C&C服務器通信卻存在一定特點,黑客為了躲避安防系統中域名黑名單的識別,往往使用域名生成算法動態生成C&C域名。本文針對APT攻擊者使用DGA算法生成C&C域名進行通信的特點,利用長短期記憶網絡對正常域名和惡意域名建模分類,從域名通信這一環節實現對APT攻擊的有效檢測。
在早期僵尸網絡領域中,受害主機通常會使用輪詢的方式去訪問硬編碼的C&C域名與服務器建立通信。但是這種方式并不可靠,安全人員可以通過逆向工程得到C&C域名的編碼,并通過域名黑名單有效地屏蔽惡意連接。APT攻擊者為了避免C&C域名被發現,會使用Domain Flux或者IP Flux技術快速創建大量的域名和地址[5]。Domain Flux通過不斷變換域名,使多個域名指向同一個IP地址;IP Flux不斷變換IP地址,使一個域名使用多個IP地址。域名生成算法是一種利用隨機字符生成C&C域名從而逃避域名黑名單檢測的技術手段。APT攻擊者為了防止自己與受害主機之間的通信被屏蔽,實現持續、隱蔽地竊取數據,也將DGA算法引入進來。
在攻擊者端,黑客使用種子通過DGA生成大量域名,出于經濟利益和偽裝隱蔽的目的,黑客一般會從中隨機選擇少量的域名進行注冊,將注冊的域名指向C&C服務器。在受害者端,使用與攻擊者端相同的種子通過DGA生成大量域名,植入受害計算機中的惡意代碼將通過域名解析系統遍歷查詢,如果查詢的域名未被注冊,惡意代碼將繼續查詢其他域名,直到查詢到已經注冊的域名,使用該域名與C&C服務器建立通信。
DGA可以使用很多類型的數據作為生成域名的種子,包括隨機數、時間、字典、熱門話題字符串等,根據種子可以生成一系列隨機字符串作為二級域名,再添加相應的一級域名就能得到最終的域名。DGA的實現如圖1所示。

圖1 DGA實現示意圖
根據DGA輸入的種子是否依賴于時間,可以將DGA分為2類:依賴于時間的和不依賴于時間的。時間種子可以從受害計算機的系統時間獲取,也可以從網絡數據報文的日期字段中獲取。DGA輸入種子既可以是確定的,也可以是不確定的。大多數DGA的種子都是確定的。種子被安全人員獲得后,安全人員可以利用該種子產生DGA生成的域名,搶先注冊并通過網絡沉洞技術[6]劫持分析APT攻擊的通信。
長短期記憶網絡是一種特殊的循環神經網絡模型,解決了傳統RNN模型中存在的梯度爆炸和消失問題[7]。在傳統的RNN模型中,使用時間反向傳播算法訓練模型,當訓練時間較長時,需要回傳的殘差造成指數下降,導致網絡權重更新緩慢,無法體現RNN的長期記憶的效果,需要一個存儲單元來存儲記憶,因此學者基于RNN提出了LSTM模型。
LSTM引入了門控單元和內部的自循環單元(記憶單元)。長短期記憶網絡單元示意圖如圖2所示,各單元由輸入門、遺忘門和輸出門等3個門控單元以及1個記憶單元組成。LSTM網絡是由一個又一個的LSTM單元構成的,通過門控單元就可以對信息進行添加和刪除。當一個信息通過輸入門進入LSTM單元中,符合一定規則的信息會被留下,反之則通過遺忘門被遺忘,以此來解決傳統神經網絡中長序列的依賴問題。總之,LSTM網絡可以“記住”信息中心比較重要的部分,并且讓此“記憶”保存較長時間。

圖2 LSTM 單元示意圖
本次實驗的數據分為惡意域名樣本和正常域名樣本。惡意樣本通過爬蟲程序對安全公司公布的惡意域名進行定期收集,最終得到70萬余條DGA惡意域名,部分安全公司網址見表1。正常樣本來源于Alexa域名信譽排名的前100萬條記錄。

表1 部分安全公司網址
通過對收集的域名樣本進行正則化、數值化、向量化等操作,統計域名長度分布,刪除不適合訓練模型的域名,并過濾掉域名中的前綴、后綴,最終得到100萬余條域名樣本。為了訓練LSTM模型,需要將域名數據轉換成向量,將域名中字符以獨熱編碼的方式進行轉換。
通過安全公司發布的安全報告,可以為數據集中的全部樣本匹配攻擊類型并打上標簽。經過數據處理后的樣本分布如圖3所示。

圖3 域名樣本統計分布
本文從統計特征、語言特征和結構特征等3個方面來選取了13類特征值,分別為n元模型的1-gram、2-gram、3-gram、4-gram、5-gram的正則化分數;有意義的單詞占比;數字個數占比;元音個數占比;不同數字占比;不同字母占比;域名長度;域名后綴出現的次數、字符變換次數。其中,序號為1~5的特征值屬于統計特征,序號6~10屬于語言特征,第11~13屬于結構特征。
統計特征部分,n-gram的正則化分數計算,是利用文獻[8]中提供的10 000個常用單詞的文件實現的。逐行讀取文件中的單詞,以單詞“security”為例,1-gram將其劃分為s、e、c等8個元組,分別對這8個字母對應字典中的值加一,2-gram將字符串劃分為se、ec、cu等元組以相同的方式檢測并統計,以此類推至5-gram,遍歷文件中所有單詞完成統計處理。用單詞劃分后的字符序列在之前求出的統計字典中找到對應出現的次數,求和并除以“字符數-n+1”作為n-gram正則化分數。
語言特征部分,以域名“123 sport”為例,檢索詞典后發現域名中有意義的單詞為“sport”,則其有意義單詞的占比為單詞的長度除以域名長度,即0.625;不重復的數字有3個,不重復的字母有5個,則數字個數占比與不同數字占比均為0.375;不同字母占比為0.625;元音字母只有1個,則元音個數的占比就是0.125。
結構特征部分,域名長度為8;統計測試集中域名后綴,即頂級域名出現的頻次;域名中字符變換發生在數字1與字母s之間,次數為1。
從數據集中隨機抽取九十萬條惡意域名樣本和九十萬條良性域名樣本(來自Alexa)構建訓練集用來訓練神經網絡模型,另外再抽取十萬條惡意域名樣本和十萬條良性域名樣本構建測試集驗證模型檢測效果,如表2所示。

表2 實驗樣本分布 單位:條
利用Keras框架搭建LSTM神經網絡模型,LSTM神經網絡結構如圖4所示。首先構建一個基本的LSTM網絡模型。嵌入層將編碼后的樣本向量轉化成固定向量,將輸入的字符轉化為128個浮點數的向量進行輸出。LSTM層是模型訓練的核心,可以將其看作是隱式特征提取層,LSTM層的維度大小影響模型對訓練集的學習效果,維度越大對數據的學習能力也就更全面,將LSTM層的維度設置為128。為了防止訓練的神經網絡模型過擬合,使用Dropout層隨機斷開半數比例的神經元連接。全連接層用來實現特征的非線性組合,并將學習到的特征映射到樣本空間。激活層使用S型函數作為激活函數,將輸入的實數轉化到[0,1]之間,實現將權值轉化為二分類結果。

圖4 LSTM模型網絡結構圖
選擇機器學習常用的精確率、召回率和綜合評價指標作為衡量檢測模型性能的評價指標。準確率體現的是預測正確的數據占全部數據的比值。召回率體現的是所有預測為惡意域名的樣本中預測正確的比率。綜合評價指標F1分數則是綜合考慮精確率、召回率后給出的計算結果,能夠綜合地代表和體現模型性能。具體評價參數和評價指標公式如表3和表4所示。

表3 評價參數

表4 評價指標公式
使用訓練好的LSTM模型對測試集中的未知域名進行預測,對LSTM模型性能進行評估,評估結果如表5所示。

表5 模型性能
通過表5可以看出,本文提出的LSTM模型對惡性域名、良性域名均達到較高的準確率和召回率,在實驗中訓練的LSTM模型對惡意域名的檢測具有較好的效果。
根據國內外安全公司對APT攻擊的報告分析,針對APT攻擊中普遍存在與C&C服務器進行通信的特點[9],本文從對C&C服務器通信時使用DGA算法生成的惡意域名的識別出發,將LSTM神經網絡模型引入進來,通過機器學習對惡意域名進行準確、快速的識別。通過識別APT攻擊者為了維持通信而使用DGA算法生成的惡意域名,實現對APT攻擊行為的檢測。
本文的檢測方法也存在許多不足,因為DGA算法生成的惡意域名變化速度很快,本文需要升級爬蟲程序,定期對惡意域名進行收集,不斷對LSTM模型進行更新,才能對不斷變化的APT攻擊實現有效監測。