陳 軍
(武漢數(shù)字工程研究所 武漢 430025)
隨著云技術的不斷發(fā)展,大規(guī)模的業(yè)務與數(shù)據(jù)向云上遷移的同時,針對云主機和云服務的網(wǎng)絡攻擊也日益嚴重[1~2]。眾多安全事件表明,云環(huán)境的安全威脅不容忽視。而防火墻、入侵檢測等傳統(tǒng)安全防御技術防御手段單一,無法及時應對云安全威脅的快速變化?;诰W(wǎng)絡欺騙技術的云主機安全防護方法逐漸成為國內(nèi)外眾多學者的研究重點。
文獻[3]結合Openstack云計算平臺提出一種新型蜜罐系統(tǒng),以解決蜜罐系統(tǒng)存在的性能、安全性和真實性相互制約問題。文獻[4]將開源蜜罐工具Honeyd、Honeywall和Honeycomb部 署 在Openstack中來提高云環(huán)境中的威脅檢測率。文獻[5]在云環(huán)境中使用蜜罐識別和誘捕內(nèi)部入侵,來增強云環(huán)境中的安全性能。文獻[6]采用增強型蜜罐算法對云服務器中的文件進行加密保護,提高了云服務器存儲的安全性。上述研究,蜜罐技術不同于其他安全手段,蜜罐以盡可能多部署在目標系統(tǒng)中來提高捕獲攻擊者行為的可能性,因此在云平臺的環(huán)境下具體表現(xiàn)為消耗虛擬主機資源來部署蜜罐服務[7]。對于小型私有云來說,當所需蜜罐服務種類較多時,存在著平衡資源開銷的需求。
針對上述背景和研究基礎,本文提出了一種基于BERT的云蜜罐服務編排方法,使用BERT模型對捕獲流量進行識別分類,基于蜜罐捕獲數(shù)據(jù)集給出蜜罐與捕獲網(wǎng)路攻擊的關聯(lián)關系,依據(jù)分類結果和關聯(lián)關系編排云上蜜罐占用資源。
BERT模型[8]是一個設計簡單但效果顯著的無監(jiān)督預訓練語言表征模型,其架構如圖1所示。該架構采用Tranformer堆疊,是一個典型的雙向編碼模型,每個時刻t都獲得前后時刻的輸入,同時使用了Transformer的注意力機制。BERT模型采用預訓練模型和微調任務兩部分的實現(xiàn)設計。預訓練模型預先使用大量的數(shù)據(jù)來進行訓練,通過對所有層的左右上下文進行聯(lián)合調節(jié),從未標記的文本中預訓深度雙向表示,得到一個泛化能力較強的基礎模型;遇到特定任務,無需針對特定任務進行大量模型結構的修改,只需額外添加輸出層,可對預訓練模型進行微調,從而為下游任務構建模型。
圖1 BERT模型架構圖
閾值選取的最佳算法。大津法(OTSU)是一種確定二值化分割閾值的算法,在圖像的分割閾值確定上具有性能穩(wěn)定、適應性強的特點[9]。其基本原理是:基于圖像的灰度特性將圖像分為背景和前景兩部分,因方差是灰度分布均勻性的一種度量,背景與前景的類間方差越大,說明構成圖像兩部分的差異越大,當部分前景錯分為背景或部分背景錯分為前景時都會導致兩部分差別變小。因此,類間方差最大的分割閾值意味著錯分概率最小。
本文中基于BERT的云蜜罐服務編排分為3部分:1)基于BERT模型對捕獲流量進行報文分類;2)以軟投票(soft voting)方式分類網(wǎng)絡會話所屬的攻擊類別;3)使用OTSU算法對蜜罐報文數(shù)據(jù)集進行閾值分割,確定網(wǎng)絡攻擊與蜜罐服務對應的編排策略。
報文層面的分類是針對各類協(xié)議報文進行識別,首先需要對報文數(shù)據(jù)進行預處理和量化。深度學習框架采用張量(Tensor)進行運算,要求輸入數(shù)據(jù)保持等長,通常采取填充或截斷操作進行數(shù)據(jù)歸一化??紤]到截斷操作會丟棄數(shù)據(jù)帶來信息損失,對報文采用填充操作理成相同長度,其中以最長報文的字節(jié)數(shù)量作為max_len,將其他樣本填充pad符號到最大字節(jié)數(shù)量,填充后的報文數(shù)據(jù)的形式化表達見式(1)。對輸入數(shù)據(jù)應用卷積操作,本文在填充的基礎上對報文數(shù)據(jù)的形狀進行變化,將報文的序列數(shù)據(jù)轉化為n×n的灰度圖,其中n為max_len的平方根向上取整。
對網(wǎng)絡報文的攻擊類型識別屬于分類任務,使用BERT模型編碼能力對轉換位灰度矩陣的報文進行映射,根據(jù)映射結果對報文進行分類。考慮BERT模型對輸入數(shù)據(jù)的要求,本文在BERT模型的輸入前級聯(lián)卷積神經(jīng)網(wǎng)絡,對填充后的數(shù)據(jù)進行統(tǒng)一特征向量提取。同時在BERT的輸出后級聯(lián)一個由全連接層組成的分類神經(jīng)網(wǎng)絡,基于BERT進行修改的模型結構如圖2所示。
圖2 基于BERT的報文分類模型結構
其中卷積神經(jīng)網(wǎng)絡結構的第一層為卷積層Conv1,使用64個3×3大小的卷積核對輸入數(shù)據(jù)進行卷積,得到64通道的48×48特征圖。在卷積層后接池化層Pool1,使用2×2大小的窗口對輸入的64通道特征圖進行最大池化,輸出64通道的24×24特征圖。池化層后接卷積層Conv2,采用32個5×5大小的卷積核對輸入特征圖進行卷積,得到32通道20×20特征圖像。在Conv2后接池化層Pool2,使用4×4窗口對32通道的20×20特征圖進行最大池化得到32通道的5×5特征圖;在池化層Pool2后接卷積層Conv3,利用128個5×5的卷積核將Pool2的輸出轉化為128×1的張量,同時在Conv3后接拼接層Flat1對Conv3的輸出進行降維,拼接層的輸出將作為BERT模型的輸入。
為了獲取分類結果,本文在BERT的輸出層后級聯(lián)一個由兩層全連接層組成的分類器,分類器由全連接層和soft-max分類器組成。分類器的輸出結果有5類,包含掃描攻擊、DoS攻擊、WebShell攻擊、暴力破解攻擊以及正常會話。在模型訓練過程中,使用交叉熵函數(shù)作為損失函數(shù)對模型進行訓練。
單次網(wǎng)絡會話由一系列有序報文組成,因此在網(wǎng)絡會話分類中,研究解決將一系列單個報文的分類結果轉換為網(wǎng)絡會話類別,受網(wǎng)絡會話長度不同的影響,無法直接使用深度學習模型對會話序列進行分類,根據(jù)上節(jié)分析,本文使用多數(shù)投票算法中的軟投票法來確定會話的類別。
在實際應用投票算法中考慮到WebShell攻擊的特點,一次WebShell攻擊的會話中被判定為帶有攻擊載荷的報文數(shù)量只占少數(shù)部分,如果只保留投票結果中的最高平均概率,會導致只有少量惡意報文的會話類型被錯誤判定為正常會話,而無法啟動蜜罐服務??紤]到上述情況,在本文中選取軟投票中概率較大的前3種結果來啟動云蜜罐服務。
對于制定蜜罐服務編排策略,需要明確基于云環(huán)境的蜜罐系統(tǒng)應當提供的蜜罐服務種類,開源蜜罐項目[12~13]中提供的部分蜜罐服務統(tǒng)計信息見表1。對現(xiàn)有蜜罐軟件的統(tǒng)計分析和實現(xiàn)角度考慮,選擇SSH蜜罐、Web蜜罐、Telnet蜜罐和SQL蜜罐服務作為編排基礎。
表1 部分蜜罐服務類型及說明
蜜罐與流量關聯(lián)關系的分析基于蜜罐捕獲的報文數(shù)據(jù)集進行。數(shù)據(jù)集中包含捕獲的多種攻擊類型的流量。本文中使用IEEE Dataport上公開的蜜罐捕獲數(shù)據(jù)集DWCAIH,該數(shù)據(jù)集內(nèi)包含在HoneySELK環(huán)境中捕獲網(wǎng)絡攻擊報文數(shù)據(jù),數(shù)據(jù)收集 時 間 涉 及2016年、2017年 和2018年。Honeys ELK的開發(fā)目的是在巴西利亞大學電氣工程系的研究實驗室內(nèi)實時控制、捕獲、分析和可視化新的和未知的攻擊[10]。在數(shù)據(jù)集DWCAIH的描述文件中,數(shù)據(jù)集制作者給出了不同蜜罐服務類型和服務所在端口,因此本文對數(shù)據(jù)集DWCAIH按照端口對會話進行提取,獲得會話后利用報文分類模型和頭片機制對會話進行分類,統(tǒng)計結果如圖3所示。
圖3 蜜罐捕獲網(wǎng)絡攻擊數(shù)量分布
報文統(tǒng)計數(shù)據(jù)映射為灰度圖像后,采用自適應算法Otsu獲取分割閾值,對于輸入的灰度圖像,其像素數(shù)為256,灰度級的取值范圍取為[0,255],ni代表灰度級為i的像素點數(shù)量,Pi代表灰度級為i的點出現(xiàn)的頻率,則:
根據(jù)灰度值特征,基于閾值t把圖像中的像素點歸類為背景類和目標類,分別用C0和C1表示。C0中元素灰度值的取值范圍為[0,t]之間,C1中元素灰度值的取值范圍為[t+1,L-1]之間。整幅圖像的灰度均值為
C0和C1的均值為
綜合上述公式可得:
其中,t∈[0,L-1],使類間方差取值最大的t值即為理想分割閾值,得到分割閾值后,對各類蜜罐下的捕獲攻擊類型進行過濾,保留網(wǎng)絡攻擊與蜜罐強相關的一對多映射關系,用于檢測到攻擊時啟動相應蜜罐服務。
映射關系具體如下,掃描攻擊與SSH、Web、Telnet蜜罐服務對應;DoS攻擊與Web、SQL蜜罐服務對應;WebShell攻擊與Web蜜罐服務對應;暴力破解攻擊與SSH、Telnet、SQL蜜罐服務對應。
本文針對云蜜罐服務的編排方法搭建了如圖4所示的蜜罐系統(tǒng)實驗環(huán)境,將蜜罐與云計算環(huán)境結合,引入Openstack環(huán)境作為所有蜜罐底層虛擬化的提供者,便于蜜罐服務的編排。實現(xiàn)環(huán)境在VMware ESXi系統(tǒng)上虛擬私有云Openstack所需的5臺節(jié)點計算機(1臺控制節(jié)點、3臺計算節(jié)點和1臺存儲節(jié)點)。
圖4 面向云平臺蜜罐的系統(tǒng)組成
實驗結果的評價指標主要為各個類別的準確率和可信度,類別準確率和可信度分別按照式(7)、(8)計算。
上式中TPi(True Positive)指的是實際類別為i的樣本中被分類模型正確預測的樣本數(shù)。FNi(False Negative)指的是實際類別為i的樣本文被分類模型誤判為其他類別的樣本數(shù)[14]。FPi(False Positive)指的是實際類別為非i的樣本被分類模型誤判為類別i的樣本數(shù)量。
報文分類模型訓練中使用DWCAIH數(shù)據(jù)集,在單個報文分類結果上使用軟投票計算會話類別,在訓練集和驗證集上的分類結果見表2。
表2 網(wǎng)絡會話分類指標統(tǒng)計
在系統(tǒng)環(huán)境中,隨機選擇DWCAIH數(shù)據(jù)集中報文進行地址映射和重放,使用報文分類模型作為探針,將檢測為攻擊的報文引流至蜜罐。分別在應用本文中提出的編排算法和直接啟用所有蜜罐的條件下,記錄蜜罐在CPU核數(shù)、內(nèi)存等方面的開銷,具體數(shù)據(jù)見表3。在本文實驗中需要注意的地方是,Openstack對于虛擬機CPU、內(nèi)存等開銷的計算以虛擬機的配置為準,而不以虛擬機運行過程中實際使用量來計算,例如設置了CPU為1核、內(nèi)存為2G的虛擬機硬件規(guī)格,當虛擬機啟動時,Openstack管理端查看到的計算資源消耗即規(guī)格所指定資源,而不是虛擬機實際運行時占用。
表3 蜜罐使用的計算資源統(tǒng)計
實驗結果主要分為兩部分,首先是基于BERT的模型對網(wǎng)絡會話分類的準確率平均在89.11%,其中WebShell的準確率對整體準確率影響較大,主要原因在于,數(shù)據(jù)集中包含WebShell腳本的報文較為復雜并且數(shù)量在整體數(shù)據(jù)集中占比小,存在小樣本的問題。在蜜罐使用的計算資源統(tǒng)計中,編排啟動方法無論是在資源消耗量還是時長上均優(yōu)于以全啟動的方式部署蜜罐。
云蜜罐服務技術存在著計算資源消耗大的問題。本文提出了一種基于BERT模型的云蜜罐服務編排方法,主要利用深度學習模型BERT對流量進行分類識別,根據(jù)流量分配結果按需啟動蜜罐主機,以降低云計算資源開銷,并提高云環(huán)境下蜜罐系統(tǒng)的自動化程度。實驗結果表明該方法能夠對捕獲流量進行準確分類,在平均準確率為89.11%的情況下,降低了大量部署蜜罐帶來的資源開銷。