深度分享|關於惡意軟體加密流量檢測的思考

綠盟科技發表於2021-01-19

摘要

近年來,隨著人們網路安全意識的提升,對於資料保護的意識也越來越強,促使加密技術在網際網路上迅速普及。TLS作為資料包加密的標準協議,被多數網站用來保護使用者的訊息、交易和憑證,但是,越來越多的惡意軟體也利用TLS加密來隱藏其通訊,以繞過傳統的檢測裝置或平臺。本文主要圍繞惡意軟體檢測的關鍵問題進行探討。

一、前言

網際網路現在已經成為我們生活中不可或缺的一部分,如何保證使用者的敏感資訊及隱私在網路空間中的安全性成為至關重要的問題。大多數網際網路通訊都使用TLS加密,但並不能保證絕對的安全,惡意軟體也會使用TLS和服務端通訊,比如接收服務端指令或傳送從被感染主機上收集的敏感資料。隨著TLS的使用越來越普遍、有效證書的獲取越來越廉價和容易,使用TLS的惡意軟體也會越來越多,所以檢測出惡意軟體的TLS加密通訊流量是非常必要的。

透過解密TLS資料包載荷來檢測惡意軟體通訊的方法有很多缺點,本文關注資料包的後設資料等特徵而非內容來避免解密檢測的弊端,文中首先列舉了一些惡意軟體TLS流和良性TLS流的區別,然後從資料、特徵、檢測等方面丟擲了惡意軟體通訊流量檢測的關鍵問題並給出相關建議。

二、惡意軟體特徵

特徵的選擇必須由觀察到的惡意流和良性流的明顯差異而定,如果兩個資料集一開始就非常相似,那麼嘗試對其進行分類肯定是徒勞的。透過研究資料之間的具有區分度的特徵,可以驗證惡意流和良性流確實是可分離的,並且對特徵的構建和選擇也具有一定指導意義。

帝國理工大學的Olivier Roques公開的報告[1]中對資料集[2]的特徵分佈進行了分析,該資料集包含一萬多條惡意流和兩萬多條良性流,良性流量資料主要來自2019年5月到6月Lastline的企業辦公網路環境,惡意流量資料主要來自公開資料集mta[3]和Stratosphere[4],時間跨度較長,從2016年到2019年。本節從後設資料、TLS引數、證書三個方面列舉了惡意軟體TLS流和良性TLS流的一些差異。

1、後設資料差異

(1)源埠:預設情況下,作業系統隨機分配的埠範圍是49152-65535,但是一些惡意軟體不向作業系統請求源埠,而是使用自定義埠,這使其在普通連線中突顯出來。如圖1所示,橫座標表示源埠是否為系統隨機分配的埠,縱座標表示在惡意流和良性流中各自的佔比。

深度分享|關於惡意軟體加密流量檢測的思考

圖1 源埠特徵分佈

(2)目的埠:預設情況下,合法的伺服器在特定的埠上如443、465、853、992等監聽TLS相關的資料包,除了惡意軟體,客戶端沒有理由發起TLS會話到其他埠,但一些惡意軟體作者可能只想使用加密,並不關心應該使用哪個埠,所以使用其他埠提供TLS服務,這使其很容易被檢測。如圖2所示,橫座標表示目的埠是否為TLS常用的目的埠,縱座標表示在惡意流和良性流中各自的佔比。

深度分享|關於惡意軟體加密流量檢測的思考

圖2 目的埠特徵分佈

(3)位元組熵:熵值的大小通常取決於加密的強弱,一般認為惡意軟體流可能由於忽略資料包的加密而具有較小的熵值,但實際情況恰恰相反,良性流具有較小的熵值,如圖3所示,橫座標表示惡意流和良性流,縱座標表示平均位元組熵的值。推測這與良性流的持續時間較短有關,因為TLS流中握手部分未加密並且佔良性TLS流的很大一部分,所以降低了最終的平均位元組熵。

深度分享|關於惡意軟體加密流量檢測的思考

圖3 位元組熵特徵分佈

