基於網絡的入侵檢測技術

網絡入侵檢測

分層協議模型與TCP/IP協議

TCP/IP協議分層結構

在這裏插入圖片描述

數據報文的分層封裝

在這裏插入圖片描述

以太網幀格式

在這裏插入圖片描述

ARP/RARP報文格式

在這裏插入圖片描述

IP數據報頭格式在這裏插入圖片描述

ICMP迴應請求與應答報文格式

在這裏插入圖片描述

UDP報文格式

在這裏插入圖片描述

TCP報文格式

在這裏插入圖片描述

網絡數據包的截獲

  • 是基於網絡的入侵檢測技術的工作基石
  • 通過捕獲整個網絡的所有信息流量,根據信息源主機、目標主機、服務協議端口等信息簡單過濾掉不關心的數據,再將用戶感興趣的數據發送給更高層的應用程序進行分析。
    • 一方面,要保證採用的捕獲機制能捕獲到所有網絡上的數據包,尤其是檢測到被分片的數據包
    • 另一方面,數據捕獲機制捕獲數據包的效率也很重要,將直接影響整個網絡入侵襝測系統的運行速度。

局域網和網絡設備的工作原理

網絡設備

  • 集線器:共享模式、總線方式,物理上是廣播網絡,其下同一網段的所有機器的網卡都能接收到數據;兩個機器之間傳輸數據時,其它端口被佔用
  • 交換機:記住每個主機的MAC地址,維護一個物理端口與MAC地址的對應表,兩個機器之間傳輸數據時,別的端口沒有佔用,可以繼續通訊

網卡工作原理

  • 接收數據時,先接收數據包頭的目的MAC地址;如果該接收就在接收後產生中斷信號通知CPU:如果認爲不該接收,就丟棄不管,計算機並不知道。
  • CPU接到中斷信號後產生中斷,0S就根據網卡驅動程序中網卡中斷程序地址,調用驅動程序接收數據,驅動程序接收數據之後,放入堆棧讓0S處理。

局域網工作過程

  • 數據在網絡上是以很小的幀爲單位傳輸的
  • 幀經過封裝,通過網卡發送到傳輸介質上,到達目標主機。在目標主機處執行相反的過程
  • 目標主機網卡捕獲幀後,通知0S,對幀進行存儲。Sniffer在這個傳輸和接收過程中,能獲取數據
  • 正常情況下,一個合法的網絡接口只能響應兩種數據幀:幀的目標地址與之匹配的硬件地址;幀的目標地址是廣播地址;網卡向CPU產生硬中斷;
  • 如果局域網中某臺機器的網卡處於混雜(Promi scuous)模式,則可以捕獲所有的報文和幀,這樣的機器就是sniffer

sniffer

  • 定義:利用計算機的網絡接口截獲目的地爲其他計算機的數據報文的一種工具
  • 工作原理
    • 網卡設置成混雜模式,就能接收到網絡上所有的數據
    • 對收到的每一個幀都產生一個硬件中斷,以便提醒0S處理報文包
    • 工作在網絡環境中的底層,攔截所有正在網絡上傳送的數據,並通過相應的軟件處理,可以實時分析這些數據的內容,進而分析所處的網絡狀態和整體佈局
  • Sniffer在功能和設計方面有很多不同,有些只能分析一種協議,有些能夠分析幾種協議
  • 一般情況下,大多數的 sniffer至少能分析:標準以太網、TCP/IP協議和IPX

Sniffer的應用

  • 分析網絡的流量,以便找出所關心的網絡中潛在的問題(如網絡的某一段運行得不好,報文的發送比較慢)
  • 網絡數據監聽工具。可以捕獲網絡上的報文數據,這些數據可以是普通的報文,也可以是用戶名和密碼,甚至是一些商用機密數據
  • 大多數用戶不知道 sniffer的存在,因而也沒有防備之心

Sniffer的危害

  • 能捕獲口令,可以記錄到明文傳送的 user id和password
  • 捕獲到專用的或機密信息。用戶姓名、信用卡號碼、機密和敏感信息
  • 窺探低級的協議信息,用來獲取更高級的訪問權限。如會話雙方的IP地址、路由信息等

以太網環境下的數據截獲

