端口掃描與檢測技術的實現(xiàn)畢業(yè)設計論文_第1頁
端口掃描與檢測技術的實現(xiàn)畢業(yè)設計論文_第2頁
端口掃描與檢測技術的實現(xiàn)畢業(yè)設計論文_第3頁
端口掃描與檢測技術的實現(xiàn)畢業(yè)設計論文_第4頁
端口掃描與檢測技術的實現(xiàn)畢業(yè)設計論文_第5頁
已閱讀5頁,還剩29頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、畢畢 業(yè)業(yè) 設設 計計( 論論 文文)端口掃描與檢測技術的實現(xiàn)端口掃描與檢測技術的實現(xiàn)論文作者姓名:論文作者姓名:申請學位專業(yè):申請學位專業(yè):申請學位類別:申請學位類別:指指導導教教師師姓姓名名(職職稱稱):論文提交日期:論文提交日期:端口掃描與檢測技術的實現(xiàn)端口掃描與檢測技術的實現(xiàn)摘摘 要要隨著 internet 日益廣泛的應用,黑客攻擊行為也是有增無減。如何有效地抵御這種攻擊行為,一直是信息安全領域的焦點。而其中,端口掃描技術吸引了越來越多人的關注。端口掃描是黑客搜集目標主機信息的一種常用方法。為了有效地對付網絡入侵行為,對端口掃描進行研究是非常有益和必要的。攻擊者在攻擊一個目標時,首先要

2、獲取目標的一些基本信息,端口掃描就是其中最簡單最重要的方法之一,它可以掃描目標機器中開放的端口,從而確定目標機器中提供的服務,為下一步攻擊做準備。針對端口掃描技術,相應的端口掃描檢測技術顯的越發(fā)重要,作為網絡安全技術中的一個重要課題,端口掃描檢測技術意義重大。本文首先闡述了端口掃描技術以及端口掃描檢測技術的基本原理和常用方法,然后在此基礎上設計了一個對基于網絡的端口進行掃描,能判斷出目標主機端口開放情況的程序以及一個從網絡信息的數(shù)據包的捕獲和分析著手,再通過統(tǒng)計判斷是否存在端口掃描行為的程序,最后從攻擊和防御的角度對端口掃描和檢測技術作了演示及分析。關鍵詞關鍵詞:端口;端口掃描;數(shù)據包捕獲;端

3、口檢測the realization of port scanning and detecting technologyabstractas the widely applying of internet, the attacking behavior made by hacker is increasing but not decreasing. how to resist this kind of attacking behavior is always the key point of the domain of the information security.and the port

4、 scanning draws peoples attention more and more. port scanning is a usual method which is used by the hacker to collect the information of the target main processor. in order to deal with the invading behavior of the internet effectively, it is very useful and necessary to work on the port scanning.

5、 when an attacker attacks to a target, he or she will firstly gets some basic information about the target, and the port scanning is one of the most simple and important methods which can scan the opening port of the target machine to make sure the offering service made by the target machine, and it

6、 is a preparation to the next attacking. the port detecting seems more and more important referring to the port scanning. as an important task of the secure technique of internet, the port detecting is of great significance.in this thesis, it firstly elaborates the basic principles and usual methods

7、 of the port scanning. on this basis, it then designs a program which can scan the port of the internet, and assess the opening situation of the target main processor, and the other program which begins on capturing and analyzing the information packet of internet, and then assess whether there is a

8、 behavior about port scanning through statistic analyses. lastly, it demonstrates and analyses the technology of port scanning and port detecting from the viewpoint of attacking and resisting.key words:port; port scanning; packet capture; port detecting目目 錄錄論文總頁數(shù):23 頁1引言.11.1本課題研究的意義.11.2本課題的研究方法.22

9、端口掃描概述.22.1基本概念.22.2端口掃描原理.32.3端口掃描技術簡介.53檢測端口掃描概述.73.1端口掃描檢測的分析.73.2普通端口掃描檢測技術概述.83.3慢速端口掃描檢測技術概述.93.4端口掃描的分布式檢測概述.93.5主流的端口掃描工具.114端口掃描的實現(xiàn).124.1掃描程序的設計原理.124.2程序流程圖.125檢測端口掃描的實現(xiàn).135.1檢測程序的設計原理.135.2程序流程圖.135.3設計實現(xiàn)重點代碼.146性能測試.186.1端口掃描程序性能測試.186.2檢測端口掃描程序性能測試.19結 論.20參考文獻.21致 謝.22聲 明.23第 1 頁 共 23

10、頁1 1 引言引言隨著科學技術的飛速發(fā)展,21 世紀的地球人已經生活在信息時代。20 世紀人類的兩大科學技術成果計算機技術和網絡技術,均已深入到人類社會的各個領域,internet 把“地球村”的居民們緊密聯(lián)系在一起, “天涯若比鄰”已然成為現(xiàn)實?;ヂ?lián)網之所以能這樣迅速蔓延,被世人所接受,是因為它具備特有的信息資源。無論對商人、學者,還是對社會生活中的普通老百姓,只要你進入網絡的世界,就能找到其隱藏的奧妙,就能得到你所需要的信息。近年來 internet的迅速發(fā)展,給人們的日常生活帶來了全新的感受, “網絡生存”已經成為時尚,同時人類社會諸如政治、科研、經濟、軍事等各種活動對信息網絡的依賴程度