(4)流的持續時間:如圖4所示,橫座標表示惡意流和良性流,縱座標表示流的持續時間,惡意軟體通訊的平均持續時間要比良性流量更長,這是由於Lastline的員工通常使用TLS來載入網頁和下載小的資源,所以會導致較短的TLS會話,而惡意軟體可能傾向於傳送和接收大量的資料。

深度分享|關於惡意軟體加密流量檢測的思考

圖4 流的持續時間特徵分佈

2、TLS引數差異

(1)TLS客戶端提供的密碼套件:如圖5所示,橫座標表示TLS密碼套件的程式碼,縱座標表示在惡意流和良性流中各個密碼套件的佔比。有些密碼套件完全被惡意軟體忽略,而有些則不成比例地受到青睞,比如藍色框中的兩個TLS密碼套件因為比較安全所以良性流用的較多,而紅色框中的兩個密碼套件由於使用了過時的RC4演算法而被良性流認為是不安全的,惡意軟體使用得卻較多,這可能歸因於惡意軟體作者缺乏選擇密碼套件強度或更新密碼套件的意識,或者只要內容加密而並不關注演算法的選擇。

深度分享|關於惡意軟體加密流量檢測的思考

圖5 客戶端提供的密碼套件特徵分佈

(2)TLS客戶端提供的擴充套件:如圖6所示,橫座標表示TLS擴充套件的程式碼,縱座標表示在惡意流和良性流中各個擴充套件的佔比。比起惡意流,良性流傾向於提供更多的擴充套件,且藍色框中的這幾個擴充套件幾乎沒有被惡意軟體使用。

深度分享|關於惡意軟體加密流量檢測的思考

圖6 客戶端提供的擴充套件特徵分佈

3、證書差異

(1)證書是否自簽名:如圖7所示,橫座標表示證書是否自簽名,縱座標表示在惡意流和良性流中各自的佔比。正如預期的那樣,惡意軟體往往更多地依賴於自簽名證書。

深度分享|關於惡意軟體加密流量檢測的思考

圖7 證書是否自簽名特徵分佈

(2)證書包含域名的數量:如圖7所示,橫座標表示證書包含域名的數量,縱座標表示在惡意流和良性流中各個數量的佔比。相比於惡意流,良性流證書包含的域名會比較少,一種可能的解釋是由於合法證書比較貴所以公司會把多個域名放到同一個證書中。

深度分享|關於惡意軟體加密流量檢測的思考

圖8 證書包含域名的數量特徵分佈

三、相關問題

透過對惡意軟體通訊流量檢測的探索和研究,可以從以下幾個方面對相關問題進行探討。

1、資料的採集

分類器的效能在很大程度上取決於訓練資料集的質量,從上文也可以看出很多特徵取決於資料集獲取的方式或環境,所以我們需要構建一個儘可能反映現網流量的資料集。關於資料集,筆者認為分類器在實際場景中的使用主要受到以下兩個因素的影響。

(1)網路環境

一般來說,不同網路環境下惡意流量是相似的,而良性流量受網路環境影響較大,會隨著作業系統、瀏覽器、業務場景等的不同而產生較大變化,比如學校、家庭和不同企業產生的流量是不一樣的。

模型在不同網路環境中遷移時,為了減少誤報,可能需要為不同環境重新構造良性資料集,而良性資料也是比較容易收集的。

(2)時間

相比良性流量,時間的偏差對惡意流量的影響更大一些,收集到的資料會受到概念漂移的影響,這意味著資料會隨著時間的推移而過時,惡意軟體不斷最佳化更新、新的惡意軟體被引入、使用者習慣產生變化等,訓練好的模型的可用性在時間上是有限的,很可能只在近期有效。

資料在時間上的偏差並非無解。一方面,為了避免時間偏差的影響,我們應該收集來自同一時期的惡意資料和良性資料,保證分類器學到的是黑白資料的特徵而非不同時間流量的差異。另一方面,為了使分類器對時間衰減具有魯棒性,我們需要及時關注新的惡意軟體保持惡意資料集的更新,或者結合概念漂移樣本檢測等方法,使分類器能夠檢測到新的威脅。

2、特徵的構建和選擇

