羅 琴,楊 根,劉 智,唐賓徽
(1. 西南石油大學計算機科學學院 成都 610500;2. 四川大學網絡空間安全學院 成都 610044)
近幾年,安全威脅的數量迅速增加,給企業的安全管理帶來了巨大的壓力。當系統受到威脅并做出響應時,所收集的信息對于遭受類似威脅的其他人是有價值的,這使得威脅情報共享成為檢測和防御攻擊的重要手段。因此威脅情報引起了學術界和工業界的廣泛關注, 當前已有針對威脅情報共享機制[1-3]、威脅關聯分析[4]等研究方向的探索。
威脅指標(indicators of compromise, IOC)作為網絡威脅的行為特征描述,不僅包括IP 等靜態信息,還包含惡意軟件運行時的動態特征。因此,通過提取網絡威脅情報中的IOC,結合企業間的信息共享和集體協作,建立一個新的快速檢測和快速反應保護系統,是應對當前日益增加的網絡攻擊的有效手段。
當前針對IOC 自動提取已有大量研究工作,文獻[5-6]通過搭建沙盒模擬真實的網絡環境,收集惡意樣本運行過程中產生的行為信息并進行分析,從而生成IOC。這種方法雖然可靠性高,但危險性也很高,且難以獲取大量IOC 數據。當前IOC 提取領域的研究重點是如何從非結構化文本信息中識別和提取IOC。文獻[7]基于URL 中的詞匯特征構建分類系統,可以用于檢測網絡釣魚和惡意域。文獻[8]將機器學習方法與信息檢索技術相結合,實現黑客論壇中威脅情報的識別和提取。文獻[9]提出通過構建上下文詞庫,采用一種圖挖掘技術自動化識別IOC 的方法iACE。這些方法具有較高的精度和顯著的性能優勢。然而,這些方法的泛化能力較低,過于依賴網絡安全專業詞庫和特征匹配規則庫的手工編制和維護,需要大量的人力物力進行前期準備。為此,文獻[10]提出了一種利用卷積神經網絡實現IOC 的識別系統iGen。文獻[11]在iGen 的基礎上引入BERT 作為詞向量。文獻[12]提出通過語法和語義兩個方面構建分類器實現IOC 識別。這些工作通過訓練神經網絡實現IOC 自動識別,無需依賴人工構造的上下文詞庫,也無需嚴格依賴書寫語句語法的規范性,具有較好的效果。但這些工作忽略了神經網絡依賴大量已標注訓練數據,而IOC 識別領域數據標注成本高的問題。
威脅情報領域與其他領域不同,缺乏公認的數據集。這是因為IOC 數據的標注只能通過安全專家手動完成,標注成本極高。之前的工作大多采用神經網絡作為分類模型,然而由于成本限制,實驗數據集往往較小。如iGen 中采用5 000 個IOC 語句和2 500 個非IOC 語句訓練和測試模型;iACE中采用1 500 個IOC 語句和3 000 個非IOC 語句訓練和測試模型;而在AITI 中,實驗數據集僅包括3 564 個句子。數據標注成本高的問題成為了限制IOC 識別領域發展的重要因素。
主動學習(active learning)[13-14]是指主動選擇最有價值的樣本進行標注,試圖通過最少的樣本訓練出與預期性能相符合的模型。文獻[15]利用SVM模型將樣本到分類超平面的距離作為選點依據,利用置信度減少相似樣本選擇。文獻[16]以模型預測概率的差值作為不確定度量來篩選樣本進行標注。文獻[17]通過結合樣本間最大距離和最小化估計風險篩選樣本實現對惡意代碼的檢測。除此之外,文獻[18-20]提出使用樣本不確定性和樣本相似性來提高主動學習抽樣的有效性。這些方法雖然一定程度上解決了模型迭代時的數據選擇問題,但初始樣本選擇仍具有盲目性。隨機初始化模型或者隨機采樣部分數據進行人工標注來實現模型初始化的方法無法確定初始樣本數量,也無法保證最終效果。以模型分類效果作為迭代終止條件的方法也不能很好的適用于威脅情報領域。
因此,為了解決IOC 識別中所存在的數據標注成本高的問題,本文在IOC 識別領域引入主動學習方法,提出了一種結合主動學習的威脅情報IOC 識別方法ICAL(IOC identification combined with active learning)。首先,針對于傳統主動學習初始樣本選擇具有盲目性的問題,提出了一種基于樣本代表性的初始樣本選擇策略,實現了自動化確定初始樣本集大小和選取范圍。其次,提出對未標注數據進行偽標注從而實現初始樣本集的有效擴展。再次,針對威脅情報領域數據特點,提出通過設置樣本信息熵閾值,有效獲取高不確定性樣本。最后,提出設置樣本更新量閾值作為終止條件,及時停止迭代標注,避免后續低效標注。該方法解決了在標注成本較高的情況下,如何有效實現IOC 識別的難題。
ICAL 整體篩選流程分為6 個步驟,具體框架如圖1 所示。