11、已經越來越強, “網絡經濟”時代已初露端倪。然而,網絡技術的發(fā)展在給我們帶來便利的同時也帶來了巨大的隱患,尤其是 internet 和 intranet 的飛速發(fā)展對網絡安全提出了前所未有的挑戰(zhàn)。技術是一把雙刃劍,不法分子試圖不斷利用新的技術伺機攻入他人的網絡系統(tǒng),而肩負保護網絡安全重任的系統(tǒng)管理員則要利用最新的網絡技術來防范各種各樣的非法網絡入侵行為。事實已經證明,隨著互聯(lián)網的日趨普及,在互聯(lián)網上的犯罪活動也越來越多,特別是 internet 大范圍的開放以及金融領域網絡的接入,使得越來越多的系統(tǒng)遭到入侵攻擊的威脅。而作為黑客入侵的前奏,端口掃描是最常見的信息獲取手段,端口掃描的檢測技術在當

12、今已經越來越成為一個重要的課題。本文首先對端口掃描技術進行研究,并開發(fā)一個能查詢目標主機端口開放情況的程序;然后重點研究端口掃描的檢測技術,從對數(shù)據包的捕獲和分析著手,再定義一個判斷是否掃描的條件,并通過統(tǒng)計由定義的掃描條件判斷是否存在端口掃描行為,不但能對一般的掃描、快速掃描能夠檢測,且在一定程度上對慢速掃描也能很好的檢測。1.11.1 本課題研究的意義本課題研究的意義在今天快速發(fā)展的 internet 中,黑客攻擊方法層出不窮,網絡的安全性已經越來越受到威脅。要保證計算機資源的保密性、有效性、完整性也變得越來越困難。端口掃描作為黑客攻擊的一個重要方面,也在不停地向前發(fā)展,掃描手段已經變得越

13、來越豐富,越來越隱蔽,越來越具有威脅性。如何有效的對端口掃描行為進行檢測,已經是越來越重要的一個課題,這對于保證我們網絡的安全性有著重要的意義,也是入侵檢測系統(tǒng)(ids)和入侵預防系統(tǒng)(ips)的一個重點。第 2 頁 共 23 頁1.21.2 本課題的研究方法本課題的研究方法本文分別對端口掃描技術以及端口掃描的檢測技術作了研究,并設計出一個根據掃描者向目標主機的 tcp/ip 服務端口發(fā)送探測數(shù)據包,并記錄目標主機的響應,通過分析響應來判斷服務端口是打開還是關閉,進而得知端口的狀態(tài)的端口掃描程序,以及一個從網絡信息的數(shù)據包的捕獲和分析著手,通過統(tǒng)計判斷是否存在端口掃描行為的端口掃描檢測程序。2

14、 2 端口掃描概述端口掃描概述2.12.1 基本概念基本概念端口的含義:在網絡技術中,端口(port)大致有兩種意思:一是物理意義上的端口,比如,adsl modem、集線器、交換機、路由器用于連接其他網絡設備的接口,如rj-45 端口、sc 端口等等。二是邏輯意義上的端口,一般是指 tcp/ip 協(xié)議中的端口,端口號的范圍從 0 到 65535,比如用于瀏覽網頁服務的 80 端口,用于ftp 服務的 21 端口等等。我們這里將要介紹的就是邏輯意義上的端口。 端口分類:邏輯意義上的端口有多種分類標準,下面將介紹兩種常見的分類:按端口號分布劃分:(1)知名端口(well-known ports)

15、知名端口即眾所周知的端口號,范圍從 0 到 1023,這些端口號一般固定分配給一些服務。比如 21 端口分配給 ftp 服務,25 端口分配給 smtp(簡單郵件傳輸協(xié)議)服務,80 端口分配給 http 服務,135 端口分配給 rpc(遠程過程調用)服務等等。(2)動態(tài)端口(dynamic ports)動態(tài)端口的范圍從 1024 到 65535,這些端口號一般不固定分配給某個服務,也就是說許多服務都可以使用這些端口。只要運行的程序向系統(tǒng)提出訪問網絡的申請,那么系統(tǒng)就可以從這些端口號中分配出一個供該程序使用。比如 1024端口就是分配給第一個向系統(tǒng)發(fā)出申請的程序。在關閉程序進程后,就會釋放所

16、占用的端口號。不過,動態(tài)端口也常常被病毒木馬程序所利用,如冰河默認連接端口是7626、way 2.4 是 8011、netspy 3.0 是 7306、yai 病毒是 1024 等等。按協(xié)議類型劃分:第 3 頁 共 23 頁按協(xié)議類型劃分,可以分為 tcp、udp、ip 和 icmp(internet 控制消息協(xié)議)等端口。下面主要介紹 tcp 和 udp 端口:(1)tcp 端口tcp 端口,即傳輸控制協(xié)議端口,需要在客戶端和服務器之間建立連接,這樣可以提供可靠的數(shù)據傳輸。常見的包括 ftp 服務的 21 端口,telnet 服務的 23 端口,smtp 服務的 25 端口,以及 http

17、服務的 80 端口等等。(2)udp 端口udp 端口,即用戶數(shù)據包協(xié)議端口,無需在客戶端和服務器之間建立連接,安全性得不到保障。常見的有 dns 服務的 53 端口,snmp(簡單網絡管理協(xié)議)服務的 161 端口,qq 使用的 8000 和 4000 端口等等。2.22.2端口掃描原理端口掃描原理掃描者向目標主機的 tcp/ip 服務端口發(fā)送探測數(shù)據包,通過探測性數(shù)據包得到目標主機的響應并記錄下來,通過分析響應來判斷服務端口是打開還是關閉,進而得知端口的狀態(tài)。通常通過調用套接字函數(shù)connect ()連接到目標計算機上,完成一個完整的3次握手程。如果端口處于偵聽狀態(tài),那么connect()