以太網數據傳輸通過廣播傳輸媒體實現。但是在系統正常工作時,應用程序只能接收到以本主機爲目標主機的數據包,其他數據包將被丟棄不作處理。要截獲到流經網卡的不屬於自己主機的數據,必須繞過系統正常工作的處理機制,直接訪問網絡底層
在這裏插入圖片描述

  • 在UNIX系統中可以用 Libpcap包捕獲函數庫直接與內核驅動交互操作,實現對網絡數據包的捕獲。
  • 在Win32平臺上可以使用 Winpcap,通過VxD虛擬設備驅動程序實現網絡數據捕獲的功能

網絡數據包的截獲

  • 根據網絡類型的不同,網絡數據截獲可以通過以下方法實現
    • 利用以太網絡的廣播特性(共享)
    • 通過設置路由器的監聽端口或者是鏡像端口來實現
    • 將捕獲程序放在網關或代理服務器上,可以捕獲整個局域網的數據包

包捕獲機制

  • 從廣義的角度上看,一個數據包捕獲機制包含個主要部分。
    • 最底層針對特定操作系統的包捕獲機制
    • 最高層針對用戶程序的接口
    • 數據包過濾機制
  • 不同的操作系統實現的底層包捕獲機制可能是不一樣的,但從形式上看大同小異。
  • 數據包常規的傳輸路徑依次爲網卡、設備驅動層、數據鏈路層、IP層、傳輸層、最後到達應用程序
  • 而數據包捕獲機制是在數據鏈路層增加一個旁路處理,對發送和接收到的數據包做過濾緩衝等相關處理,最後直接傳遞到應用程序。
  • 數據包捕獲之後,還要過濾一包過濾機制
  • 數據包過濾機制是對所捕獲到的數據包根據用戶的要求進行篩選,最終只把滿足過濾條件的數據包傳遞給用戶程序。
  • 常見的包捕獲機制
    在這裏插入圖片描述

Unix平臺下的數據包截獲技術-Libpcap

  • Libpcap的英文意思是 Packet Capture library,即數據包捕獲函數庫。
  • 它是勞倫斯伯克利國家實驗室網絡研究組開發的UNIX平臺上的一個包捕獲函數庫,可到http://www.tcpdump.org的download中下載,大多數網絡監控軟件都以它爲基礎。
  • 它是一個獨立於系統的用戶層包捕獲的API接口,爲底層網絡監測提供了一個可移植的框架
  • Libpcap庫函數支持數據包過濾機制,即著名的伯克利數據包過濾器(BPF),它是一種用於UNIX的內核數據包過濾體制

BPF的基本原理

在這裏插入圖片描述

Windows的數據包截獲技術-Winpcap

  • Win32平臺不提供直接的網絡底層訪問接口,必須通過虛擬設備驅動程序(wxD)實現網絡數據包的截獲功能。

  • 對應於 Libpcap庫的 Windows版本是 Winpcap庫。

  • Winpcap(windows packet capture)是 windows平臺下一個免費,公共的網絡訪問系統。

  • 開發 wInpcap這個項目的目的在於爲win32應用程序提供訪問網絡底層的能力。

  • http://www.winpcap.org
    在這裏插入圖片描述

  • 包含NPF驅動細節的 Winpcap結構圖
    在這裏插入圖片描述

  • 主要功能

    • 在於獨立於主機協議(如TCP-IP)而發送和接收原始數據包。也就是說,winpcap不能阻塞、過濾或控制其他應用程序數據包的發收,它僅僅只是監聽共享網絡上傳送的數據包
  • 子功能

    • 捕獲原始數據報,包括在共享網絡上各主機發送/接收的以及相互之間交換的數據報;
    • 在數據報發往應用程序之前,按照自定義的規則將某些特殊的數據報過濾掉;
    • 在網絡上發送原始的數據報;
    • 收集網絡通信過程中的統計信息。

交換網絡環境下的數據截獲

在實際的網絡環境中,許多網絡採取了交換運行環境(例如交換機、路由器等),此時傳輸媒體不再具備廣播特性,所以不能夠單憑設置網絡接口的混雜模式來截獲所有的數據包。

