當前位置:編程學習大全網 - 源碼下載 - type 8E是什麽文件系統?

type 8E是什麽文件系統?

Snort分析報告

1.--snort的簡介

snort 是壹個基於libpcap的數據包嗅探器並可以作為壹個輕量級的網絡入侵檢測系統(

NIDS)。所謂的輕量級是指在檢測時盡可能低地影響網絡的正常操作,壹個優秀的輕量

級的NIDS應該具備跨系統平臺操作,對系統影響最小等特征並且管理員能夠在短時間內

通過修改配置進行實時的安全響應,更為重要的是能夠成為整體安全結構的重要成員。

Snort作為其典型範例,首先可以運行在多種操作系統平臺,例如UNIX系列和Windows 9

X.(需要libpcap for Win32的支持),與很多商業產品相比,它對操作系統的依賴性比

較低。其次用戶可以根據自己的需要及時在短時間內調整檢測策略。就檢測攻擊的種類

來說,據最新數據表明(2000/12/4)snort***有21類()1271條檢測規則,其中包括

對緩沖區溢出,端口掃描和CGI攻擊等等。SNORT集成了多種告警機制來提供實時告警功

能,包括:syslog、用戶指定文件、UNIXSocket、通過SMBClient使用WinPopup對Windo

ws客戶端告警。 Snort的現實意義維作為開源軟件填補了只有商業入侵檢測系統的空白

,可以幫助中小網絡的系統管理員有效地監視網絡流量和檢測入侵行為。

2.snort與其他工具的比較。

Snort的主要用途就是網絡監視、數據包的記錄和檢測入侵行為,下面是與分別具有上述

兩種功能的典型工具的比較。

1)--snort與tcpdump的比較

Tcpdump是最為經典的嗅探工具,主要是用於記錄網絡數據,網絡故障的探測診斷工具。

Snort與它的最大的***同之處在於都是基於libpcap的並且支持BPF過濾機制,所以本質上

都是調用的捕獲數據包的庫函數,但是snort的目的不僅僅是在於記錄這個數據包而是從

安全的角度考慮出發區解析它,並且tcpdump主要是分析第二層或者第三層的報文來進行

網絡故障診斷,而snort則主要針對於應用層的數據進行分析從而實現檢測入侵行為。除

此之外,由於tcpdump旨在快速完整地記錄流量,所以它制定了特殊的輸出格式,速度快

但是不易看懂,而snort就提供了更為友好的輸出格式,有利於系統管理員的直接分析。

--Figure 1 - Typical Snort telnet packet display:

--------------------------------------------------------------------------

20:59:49.153313 0:10:4B:A9:66 -> 0:60:97:7:C2:8E type:0x800 len:0x7D

192.168.1.3:23 -> 192.168.1.4:1031 TCP TTL:64 TOS:0x10 DF

***PA* Seq: 0xDF4A6536 Ack: 0xB3A6FD01 Win: 0x446A

FF FA 22 03 03 E2 03 04 82 0F 07 E2 1C 08 82 04 ..".............

09 C2 1A 0A 82 7F 0B 82 15 0F 82 11 10 82 13 FF ................

F0 0D 0A 46 72 65 65 42 53 44 20 28 65 6C 72 69 ...FreeBSD (elri

63 2E 68 6F 6D 65 2E 6E 65 74 29 20 28 74 74 79 c.home.net) (tty

70 30 29 0D 0A 0D 0A p0)....

---------------------------------------------------------------------------

--Figure 2 - The same telnet packet as displayed by tcpdump:

---------------------------------------------------------------------------

20:59:49.153313 0:10:4b:d:a9:66 0:60:97:7:c2:8e 0800 125: 192.168.1.3.23 >

192.168.1.4.1031: P 76:147(71) ack 194 win 17514 (DF) [tos 0x10] (ttl 64,

id 660)

4510 006f 0294 4000 4006 b48d c0a8 0103

c0a8 0104 0017 0407 df4a 6536 b3a6 fd01

5018 446a d2ad 0000 fffa 2203 03e2 0304

820f 07e2 1c08 8204 09c2 1a0a 827f 0b82

150f 8211 1082 13ff f00d 0a46 7265 6542

5344 2028 656c 7269 632e 686f 6d65 2e6e

6574 2920 2874 7479 7030 290d 0a0d 0a

---------------------------------------------------------------------------

2)--snort與NFR的比較

根據Denmac System公司1999年11月的現有商用網絡入侵檢測工具的調查結果表明,NFR

的綜合性能指數高於ISS公司的RealSecure和CA公司的SessionWall,所以其代表了目前

國際上的IDS的最高水準,是壹個比較成熟的商業產品。Snort的許多設計思想類似於NF