18、就能成功返回。否則,該端口不可用,即沒有提供服務。端口掃描的第一步是向目標主機的tcp/udp端口發(fā)送探測數(shù)據包,然后根據對方的回應判斷端口是否開放。由于網絡環(huán)境的差異以及操作系統(tǒng)對連接請求的應答并不一致,在端口掃描中支持多種掃描方式,以保證掃描的準確和快速。大多數(shù)掃描技術要發(fā)送原始套接字包來進行探測。因為只有原始套接字支持對ip 報頭的設置,即構造ip 數(shù)據包。同時,原始套接字也支持發(fā)送和接收ip數(shù)據包。這樣,原始套接字接口實際上成為網絡層向上提供的接口。實現(xiàn)時可通過調用winsock2庫中的函數(shù)setsockopt()來設置選項ip_hdrincl,以獲取自定義ip報頭的權限。由于wind

19、ows2000僅支持raw icmp和raw igmp,不支持rawtcp,因此,發(fā)送tcp數(shù)據包,必須通過設置選項ip_hdrincl來構造ip報頭。首先創(chuàng)建原始套接字,定義ip首部。ipheader, tcp偽首部tcpsocheader和tcp首部tcpheader,再填充ip首部和tcp首部,其中,tcp首部中的結構體變量tcpheader的tcpheade.th_flag=2,表示發(fā)送的是syn數(shù)據包,修改它可以實現(xiàn)不同的標志位探測,如2是syn,0是null,1是fin,16是ack探測等等。因為是自己填充ip首部和tcp首部,所以還需定義一個計算校驗和函數(shù)checksum來計算i

20、p報頭和tcp報頭的校驗和。在填充tcp首部時,通過tcp偽首部填充tcp數(shù)據包的ip選項。事實上tcp偽首部并不是第 4 頁 共 23 頁真正存在的,只是用于填充tcp的一些選項和計算校驗和。調用setsockopt()設置選項ip_hdrincl,根據填充tcp、ip報頭的內容構造ip 數(shù)據包。設置偵聽原始套接字的同步和超時之后,調用sendto()發(fā)送ip 數(shù)據包。發(fā)送原始套接字包流程圖如圖1所示:圖 1 發(fā)送原始套接字包流程圖原始套接字包發(fā)送完后,就可以接收目標主機的回應。當發(fā)送原始套接字包時(如tcp syn數(shù)據包),操作系統(tǒng)核心并不知道,也沒有此數(shù)據發(fā)送或者連接建立的記錄。因此,當

21、遠端主機回應時,系統(tǒng)核心就把這些包都全部丟掉,從而到達不了應用程序上。所以,程序中不能簡單地使用接收函數(shù)來接收這些數(shù)據包。要達到接收數(shù)據包的目的,必須采用嗅探,接收所有通過的數(shù)據包,然后進行篩選,留下符合需要的。為此可以再定義一個原始套接字,用來接收數(shù)據,并在套接字i/0控制函數(shù)中設置sio_rcvall,表示接收所有的數(shù)據。通過設置原始套接字的i/0控制命令,便可以調用recv()接收返回的數(shù)據包。一般情況下使用的是tcp syn半連接掃描,由于tcpconnect()全連接掃描擁有很好的穩(wěn)定第 5 頁 共 23 頁性,這種技術用得非常多。通常通過調用套接字函數(shù)connect()連接到目標計

22、算機上,完成一個完整的3 次握手過程。如果端口處于偵聽狀態(tài),那么connect()就能成功返回。否則,該端口不可用,即沒有提供服務。以上實現(xiàn)的端口掃描,可以得到每個端口的狀態(tài),此處的狀態(tài)并非端口本身的性質,而是對掃描結果的描述。端口狀態(tài)可以分為5種:open(開放的)、closed(關閉的)、filtered(被過濾的)、unfiltered(未被過濾的)和open filtered(開放或者被過濾的)。2.32.3端口掃描技術簡介端口掃描技術簡介常用的端口掃描技術主要有以下幾種:(1)tcp connect() 掃描這是最基本的tcp掃描。利用操作系統(tǒng)提供的connect系統(tǒng)調用,用來與每一

23、個感興趣的目標計算機的端口進行連接。如果端口處于偵聽狀態(tài),則connect就能成功。否則,這個端口是不能用的,即沒有提供服務。這個技術的最大的優(yōu)點是,用戶不需要任何權限,系統(tǒng)中的任何用戶都有權利使用這個調用。另一個好處就是速度快。如果對每個目標端口以串行的方式,使用單獨的connect()調用,那么將會花費相當長的時間,用戶可以通過同時打開多個套接字,從而加速掃描。使用非阻塞i/o允許設置一個較低的超時時限,同時觀察多個套接字。但這種方法的缺點是很容易被發(fā)覺,并且被過濾掉。目標計算機的logs文件會顯示一連串的連接和連接是否出錯的服務消息,并且能很快地使它關閉。(2)tcp syn掃描這種技術

24、通常認為是“半開放”掃描,這是因為掃描程序不必要打開一個完全的tcp連接。掃描程序發(fā)送的是一個syn數(shù)據包,好象準備打開一個實際的連接并等待反應一樣(參考tcp的三次握手建立一個tcp連接的過程)。一個syn/ack 的返回信息表示端口處于偵聽狀態(tài)。一個rst返回,表示端口沒有處于偵聽態(tài)。如果收到一個syn/ack,則掃描程序必須再發(fā)送一個rst信號,來關閉這個連接過程。 這種掃描技術的優(yōu)點在于一般不會在目標計算機上留下記錄,但這種方法的缺點是,必須要有root權限才能建立自己的syn數(shù)據包,不過這個條件一般都是很容易滿足的。(3)tcp fin掃描有的時候有可能syn掃描都不夠秘密。一些防火

