張 奕,鄒福泰
(上海交通大學 網絡空間安全學院,上海 200240)
盡管互聯網在不斷發展和改善,但是利用互聯網的服務和協議進行惡意活動的行為仍然屢見不鮮。域名系統(Domain Name System,DNS)是互聯網的基礎核心服務之一,主要提供IP地址和域名之間的映射,通俗講是將人類易記憶的域名翻譯為機器易于識別的IP地址。DNS本身是一個完全開放的協作體系,所以域名是各種網絡惡意行為(如垃圾郵件、惡意軟件、釣魚網站和僵尸網絡等)中使用的主要攻擊媒介。為了有效打擊網絡攻擊者,必須有效檢測發現惡意域名并加以阻攔。
2016年6月,日本大型旅行社JTB由于員工打開附帶惡意域名連接的郵件而遭到非法網絡入侵,造成將近800萬客戶資料外泄,包括姓名、地址及護照號碼等。2019年8月,沉寂近3個月的Emotet服務器再次被喚醒,網絡攻擊者建立了新的傳播渠道,利用來自385個頂級域名的3萬多個域名發送了垃圾電子郵件,感染美國多個州和地方政府[1]。中國國家計算機網絡應急技術處理協調中心發布的《2019年上半年我國互聯網網絡安全態勢》指出,2019年上半年CNCERT自主檢測發現約4.6萬個針對我國境內網站的仿冒頁面,此外CNCERT監測發現惡意電子郵件數量超過5 600萬封,涉及惡意郵件附件37萬余個,平均每個惡意電子郵件附件傳播次數約151次。大部分的惡意行為都與域名系統息息相關,對惡意域名檢測的需求日益增長。
近年來,隨著計算機設備的計算能力和效率的不斷提升,知識圖譜和人工智能技術的發展在網絡安全相關領域得到了越來越廣泛的應用。但是,目前域名檢測的主要手段還是基于傳統的檢測方式,此類方法存在更新維護及時性差且開銷大的缺陷。因此,為了解決上述問題,本文建立了一個基于知識圖譜的惡意域名檢測系統,主要貢獻如下:
(1)首次將知識圖譜與DNS日志相結合,提出了一種將DNS日志信息轉化為知識圖譜知識存儲與知識表示的方法。
(2)提出使用基于深度學習模型將知識圖譜中的屬性三元組向量化,完成知識圖譜嵌入,并基于此使用神經網絡模型進行進一步特征提取。
(3)實現基于知識圖譜的惡意域名檢測原型系統,采用合理指標進行性能評估實驗。實驗研究表明,本文提出的惡意域名檢測系統具有較高的準確性和適用性。
目前,最傳統的惡意域名檢測方法是通過黑名單的方式,但是該方法存在更新維護開銷極大的缺陷。由于一些域名快速生成技術(如Fast-Flux、Domain-Flux、Double-Flux等)的興起,靜態檢測即黑名單方式越來越不可行。
針對這些轉換技術,之后的系統[2-5]主要采用基于功能的方法。這些研究在一定層面上取得了極好效果,但是仍然存在一些潛在問題。這些檢測系統大量運用一些人工選擇的統計特征(如不同的IP的地址數,TTL的標準偏差等),使得檢測系統易被攻擊者規避。
此外,文獻[6]提出了一種用于發現將來可能會被濫用的惡意域名的系統,系統的關鍵思想是利用域名的時間變化模式,通過讀取DNS日志并分析域名的事件變化模式,從而預測給定的域名是否將用于惡意目的。很大一部分的惡意軟件都使用域生成算法(Domain Generation Algorithm,DGA)生成大量偽隨機域名,以連接到命令和控制服務器。文獻[7]提出了一種DGA分類器,利用長短期記憶(Long Short Term Memory,LSTM)網絡預測DGA及其各自的家族,而無需先驗特征提取。文獻[8]將重點放在基于每個域的檢測(和生成)域上,利用生成對抗網絡的概念構建基于深度學習的DGA,生成器學習生成越來越難以檢測的域名;反過來,檢測器模型更新參數,以補償對抗生成的域從而達到收斂。然而,此類檢測方法所用的信息主要為域名本身,其他相關信息使用較少,使得大量信息未被開發。
基于網絡結構的惡意域名檢測通過將DNS相關數據建模為圖形進行進一步分析。文獻[9]中,通過分析與頂點區域的偏差和不同頂點域之間的相關性來確定一組獨特的特征,以獨特地描述圖形區域。在這些功能基礎上,訓練分類器將其應用到大型開放式安全掃描服務VirusTotal中。然而,在上述網絡方法的限制下,幾乎所有這些研究人員都將DNS相關數據建模為客戶端域雙向圖[10]或域-IP雙邊圖[11]。在這種情況下,它們最多只能代表兩種類型的實體,大量其他關系仍未被挖掘。
不同于上述已有工作,本文結合DNS日志信息,將DNS響應記錄和DNS權威相應資源記錄,利用知識圖譜進行知識表示,并完成其向量化的工作,基于神經網絡模型實現對惡意域名的檢測。
知識圖譜于20世紀中葉被普萊斯等人提出。1977年,知識工程的概念亮相于第五屆人工智能大會,以專家系統為代表的知識庫系統開始被研究。直到2012年,谷歌[12]正式提出知識圖譜的概念,并將其應用于搜索業務。知識圖譜是一種用圖模型來描述知識和建模世界萬物之間的關聯關系的技術方法[12]。
2.1.1 知識表示
知識表示主要研究如何利用計算機符號來表示人腦中的知識。三元組是最常用的一種表示方法,即G=(E,R,S),其中E是知識圖譜的實體集合,R是知識圖譜中的關系集合,S ?E×R×E 代表知識圖譜中的三元組集合。三元組集合的表現形式包括頭實體、尾實體、邊關系、屬性和屬性值等。雖然通過這樣的離散的符號化表達方式可以有效將數據結構化,但是這些符號并不能在計算機中表達對應的語義信息并進行計算。
為了解決上述問題,知識圖譜研究者在詞向量的啟發下,將知識圖譜中實體和關系映射到連續的向量空間。知識圖譜的嵌入也是通過人工智能的模型進行學習,但是該方法的訓練需要監督學習。如圖1所示,在知識圖譜嵌入的學習過程中,模型將三元組轉化為同一維度的向量。