常用的方法昰利用交換機或者路由器上設置的監聽端口或者鏡像端口。
在這裏插入圖片描述

  • 實際工作中,採用鏡像端口的方法常碰到兩個問題
    • 隨着交換帶寬的不斷增長,並非所有的網絡流量都會反映在鏡像端口上。
    • 並非所有的交換設備都提供類似的鏡像端口。很多的IDS系統會選擇掛接在流量通常最大的上下行端口上,用來截獲進出內外網的數據流量。

檢測引擎的設計

  • 檢測引擎的設計是基於網絡入侵檢測的核心問題。
  • 檢測引擎的分類
    • 從具體的實現機制看,可分爲
      • 嵌入式規則檢測引擎,更易於使用,爲大多商用系統所採用
      • 可編程的檢測引擎,更靈活,用戶需具備更多的專業知識
    • 從具體採用的檢測技術看,可分爲
      • 模式匹配技術
      • 協議分析技術

嵌入式規則檢測引擎設計

  • 嵌入式規則檢測引擎的設計中,存在兩點關鍵問題:檢測規則和引擎架構設計。

Snort

Snort是什麼
  • Snort是一個輕量級的入侵檢測系統,它具有截取網絡數據報文,進行網絡數據實時分析、報警,以及日誌的能力
  • snort的報文截取代碼是基於 libpcap庫的,繼承了 libpcap庫的平臺兼容性。
  • snort使用一種靈活的規則語言來描述網絡數據報文,因此可以對新的攻擊作出快速地翻譯。snort具有實時報警能力。
  • 它支持插件體系,可以通過其定義的接口,很方便地加入新的功能
  • 簡單的說,Snort是數據包的嗅探器,也是數據包記錄器,還是NIDS。提供數據包嗅探和記錄功能只是 Snort的部分功能,Snort的特點就是其入侵檢測功能一根據入侵規則匹配數據包中的內容。
Snort系統需求
  • Snort對硬件沒有特殊的要求,對Sηort來說,硬件系統的處理器頻率越高越好。
    • 不同網絡使用的網卡和硬盤空間大小會制約 Snort捕捉數據包和存儲數據包的功能。
  • Snort的產品定位爲簡單NIDS。現在能運行x86平臺的Linux、FreeBSD、NetBSD、OpenBSD和 Windows等操作系統上。另外,Sparc Solaris、PowerPc Mac0SⅩ MKLinux和PA-RISC HP-UX等操作系統都支持 Snort。
  • Snort可以在任何流行的平臺上運行。
Snort的功能架構

在這裏插入圖片描述

Snort的三種工作模式

在這裏插入圖片描述

Snort指令
  • ./snort -v

    • 在屏幕上顯示網絡數據包的報頭信息
  • ./snort -vd

    • 在屏幕上顯示網絡數據包的報頭內容
  • ./snort -vde

    • 在屏幕上顯示網絡數據包的報頭內容,以及數據鏈接層的信息
  • 檢測規則

在這裏插入圖片描述

  • 規則頭

在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述

在這裏插入圖片描述
在這裏插入圖片描述

  • 規則頭一端口示例

在這裏插入圖片描述

  • 規則選項
    • Snort檢測規則設計中的核心部分
    • 基本選項類型示例
      在這裏插入圖片描述

在這裏插入圖片描述

Snort的檢測引擎的架構
  • Snort檢測引擎的架構(Snort的體系結構)
  • 數據包解碼器
  • 檢測引擎
  • 日誌報警
  • 解碼器:對各種協議棧上的數據包進行解析、預處理,以便提交給檢測引擎進行規則
    在這裏插入圖片描述
    在這裏插入圖片描述
Snort的協議解析器
  • 工作原理

    • 圍繞着網絡協議棧中的各層協議定義展開的,包括從數據鏈路層協議向上到TcP層協議的定義。
    • 協議解析引擎中的每個子例程使用事先定義好的表示網絡協議報文格式的數據結構,從原始網絡流量數據中解析出協議信息
    • 子例程按照網絡協議棧自下而上的順序調用,從數據鏈路層到IP層,直到傳輸層協議結束。
  • 實現機制

    • 主要數據結構爲 Packet。它是 Snort系統中控制系統正常工作信息的關鍵數據結構,其中包括存放了當前數據包進行協議解析後的結果信息。
    • 在協議解析的過程中,利用各種指針實現對數據結構Packet的管理和訪問,使其指向數據包中不同位置以便後繼的規則檢測引擎執行下一步的分析工作。
    • 由於(C語言中)指針具有較高的實現效率,從而提高snort的執行速度
