嗅探器的英文寫法是siffer, 所謂網絡嗅探,其實就是對大量網絡數據流進行分析,從中分離出我們感興趣的東西并記錄下來或顯示出來。可以理解為個安裝在計算機上的竊聽設備,它可以用來竊聽計算機在網絡上所產生的眾多的信息,可以監視網絡的狀態、數據流動情況及網絡上傳輸的信息。當信息以明文的形式在網絡上傳輸時,便可以使用網絡監聽的方式竊取網上傳送的數據包。將網絡接口設置在監聽模式,可以將網上傳輸的信息截獲。
嗅探類型的工具有以下模塊組成:
數據包嗅探模塊:大規模的應用程序很少采用單機運行模式,Snort通常采用分布式體系對網絡進行入侵檢測。最典型的安裝方式是3層體系,即傳感器層、服務器層、分析員控制臺。通常數據包采集模塊和包解碼器運行在傳感器上,負責對抓來的包進行解釋。由于傳感器必須放置在被監控的網段,為了保證安全,通常只安裝Snort和在它之下運行的支撐應用程序。傳感器的兩塊網卡中的一塊用作被動采集數據包,接口不分配IP地址,另一塊用作管理接口,需要分配IP地址。數據包采集程序運行在Libpcap平臺上,由于Libpcap平臺的獨立性使得Snort可以被移植到任何地方,成為一個真正與平臺無關的應用程序。
預處理程序模塊:預處理程序是Snort的一類插件。它在Snort運行檢測引擎之前對數據進行處理,并且努力與不斷變化的漏洞和攻擊保持同步。用戶可以添加新的協議為Snort提供支持,它既能對數據包操作以便檢測引擎能正確分析數據包,又能檢測特征檢測所不能單獨發現的可疑流量。新的攻擊方法和IDS躲避技術不斷涌現,以至Snort的檢測引擎要么不能檢測,要么檢測效率不高。預處理程序可以將數據標準化以便檢測引擎能正確對其進行分析。此外,一些病毒制造者為了躲避反病毒程序的特征匹配引擎而引入多態病毒;同樣的技術也被用于遠程利用,shell代碼具有多種形態。Fnord預處理程序能檢測出變異的NO-OP Sled,從而避免了由于緩沖區溢出使處理器強制執行惡意代碼導致的程序崩潰。NO-OP Sled能被許多IDS輕易地檢測到,除非它在每次被使用時都做修改。如果沒有Fnord預處理,Snort將無法檢測多態Shell代碼。
檢測引擎模塊:檢測引擎是Snort的主要組件。它有兩個主要功能:規則分析和特征檢測。檢測引擎通過分析Snort規則來建立攻擊特征。Snort規則被載入到檢測引擎并以樹形數據結構分類。規則按功能分為兩個部分:規則頭(規則樹節點)和規則選項(選項樹節點)。規則頭包含特征應用的條件信息。樹形結構通過最小化發現可疑行為的必要檢測次數來提高效率。惡意行為被發現后,Snort將入侵數據寫入不同的輸出插件。最有效的檢測攻擊的方法是基于特征的檢測。基于特征的檢測的基礎是異常或惡意網絡流量符合一種獨特的模式,而正常或良性流量不符合。對Snort來說,一個惡意流量特征可以被創建成一個規則以載入它的檢測引擎,用于進行特征匹配。通過特征檢測出可疑流量后,還可以進一步檢測可疑的數據包內容字段。
數據聚合模塊:以一種工業標準格式從許多完全不同的安全設施聚合數據,從而進行事件關聯。
報警模塊:Snort有兩種主要的報警方法,即Syslog和Swatch報警、入侵數據庫控制臺報警。Swatch是一種簡單且功能強大的工具,它能積極地監控系統日志,當發生了事先配置的事件時就發出報警。
分層報警模塊:入侵檢測系統領域的報警分為3類,無優先級報警、嚴格編碼的優先級報警、可定制的優先級報警。無優先級報警不能按嚴重程度進行分類,通告會變得非常多,無法采用緊急時間自動通知機制;嚴格編碼的優先級報警由銷售商決定哪些報警重要,程序員可以進行排序和篩選,但這種“one fits all”的方法對于報警并不適合;可定制的優先級報警是現代網絡的模塊化和獨特性所需要的。報警能基于事先設置的優先級進行排序。Snort自帶了32種預定義的警報分類。