圖1 語義信息嵌入知識圖譜的向量表示方法
2.1.2 知識圖譜嵌入的主要方法
多數知識圖譜以所有已知的三元組進行模型訓練,但是這樣的任務難以滿足所有的應用,所以當前的研究開始關注知識圖譜中額外信息的嵌入,如屬性值、實體類型及關系路徑等。
目前,知識圖譜嵌入的方法主要分為3類——轉移距離模型、語義匹配模型和考慮附加信息的模型。其中,以TransE模型[13]為代表的轉移距離模型的應用最廣泛。
TransE作為知識圖譜嵌入的主要手段,完成了實體與關系的向量化,也為本文的嵌入模型提供了基礎支撐。
雙向長短期記憶網絡由前向LSTM與后向LSTM組合而成。一個前向的LSTM利用過去的信息,一個后向的LSTM利用未來的信息。在當前時刻下,可以同時利用雙向的信息,所以會比單向LSTM的預測更加準確。
BiLSTM的結構如圖2所示,每個節點為LSTM神經元。訓練過程中,將每個訓練序列分為前向和后向兩個獨立的遞歸神經網絡,并最終連接同個輸出層。
本文系統通過搭建知識圖譜嵌入模型,通過神經網絡進行分類,最終實現惡意域名檢測的功能。系統框架圖如圖3所示,首先對DNS日志信息進行預處理,獲取所需的統計特征后,提取出對應的實體、關系以及屬性存入知識圖譜。其次,將知識圖譜中的存儲實體通過設計的嵌入模型完成數據向量化表示。最后,基于嵌入模型的輸出,利用神經網絡模型進行訓練和驗證。下面將詳細講解系統的各個模塊。

圖2 雙向LSTM結構

圖3 系統框架
本文的原始研究數據集為DNS日志,包括DNS響應記錄和DNS權威相應資源記錄。本模塊將日志中的數據與知識圖譜中的實體、關系以及屬性相轉換。
主要的轉換實體如圖4所示。客戶端IP為請求發起方,DNS請求實體主要包含屬性如表1所示,DNS應答實體主要包含屬性如表2所示。

圖4 主要轉換實體

表1 DNS請求實體屬性

表2 DNS應答實體屬性
除了上述表1和表2中的屬性外,通過處理數據提取了頻率、存活時間等統計特征作為實體屬性,之后將處理完的數據存入知識圖譜數據庫中,為嵌入模塊提供數據支撐。
本文使用的嵌入模型不單單對于實體和關系進行嵌入,也包含了對于屬性值的嵌入。嵌入模型主要由兩部分組成,一部分為三元組的嵌入,另一部分為實體屬性的嵌入,如圖5所示。

圖5 嵌入模型
為了使得屬性嵌入與三元組嵌入的結果處于一個統一的向量空間,系統會同時訓練這兩個模塊,其中三元組嵌入使用TransE來進行實體對其的嵌入。TransE是基于實體和關系的分布式向量表示,模型受word2vec啟發,利用了詞向量的平移不變現象。其中,定義一個距離函數d(h+r,t),用來衡量h+r和t之間的距離,在實際應用中可以使用L1或L2范數。在模型訓練過程中采用最大間隔方法,最小化目標函數,目標函數如下:

其中,S為三元組集合;S′為負采樣的三元組,通常隨機生成;γ為取值大于0的間隔距離參數。梯度更新只需計算距離 d(h+r,t)和 d(h′+r′,t′)。
對于屬性嵌入,同樣借鑒上述模型的思想,但是差別在于將屬性作為三元組中的關系以及將屬性值作為三元組中的尾實體進行訓練。由于在這個基礎上的訓練的最終結果會導致屬性值類似于實體的情況存在,為了避免某些含義不同的相同值被重復訓練,如AA的屬性值為1、TC的屬性值同樣為1,如果同時訓練兩者會導致最終的訓練結果指向同一個屬性值1,但在含義上兩者是不同的,所以系統對屬性值進行了區分。
本系統的神經模型網絡模型如圖6所示。

圖6 神經網絡模型
嵌入模型完成了輸入的向量化過程,所以神經網絡模型主要用于分類,模型的輸入為實體、關系以及屬性值的序列化向量。考慮到長度不一的問題,這里對于數據進行分析,選取合適的長度對過長的序列進行截取,對過短的序列進行補長處理。
本模型選用BiLSTM雙向長短期記憶網絡的優點在于能夠學習序列中向量的上下文關系,同時包括前向的向量和后向的向量,從而更好地提取特征進行分類。
本文實驗基于ubuntu16的系統,訓練用顯卡為Nvidia 1080Ti,使用基于Keras的主流深度學習框架進行訓練。
本文使用的數據集為某網絡中心抓取的7日DNS日志信息鏡像信息,約有42億條數據。為了從中獲取有效的訓練數據集,構建了一個程序對其進行過濾。在過濾掉一部分無用日志信息后,基于原有的惡意域名黑名單采集負面樣本(黑名單上的惡意域名通過VitusTotal進行驗證),而對于正面樣本選取Alexa前1 000的域名作為篩選標準。然而,在這種情況下,正面樣本和負面樣本的比例極度不均衡,負面樣本的比例較少,最后通過隨機選取正面樣本的方式保持數據集的正負樣本比例為1:1。
正負樣本的個數都為6 180個,通過將正負樣本轉化為知識圖譜中的實體、屬性值和關系后,可以獲取28 950個實體以及屬性值實體和39種關系。這里將屬性值同樣看為實體是基于嵌入模型,因為在訓練過程中屬性值與實體是等價的。
本系統的主要模型表現為最終的檢測結果,所以主要選取準確率和F1-Score,計算方式如下:

其中TP是將正類預測為正類的數量,TN是將負類預測為負類的數量,FP是將負類預測為正類的數量,FN為將正類預測為負類的數量。
本系統的最終目標為檢測出惡意域名。為了更好地比較檢測結果,對使用RNN模型、LSTM模型以及BiLSTM模型的檢測模型分別進行實驗觀測,綜合比較其優劣。
對于數據集,采用8:2的比例重新劃分訓練集和測試集。通過嵌入模型,所有的實體、屬性值以及關系已經轉換為100維向量。同時,綜合比較訓練集中的序列長度,選取的序列長度為68。對于長度不足的序列,通過補零向量補至長度為68;對于長度過長的序列則進行截取。
表3顯示了各模型在不同訓練迭代時的準確率,這里的F1值基于正面樣本。實驗整體采用消融分析的方式,將模型的batchsize設置為64。通過實驗發現,當epoch選為20時,模型已經基本收斂,模型的分類效果已經達到全局最優。
從表3可以看出,對于3種不同的神經網絡分類模型,無論是ACC值還是F1-Score值,BiLSTM明顯優于另外兩種,而LSTM相較于RNN也更優。在訓練集上,模型的準確率最高可達99.31%,F1-Score最高可達99.32%。
綜上,在進行惡意域名檢測時,BiLSTM效果良好,原因可能在于輸入序列在前后文的內容上存在較強的關聯性,同時驗證了本系統嵌入模型的優越性。

表3 不同模型的實驗結果
本文提出了一個高準確率的基于知識圖譜的惡意域名檢測系統,使用知識圖譜嵌入模型和BiLSTM深度神經網絡等技術,從DNS日志中整合有效信息,深度提取信息特征,最終完成惡意域名的檢測分類。實驗證明,該系統檢測性能良好,相較其他模型有較高的準確率。然而,系統仍有部分不足,后續工作將主要針對系統的泛化能力和對一些額外統計特征的研究進一步提高對惡意域名的檢測能力。