圖1 ICAL 整體篩選流程
1)對未標注樣本進行密度聚類,得到i個簇和j條噪聲點樣本。所有樣本分為簇中數據集C={C1,C2,···,Ci}和噪聲點數據集N={N1,N2,···,Nj}兩部分。
2) 從C1中隨機篩選一條樣本進行人工標注。同時,根據半監督學習中的聚類假設,聚類簇中樣本具有較高相似度,很大概率有相同的類標簽。由此對C1中所有數據添加相同的偽標注。
3) 將步驟2)重復進行i次,僅標注i條數據,完成對C中所有數據的標注工作。然后將所有已標注樣本加入已標注樣本集L1,所有噪聲點數據都加入未標注樣本集U1。
4) 將已標注樣本集L1作為訓練集,利用隨機森林作為分類器進行模型訓練。并將未標注樣本集U1作為測試集進行分類概率預測。
5) 根據預測結果,基于信息熵進行數據篩選。將篩選出的數據進行人工標注并更新到L1中,構成已標注樣本集L2。同時將數據從U1中移除,構成未標注樣本集U2。
6) 當篩選出的數據量少于數據總量的1%時,標注結束。反之,將已標注樣本集L2作為訓練集,未標注樣本集U2作為測試集,重復步驟4)~6)。
對于傳統主動學習初始樣本選擇具有盲目性的問題,ICAL 提出了一種基于樣本代表性的初始樣本選擇策略,實現了自動化確定初始樣本集大小和選取范圍。同時,提出了通過偽標注實現初始樣本集的有效擴展。基于樣本代表性的初始樣本選擇策略如算法1 所示。


為了從原始數據集中獲取具有代表性的數據作為初始樣本集,首先,ICAL 針對原始樣本集進行密度聚類處理。通過對句向量聚類,相似度高的語句會被聚在一類。然后采用多子類抽樣,從每一類中分別選出一條數據進行標注。多子類抽樣能夠有效確保樣本的差異性和代表性,使人工標注的收益最大化。人工標注完成后,按照同一子類中所有數據標簽相同的原則,對所有子類中的數據實現偽標注,實現初始樣本集的有效擴展。
主動學習中最常用的聚類算法包括K 均值聚類(K-means clustering, K-Means)和基于密度的噪聲空間聚類算法(density-based spatial clustering algorithm with noise, DBSCAN)。
本文選擇DBSCAN 算法作為初始聚類算法,因為與劃分和層次聚類方法不同,DBSCAN 將空間中緊密堆積在一起的點聚集為簇,將單獨位于低密度區域的點標注為異常值。因此DBSCAN 可以發現任意形狀的聚類。與K 均值聚類算法相比,DBSCAN 不需要指定簇的數量,并且對于數據集中的異常點不敏感,更適用于威脅情報領域。
DBSCAN 主要包含掃描半徑(eps)和最小包含點數(MinPts)兩個參數。為了盡量對所有相似數據進行聚類,ICAL 將最小包含點數設為2,這表示對于數據集中的任意一點來說,只要在掃描半徑內存在另一點,那么這些點就會被劃分為一個簇。
DBSCAN 計算對象點的eps 鄰域時,采用的是最近鄰度量策略。而常見的個體差異度量包含兩種,一種是距離度量(歐式距離),另一種是相似度度量(余弦距離)。
本文采用余弦距離作為距離度量。因為相比歐氏距離,余弦距離更加注重兩個向量在方向上的差異,能夠更好地關注于句子的語義差異。余弦距離公式為:

式中,A、B為向量;DC表示A和B之間的余弦距離;SC表示A和B之間的相似度,其中相似度的計算公式為:

式中,Ai和Bi是向量A和B的分量。掃描半徑需要根據數據分布情況來設定,不同的掃描半徑對最終的模型訓練影響較大。
完成未標注數據的聚類后,依次從每個子類中隨機抽取一條數據進行人工標注。同時,依據半監督學習中的聚類假設(cluster assumption):聚類簇中樣本具有較高相似度,很大概率下有相同的類標簽。因此,依據每個子類中已標注的一條數據,就可以對整個子類中的所有數據打上相同的偽標簽。而經過實驗分析,掃描半徑設置為0.03 時,仍能保證聚類簇中標簽的一致性。
通過上述操作,實現了對密度聚類簇中所有數據的標注,剩下的噪聲點數據之間相似度較低,且都未標注。在許多領域中,考慮到實際的計算能力以及效果,大都會對數據進行去噪處理,直接過濾噪聲數據。按照ICAL 所提出的聚類策略對威脅情報數據進行密度聚類時,近50%的數據被劃分為了噪聲點。而噪聲點并非錯誤值,同樣是真實情況的表現,之所以在進行密度聚類時被認為異常,只是因為數據量不夠大。所以本文沒有輕易刪除掉噪聲點數據,而是通過基于樣本不確定性的迭代選擇策略將噪聲點納入模型訓練。
為了從噪聲點數據中進一步篩選出部分數據,ICAL 提出一種基于不確定性的迭代選擇策略。具體流程如算法2 所示。
算法 2 基于樣本不確定性的迭代選擇策略
輸入:已標注樣本集L,未標注樣本集U,初始隨機森林模型R;
輸出:最終已標注樣本集L,最終未標注樣本集U;

式中,pi為每一種可能的情況發生的概率,對數的底數決定了信息熵的單位,一般以2 為底數。變量的不確定性越大,熵也就越大。而信息不確定性越大時,對于模型來說該信息的價值越高。
在選擇迭代數據時,ICAL 優先對未標注數據中信息熵較高的數據進行人工標注。為此,ICAL采用初始樣本進行模型訓練,然后對未標注噪聲數據進行概率預測并計算對應的信息熵值。ICAL 將信息熵閾值設為0.9。熵值大于0.9 的樣本會在進行人工標注后加入已標注樣本集,小于或等于0.9 的樣本仍被保留在未標注樣本集中。
傳統主動學習中,常常以準確率和總體數據量作為迭代終止的判斷指標。在威脅情報領域,由于訓練集和測試集關聯度不高且數據分布不同,隨機森林的分類效果具有很高的隨機性,因此不能將模型準確率作為終止條件。ICAL 中采用篩選出的樣本量作為終止條件,這是因為每次迭代選取的數據量越少,對模型產生的影響也就越小。ICAL 將數據量的閾值設為數據總量的1%,當篩選出的樣本量少于總量的1%,則停止迭代。
ICAL 首先通過多子類抽樣從密度聚類結果中篩選出具有高代表性的數據作為初始樣本進行人工標注。然后通過代表數據的標簽對子類中其他數據進行擴展偽標注。最后通過已標注數據迭代選擇剩余未標注數據中具有高不確定性的數據繼續進行人工標注,直到滿足迭代終止條件后停止。通過這一系列流程成功減少了數據標注量,同時盡可能保留了數據中的重要數據。
目前威脅情報分析領域缺乏標準數據集,為此本文構建了一個用于模型訓練和測試的數據集。表1 中的8 個數據源收集了來自不同安全組織的529 篇安全報告和2 827 篇博客文章。提取文本后,使用NLTK 分句器對文本進行分句處理,然后使用正則表達式匹配出所有包含疑似IOC 結構的句子。