R,但是在很多方面都顯出不足之處,例如無法實現IP Defragmentation等功能,在探測

規則語言的格式上來說,NFR采用的是壹種深層次的腳本語言,SNORT與其相比就略顯單

薄。但是snort的優勢就在於它是開源軟件,全世界的愛好者都可以加入它的開發升級工

作中來,其前景是無法限量的。

2.--原理

snort作為壹個NIDS[註:基於網絡的入侵檢測系統(NIDS),其工作原理為在基於***享

網絡上檢測原始的網絡傳輸數據,通過分析捕獲的數據包,主要工作為匹配入侵行為的

特征或者從網絡活動的角度檢測異常行為,進而采取入侵的預警或記錄。從檢測模式而

言,snort屬於是誤用檢測(misuse detection)。[註:該方法對已知攻擊的特征模式

進行匹配,包括利用工作在網卡混雜模式下的嗅探器被動地進行協議分析,以及對壹系

列數據包解釋分析特征。]從本質上上來說,snort是基於規則檢測的入侵檢測工具,即

針對每壹種入侵行為,都提煉出它的特征值並按照規範寫成檢驗規則,從而形成壹個規

則數據庫。其次將捕獲得數據包按照規則庫逐壹匹配,若匹配成功,則認為該入侵行為

成立。目前,snort的檢測規則庫主要包括了以下幾類的入侵行為:

snort的結構主要分為三個部分如圖n-1:

l--數據包捕獲和解析子系統(Capture Packet Mechanism from link layer and the

packet decoder ):

該子系統的功能為捕獲網絡得傳輸數據並按照TCP/IP協議的不同層次將數據包進行解析

。Snort利用libpcap庫函數進行采集數據, 該庫函數可以為應用程序提供直接從鏈路層

捕獲數據包的接口函數並可以設置數據包的過濾器以來捕獲指定的數據。(的詳細介紹

請參閱附錄N)。網絡數據采集和解析機制是整個NIDS實現的基礎,其中最關鍵的是要保

證高速和低的丟包率,這不僅僅取決於軟件的效率還同硬件的處理能力相關。對於解析

機制來說,能夠處理數據包的類型的多樣性也同樣非常重要,目前,snort可以處理以太

網,令牌環以及SLIP等多種鏈路類型的包。

l--檢測引擎(the detect engine)

檢測引擎是壹個NIDS實現的核心,準確性和快速性是衡量其性能的重要指標,前者主要

取決於對入侵行為特征碼的提煉的精確性和規則撰寫的簡潔實用性,由於網絡入侵檢測

系統自身角色的被動性——只能被動的檢測流經本網絡的數據,而不能主動發送數據包

去探測,所以只有將入侵行為的特征碼歸結為協議的不同字段的特征值,通過檢測該特

征值來決定入侵行為是否發生。後者主要取決於引擎的組織結構,是否能夠快速地進行

規則匹配。

Snort采用了靈活的插件形式來組織規則庫,即按照入侵行為的種類劃分為相應的插件,

用戶可以根據需要選取對應的插件進行檢測。目前包括的插件分別如下:

每壹類插件中包括了數十條的檢測規則,分別代表同壹類型的不同入侵行為。對於規則

的定義,snort使用了壹種簡單的,輕量級的規則描述語言,上述已經提及到檢測的最終

行為就是檢測數據包中協議的不同字段,例如端口號就是重要的入侵線索。為了更為清

楚地闡述這個問題,我們舉壹例說明:

攻擊名稱--NT IIS Showcode ASP

攻擊種類--獲取非法訪問權限。

攻擊描述--通過構造特定的URL請求可以非法閱讀服務器上的其他文件 - 向發送方發送ICMP_NET_UNREACH

icmp_host - 向發送方發送ICMP_HOST_UNREACH

icmp_port - 向發送方發送ICMP_PORT_UNREACH

icmp_all - 向發送方發送上述所有的ICMP數據包。

作為入侵檢測系統,理論上只需要檢測入侵,並不需要去回應入侵行為的。所以該功能

應該是作為SNORT的附加功能,但是值得壹提的是,發送RST和ICMP UNREACH數據包向攻

擊方可以暫緩其對目標主機的攻擊,我們所研究的壹個工具叫做dsniff中的tcpkill就是

利用這個原理進行切斷非法連接,但是對於壹般的拒絕服務攻擊,該方法的作用就不甚

明顯了。對於SNORT來說,實現該功能必然會降低檢測的的效率尤其是在網絡流量特別大

的時候。

另外12中關鍵字都是針對協議中的不同字段設置的:

關鍵字--檢測內容--主要針對的攻擊行為

ttl--檢測ip頭的ttl的值 --用於對traceroute探測的檢測

id--檢測ip頭的分片id值--黑客的固定攻擊,例如設置為31337

dsize--檢測包的凈荷尺寸的值--緩沖區溢出攻擊。

content--在包的凈荷中搜索指定的樣式--最為重要的壹個選項,用於在數據包的數據段

中搜索指定的內容並根據數據觸發響應,可以搜索包含混合的文本和二進制數據。並設

置了三個輔助關鍵字:offset,dsize,nocase

Flags--檢測tcp flags的值--非法端口掃描或者其他非法探測主機操作系統類型等。

Seq--檢測tcp順序號的值--檢測主機發送的序列號集是否是固定的集合。入侵者可以利

用該值冒充合法用戶向被入侵者發送數據,偽裝正常的通信以竊取信息或者其他非法活

動。

Ack--檢測tcp應答(acknowledgement)的值--Nmap的TCP PING會設置該項的值為0,從而

判斷可能正在用Nmap進行非法掃描。

Itype--檢測icmp type的值--拒絕服務攻擊。註:只作為其中的壹種特征。

Icode--檢測icmp code的值--可疑的流量。

Session--記錄指定會話的應用層信息的內容--記錄在TCP會話中的會話數據。

Icmp_id--檢測ICMP ECHO ID的值--

Icmp_seq--檢測ICMP ECHO 順序號的值--

Ipoption--監視IP option的特定代碼--

Rpc--監視特定應用/進程調用的RPC服務--檢測非法的RPC請求,查看RPC請求,並自動將

應用(Application),過程(procedure)和程序版本(program version)譯碼,如果

所有三個值都匹配的話,該規則就顯示成功。

3.預處理程序

預處理程序從Snort版本1.5開始引入,其代碼在檢測引擎被調用之前先被運行,為檢測

做鋪墊,從而提高檢測的準確性和速度。而且預處理機制采用插件形式,用戶和程序員

能夠將模塊化的插件方便地融入Snort之中。目前snort現有的預處理程序模塊有以下三

種:

l--Minfrag

Minfrag預處理程序檢查給定尺寸限制的分片數據包。數據包被分片通常是由源和目的主

機之間的路由器引起的。壹般說來,商業網絡設備不會產生小於512字節的分片包。可以

利用這個事實,來監控含有小分片的流量。

l--HTTP Decode

HTTP Decode用於處理HTTP URI字符串,將串中的數據轉化為可讀的ASCII字串,用於檢

測HTTP的數據信息對付隱蔽的WebURL掃描器和惡意的入侵者。

l--Portscan Detector

Snort Portscan預處理程序的用處:

向標準記錄設備中記錄從壹個源IP地址來的端口掃描的開始和結束。

如果指定了壹個記錄文件,在記錄掃描類型的同時也記錄目的IP地址和端口。端口掃描

定義為在時間T(秒)之內向超過P個端口進行TCP連接嘗試,或者在時間T(秒)之內向

超過P個端口發送UDP數據包。端口掃描可以是對任壹IP地址的多個端口,也可以是對多

個IP地址的同壹端口進行。現在這個版本可以處理壹對壹和壹對多方式的端口掃描,下

壹個完全版本將可以處理分布式的端口掃描(多對壹或多對多)。端口掃描也包括單壹

的秘密掃描(stealthscan)數據包,比如NULL,FIN,SYNFIN,XMAS等。如果包括秘密

掃描的話,端口掃描模塊會對每壹個掃描數據包告警。

network to monitor - 監視端口掃描的目標網絡以network/CIDR表示

number of ports - 在探測期間訪問的端口數目

detection period - 以秒計數的端口訪問時間限制

logdir/filename - 告警信息存放的目錄/文件名,告警也可以寫入標準的告警文件中。

l--日誌及報警子系統(logging/alerting subsystem)

入侵檢測系統的輸出結果系統的必要特征是實時性和多樣性,前者指能夠在檢測到入侵

行為的同時及時記錄和報警,後者是指能夠根據需求選擇多種方式進行記錄和報警。壹

個好的NIDS,更應該提供友好的輸出界面或發聲報警等等。

Snort是壹個輕量級的NIDS,它的另外壹個重要功能就是數據包記錄器,所以該子系統主

要提供了方式:

1.--fast model :采取TCPDUMP的格式記錄信息

2. readable model :按照協議格式記錄,易於用戶查看。

3.alert to syslog: 向syslog發送報警信息。

4.alert to text file :以明文形式記錄報警信息。

值得提出的是,snort考慮到用戶需要高性能的時候,即網絡數據流量非常大,可以將數

據包信息進行壓縮從而實習快速的報警。

3.-- 程序結構

1)--snort的整體結構

