摘要
通過http流量對每個主機的每個應用程序都生成一組指紋,其中不包含任何的惡意軟件流量。在測試模塊中,提取最近X分鐘在網絡中看到的指紋集。接下來,檢測模塊通過不同的相似性檢驗來驗證這些新提取的指紋是否異常。
我們介紹了DECANTeR,這是一個檢測異常出站HTTP通信的系統,該系統可以被動地為受監視主機上運行的每個應用程序提取指紋。
我們系統的目標是檢測主機網絡流量中提取的未知指紋所指示的未知惡意軟件和后門通信。我們使用來自國際組織的真實數據和由惡意流量組成的數據集評估原型。我們表明,我們的系統對441臺受監視的主機實現了誤報率0.9%,平均檢測率97.7%,并且使用簡單的回避技術(例如使用已知的瀏覽器用戶代理值)無法被惡意軟件回避。
1 介紹
當前的大多數網絡安全設備都使用惡意軟件特征來識別惡意通信。主要地,這是通過兩種不同的方式實現的。基于簽名的技術依賴于已知惡意軟件樣本的數據集,并且它們提取表征惡意軟件的已知模式。這些技術也可以自動化,從惡意軟件集群中生成簽名[20-22]。與經典簽名相比,差異在于,自動生成的簽名對惡意軟件變種更為健壯,因為它們對一組或多組惡意軟件共享的某些流量特征進行編碼。該技術之所以有效,是因為許多惡意軟件共享相同的代碼。第二類技術是基于異常的檢測。主要目標是基于一組表征特定威脅的功能(例如僵尸網絡[4、10、11]或Web攻擊[16])創建網絡流量模型。大多數相關工作屬于異常檢測的子類別,我們將其稱為特定于威脅的異常檢測,因為所有這些工作要么創建使用惡意數據訓練的模型,要么著重于通過特定模式識別的特定威脅。
現有問題:
1:基于一組惡意軟件生成的分類器或簽名無法識別與該組沒有通用性的新的未知惡意軟件。
2.由于缺乏清晰的模式,因此很難建模某些威脅,例如數據泄露或通用后門。例如,數據滲漏可以是數小時內以小塊形式進行的數據庫混淆傳輸,也可以是單個請求中的加密密鑰對。
為了解決這些問題,研究人員提出了一種基于異常的檢測方法,該方法只能從每臺特定機器的良性網絡數據中生成模型[5,24]。我們將此類別稱為特定于主機的異常檢測,它不同于用于分析機器內部狀態的技術中通常使用的術語“基于主機”。
不幸的是,現有方法在現實情況下無法提供強大的檢測性能,因為它們很容易逃避,或者它們不適應隨時間變化的主機行為,或者會觸發過多的誤報(FP)。
貢獻:
在這項工作中,我們提出了DECANTeR,該系統使用被動應用程序指紋技術僅對良性流量建模,因此不依賴任何惡意樣本。對于每個受監視的主機,DECANTeR會為從主機進行通信的每個應用程序被動生成指紋。指紋由描述應用程序網絡行為的不同HTTP請求功能組成。我們的解決方案使用一種混合方法,因為指紋的特征集可以動態地適應應用程序的類型,并且特征的內容代表從流量中提取的靜態模式。直覺是主機以一組已安裝的應用程序為特征。因此,如果惡意軟件在主機上運行,??它可能會生成新的指紋,這些指紋顯示出與代表主機應用程序不同的模式。
我們選擇專注于HTTP流量,因為它是惡意軟件常用的協議[28,34]。我們將在第2節中更詳細地討論這一選擇。這項工作的新穎之處在于,通過從主機的網絡流量中識別主機的不同的基于HTTP的應用程序來被動地模仿良性行為,并使用這些模型在主機通信中來識別異常行為。總而言之,我們做出了以下貢獻:
?我們提出了DECANTeR,一種用于檢測出站異常HTTP連接的解決方案,該解決方案基于被動應用指紋技術。我們的方法會自動從網絡流量中生成指紋,從而識別受監控主機的異常通信。我們還將討論DECANTeR如何隨著時間的推移適應主機的行為變化。
2 系統和威脅模型(system and threat model)
我們主要關注HTTP流量的原因有兩個:
1)大多數惡意軟件都使用HTTP [28,34],以與其C&C服務器通信或泄露數據,因為它可以偽裝在良性流量中并避免檢測;?
2)許多企業防火墻實施嚴格的過濾規則,以阻止非Web流量,這迫使惡意軟件避免使用自定義協議并使用HTTP或HTTPS。
此外,許多企業在其網絡中部署了TLS中間人(TLS-MITM)代理[8]。這使我們的方法也適用于基于HTTPS的惡意軟件,盡管由于安全和隱私問題,它不是最佳解決方案。具有證書固定功能的基于HTTPS的惡意軟件會在無法檢測到中間人的誘惑時決定不進行通信,因此無法在具有類似設置的企業網絡中運行。最后,由于大量數據與大量的良性HTTP數據融合在一起,因此HTTP也被用作數據泄露的協議。這使得對于基于簽名的方法,數據泄漏的檢測極具挑戰性,特別是如果惡意軟件混淆了數據,實際上基于HTTP的數據泄漏仍然被認為是一個開放的問題。我們假設惡意軟件可以使用壓縮,編碼或加密的任何組合來轉換數據以隱藏內容。
3 our approach
我們的工作直覺如下:特定主機生成的所有流量都是由安裝在主機上的一組應用程序A = {a1,..an}產生的網絡活動的結果。每個ai都具有特定的網絡特性,則可以為每個ai創造一個指紋Fai, 主機H被定義為所有應用程序指紋的集合,即H=U Fai(從1到n的指紋的集合).惡意軟件也有它特定的指紋,因此,當惡意軟件感染了主機的時候,他們的指紋是不一樣的。可以用指紋來區分惡意流量。
盡管直覺似乎很簡單,但仍有一些挑戰需要解決。傳統的指紋識別解決方案從脫機且通常是完整的數據集創建指紋,其中根據不同的輸入動態分析應用程序,以觸發嵌入其中的所有可能的行為[30]。在我們的設置中,這需要對所有現有HTTP客戶端(不僅是瀏覽器)進行先驗分析,這是不現實的。因此,一項挑戰是從實時流量中生成應用程序的指紋,該指紋很可能是不完整的(由于捕獲時間有限)和異構的(由于同一應用程序隨時間變化的消息不同)。其次,系統應提供一種更新機制,以防由于主機上安裝了新軟件而導致創建新指紋。在這項工作中,我們應對兩個挑戰。
3.1 系統構造:
http data ----訓練階段【打標簽,生成指紋】---測試階段【打標簽,生成指紋,檢測】。
訓練階段:對http流量根據User-Agent標頭字段將其聚類,【良性應用程序通常使用User-Agent來被Web服務器識別,因此幾乎可以保證所有這些請求都是由同一應用程序生成的,因此,這是在流量分析期間進行聚合的一種非常有效的方式。】然后分析每個群集,并根據其應用程序類型【瀏覽器,后臺】為它分配一個標簽,根據應用程序及其http請求創建指紋。結果是生成每個受監控的主機的一組指紋,且訓練時主機均不存在惡意行為。
該模塊運行特定的超時時間,我們稱為聚合時間t。在測試模式下,t是X分鐘的固定時間窗口,而在訓練模式下,t與訓練周期的長度匹配。當t結束時,每個標記的簇將傳遞到下一個模塊。
測試階段:打標簽和生成指紋行同訓練階段,標簽和指紋生成模塊提取最近X分鐘在網絡中看到的指紋集。接下來,檢測模塊通過不同的相似性檢驗函數來驗證這些新提取的指紋是否異常。
3.2 系統細節
1.標記:
對http流量根據User-Agent標頭字段將其聚類,分析每個群集,并根據其應用程序類型【瀏覽器,后臺】為它分配一個標簽。
2.應用程序的類型:
后臺 background:?background類型代表流量內容和目的地不受用戶輸入直接影響的那些應用程序(例如,抗病毒更新查詢)。這些應用程序具有可預測的行為,并在其通信中顯示出固定的模式。他們經常使用HTTP標頭具有相同的結構,通信通常使用相同的域集,并且請求的大小和內容相當相似。
瀏覽器 browser:瀏覽器類型表示Web瀏覽器,它們生成HTTP流量,其內容是不可預測的且是動態的,因為它直接取決于用戶操作和特定的訪問網站,尤其是考慮到動態Web內容的廣泛使用。
3.標記的方法:創建了引用者圖的一種新方法 : Referrer Graph【具體我沒看】
標記方法的目的是區分后臺和瀏覽器這兩個應用程序集群。我們通過利用瀏覽器流量的動態行為來實現這一目標。例如,當用戶訪問網站時,瀏覽器會生成對網頁(通常為HTML)的請求。下載HTML頁面后,瀏覽器會生成其他HTTP請求,以檢索其他信息,例如圖像,腳本,CSS等。需要此信息才能正確呈現網頁。此行為是瀏覽器特有的,并且在后臺應用程序中不存在,因此可以將其與這兩種應用程序類型區分開。
DECANTeR中的一個核心組件是Referrer Graph,它試圖通過利用瀏覽器生成的下載網站資源的請求來抽象化瀏覽器動態特性,以區分后臺和瀏覽器這兩個應用程序。
4.指紋的生成過程:
該模塊將來自標記模塊的已標記簇作為輸入,并針對每個簇通過提取一組特定的特征來生成指紋,這些特征隨簇標簽而變化。
我們要創建依賴于應用程序網絡流量的多個特征的指紋。因此,即使惡意軟件正確猜出了User-Agent,我們仍然可以將惡意指紋識別為異常,因為其他功能可能與實際應用程序指紋不匹配。
我們選取的特征如下:
1)主機:存儲在HTTP字段“主機”中的一組域。更具體地說,我們僅考慮頂級和第二級域。直覺:我們發現許多通常作為后臺服務運行的應用程序大多與同一組域通信。
(2)恒定報頭字段:簇請求中始終存在的報頭字段集。直覺:許多應用程序(尤其是非瀏覽器應用程序)針對它們生成的每個請求系統地使用一組固定的標頭字段,這使其具有獨特的特征。該功能不是新功能,但以前它是用來對惡意通信建模的,[18]而我們卻是用它來對良性軟件通信進行建模的。
(3)平均大小:HTTP請求的平均大小,由所有HTTP請求的大小(包括標頭和正文大小)計算得出。直覺:盡管內容可能因請求而異,但某些應用程序通常會生成大小非常相似的請求,尤其是系統生成的請求。
(4)用戶代理:請求字段用戶代理的字符串。直覺:對于每個良性應用程序,此值通常是唯一的。
(5)語言:Accept中存在的一組Accept?-Language?HTTP字段。直覺:Web瀏覽器使用此字段在HTTP中宣傳他們喜歡的自然語言響應。該字段不僅描述了瀏覽器,還有用戶設置。
(6)外發信息:總數的近似值屬于集群的所有請求傳輸的信息量。此功能僅在測試階段使用。直覺:我們想跟蹤集群中的請求已傳輸了多少信息。
已經表明,依賴單個功能的方法,例如User-Agent字符串,是無效的[15]。因此,我們要創建依賴于應用程序網絡流量的多個特征的指紋。因此,即使惡意軟件正確猜出了User-Agent,我們仍然可以將惡意指紋識別為異常,因為其他功能可能與實際應用程序指紋不匹配。
5. 檢測
檢測模塊將一組應用指紋Ftest = {Fa1,..Fan}作為輸入,將每個指紋Fai與在訓練模式Ftrain = {Fb1,...Fbz}期間生成的指紋進行比較。通過計算特定于應用程序類型的特定相似性函數來完成比較。如果Fai與Ftrain中的任何指紋都不相似,則DECANTeR會將Fai視為新的應用程序。找到新的應用程序后,DECANTeR會驗證新的指紋是否為軟件更新(請參閱第3.2.4節)。如果Fai不是更新,則如果滿足以下兩個條件之一,則會發出警報:1. Fai的傳出信息量在閾值σ之上;2. Fai中的user-agent和瀏覽器的user-agent字符串相似。
使用檢測檢查1)和2)的原因如下:對于1),我們想知道計算機上的新應用程序是否正在通過Internet傳輸過多的數據。這可能表明主機上安裝了惡意軟件,開始竊取數據。 2)我們要確定那些試圖模仿瀏覽器的應用程序。該檢查基于常見的惡意軟件行為,該行為試圖使用已知瀏覽器的用戶代理字符串隱藏自身[23,34]。因此,應將新的瀏覽器外觀指紋視為異常。
6.指紋更新
7.后臺相似性功能
指紋由一組特征代表。讓我們將Fa和Fb分別視為在Ftest和Ftrain中生成的兩個后臺應用程序指紋。 Fa和Fb具有相同的標簽。后臺相似性函數可驗證Fa和Fb是否代表同一應用程序的流量。該函數定義為
其中Si是用來檢查第i個特征是否相似的函數,只有當S back (Fa,Fb)大于等于a的時候Fa,Fb才相似。
8.瀏覽器相似性功能
瀏覽器相似功能。 瀏覽器相似性函數易于計算,因為只有兩個功能需要評估: sbrow(Fa,Fb)= s4(Fa4,Fb4)+ s5(Fa5,Fb5) 其中s4與背景設置相同。 如果兩個指紋的語言匹配,則功能s5分配1點,否則分配0。 當且僅當sbrow(Fa,Fb)=β時,指紋Fa和Fb才被認為是相似的,其中β是眉毛的相似閾值。對于瀏覽器,兩個功能應完全匹配,因此β=2。較低的β將導致更寬松的檢查,允許使用其中之一 這兩個功能不匹配,這將導致攻擊者更容易逃避。
4 實驗
5 評估
6 討論
6.1 指紋技術
6.2 被動應用程序指紋
DECANTeR可被認為是將基于主機的基于異常的檢測付諸實踐的重要步驟。結果顯示出相對于現有技術的巨大改進,并且他們表明該方法是可行的。在當前階段,我們認為DECANTeR的最佳用途是監視主機的子集,尤其是那些已知存儲敏感數據或執行敏感活動的主機(例如,董事會成員工作站,管理員)。
6.3 用戶案例:數據泄漏
我們相信DECANTeR非常適合檢測數據泄漏,因為檢測是獨立于通信內容(即有效負載)進行的,而通信的內容通常被攻擊者(例如,使用隱寫術[36])混淆為主要機制,以避免通過網絡進行檢測。
從網絡角度來看,無法確定特定通信是否被混淆時是否包含敏感數據。這是當前解決方案[2、12、14、25-27]失敗的主要原因,因為當它們通過網絡傳輸時,它們試圖識別并停止敏感數據,但是數據已經被混淆并且無法識別。嘗試檢測異常的加密出站通信的方法[1、13]也失敗了,因為它們依賴于加密或壓縮的高熵值。但是,當惡意軟件在加密后使用編碼時,熵會急劇下降,并且不會檢測到滲透。量化泄漏信息量的方法似乎更合適[6]。 DECANTeR將泄漏量化方法與應用程序指紋相結合,以檢測新的軟件泄漏數據。通過檢測96.8%的信息竊取者樣本,這種組合已顯示出良好的性能,而當前最新的主機特定方法僅達到40%。
7相關工作
在本節中,我們討論有關特定威脅和特定主機方法的相關工作。
Threat-Specific Approaches : 特定于威脅的方法。
1. 從惡意軟件群集自動生成簽名:研究人員提出了幾種根據網絡功能對惡意軟件樣本進行群集的方法,并從這些群集中生成簽名[18,20-22]。 Rafique和Caballero提出了FIRMA [22],該工具可根據相似的協議(例如HTTP,SMTP和IRC)功能將惡意軟件樣本聚合到各個家族中,并為每個家族生成一組網絡簽名。 Perdisci等。 [20,21]提出了一種根據URL相似性將惡意軟件聚類的技術,并從URL中提取子令牌,這些子令牌用于識別網絡上的惡意通信。 Nelms等。 [18]提出了一種基于自適應模板的技術,該模板是根據對已知僵尸網絡流量的觀察而創建的,可用于檢測實時網絡中的僵尸程序,甚至識別它們屬于哪個家族。 Zand等。 [33]提出了一種通過識別和排名惡意流量中最相關和最頻繁的字符串來生成簽名的方法。 Zarras等。 [34]提出了BOTHOUND,一種提取良性和惡意軟件的所有標頭鏈(即HTTP請求中的標頭字段集)的系統,如果惡意請求的標頭鏈與已知的良性軟件不同,或者如果它們的標頭鏈不同,則可以識別惡意請求。匹配,但其HTTP模板與現有的惡意模板匹配。 DECANTeR與這些技術不同,因為DECANTeR不會從已知的惡意軟件樣本集中創建簽名。
2. 基于異常的特定威脅檢測:幾項研究研究了基于異常的技術來識別網絡中的僵尸網絡流量[4,10,11]。這些技術利用了僵尸網絡顯示的特定網絡模式,并使用惡意樣本來訓練其檢測模型。例如,同一僵尸網絡感染的網絡中的多個主機具有通用的通信模式。 Bartos等。 [3]建立了一個識別惡意行為的分類器,并對其進行了優化,使其對于惡意軟件行為的改變是不變的。但是,這種方法在分類器訓練期間也需要惡意軟件。許多其他研究提出了基于異常的檢測技術,該技術分析了可以代表特定威脅行為的不同特征。它適用于Web攻擊[16],分布式拒絕服務[9],加密數據滲透[13]等環境。盡管我們也使用基于異常的檢測方法,但我們既不使用特定功能來檢測特定威脅,也不使用已知惡意樣本來訓練我們的模型。 DECANTeR專注于僅對良性行為建模,并通過觀察異常來識別惡意流量。
Host-Specific Approaches: 特定于主機的方法。
此類別包含的方法僅對主機生成的正常網絡行為建模,而無需了解威脅或已知惡意軟件樣本的其他信息。在[35]中,Zhang等。提出了一種基于用戶意圖的方法來檢測隱形惡意軟件的通信。提出的方法監視網絡和主機活動,并創建一個觸發關系圖(TRG),該圖將一組HTTP請求綁定到觸發它們的用戶操作。這種方法可以檢測到惡意軟件,因為其HTTP流量與用戶活動無關。但是,它使用基于主機的信息(例如,進程ID),這在我們的系統模型之外。 WebTap [5]是一種根據不同功能(例如,標題信息,帶寬,請求大小和請求規則性)創建用戶瀏覽行為的統計模型的工具。 WebTap使用此信息來識別未知的HTTP通信并檢測秘密通信。但是,它的誤報率很高,為12%,因為該工具僅對瀏覽器流量進行建模,因此背景流量被視為異常。這使WebTap不切實際。 Schwenk和Rieck提出了DUMONT [24],該系統可檢測HTTP上的秘密通信。通用方法類似于WebTap,但是它們使用一類SVM分類器來構建用戶的HTTP流量模型。 DUMONT僅使用HTTP標頭的幾種數字功能,其最終目標是為每次使用描述“平均” HTTP請求。檢測性能比WebTap差(平均檢測率89.3%),但是DUMONT產生的誤報數量要少得多,并且遭受的回避嘗試也較少。 DECANTeR與WebTap和DUMONT有所不同,因為它使用一種新技術來建模良性流量:被動應用程序指紋識別。此外,與WebTap和DUMONT相比,DECANTER提供了一些機制來使指紋適應主機行為的變化。
8結論
在這項工作中,我們展示了如何對基于HTTP的應用程序進行指紋識別并用于檢測異常通信。 在培訓階段可以使用這種技術而無需使用惡意數據,因此可以避免來自特定惡意軟件樣本的任何可能的偏差。 而且,所提出的技術獨立于其有效載荷來檢測異常通信,從而成為用于數據泄露和未知惡意軟件的有前途的解決方案。 這將我們的工作與大多數現有解決方案區分開來,后者通常對網絡流量進行建模以檢測特定的攻擊或惡意軟件行為(從已知惡意軟件的群集中提取),或嘗試識別網絡有效負載內的敏感數據。 我們已經在稱為DECANTeR的系統中實施了該技術,并且我們對其進行了評估,與其他最新解決方案相比,它具有更好的檢測性能。