表1 威脅情報數據來源
本文根據當前已知的IOC 類型,從中選取了URL、SHA256、SHA1、EMAIL、IP 和MD5 這6 種常見且較為重要的IOC 結構作為實驗數據集。值得注意的是,本文并沒有將漏洞(common vulnerabilities & exposures, CVE)加入數據集,因為漏洞編號有著獨特的結構,可以直接采用正則匹配進行提取。
通過正則匹配,本文提取出5 500 條疑似IOC 的句子,包含2 461 條IOC 句子和3 039 條非IOC 句子。數據集中不同IOC 結構的數據量如表2所示。

表2 數據集中不同IOC 結構數據分布
實驗在Ubuntu 16.04 的服務器上運行,使用RTX2080Ti GPU。
為了保證結果的可信性,采用十折交叉驗證進行實驗。數據總量5 500 條,劃分為10 份,每份550 條數據。實驗時依次選取九份(4 950 條)作為訓練集,剩余一份(550 條)作為測試集。使得每份數據都能作為測試集,提高實驗結果的可信性。
本文采用了準確率(Accuracy)、召回率(Recall)和AUC 作為評價指標。具體計算方式為:

式中,TP 表示將正類預測為正類的數量;TN 表示將負類預測為負類的數量;FP 表示將負類預測為正類的數量;FN 表示將正類預測為負類的數量。
AUC(area under curve)是ROC 曲 線 的 面 積,越大意味著分類器效果越好。其中ROC(receiver operating characteristic)曲線是以假正率(false positive rate, FPR)和真正率(true positive rate, TPR)為軸的曲線。真正率計算方法為:

代表分類器預測的正類中實際正實例占所有正實例的比例。假正類率計算方法為:

代表分類器預測的正類中實際負實例占所有負實例的比例。
在構建的數據集上分別采用3 種初始數據選擇策略進行實驗,具體實驗結果如下。
1) 隨機采樣策略:由于隨機采樣數量不確定,為了保證對比效果,選取約870 條數據進行人工標注。在后續的迭代標注中,隨機采樣策略從數據中選取了約200 條數據,總共標注約1 078 條數據,標注占比約21.8%。
2) 密度聚類采樣策略:經過密度聚類處理,得到約870 個聚類簇。然后從每個簇中隨機選擇一條數據進行人工標注,得到約870 條標注數據。再運用迭代選擇策略從數據中選取約1 380 條數據,總計標注約2 250 條數據,標注占比約45.5%。
3) ICAL 初始樣本選擇策略:ICAL 所提出的初始樣本選擇策略包含密度聚類和偽標注處理。經過密度聚類處理,標注得到約870 條數據,偽標注后得到約2 500 條已標注數據。然后運用迭代選擇策略從剩余約2 450 條未標注數據中選取約1 230條數據,總計標注約2 100 條數據,標注占比約42%。經過偽標注處理,總計得到3 780 條已標注數據。
使用3 種初始數據選擇策略所篩選出的數據分別進行實驗,實驗結果如表3 所示。ICAL 的初始選擇策略在準確率和召回率上都取得了最好的效果。以準確率為例,ICAL 比只采用密度聚類選擇數據的效果高0.5%,比傳統的隨機采樣策略高4.5%。這是因為密度聚類策略是先進行密度聚類,再從每一個聚類簇中選擇一條數據進行人工標注。與隨機選擇的數據相比,經過密度聚類篩選的數據更加具有代表性;在訓練隨機森林模型時,模型分類準確率也更高;在后續迭代選擇時,密度聚類策略也能夠更加準確的從未標注數據中迭代選擇出具有高不確定性的數據。