snort作為優秀的公開源代碼的入侵檢測系統範例,其整個程序結構清晰,構思巧妙,我

們對於其版本1.6.3的源碼進行了深入的分析。Snort***有64個c文件和h文件,首先介紹

程序的整體結構,其流程圖如下:

其中最為關鍵的函數就是ProcessPacket(),--其流程圖如下:

2)--數據結構--

snort的主要數據結構就是幾個鏈表,上述已經提及,snort組織規則庫的巧妙之處就是

按照規則的處理動作來劃分成三個鏈表,其中每個鏈表又按照協議類型:TCP,IP和ICMP

分成三個鏈表,所以所有的規則都會被分配到這個三個鏈表中。鏈表中的成員就是描述

每條規則的結構——RuleTreeNode,該結構中的壹個重要成員就是記錄該規則的處理函

數鏈表——RuleFpList,壹條規則有時候需要調用多個處理函數來進行分析。該結構中

的另外壹個重要成員就是規則選項的結構,該結構同樣包括該規則的選項信息以及其處

理函數鏈表。

值得提出的是,並不是每壹條規則都分配壹個RuleTreeNode結構,因為很多規則的選項

前的頭部分是相同的,只需要根據不同的規則選項鏈取不同的選項函數處理鏈表。基本

整體的結構如圖n所示,所有鏈表的初始化都是在捕獲數據包前進行的。