Snort的規則檢測引擎
  • 3個模塊,分別是規則鏈表構造模塊、預處理器模塊和規則匹配模塊
  • 規則鏈表構造模塊
    • 讀入規則配置文件,逐條解析檢測規則,並最終形成內存中的二維規則鏈表結構

在這裏插入圖片描述

在這裏插入圖片描述

  • 預處理模塊

    • 對當前截獲的數據包進行預處理操作,以方便後繼規則匹配模塊對數據包的處理操作。
    • 提供了兩種對於後繼規則匹配工作非常重要的功能。
    • 數據包分片重組及數據流重組功能
    • 協議規範化/解碼功能
  • 規則解析流程:

    • 先讀取規則文件,然後依次讀取每一條規則對規則進行解析,並用相應的規則語法表示;在內存中對規則進行組織,建立規則語法樹。
  • 規則匹配模塊

    • 對於每個當前數據包,遍歷整個規則鏈表結構,並調用對應的插件檢測模塊進行各種處理。
    • 一旦規則匹配模塊搜索到一個與解析後的數據包匹配的規則,則觸發定義好的規則動作並返回。
Snort的日誌/警報系統
  • 規則匹配模塊所觸發的規則動作,由日誌/警報系統完成。
  • 各種響應功能,也是通過各種插件模塊來實現的
  • 3種日誌模式和5種警報模式
    • 關閉、以可讀格式記錄數據包和以 Tcpdump二進制格式記錄數據包。
    • Alert_syslog:警報信息可以發送到系統日誌文件(Syslog)
    • Alert_fast:將報警信息快速的打印在指定文件的一行裏。它是一種快速的報警方法,因爲不需要打印數據包頭的所有信息。
    • Alert_full:打印數據包頭所有信息的報警。
    • Alert_smb:這個插件將把 WinPopup報警信息發送給NETB0S命名的機器上的一個文件。不鼓勵使用這個插件
    • Alert_unixsock:打開一個UNIX套接字,並且把報警信息發送到那裏。

可編程的檢測引擎設計

  • 允許用戶採用特定的編程語言或者腳本語言,實現具體的檢測模塊

  • 要點在於用於實現入侵檢測功能的腳本語言的定義及其與引擎架構的接口設計

  • NFR的IDA/NID爲例
    在這裏插入圖片描述

  • IDA引擎組件:event-driven,負責截獲數據包,各種類型的系統事件,都能驅動該引擎組件進行某種類型的動作,如數據包抵達、時間事件等;

  • 後端組件

    • Backend:響應引擎組件的需求,實現相應的處理方式,如收集TCP網絡協議流量的信息
    • 每一個 backend包括三個部分:過渡器、配置文件和記錄器
  • N-code語言

    • 類G,包括函數聲明、控制語句等
    • 支持表達網絡數據包的數據結構,如 array
    • 支持“數據包變量”類型:指向系統當前截獲並正在處理的數據包
      • 如 ethernet、packet、ip、icmp、tcp、udp等
    • 支持運行符,如算術和邏輯
    • 支持函數和過渡器聲明

特徵分析與協議分析技術

  • 對於網絡入侵檢測而言,存在着兩種基本的技術類型,分別稱爲“特徵(signature)分析”和“協議(protocol)分析”技術。

特徵分析

  • 特徵分析技術最早應用在早期的網絡入侵檢測系統中
  • 基本工作原理是建立在字符串匹配的簡單概念之上。
  • 最初的基於特徵分析的入侵檢測系統是非常原始的,它在工作時完全不考慮網絡數據包中所包含的協議格式化信息,而是將輸入數據包視爲一個無序無結構的隨機數據流,企圖僅僅依靠簡單的字符串匹配操作完成所有的檢測任務。

協議分析技術

  • 早期的協議分析技術將輸入數據包視爲具有嚴格定義格式的數據流,並將輸入數據包按照各層協議報文封裝的反向順序,層層解析出來。
  • 然後,再根據各層網絡協議的定義,對各層協議的解析結果進行逐次分析。
  • 協議分析技術是利用預先定義好的關於協議字段的期望值或合理值的詳細知識,來判斷是否出現了惡意的網絡流量

特徵分析和協議分析技術各自的優缺點。

在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章