表3 不同初始樣本選擇策略實驗結果對比
ICAL 通過密度聚類策略實現了自動化確定初始樣本集,有效解決了初始樣本選擇具有盲目性的問題。在此基礎上,通過偽標注策略實現了初始樣本擴展,能夠通過增加訓練數據量的方式加強模型訓練效果。而且由于聚類方式的獨特性,基本不會出現錯誤標注。
3.2.1 模型分類效果對比
經過ICAL 篩選,累計從數據集中選擇出42%的數據進行人工標注。為了驗證該方法的有效性,本文以全量數據為基準,采用ICAL 和隨機采樣的方法分別選取42%的數據進行實驗。3 種數據選擇方法的實驗結果如圖2 所示。

圖2 不同數據處理方法實驗結果對比
從圖2 中可以看出,與全量數據相比,ICAL減少了58%的數據標注量,模型準確率達到94.2%,取得較好效果。由此說明ICAL 能夠在降低58%的數據標注工作量的情況下,達到與全量數據相近的模型分類效果。同樣選取42%的數據時,ICAL 比隨機采樣的準確率高1.82%,驗證了ICAL 數據選擇的有效性。由此說明在獲取相同量數據時,ICAL 所選取數據的模型分類效果優于隨機抽取。
為了進一步驗證ICAL 的效果,本文繼續隨機抽取更多數據來對比分類效果。從40%的數據開始,每次增加10%的數據,多次進行實驗后,實驗結果如圖3 所示。

圖3 隨機抽取不同數據量的實驗結果對比
圖中,虛線為ICAL 選取42%的數據的實驗結果。隨著隨機抽取數據量的不斷增加,模型分類效果也在不斷加強。在抽取數量達到90%時,準確率接近于ICAL 抽取42%數據的準確率。由此說明與隨機抽取相比較,ICAL 能夠從未標注數據中篩選出對模型訓練較為重要的數據。
3.2.2 模型訓練成本對比
與常用的IOC 識別模型訓練策略相比,ICAL在相近的模型分類效果下,減少了58%的數據標注工作量,降低了模型訓練成本。同時,由于模型訓練數據量減少,模型訓練時間同樣減少。如表4所示,經過ICAL 處理,從全量數據中標注得到約3 780 條數據,與全量數據相比,模型訓練時間減少23%。ICAL 在模型訓練時間成本上也具有優越性。

表4 ICAL 與全量數據模型訓練時間對比
為了驗證ICAL 主動學習策略的適用性,本文選取了自然語言處理領域的幾種流行方法:CNN(convolutional neural network)、 LSTM(long short-term memory)、 ATT(attention mechanism)、RCNN(regions with CNN features)和CNNPLUS 分別進行實驗。首先采用構建的全量數據集進行實驗,實驗結果如表5 所示。在構建的數據集中,CNNPLUS 的準確率達到94.6%,召回率達到94.5%,AUC 得分達到0.945,優于上述所有模型的結果,具有最好的分類性能。在采用Bert 作為詞嵌入模型的情況下,總體來說,各個模型的分類效果差距不大,分類效果最好的CNNPLUS 和最差的LSTM 也只相差了0.5%。

表5 全量數據集下不同模型結果對比
從原始數據集中通過ICAL 策略篩選出部分數據后,再次進行實驗,實驗結果如表6 所示。

表6 ICAL 數據篩選后不同模型結果對比
經過主動學習選擇標注,數據量減少了58%左右,模型分類效果也出現了一定程度的下降。以準確率為例,除了LSTM 下降較多,達到了1.2%,其他的幾個分類模型都只有輕微下降,降幅在0.3%~0.5%左右。在全量數據中取得了最佳分類效果的CNNPLUS 在新數據集上表現同樣優秀,準確率僅下降了0.4%,達到了94.2%,召回率僅下降了0.4%,達到了94.1%。這在一定程度上說明ICAL 在不同的分類模型下都是有效的,能夠在減少數據標注量的情況下保證模型的效果。
為解決IOC 識別領域數據標注成本高的問題,本文提出了一種結合主動學習的IOC 識別方法ICAL。該方法在威脅情報領域引入主動學習,并通過改進主動學習減少了IOC 自動化識別中58%的人工標注工作量。ICAL 在后續可以繼續嘗試其他主動學習策略,探究不同的主動學習策略在IOC 識別領域的適用性。