除以上鏈表外,snort還定義了預處理、輸出的關鍵字和處理函數鏈表,設計鏈表的主要

意圖是為了實現插件的思想,即用戶何以根據需求添加刪除預處理的功能模塊。其只要

的數據結構如下:

typedef struct _PreprocessKeywordNode

{

char *keyword;

void (*func)(char *);

} PreprocessKeywordNode;

// 預處理關鍵字信息結構。

typedef struct _PreprocessKeywordList

{

PreprocessKeywordNode entry;

struct _PreprocessKeywordList *next;

} PreprocessKeywordList;

//預處理關鍵字鏈表。

typedef struct _PreprocessFuncNode

{

void (*func)(Packet *);

struct _PreprocessFuncNode *next;

} PreprocessFuncNode;

//預處理函數鏈表。

所有鏈表的初始化都是在捕獲數據包前進行初始化的,壹旦鏈表都已建立完畢,開始捕

獲數據包,每收到壹個數據包都會現首先調用預處理程序鏈表中的函數進行處理後,其

次按照默認地順序遍歷AlertList,PassList和LogList三個鏈表。遍歷時首先根據數據包

的協議類型定位規則鏈表,其次調用遞歸函數進行規則的逐壹匹配,即首先匹配規則頭

,若匹配則繼續遞歸匹配規則選項,若不匹配,直接匹配下壹條規則。為了加快遍歷的

速度,snort在規則選項中的”content”內容匹配時調用了Boyer-Moore算法。

4.--改進

1.--背景

我們認為snort已經具備了NIDS的基本功能,由於它本身定位在壹個輕量級的入侵檢測工

具,盡管與商業的入侵檢測工具比起來,它的規則語言略顯簡陋,在報警方式和圖形化

使用界面上也顯露出不足之處,但是程序的整體結構清晰,規則語言簡單實用並提供插

件的功能支持,用戶可以添加自己的檢測規則和處理函數,這對於規則庫的及時更新有

著極為現實的意義。

通過分析,與商業的NIDS相比,SNORT 1.6.3沒有設置對IP 分片包的處理功能,即對於

例如“Teardrop”和“Ping of Death”兩類利用非法IP分片包進行的攻擊無法檢測:

--teadrop——該攻擊是針對很多操作系統的TCP/IP協議棧沒有正確處理已分段的IP包

的重組。其特征是發送2個或更多特別的分段IP數據報。第壹個包是偏移量為0的段,數

據段(分段長度)字節是N,並設置了MF位,第二個包是最後壹個分段(MF==0),但它的偏移

量小於N,所有造成兩個分段重疊了。為了重組這些包,有弱點的系統就會在TCP/IP棧中

分配非常大的空間,因此導致目標系統因為內存耗盡而停止響應或者重啟。

--Ping of Death——該攻擊的特正是向攻擊目標發送大量的ICMP分片數據包,當這些

數據包重組時其數據段已經大於65535個字節,系統會因為無法處理這種數據包而造成拒

絕服務或者重啟。

--

2.--方案

3.--實現

  • 上一篇:Wdf文件解析源代碼
  • 下一篇:2019年5萬-10萬元,有什麽好的創業項目或點子推薦?
  • copyright 2024編程學習大全網