freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

網(wǎng)絡(luò)安全入侵檢測系統(tǒng)設(shè)計思路論文含五篇(編輯修改稿)

2024-10-13 19:01 本頁面
 

【文章內(nèi)容簡介】 IDS所無法做到的。(3)降低誤報和漏報率:協(xié)議分析能減少傳統(tǒng)模式匹配NIDS系統(tǒng)中常見的誤報和漏報現(xiàn)象。在基于協(xié)議分析的NIDS系統(tǒng)中誤報率會明顯減少,因為它們知道和每個協(xié)議有關(guān)的潛在攻擊的確切位置以及該位置每個字節(jié)的真正含義。例如,針對基于協(xié)議分析的IDS不但能識別簡單的路徑欺騙:例如把CGI攻擊”/cgibin/phf”變?yōu)椤?cgibin/./phf”或”/cgibinphf”;而且也能識別復(fù)雜的HEX編碼欺騙:例如”/winnt/system32/”,編碼后變?yōu)椤?winnt/system32/%”,通過協(xié)議分析%25 解碼后為‘%’,%63解碼后為‘c’,這樣就解析出了攻擊串。又如針對Unicode(UTF8)的編碼欺騙(與ASCII字符相關(guān)的HEX編碼一直到%7f,Unicode編碼值要高于它),攻擊串編碼后得到”/winnt/system32%c0%”,通過解碼可知%c0%af在Unicode中對應(yīng)/,所以解碼后就能順利還原出攻擊串。第四章 PANIDS系統(tǒng)的設(shè)計及實現(xiàn) PANIDS系統(tǒng)總體結(jié)構(gòu)設(shè)計PANIDS系統(tǒng) 主要由系統(tǒng)基本信息讀取模塊、網(wǎng)絡(luò)數(shù)據(jù)包捕獲模塊、基于協(xié)議分析的入侵檢測模塊、響應(yīng)模塊和控制管理中心等幾部分組成。 系統(tǒng)基本信息讀取模塊的設(shè)計及實現(xiàn)為了更好的顯示出本機(jī)的特性,在此PANIDS系統(tǒng)中特別增加系統(tǒng)基本信息讀取模塊。通過此模塊能顯示出主機(jī)名和本機(jī)的IP地址和所使用的Winsock的版本在此模塊中主要用到函數(shù)gethostname()和gethostbyname()。gethostname()函數(shù)作用是獲取本地主機(jī)的主機(jī)名,其定義如下:int PASCAL FAR gethostname(char FAR * name, int namelen)。name:用于指向所獲取的主機(jī)名的緩沖區(qū)的指針。Namelen:緩沖區(qū)的大小,以字節(jié)為單位。gethostbyname()在此模塊中是一個主要函數(shù),該函數(shù)可以從主機(jī)名數(shù)據(jù)庫中得到對應(yīng)的”主機(jī)”。其定義如下:include struct hostent FAR *PASCAL FAR gethostbyname(const char FAR * addr)name:指向主機(jī)名的指針。gethostbyname()返回對應(yīng)于給定主機(jī)名的包含主機(jī)名字和地址信息的hostent結(jié)構(gòu)指針。結(jié)構(gòu)的聲明與gethostaddr()中一致。如果沒有錯誤發(fā)生,gethostbyname()返回如上所述的一個指向hostent結(jié)構(gòu)的指針,否則,返回一個空指針。hostent結(jié)構(gòu)的數(shù)據(jù)結(jié)構(gòu)如下: struct hostent { char *h_name。//地址的正式名稱char **h_aliases。//空字節(jié)地址的預(yù)備名稱的指針 int h_addrtype。//地址類型,通常是AF_INET int h_length。//地址的比特長度char **h_addr_list。//零字節(jié)主機(jī)網(wǎng)絡(luò)地址指針,網(wǎng)絡(luò)字節(jié)順序 }。返回的指針指向一個由Windows Sockets實現(xiàn)分配的結(jié)構(gòu)。應(yīng)用程序不應(yīng)該試圖修改這個結(jié)構(gòu)或者釋放它的任何部分。此外,每一線程僅有一份這個結(jié)構(gòu)的拷貝,所以應(yīng)用程序應(yīng)該在發(fā)出其他Windows Scokets API調(diào)用前,把自己所需的信息拷貝下來。gethostbyname()實現(xiàn)沒有必要識別傳送給它的IP地址串。對于這樣的請求,應(yīng)該把IP地址串當(dāng)作一個未知主機(jī)名同樣處理。如果應(yīng)用程序有IP地址串需要處理,它應(yīng)該使用inet_addr()函數(shù)把地址串轉(zhuǎn)換為IP地址,然后調(diào)用gethostbyaddr()來得到hostent結(jié)構(gòu)。 網(wǎng)絡(luò)數(shù)據(jù)包捕獲模塊的設(shè)計及實現(xiàn) 網(wǎng)絡(luò)數(shù)據(jù)包捕獲的方法有很多,比如既可以利用原始套接字來實現(xiàn),也可以通過Libpcap、Jpcap和WinPcap 提供的接口函數(shù)來實現(xiàn)。Libpcap、Jpcap和WinPcap是世界各地的網(wǎng)絡(luò)專家共同努力的結(jié)果,為開發(fā)者提供了很多高效且與系統(tǒng)無關(guān)的網(wǎng)絡(luò)數(shù)據(jù)包截獲接口函數(shù);所以在性能上一般比采用普通的套接字方法要好。LibPcap是一個優(yōu)秀跨平臺的網(wǎng)絡(luò)抓包開發(fā)工具,JPcap是它的一個Java版本。WinPcap在某種程度上可以說它是LibPcap的一個Windows版本,因為它們的大部分接口函數(shù)以及所采用的數(shù)據(jù)結(jié)構(gòu)都是一樣的。另外,WinPcap在某些方面進(jìn)行了優(yōu)化,還提供了發(fā)送原始數(shù)據(jù)包和統(tǒng)計網(wǎng)絡(luò)通信過程中各種信息的功能(LibPcap沒有統(tǒng)計功能),方便進(jìn)行測試;所以采用WinPcap所提供的庫函數(shù)來截獲網(wǎng)絡(luò)數(shù)據(jù)包。Winpcap捕獲數(shù)據(jù)包的實現(xiàn)(1)PACKET結(jié)構(gòu)typedef struct _PACKET { HANDLE hEvent。OVERLAPPED OverLapped。PVOID Buffer。//這個buffer就是指向存放數(shù)據(jù)包的用戶緩沖區(qū) UINT Length。//buffer的長度DWORD ulBytesReceived。//調(diào)用PacketReceivePacket()函數(shù)所讀 //取的字節(jié)數(shù),可能包含多個數(shù)據(jù)包 BOOLEAN bIoComplete。} PACKET, *LPPACKET。其他未注釋的幾個成員,都是過時的成員,他們的存在只是為了與原來的兼容。此結(jié)構(gòu)主要用來存放從內(nèi)核中讀取的數(shù)據(jù)包。(2)pcap_file_header 結(jié)構(gòu) struct pcap_file_header{ bpf_u_int32 magic。//一個標(biāo)識號,標(biāo)識特定驅(qū)動器產(chǎn)生的dump文件 u_short version_major。//WinPcap的主版本號 u_short version_minor。//WinPcap的次版本號bpf_int32 thiszone。//GMT時間與本地時間的校正值 bpf_u_int32 sigfigs。//精確的時間戳bpf_u_int32 snaplen。//每個數(shù)據(jù)包需要存放到硬盤上的最大長度 bpf_u_int32 linktype。//鏈路層的數(shù)據(jù)類型 }。//這個頭部共24個字節(jié)把截獲的數(shù)據(jù)包以標(biāo)準(zhǔn)的Windump格式存放到硬盤上時,就是以這個結(jié)構(gòu) 作為文件的開頭。(3)bpf_hdr結(jié)構(gòu) struct bpf_hdr { struct timeval bh_tstamp。//數(shù)據(jù)包捕獲的時間戳信息 UINT bh_caplen。//數(shù)據(jù)包被捕獲部分的長度 UINT bh_datalen。//數(shù)據(jù)的原始長度 USHORT bh_hdrlen。//此結(jié)構(gòu)的長度 }。從內(nèi)核中讀取數(shù)據(jù)包并存放在用戶緩沖區(qū)中時,采用此結(jié)構(gòu)來封裝所截獲的 數(shù)據(jù)包。其中timeval的結(jié)構(gòu)如下 struct timeval { long tv_sec。//以秒為單位的時間 long tv_usec。//以毫秒為單位的時間 }。(4)dump_bpf_hdr結(jié)構(gòu) struct dump_bpf_hdr{ struct timeval ts。//數(shù)據(jù)包捕獲的時間戳 UINT caplen。//數(shù)據(jù)包被捕獲部分的長度 UINT len。//數(shù)據(jù)包的原始長度 }。把數(shù)據(jù)包存放到硬盤上或者向網(wǎng)絡(luò)上發(fā)送數(shù)據(jù)包時,都使用此結(jié)構(gòu)來封裝每一個數(shù)據(jù)包。在了解其數(shù)據(jù)結(jié)構(gòu)的基礎(chǔ)上,下面來分析其是如何具體實現(xiàn)網(wǎng)絡(luò)數(shù)據(jù)包捕獲的。其前期的主要過程應(yīng)為:首先應(yīng)找到設(shè)備列表,然后顯示適配器列表和選擇適配器,最后通過pcap_open_live()函數(shù)根據(jù)網(wǎng)卡名字將所選的網(wǎng)卡打開,并設(shè)置為混雜模式。用Winpacp捕獲數(shù)據(jù)包時,其中pcap_loop()是截包的關(guān)鍵環(huán)節(jié),它是一個循環(huán)截包函數(shù),分析此函數(shù)的源碼可知。在pcap_loop()的每次循環(huán)中,首先通過調(diào)用PacketReceivePacket()函數(shù),從內(nèi)核緩沖區(qū)中把一組數(shù)據(jù)包讀取到用戶緩沖區(qū)。然后,根據(jù)bpf_hdr結(jié)構(gòu)提供的該數(shù)據(jù)包的定位信息,把用戶緩沖區(qū)的多個數(shù)據(jù)包逐個的提取出來,并依次送入回調(diào)函數(shù)進(jìn)行進(jìn)一步處理。通過這個過程就實現(xiàn)了網(wǎng)絡(luò)數(shù)據(jù)包的捕獲。 基于協(xié)議分析的入侵檢測模塊的設(shè)計及實現(xiàn)此模塊是基于協(xié)議分析入侵檢測系統(tǒng)PANIDS的核心部分,下面我們重點討論此模塊的設(shè)計及實現(xiàn)。 數(shù)據(jù)包的分解 當(dāng)需要發(fā)送數(shù)據(jù)時,就需要進(jìn)行封裝。封裝的過程就是把用戶數(shù)據(jù)用協(xié)議來進(jìn)行封裝,首先由應(yīng)用層協(xié)議進(jìn)行封裝,如HTTP協(xié)議。而HTTP協(xié)議是基于TCP協(xié)議的。它就被TCP協(xié)議進(jìn)行封裝,包作為TCP數(shù)據(jù)段的數(shù)據(jù)部分。而TCP協(xié)議是基于IP協(xié)議的,所以TCP段就作為IP協(xié)議的數(shù)據(jù)部分,加上IP協(xié)議頭,就構(gòu)成了IP數(shù)據(jù)報,而IP數(shù)據(jù)報是基于以太網(wǎng)的,所以這個時候就被封裝成了以太網(wǎng)幀,這個時候就可以發(fā)送數(shù)據(jù)了。通過物理介質(zhì)進(jìn)行傳送。在這里我們所用到的是數(shù)據(jù)包的分解。分解的過程與封裝的過程恰恰相反,這個時候就需要從一個以太網(wǎng)幀中讀出用戶數(shù)據(jù),就需要一層一層地進(jìn)行分解,首先是去掉以太網(wǎng)頭和以太網(wǎng)尾,在把剩下的部分傳遞給IP層軟件進(jìn)行分解,去掉IP頭,然后把剩下的傳遞給傳輸層,例如TCP協(xié)議,此時就去掉TCP頭,剩下應(yīng)用層協(xié)議部分?jǐn)?shù)據(jù)包了,例如HTTP協(xié)議,此時HTTP協(xié)議軟件模塊就會進(jìn)一步分解,把用戶數(shù)據(jù)給分解出來,例如是HTML代碼。這樣應(yīng)用軟件就可以操作用戶數(shù)據(jù)了,如用瀏覽器來瀏覽HTML頁面。其具體的數(shù)據(jù)包分解如下:ethernet =(struct sniff_ethernet*)(pkt_data)。ip =(struct sniff_ip*)(pkt_data + size_ethernet)。tcp =(struct sniff_tcp*)(pkt_data + size_ethernet + size_ip)。udp =(struct sniff_udp*)(pkt_data + size_ethernet + size_ip)。icmp =(struct sniff_icmp*)(pkt_data + size_ethernet + size_ip)。 入侵檢測的實現(xiàn)通過Winpcap捕獲數(shù)據(jù)包,數(shù)據(jù)包分解完以后就對其進(jìn)行協(xié)議分析,判斷分組是否符合某種入侵模式,如果符合,則進(jìn)行入侵告警。在本系統(tǒng)中實現(xiàn)了對多種常見入侵模式的檢測,采用的入侵模式包括ICMP分片、常用端口、IGMP分片、WinNuke攻擊、應(yīng)用層攻擊。ICMP報文是TCP/IP協(xié)議中一種控制報文,它的長度一般都比較小,如果出現(xiàn)ICMP報文分片,那么說明一定出現(xiàn)了Ping of Death攻擊。在本系統(tǒng)中ipip_p == 01,這是表示ip首部的協(xié)議類型字段,01代表ICMP。string str1 = inet_ntoa(in_addrIP)。string str2 = inet_ntoa(ipip_src)。當(dāng)(ipip_off 1)amp。amp。 str1!= str2時,就表認(rèn)為是Ping of Death攻擊。如果都符合,就報警(調(diào)用函數(shù)將受到攻擊的時間、攻擊名稱以及攻擊的IP地址顯示出來)。一些攻擊特洛伊木馬、蠕蟲病毒等都會采用一些固定端口進(jìn)行通信,那么如果在分組分析過程中發(fā)現(xiàn)出現(xiàn)了某個端口的出現(xiàn),則可以認(rèn)為可能出現(xiàn)了某種攻擊,這里為了減少誤判,應(yīng)當(dāng)設(shè)置一個閾值,僅當(dāng)某個端口的分組出現(xiàn)超過閾值后才進(jìn)行報警。這就意味著檢測到發(fā)往某個端口的的分組超過閾值后才認(rèn)為出現(xiàn)了某種攻擊,并進(jìn)行告警。本系統(tǒng)定義了兩種端口掃描,Trojan Horse端口掃描和代理服務(wù)器端口掃描。Trojan Horse端口掃描實現(xiàn)如下:首先根據(jù)if((tcpth_flags amp。 TH_SYN)==TH_SYN)判斷其是否為TCP SYN報文,若是,并且端口為Trojan Horse的常用掃描端口時,最后判斷報文數(shù)是否超過閾值TrojanThreshold,如果超過的后,就被認(rèn)定為Trojan Horse端口掃描,然后報警。對代理服務(wù)器
點擊復(fù)制文檔內(nèi)容
環(huán)評公示相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1