特徵工程是將原始資料轉變為模型訓練資料的過程,好的特徵工程能使模型效能得到提升,有時甚至在簡單的模型上也能取得不錯的效果。特徵工程一般包括特徵構建、特徵提取和特徵選擇三個部分,筆者對惡意軟體流量檢測中特徵構建和特徵選擇的相關問題進行了簡述。

(1)特徵構建

TLS引數比如密碼套件或擴充套件等都是可以設定的,一些攻擊者也會根據合法流量中廣泛使用的引數不斷更新惡意軟體,再比如是否自簽名、有效期等證書引數也有方式修改,所以這些特徵很容易受到資料集或時間的影響。

相比於這些容易被改變的特徵,資料流的位元組數、包數、位元組分佈等元特徵並不受到攻擊者的直接控制,很難被篡改,也就更具有區分度,魯棒性也更強,可以儘量發現並使用這類特徵。更重要的是,為了防止攻擊者修改引數使分類器無法區分,我們有必要對分類器使用的特徵進行保密。

(2)特徵選擇

一般來說,有效特徵越多,檢測效果就越好,為了提升分類器的魯棒性,可以考慮除TLS流之外的其他流特徵,比如結合TLS握手之前進行的DNS查詢或者相同源IP的HTTP流提取更多特徵。

然而,隨著特徵的增多,分類器對時間和空間的消耗也就越多,在不可兼得的情況下,需要根據實際情況在精度和資源消耗之間取一個平衡點,適時對特徵集進行精簡或擴充。

3、模型的選擇

資料和特徵決定了機器學習模型效能的上限,而模型和演算法只是逼近這個上限而已。常見做法是在同一資料集上對不同的模型進行對比,根據在測試集上的檢測結果選擇最優的模型,雖然結果有好有壞,但實際上大多數符合應用場景的模型之間結果相差並不是很大。所以筆者認為選擇合適的模型、對模型的引數進行選擇和調優是非常重要的,但對檢測結果並不是決定性的。

4、召回率與誤報率的平衡

具有較好的召回率固然重要,但誤報的數量是判定檢測系統是否可用的一個很關鍵的因素。在大流量場景下,即使較低的誤報率也可能產生大量的誤報,不論召回率如何,這些假陽性都將佔用運營人員的精力和時間,從而成為管理負擔,甚至合法的告警都可能被忽略。所以要根據實際需求對召回率和誤報率做一個很好的平衡或控制。

5、現網環境中的誤報

模型在現網環境中使用時產生誤報的原因比較複雜,在訓練集上的過擬合或欠擬合都有可能造成誤報,除了在上述資料採集和特徵工程等方面需要重點關注之外,也可以透過一些其他方法緩解誤報問題。首先,在策略層面進行調整,比如透過提高閾值的方法來保證更高的準確率,從而減少誤報;其次,加入專家知識和經驗,比如可以定期對模型輸出結果進行二次分析或後處理,校正模型輸出結果從而減少誤報;最後,單獨使用分類器難免會產生誤報,我們可以將它和其他檢測器或方法結合起來,比如結合DGA檢測器或JA3方法減少誤報,也可以結合主動探測技術發現網路環境中的威脅。

四、小結

本文列舉了一些惡意軟體和良性TLS流的區別,並就惡意軟體通訊流量檢測的關鍵問題進行了探討,實踐表明,利用具有區分度的特徵構建的模型在一段時間內能夠有效地從TLS加密流中檢測出惡意流。當然,隨著攻擊者技術的提升,惡意軟體也越來越隱匿,唯有不斷探索和研究新的特徵和方法,才能更好的應對網路流量中日益複雜的攻擊。

參考文獻

[1] https://github.com/ojroques/tls-malware-detection

[2] https://drive.google.com/drive/folders/1TfRz6q65wPaiuB4D9qmyfCxoJ8zEBUQY

[3] Brad Duncan. malware-traffic-analysis. URL: https://www.malware-trafficanalysis.net/

[4] Stratosphere IPS. Malware Capture Facility Project. URL: https://www.stratosphereips.org/datasets-malware

相關文章