不解密識(shí)別惡意流量
簡(jiǎn)介
在過(guò)去的兩年中,我們一直在系統(tǒng)的收集和分析惡意軟件生成的數(shù)據(jù)包捕獲。在此期間,我們觀察到,有一種惡意軟件是使用基于TLS的加密來(lái)逃避檢測(cè),而這種惡意軟件的樣本百分比正在穩(wěn)步增加。2015年8月,2.21%的惡意軟件樣本使用TLS,而到了2017年5月,數(shù)據(jù)增加到21.44%。在同一時(shí)間段內(nèi),使用TLS但是沒(méi)有和HTTP進(jìn)行未加密連接的惡意軟件,從0.12%增加到4.45%。
識(shí)別加密網(wǎng)絡(luò)流量中包含的威脅會(huì)帶來(lái)一系列獨(dú)特的挑戰(zhàn)。監(jiān)控這些流量,使他們不受惡意軟件威脅和侵害是非常重要的,這樣做也是為了維護(hù)用戶(hù)的隱私。由于在TLS會(huì)話(huà)時(shí),模式匹配效果較差,因此我們需要開(kāi)發(fā)一種新方法,即能夠準(zhǔn)確檢測(cè)惡意軟件的通信。為此,我們利用使用流的各個(gè)數(shù)據(jù)包長(zhǎng)度,以及到達(dá)時(shí)間間隔來(lái)了解傳輸數(shù)據(jù)的行為特征,并使用ClientHello中包含的TLS元數(shù)據(jù),來(lái)理解傳輸數(shù)據(jù)的TLS客戶(hù)端。 我們將這兩種視圖結(jié)合在一個(gè)受監(jiān)督的機(jī)器學(xué)習(xí)框架中,這樣我們便能夠在TLS通信中檢測(cè)已知和未知的威脅。
為了更直觀的了解,圖1提供了TLS會(huì)話(huà)的簡(jiǎn)化視圖。在TLS 1.2中,大多數(shù)有趣的TLS握手消息都未加密,在圖1中我們用紅色標(biāo)記。我們用于分類(lèi)的所有TLS特定信息都來(lái)自ClientHello,它也可以在TLS 1.3中訪問(wèn)。
數(shù)據(jù)
在這個(gè)項(xiàng)目的整個(gè)生命周期中,我們一直認(rèn)為數(shù)據(jù)是我們成功的核心。我們與ThreatGrid和Cisco Infosec合作,獲取惡意包捕獲和實(shí)時(shí)企業(yè)數(shù)據(jù)。這些數(shù)據(jù)反饋對(duì)我們的幫助是巨大的,它能夠引導(dǎo)我們的分析,并且發(fā)展出最具信息量的流動(dòng)特征。我們所分析的數(shù)據(jù)特性是十分有趣的,為了讓大家理解有趣在那里,我們首先關(guān)注一個(gè)特定的惡意軟件樣本,bestafera,它是著名的鍵盤(pán)記錄和數(shù)據(jù)泄露軟件。
通過(guò)數(shù)據(jù)包長(zhǎng)度和時(shí)間進(jìn)行行為分析
圖2顯示了兩個(gè)不同TLS會(huì)話(huà)的數(shù)據(jù)包長(zhǎng)度和到達(dá)間隔:圖2a中的谷歌搜索和圖2b中的bestafera啟動(dòng)連接。 x軸表示時(shí)間,向上的線表示從客戶(hù)端(源)發(fā)送到服務(wù)器(目的地)的數(shù)據(jù)包大小,向下的線表示從服務(wù)器發(fā)送到客戶(hù)端的數(shù)據(jù)包大小。紅線表示未加密的消息,黑線是加密的應(yīng)用程序數(shù)據(jù)記錄的大小。
谷歌搜索遵循一種典型模式:客戶(hù)端的初始請(qǐng)求位于一個(gè)小的出站數(shù)據(jù)包中,然后是大量響應(yīng),它跨越許多MTU大小的數(shù)據(jù)包。這幾個(gè)來(lái)回的數(shù)據(jù)包是谷歌在我還在輸入時(shí),自動(dòng)完成的搜索。 最后,谷歌認(rèn)為它對(duì)我輸入的內(nèi)容有自己想法,所以發(fā)送了一組更新的結(jié)果。 bestafera與之通信的服務(wù)器首先發(fā)送一個(gè)包含自簽名證書(shū)的數(shù)據(jù)包,這可以看作是圖2b中第一個(gè)向下的細(xì)紅線。握手后,客戶(hù)端立即開(kāi)始將數(shù)據(jù)泄露到服務(wù)器。然后是暫停,服務(wù)器定期發(fā)送計(jì)劃命令和控制消息。針對(duì)會(huì)話(huà)內(nèi)容,數(shù)據(jù)包長(zhǎng)度和到達(dá)時(shí)間間隔無(wú)法提供更深入的見(jiàn)解,但它們確實(shí)有助于推斷會(huì)話(huà)的行為方面。
使用TLS元數(shù)據(jù)對(duì)應(yīng)用程序進(jìn)行指紋識(shí)別
TLS ClientHello消息提供了兩個(gè)特別有趣的信息,他們可以用來(lái)區(qū)分不同的TLS庫(kù)和應(yīng)用程序??蛻?hù)端向服務(wù)器提供了一個(gè)列表,這其中包括在客戶(hù)端的優(yōu)先級(jí)中訂購(gòu)的合適密碼套件的列表。每個(gè)密碼套件定義了一組方法,例如加密算法和偽隨機(jī)函數(shù),這些方法將使用TLS建立連接和傳輸數(shù)據(jù)??蛻?hù)端還可以發(fā)布一組TLS擴(kuò)展,它可以向服務(wù)器提供密鑰交換所需的參數(shù),例如ec_point_formats。
在提供的唯一密碼套件的數(shù)量和提供的不同子組中,密碼套件提供的向量是可以變化。類(lèi)似的擴(kuò)展列表也會(huì)根據(jù)連接的上下文而變化。因?yàn)榇蠖鄶?shù)應(yīng)用程序通常有不同的優(yōu)先級(jí),所以,在實(shí)踐中,這些列表可以而且確實(shí)包含大量歧視性信息。例如,桌面瀏覽器傾向于更重的重量,更安全的加密算法,移動(dòng)應(yīng)用程序傾向于更高效的加密算法。他默認(rèn)的密碼套件提供與TLS庫(kù)捆綁的客戶(hù)向量,而且他通常提供更廣泛的密碼套件,這樣可以幫助測(cè)試服務(wù)器配置。
大多數(shù)用戶(hù)級(jí)應(yīng)用程序,以及在野外看到的大量TLS連接,都使用流行的TLS庫(kù),如BoringSSL,NSS或OpenSSL。這些應(yīng)用程序通常具有唯一的TLS指紋,因?yàn)殚_(kāi)發(fā)人員會(huì)修改庫(kù)的默認(rèn)值,這樣便能優(yōu)化它的應(yīng)用程序。更明確地說(shuō),OpenSSL 1.0.1r中s_client的TLS指紋很可能與使用OpenSSL 1.0.1r進(jìn)行通信的應(yīng)用程序不同。這也是為什么bestafera的TLS指紋既有趣又獨(dú)特的原因——它使用OpenSSL 1.0.1r的默認(rèn)設(shè)置來(lái)創(chuàng)建其TLS連接。
應(yīng)用機(jī)器學(xué)習(xí)
特征表示
對(duì)于本文,我們關(guān)注的是三種數(shù)據(jù)類(lèi)型的簡(jiǎn)單特性:傳統(tǒng)的NetFlow、數(shù)據(jù)包長(zhǎng)度以及從TLS ClientHello獲取的信息。這些數(shù)據(jù)類(lèi)型都是從單個(gè)TLS會(huì)話(huà)中提取的,但我們還開(kāi)發(fā)了包含多個(gè)流的特征模型。在訓(xùn)練之前,將所有特征都?xì)w一化為具有零均值和單位方差。
Legacy
我們使用了傳統(tǒng)NetFlow中存在的5個(gè)功能:流的持續(xù)時(shí)間、從客戶(hù)端發(fā)送的數(shù)據(jù)包數(shù)、從服務(wù)器發(fā)送的數(shù)據(jù)包數(shù)、從客戶(hù)端發(fā)送的字節(jié)數(shù)以及從服務(wù)器發(fā)送的字節(jié)數(shù)。
SPL
我們創(chuàng)建一個(gè)長(zhǎng)度為20的特征向量,其中每個(gè)條目都是雙向流中相應(yīng)的數(shù)據(jù)包大小。從客戶(hù)端到服務(wù)器的數(shù)據(jù)包大小是正數(shù),從服務(wù)器到客戶(hù)端的數(shù)據(jù)包大小是負(fù)數(shù)。
TLS
我們分析了提供的密碼套件列表,以及ClientHello消息中包含的廣告擴(kuò)展列表。在我們的數(shù)據(jù)中,我們觀察到176個(gè)獨(dú)特的密碼套件和21個(gè)獨(dú)特的擴(kuò)展,這導(dǎo)致了長(zhǎng)度為197的二進(jìn)制特征向量。如果密碼套件或擴(kuò)展名出現(xiàn)在ClientHello消息中,則相應(yīng)的功能設(shè)置為1。
學(xué)習(xí)
所有的結(jié)果都使用了scikit-learn隨機(jī)森林實(shí)現(xiàn)。基于我們之前進(jìn)行的縱向研究,我們將集合中樹(shù)木的數(shù)量設(shè)置為125棵,并且將樹(shù)的每一次分裂所考慮的特征數(shù)量設(shè)置為特征總數(shù)的平方根。隨機(jī)森林模型使用的特性集由遺留特性、SPL、TLS特性的某些子集組成,具體需要看實(shí)驗(yàn)情況。
結(jié)果
我們從ThreatGrid的一個(gè)企業(yè)網(wǎng)絡(luò)Site1和324,771流量中抽取了1,621,910個(gè)TLS流量,然后訓(xùn)練我們的隨機(jī)森林模型。然后,我們模擬了從單獨(dú)的企業(yè)網(wǎng)絡(luò)Site2中看不見(jiàn)的數(shù)據(jù)部署模型,以及在上一個(gè)數(shù)據(jù)集之后的兩個(gè)月內(nèi),收集的惡意軟件數(shù)據(jù)。表1顯示了該實(shí)驗(yàn)在不同閾值下的結(jié)果。0.5是分類(lèi)器的默認(rèn)閾值,并且閾值越高,訓(xùn)練的模型就越確定TLS流是由惡意軟件生成的。惡意軟件/良性的準(zhǔn)確性是分開(kāi)的,這樣便能證明特征子集超過(guò)了一個(gè)特定的類(lèi)。例如,Legacy可以在良性集上實(shí)現(xiàn)接近完美的準(zhǔn)確性,但這些功能無(wú)法推廣到惡意軟件數(shù)據(jù)集。
在0.99的閾值處,使用Legacy / SPL特征的分類(lèi)器正確的分類(lèi)了98.95%的良性樣本和69.81%的惡意樣本。如果我們將有關(guān)應(yīng)用程序(TLS)的信息與網(wǎng)絡(luò)流量(SPL)的行為特征相結(jié)合,這些結(jié)果將得到顯著改善。Legacy / SPL / TLS的組合是良性和惡意軟件樣本上性能最佳的模型。 在0.95的閾值下,該模型分別對(duì)于良性和惡意保持?jǐn)?shù)據(jù)集實(shí)現(xiàn)了99.99%和85.80%的準(zhǔn)確度。