25、墻和包過濾器會對一些指定的端口進行監(jiān)視,有的程序能檢測到這些掃描。相反,fin數(shù)據包可能會順利通第 6 頁 共 23 頁過。這種掃描方法的思想是關閉的端口會用適當?shù)膔st來回復fin數(shù)據包。另一方面,打開的端口會忽略對fin數(shù)據包的回復。這種方法和系統(tǒng)的實現(xiàn)有一定的關系。如果有的系統(tǒng)不管端口是否打開,都回復rst,那么這種掃描方法就不適用了。但這種方法在區(qū)分unix和nt時是十分有用的。(4)ip段掃描這種不能算是新方法,只是其他技術的變化。它并不是直接發(fā)送tcp探測數(shù)據包,是將數(shù)據包分成二個較小的ip段。這樣就將一個tcp頭分成好幾個數(shù)據包,從而過濾器就很難探測到。但一些程序在處理這些小數(shù)據

26、包時會有些問題。(5)ftp返回攻擊ftp協(xié)議的一個的特點是它支持代理ftp連接。即入侵者可以從自己的計算機和目標主機的ftp server-pi(協(xié)議解釋器)連接,建立一個控制通信連接。然后,請求這個server-pi激活一個有效的server-dtp(數(shù)據傳輸進程)來給internet上任何地方發(fā)送文件。對于一個user-dtp,這是個推測,盡管rfc明確定義請求一個服務器發(fā)送文件到另一個服務器是可以的,但當前的大多數(shù)實現(xiàn)并不支持,因為這個特性“能用來發(fā)送不能跟蹤的郵件和新聞,給許多服務器造成打擊,用盡磁盤,企圖越過防火墻”。利用ftp返回攻擊的目的是從一個代理的ftp服務器來掃描tcp端

27、口。這樣,用戶能在一個防火墻后面連接到一個ftp服務器,然后掃描端口。如果ftp服務器允許從一個目錄讀寫數(shù)據,你就能發(fā)送任意的數(shù)據到發(fā)現(xiàn)的打開的端口。對于端口掃描,這個技術是使用port命令來表示被動的user dtp正在目標計算機上的某個端口偵聽。然后入侵者試圖用list命令列出當前目錄,結果通過server-dip發(fā)送出去。如果目標主機正在某個端口偵聽,傳輸就會成功,(產生一個150或226的回應)否則,會出現(xiàn)“425 cant build data connection:connection refused.”。然后,使用另一個port命令,嘗試目標計算機上的下一個端口。這種方法的優(yōu)點很

28、明顯,難以跟蹤,能穿過防火墻。主要缺點是速度很慢,有的ftp服務器最終能得到一些線索,關閉代理功能。(6)udp icmp端口不能到達掃描這種方法與上面幾種方法的不同之處在于使用的是udp協(xié)議。由于這個協(xié)議很簡單,所以掃描變得相對困難。這是由于打開的端口對掃描探測并不發(fā)送一個確認,關閉的端口也并不需要發(fā)送一個錯誤數(shù)據包。幸運的是,許多主機在你向一個未打開udp端口發(fā)送一個數(shù)據包時,會返回一個icmp_port_unreach錯誤。這樣你就能發(fā)現(xiàn)哪個端口是第 7 頁 共 23 頁關閉的。udp和icmp錯誤都不保證能到達,因此,這種掃描器必須還實現(xiàn)一個在包看上去是丟失的時候能重新傳輸。這種掃描方

29、法是很慢的,因為rfc對icmp錯誤消息的產生速率作了規(guī)定。同樣,這種掃描方法需要具有root權限。(7)udp recvfrom()和write()掃描。當非root用戶不能直接讀到端口不能到達錯誤時,linux能間接地在它們到達時通知用戶。比如,對一個關閉的端口的第二個write()調用將失敗。在非阻塞的udp套接字上調用recvfrom()時,如果icmp出錯還沒有到達時會返回eagain-重試。如果icmp到達時,返回econnrefused-連接被拒絕。這就是用來查看端口是否打開的技術。(8)tcp 反向 ident 掃描ident 協(xié)議(rfc1413)允許看到通過 tcp 連接的

30、任何進程的擁有者的用戶名,即使這個連接不是由這個進程開始的。例如,掃描者能連接到 http 端口,然后用 ident 來發(fā)現(xiàn)服務器是否正在以root 權限運行。這種方法只能在和目標端口建立了一個完整的 tcp 連接后才能看到??傊?,為了避過目標系統(tǒng)的日志審計和防火墻的阻截,為了避過目標系統(tǒng)的端口掃描檢測,入侵者往往會采用一系列方法來改變正常的端口掃描方式,以達成端口掃描的隱蔽性,這些方法包括:改變掃描端口的順序、慢速掃描、端口掃描間隔隨機化、隨機化掃描包的其它區(qū)域、偽造源地址掃描和分布式掃描等。3 3 檢測端口掃描概述檢測端口掃描概述3.13.1 端口掃描檢測的分析端口掃描檢測的分析端口掃描是

31、一臺主機對多個目標端口進行試探,包括打開的和沒有打開的端口。這就為檢測端口掃描提供了兩條“線索”:一是“是否存在試圖連接已經關閉端口的行為” ;二是“在一段時間內,是否存在從一個源地址發(fā)出的數(shù)據包到達多個目的地址的行為” 。檢測端口掃描的方法主要有兩種:一種是對主機沒有對外提供服務的端口進行監(jiān)聽,如果檢測到有對這樣的端口的連接請求,就認為有掃描發(fā)生;另一種檢測方法是對整個網絡流量進行監(jiān)控,檢查網絡中所有的數(shù)據,并對異常情況進行記錄。在本文中,為了便于對端口掃描檢測進行研究,從端口掃描檢測的角度出發(fā),把端口掃描技術分為普通掃描,慢速掃描及分布式掃描,并在后面的介紹第 8 頁 共 23 頁中分別對

