Automated Worm Fingerprinting

由 blue 於 週四, 08/04/2005 - 22:36 發表
::

這一篇 Paper 是出自 USENIX Operating Systems Design and Implementation (OSDI ’04),由 University of California , San Diego 的研究生 Sumeet Singh 及三位指導老師 Cristian Estan, George Varghese and Stefan Savage 所發表。主要是探討未知病毒之偵測,與之前報告過的 Autograph 不同,這一篇是採用不先過濾,而直接針對所有封包進行比對,但可預見的,這種方式將消耗許多資源,作者也因此提出了利用 hash、bitmap 等效能最佳化的機制。

目前在未知 worm 偵測上,採用的方法大致上有三種:
1.Scan detection
無法應付 hit-list worm
只能確認異常主機的 IP 而非內容或行為
2.Honeypots
多用以被感染後手動分析特徵用
3.Behavioral detection

而本篇採用的即屬於行為偵測方面,而且幾乎可說是純粹的作這件事,在這邊作者提出的機制稱為 Content Sifting,他是在一個假設之下所提出的 : 正常的網路應用程式極少會從許多不同來源重覆傳送完全相同內容到許多不同目的地,這句話我們就可以歸納出三件事,也就不變性 (content invariance)、普及性 (content prevalence)、分散性 (address dispersion),而這邊採用的機制就是針對每個封包在記憶體中計算這三個比率是否達到門檻值,如果是的話則判斷為 worm 納入特徵。

真正在實作時,必須考量資源的使用,例如在建立 content prevalence 及 address dispersion 表時,使用 hash 可以有效減少記憶體,但這裡又有個兩難的問題,如果選用的 hash bit 小,碰撞問題可能會比較嚴重,選用的 bit 大,則又會增加記憶體使用量,另外作者提出了一個使用多種不同 hash function 作 mult-stage filter,當各個 stage 皆達到門檻值才視為普及,這種方式可以減少單一 hash function 碰撞問題,但多階段的 hash function 勢必又將降低效能。另外這些門檻值也經由實驗訂定出了一個合理的預設值。

在誤判方面,common protocol headers、SPAM 以及 P2P (BitTorrent) 是實驗中較為有可能產生誤判的,漏報方面則較沒有,原因可能是因為這篇採用的方式是全面檢驗,因此相對的漏報少,但誤判看起來似乎比其他篇來的嚴重一些些 (也有可能是其他作者沒有仔細揭露),而解決 common protocol headers 的方法就是採用黑白名單。

這一篇看完的心得,作者不先作篩選,直接針對每一個封包過濾,這種作法可以減少漏報,但卻大大增加了系統的負擔,也因此需要再去探討 hash、bitmap 的演算法,不過這也未嘗不是好事,另外作者也一再提到希望部分機制能納入硬體處理,不過這個部分當然無法列入將來研究的方向。