32、不同的檢測方法作了介紹。3.23.2普通普通端口掃描檢測技術概述端口掃描檢測技術概述目前比較常見的端口掃描就是一對一的掃描關系,如下圖2所示,即只有一個掃描者,且掃描者從本身出發(fā),不經過任何隱藏通過發(fā)送探測性數(shù)據包來判斷目標主機的端口開放情況。圖2 普通掃描技術針對這種一對一的普通或快速的端口掃描技術,目前端口掃描的檢測技術采用的方法有snort方法、watcher方法和portsentry方法等三種,都能很好的檢測出這種掃描。它們進行端口掃描檢測采用的算法大致可以概括如下:在m秒內,監(jiān)測從同一源端發(fā)出的數(shù)據包, 如果其目的ip與目的端口的組合數(shù)目超出n的話, 則認為是一次掃描。snort是一

33、個輕量級的網絡入侵檢測系統(tǒng)。它的探測引擎采用模塊化的插件結構,允許開發(fā)者擴展snort的功能, 也可以使得用戶可以按自己的需要定制功能。snort檢測端口掃描的方法是:在y秒內, 如果檢測到從同一個源發(fā)出,目的為不同的主機和端口的組合的tcp或udp包的數(shù)目超出閾值x, 則認為是掃描。其中x和y的值可以由用戶自己設定。另外, snort也同樣可以檢測有奇異標志的tcp包。watcher是一個比較完整的基于網絡的入侵檢測系統(tǒng)的設計代碼。它檢測所有通過的信息包, 并且將它認為是惡意的攻擊行為記錄在syslog中。它的檢測原理是:如果在短時間內有超過7個以上的端口收到信息包(不管類型如何) , 那么

34、這一事件就被當成端口掃描記錄下來。portsentry是基于主機的網絡入侵檢測系統(tǒng)的一個組成部分,主要用來檢測外部對主機的端口掃描,它能夠對多種掃描方法進行檢測。它的檢測原理是:對沒有開放服務的端口的訪問有可能是一次掃描。通過監(jiān)測沒有開放服務的端口,在最近n次連接里由同一個源發(fā)起的連接超過x次則判斷為一次掃描。以上幾種掃描檢測方法對端口掃描所采用的檢測技術都比較簡單,且存在第 9 頁 共 23 頁以下缺點:(1)無法檢測慢速掃描, 因為在檢測中時間窗是個固定值, 只要掃描速度低于這個閾值, 攻擊者就可以成功地逃避檢測。當設定的時間閾值大到一定程度時,需要從相當長時間的網絡連接記錄中找出掃描行為

35、,系統(tǒng)資源消耗較大,無法適應寬帶網絡尤其是高速網絡環(huán)境; 從理論上講,黑客總能夠以略大于系統(tǒng)設定閾值的時間間隔進行端口掃描;(2)未考慮到受保護網段的特點, 對網段內所有主機都采用相同的檢測策略, 效率不高而且容易導致誤報。3.33.3慢慢速端口掃描檢測技術概述速端口掃描檢測技術概述慢速端口掃描是在普通端口掃描技術上進化而來的,可以說是黑客技術提高的體現(xiàn)。通常普通端口掃描的掃描者對被掃描者發(fā)送探測性數(shù)據包都是快速的,被掃描者在進行捕包判斷上就會顯得比較容易,而慢速掃描與普通掃描一樣,都是一對一,即掃描者和被掃描者都只有一個,但是其對目標主機發(fā)送探測性數(shù)據包的時間間隔上就變化很大,可以在1分鐘發(fā)

36、送一個探測性數(shù)據包后20分鐘再繼續(xù)發(fā)送探測性數(shù)據包,也或者在發(fā)送一個探測性數(shù)據包后時間就遞增,產生一個時間上的變化,總之給檢測端口掃描帶來了極大的困難,這就需要用新的規(guī)則,新的技術來進行端口檢測。在目前的慢速掃描檢測技術中,模糊技術是應用的比較好的能檢測出慢速端口掃描的新型技術。3.43.4端口端口掃描的分布式檢測概述掃描的分布式檢測概述在當前端口掃描技術中,比較難以檢測的是分布式掃描,針對分布式掃描,不能采取對普通掃描及慢速掃描的檢測方法。如下圖 3 所示,分布掃描是指掃描者通過控制其他多臺計算機對目標主機進行數(shù)據包探測,這樣,被掃描者所捕獲的數(shù)據包就是來自于不同的 ip,但是實際掃描者通過

37、所控制的計算機對應答數(shù)據包的分析依然能夠判斷出目標主機的端口開放情況,被掃描者雖然所捕獲到的探測性數(shù)據包其 ip 是正確的,但是受到了 ip 欺騙,并沒有判斷出真正的掃描者,在這種情況下通常的檢測方法對分布式掃描是無效的。當然,在分布式掃描的基礎上加以慢速掃描,則是更加難以檢測的掃描技術。第 10 頁 共 23 頁圖 3 分布式掃描技術在當前的分布式掃描檢測技術中,最常用的是在進行端口掃描檢測時,將系統(tǒng)分成兩個部分:第一部分是傳感器,它的功能是判斷一個包的異常程度,賦給包一個異常值。如果一個包有異常,則從網絡數(shù)據中過濾出來,進行下一步的處理;如果一個包沒有異常,則簡單地丟棄。第二部分是分析器,

38、它對異常包進行匯集、分類、分析。首先將異常包根據其不同特性分成不同的類,然后再對不同的類計算一個類的異常值總和。如果一個類的異常值總和超過了閾值,則判斷為掃描。在分布式端口掃描檢測系統(tǒng)中,傳感器分布在一個大網的各個子網內,采集網絡上的各種有關掃描異常數(shù)據;而分類器是一個匯總的分析器,通過匯總分析網絡內各個子網的數(shù)據,可以更好地分析網絡上出現(xiàn)的掃描情況。分布式檢測方法具有很多優(yōu)點:首先,它能夠實現(xiàn)分布式掃描的檢測。因為分布式掃描其掃描包具有一定的異常性,所以這些包可以被第一步的檢測從網絡數(shù)據中過濾出來。在第二步進行分類分析的時候,由于這些分布式掃描的包具有一個共同的特性,即掃描對象是同一個主機或

39、同一個端口,因此它們可以被聚集到一個類里,從而被檢測為掃描。其次,這種方法也能夠檢測慢速的掃描。由于網絡上巨大的通信量,所以在以前的檢測方法里檢測時間窗t必須很小,否則會消耗掉太多的內存和cpu時間而癱瘓。而采用該方法,由于分析器只需分析處理異常包,因此可以取一個很大的時間窗t,從而檢測出慢速的掃描。另外,分布式檢測方法具有很好的實時性。由于傳感器只需要判斷一個包的異常程度,而不需要判斷是否屬于掃描,因此可以實現(xiàn)一個很快的異常包過濾器。而傳統(tǒng)的檢測方法,例如,snort在接收到一個包以后,首先檢查包的結第 11 頁 共 23 頁構,然后檢查現(xiàn)有的掃描列表,相對來說是很費時間的。異常包的檢測:首

40、先,需要有一個準則來確定網絡上一個包的異常程度。通過分析已有的一些檢測工具、掃描工具、以及入侵者用以躲避掃描檢測的方法,總結出下面的包是異常的包:(1)帶有奇怪標志位的包有可能是掃描包;(2)沒有正確的執(zhí)行tcp協(xié)議握手過程的包有可能是掃描包;(3)連接后馬上斷開,沒有具體協(xié)議內容的包,有可能是掃描包;(4)對沒有開放服務的端口的連接包有可能是掃描包。掃描技術在進步,相應的檢測技術也在相應提高,現(xiàn)今還出現(xiàn)了一種新的檢測分布式掃描的方法,其原理是靠統(tǒng)計流量來進行判斷,也能很好的檢測出分布式掃描。但是由于網絡上的流量非常的大,且相當?shù)牟还潭?,要定義一定時間內的流量有很大的困難,所以這種檢測方法還存

41、在很多缺陷,容易產生誤判為端口掃描,也容易放過真正的端口掃描行為。3.53.5主流的端口掃描工具主流的端口掃描工具常用的幾種端口掃描檢測器有:nsm(the network security monitor)、gr ids、snort和portsentry等。nsm是最早的基于網絡的入侵檢測系統(tǒng),它認為所有與大于15個其它主機建立連接的主機都是掃描者。這種算法是許多檢測系統(tǒng)檢測算法的雛形。gr ids通過建立網絡連接拓撲圖來檢測端口掃描。它使用節(jié)點代表主機,如果主機間存在數(shù)據交換,就在相應的節(jié)點間連線。一次掃描試探就會在掃描者的主機和被掃描者的主機之間建立一條連線,gr ids通過計算一個節(jié)點

42、上存在多少連線的方法判斷是不是有端口掃描行為。這種方法不能檢測秘密掃描,速度相對較慢,具體的端口掃描行為的判斷需要人工完成。snort是基于libpcap的一個源代碼公開的輕量級的入侵檢測系統(tǒng)。它的端口檢測功能是通過一個嵌入程序來完成。snort的掃描檢測器通過計算“在時間x秒內有y個tcp或udp數(shù)據包從一個源地址發(fā)往不同的目的地址”來確定是否有端口掃描行為;snort能查找單個不正常的tcp包。缺點是不能檢測分布式掃描、慢速掃描,不能處理分片。portsentry是基于主機的端口掃描檢測器。它指定多個tcp/udp端口進行監(jiān)聽,當這些端口被試圖連接或掃描時,能在瞬間捕捉連接或掃描企圖;它能

43、有效捕捉非連續(xù)隨機掃描,生成外界掃描動作的詳細日志記錄,并將發(fā)起掃描的主機地址寫入tcp_wrapper的host.deny文件中,并重指掃描者路由,把信息流第 12 頁 共 23 頁重定向到一個不存在的主機。缺點是僅限于對一臺單機進行端口掃描分析;判斷規(guī)則過于嚴格,正常的掃描容易被誤認為是端口掃描行為。4 4 端口掃描的實現(xiàn)端口掃描的實現(xiàn)4.14.1掃描程序的設計原理掃描程序的設計原理在進行端口掃描的設計與開發(fā)中,利用三次握手的原理,建立原始套接字,通過向目標主機的 tcp/ip 服務端口發(fā)送探測性數(shù)據包,并記錄目標主機的響應情況,最后通過分析響應情況來判斷目標主機服務端口是打開還是關閉,進

44、而得知端口的狀態(tài)。4.24.2程序流程圖程序流程圖如下圖 4 所示,所開發(fā)的端口掃描流程圖:圖 4 端口掃描流程圖第 13 頁 共 23 頁5 5 檢測端口掃描的實現(xiàn)檢測端口掃描的實現(xiàn)5.15.1檢測程序的設計原理檢測程序的設計原理在檢測端口掃描程序的設計與開發(fā)中,這里首先是采取通過套接字來進行數(shù)據包的捕獲,再通過解 ip 包,然后對所解出的 tcp 包和 udp 包分別再進行解包,并記錄下到達的端口,以及源 ip 地址,目的 ip 地址,目的端口,再設計一種算法,通過算法對數(shù)據包進行統(tǒng)計分析,最后設定一個判斷發(fā)生掃描行為的條件,當滿足條件有三次及三次以上的相同源 ip 且到達端口的不同的數(shù)據

45、包即判斷發(fā)生端口掃描行為。此檢測端口掃描程序的設計不但可以檢測一般的掃描和快速掃描,在一定的程度上也能檢測慢速掃描。以前的端口掃描檢測方法都是采用在一個固定的時間窗 t 內查看從同一個源地址發(fā)起的連接數(shù) x , 如果 x 超出了設定的閥值, 則判斷為一次掃描。由于網絡上的通信量非常大, 所以以前的端口掃描方法都會設定一個很小的時間窗t ,防止消耗掉過多的內存和 cpu 時間。由于本文提出的方法與時間窗無關, 所以在不降低系統(tǒng)整體性能的前提下,在慢速掃描發(fā)送探測性數(shù)據包時間間隔上不超出所設計程序所能記錄數(shù)據包的最大上限的情況下仍能很好的檢測慢速掃描。5.25.2程序流程圖程序流程圖如下圖 5 所

46、示,所開發(fā)的檢測端口掃描程序基本流程圖:第 14 頁 共 23 頁圖 5 端口檢測流程圖5.35.3設計實現(xiàn)重點代碼設計實現(xiàn)重點代碼在此端口掃描檢測程序設計中,重點在于設計一個算法,用于研究是否存在端口掃描行為,算法是此設計的重點。就此設計的檢測程序來說,在捕獲數(shù)據包后所解的 tcp 包和 udp 包,由于在分析中要分別考慮 tcp 包和 udp 包,但是對兩種包的分析都是一樣的,現(xiàn)我們只詳細闡述分析 tcp 包的情況。在所設計用于檢測端口掃描的算法中,首先是一個統(tǒng)計函數(shù),用于對通過第 15 頁 共 23 頁套接字捕獲數(shù)據包的統(tǒng)計:void statistics(char szprotocol

47、,char szsourceip,int isourceport,char szdestip) if(strcmp(szprotocol,tcp) if(tcp_max=max_len_rec) tcp_max=0; if(tcp_max=0) strcpy(tcp_rectcp_max.szprotocol,szprotocol); strcpy(tcp_rectcp_max.szsourceip,szsourceip); tcp_rectcp_max.isourceport=isourceport; strcpy(tcp_rectcp_max.szdestip,szdestip); +tc

48、p_max; else if(check(tcp_rec,szdestip,isourceport,tcp_max-1) /調用 check 函數(shù) strcpy(tcp_rectcp_max.szprotocol,szprotocol); strcpy(tcp_rectcp_max.szsourceip,szsourceip); tcp_rectcp_max.isourceport=isourceport; strcpy(tcp_rectcp_max.szdestip,szdestip); +tcp_max;在統(tǒng)計的時候這里需要調用一個 check 函數(shù)即檢測函數(shù),此函數(shù)的作用是用于排除完全相

49、同的數(shù)據包,由于在分析中不需要對完全相同的數(shù)據包進行分析,以免出現(xiàn)重復情況產生誤判,所以在統(tǒng)計時候這里需要先把完全相同的數(shù)據包進行排除,以保證存入 tcp_rec中的數(shù)據包是完全沒有任何是一個是相同的。bool check(statistic type,char szdestip,int port,int count) /check 函數(shù),比較協(xié)議類型,目的 ip,端口,計數(shù)(count) int i=0; bool flag=true; for(i=count;i=0;i-) if(!strcmp(typei.szdestip,szdestip)&typei.isourceport=port

50、) /比較typei.szdestip 與 szdestip 的值在和 typei.isourceport/的值做與運算,將得到的結果和 port 比較,是否相等 第 16 頁 共 23 頁 flag=false; break; return flag; 對所捕獲的數(shù)據包進行統(tǒng)計后,接著是對所捕獲的 tcp 包以及 udp 數(shù)據包進行分析的分析函數(shù),首先是一個用于存放不同 ip 的 rec,在這里我們用到一個臨時變量 temp,用于幫助對不同 ip 的提取,最后再根據所記錄的不同ip 到 tcp_rec中進行提取符合 ip 的數(shù)據包信息,再存入 tcp_tem中,在tcp_tem中就是經過統(tǒng)計

51、分析后的所捕獲的探測性數(shù)據包。void analysis_tcp(statistic tcp)/對 ip,端口進行分析的函數(shù),判定是否為端口掃描行為 statistic tcp_temmax_len_rec,recmax_len_rec,temp;int i=0;int count=0,reccount=0; strcpy(temp.szprotocol,tcp0.szprotocol); strcpy(temp.szsourceip,tcp0.szsourceip); temp.isourceport=tcp0.isourceport; strcpy(temp.szdestip,tcp0.s

52、zdestip); /臨時變量記錄第一條數(shù)據包的情況strcpy(recreccount.szprotocol,tcp0.szprotocol); strcpy(recreccount.szsourceip,tcp0.szsourceip); recreccount.isourceport=tcp0.isourceport; strcpy(recreccount.szdestip,tcp0.szdestip); /將第一條記錄保存到地址列表中for(i=0;i=0;t-) /進入 for 循環(huán),將 reccount 的值賦給 t,t 大于等于0,t 的值減 1 if(!strcmp(temp.

53、szdestip,rect.szdestip) flag=false; break; /反向搜索地址記錄表如果有相同的則不記錄 if(flag) +reccount; strcpy(recreccount.szprotocol,temp.szprotocol); strcpy(recreccount.szsourceip,temp.szsourceip); recreccount.isourceport,temp.isourceport; strcpy(recreccount.szdestip,temp.szdestip); /沒有相同的則將該不同的地址記錄到數(shù)組中 /if 條件判斷 /如果相

54、同則不記錄/for 循環(huán)system(cls);printf(ntcp_rec 中的數(shù)據是:n);for(i=0;itcp_max;i+)printf(%s:%dn,tcp_reci.szdestip,tcp_reci.isourceport); for(i=0;i=reccount;i+) int j=0;count=0;memset(tcp_tem,0,100*sizeof(statistic);for(j;jtcp_max;j+)第 18 頁 共 23 頁 if(!strcmp(reci.szdestip,tcpj.szdestip) strcpy(tcp_temcount.szprot

55、ocol,tcpj.szprotocol); strcpy(tcp_temcount.szsourceip,tcpj.szsourceip); tcp_temcount.isourceport=tcpj.isourceport; strcpy(tcp_temcount.szdestip,tcpj.szdestip); +count; 在程序的最后,由于此設計是需要判斷是否發(fā)生端口掃描行為,這里就需要設定一個條件來定義端口掃描行為。在此設計中,我們定義掃描行為是當有 3 個或 3 個以上的探測性數(shù)據包且其源 ip 一致的數(shù)據包存在的時候就判斷為端口掃描行為,當然在這里能夠定義更多或者更少的探測性

56、數(shù)據包為發(fā)生端口掃描行為條件,只要檢測程序在當記錄到有 3 個或 3 個以上的數(shù)據包且源 ip 一致的數(shù)據包對本機進行連接的時候能顯示出來所發(fā)出的探測性數(shù)據包并判斷為存在端口掃描行為,并顯示出掃描者的 ip 信息以及對本機所掃描的端口。此檢測端口掃描程序設計對一般的以及快速掃描均能很好的掃描,在一定程度上能很好的檢測慢速掃描,雖然并沒有設定時間閾值,不會存在當設定的時間閾值大到一定程度時,需要從相當長時間的網絡連接記錄中找出掃描行為,系統(tǒng)資源消耗較大,無法適應寬帶網絡尤其是高速網絡環(huán)境;但是畢竟所分析的數(shù)據包有個定量,掃描者總能以略大于系統(tǒng)設定數(shù)據包捕獲定量的時間間隔進行端口掃描,所以說針對慢

57、速掃描只能在一定程度上實現(xiàn)。6 6 性能測試性能測試6.16.1端口掃描程序性能測試端口掃描程序性能測試在端口掃描程序設計完成后,用開發(fā)出的端口掃描程序作了一個性能演示,如下圖 6 所示,掃描者通過掃描命令向 ip 為 02 的目標主機的 1-10000 端口進行了發(fā)送探測性數(shù)據包掃描,并根據回應顯示目標主機的端口開放情況。第 19 頁 共 23 頁圖 6 端口掃描效果顯示圖如圖 6 顯示,ip 為 02 的目標主機在 1-10000 端口中,開放的端口有 21,25,81,82,83,110,119,139,143。6.26.2檢測端口掃描程序性能

58、測試檢測端口掃描程序性能測試再用所開發(fā)的檢測端口掃描程序作了測試,針對攻擊者的掃描行為,捕獲探測性數(shù)據包,并進行分析,當收到同一地址而且目的端口不同的數(shù)據包有3個時,能準確判斷出來自掃描者的端口掃描行為。如下圖7所示,當程序運行并有ip為的掃描者向本機發(fā)起掃描時候,能顯示ip為的掃描者發(fā)起了端口掃描行為,能作出判斷并顯示出相應的信息。圖 7 檢測端口掃描效果顯示圖第 20 頁 共 23 頁如圖 7 顯示當本機遭受到掃瞄者掃描時,程序能對掃描者發(fā)起的探測性的數(shù)據包進行捕獲,并記錄下來,當有 3 個來自于同一 ip,且目的端口不同的時候程序就判定為遭到了

59、來自于所捕獲數(shù)據包源 ip 主機的掃描。這種情況是在只有一個掃描者的時候能正確顯示出掃描者的信息以及掃描者對本機哪些端口進行了掃描。當程序運行并且有 ip 為 和 03 的兩個掃描者向本機發(fā)起掃描時候,能顯示 ip 為 和 的掃描者對本機發(fā)起了端口掃描行為,并能將探測性數(shù)據包顯示出來且能作出判斷并顯示出相應的信息,對用戶作出報警,由此可見掃描者的個數(shù)并不會影響程序的正常檢測,如下圖 8 所示:圖 8 多掃描者進行掃描時檢測端口掃描效果顯示圖如圖 8 顯示當本機遭受到有兩個掃瞄者掃描時,程序能對掃描者發(fā)

60、起的探測性的數(shù)據包進行捕獲,并記錄下來,當有 3 個來自于同一 ip,且目的端口不同的時候程序就判定為遭到了來自于所捕獲數(shù)據包源 ip 主機的掃描。在這種情況下有兩個不同 ip 的掃描者對本機進行掃描,程序能分辨出不同的 ip 并顯示出來遭受到來自兩個掃描者的掃描。結結 論論本文首先介紹了各種掃描技術,以及分析入侵者可以逃避檢測的各種方法。其后又介紹了現(xiàn)有的各種端口掃描檢測工具,并對它們的原理和功能進行了分析。檢測端口掃描是防止系統(tǒng)被攻擊的一個重要手段,是 ids 的主要內容。文中第 21 頁 共 23 頁分析了端口掃描基本原理,總結了現(xiàn)有檢測工具存在的主要問題,對現(xiàn)有檢測工具原理進行了闡述。

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論