<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 模擬技術(shù) > 設(shè)計(jì)應(yīng)用 > 網(wǎng)絡(luò)端口掃描及對策研究

          網(wǎng)絡(luò)端口掃描及對策研究

          作者:武裝 北京機(jī)械工業(yè)學(xué)院網(wǎng)管中心 時(shí)間:2008-09-23 來源:電子技術(shù)應(yīng)用 收藏

          摘要: 分析了的原理和常用方法,并提出相應(yīng)檢測、處理方法。

          本文引用地址:http://www.ex-cimer.com/article/88274.htm

          關(guān)鍵詞:    

             隨著在學(xué)校教學(xué)、科研、管理各個(gè)方面的應(yīng)用,用戶資源的要求日益迫切。上充斥著各種各樣的良性、惡性信息,其中端口信息最應(yīng)引起網(wǎng)絡(luò)管理人員和用戶的警覺和注意,因?yàn)橐粋€(gè)端口就是一個(gè)潛在的通信通道,也就是一個(gè)入侵通道。對目標(biāo)計(jì)算機(jī)進(jìn)行端口掃描,能得到許多有用的信息,同時(shí)也往往是一次入侵的前奏。最近流行的“沖擊波”病毒就是通過對主機(jī)135、4444端口掃描,利用RPC服務(wù)的漏洞進(jìn)一步對主機(jī)進(jìn)行攻擊。

            1 掃描器的基本工作原理

            進(jìn)行掃描的方法很多,可以手工進(jìn)行掃描,但主要是使用端口掃描軟件(掃描器)進(jìn)行。掃描器是一種自動檢測遠(yuǎn)程或本地主機(jī)安全性弱點(diǎn)的程序,通過使用掃描器可以不留痕跡的發(fā)現(xiàn)遠(yuǎn)程服務(wù)器的各種TCP端口的分配及提供的服務(wù)和它們的軟件版本。這就能間接的或直觀的了解到遠(yuǎn)程主機(jī)所存在的安全問題。 

            掃描器通過選用遠(yuǎn)程TCP/IP不同的端口的服務(wù),并記錄目標(biāo)給予的回答,通過這種方法,可以搜集到很多關(guān)于目標(biāo)主機(jī)的各種有用的信息(比如:是否能用匿名登陸,是否有可寫的FTP目錄,是否能用TELNET,HTTPD是否用ROOT在運(yùn)行。) 

            掃描器并不是一個(gè)直接的攻擊網(wǎng)絡(luò)漏洞的程序,它僅僅能幫助我們發(fā)現(xiàn)目標(biāo)機(jī)的某些內(nèi)在的弱點(diǎn)。一個(gè)好的掃描器能對它得到的數(shù)據(jù)進(jìn)行分析,幫助查找目標(biāo)主機(jī)的漏洞。但它不會提供進(jìn)入一個(gè)系統(tǒng)的詳細(xì)步驟。 

            掃描器應(yīng)該有三項(xiàng)功能:(1)發(fā)現(xiàn)一個(gè)主機(jī)或網(wǎng)絡(luò);(2)一旦發(fā)現(xiàn)一臺主機(jī),能發(fā)現(xiàn)正運(yùn)行的這臺主機(jī)在進(jìn)行何種服務(wù);(3)通過測試這些服務(wù),發(fā)現(xiàn)漏洞。

            2 常見的掃描技術(shù)

            常見的掃描方法有以下幾種;

            (1)TCP connect() 掃描 

            這是最基本的TCP掃描。操作系統(tǒng)提供的connect()系統(tǒng)調(diào)用,用來與每一個(gè)感興趣的目標(biāo)計(jì)算機(jī)的端口進(jìn)行連接。如果端口處于偵聽狀態(tài),則connect()就能成功。否則,這個(gè)端口是不能用的,即沒有提供服務(wù)。這個(gè)技術(shù)的最大的優(yōu)點(diǎn)是,用戶不需要任何權(quán)限。系統(tǒng)中的任何用戶都有權(quán)利使用這個(gè)調(diào)用。另一個(gè)好處就是速度快。如果對每個(gè)目標(biāo)端口以線性的方式,使用單獨(dú)的connect()調(diào)用,將會花費(fèi)相當(dāng)長的時(shí)間,用戶可以通過同時(shí)打開多個(gè)套接字,從而加速掃描。使用非阻塞I/O允許設(shè)置一個(gè)低的時(shí)間用盡周期,同時(shí)觀察多個(gè)套接字。但這種方法的缺點(diǎn)是很容易被發(fā)覺,并且被過濾掉。目標(biāo)計(jì)算機(jī)的logs文件會顯示一連串的連接和連接出錯(cuò)的服務(wù)消息,并且能很快地使它關(guān)閉。 

            (2)TCP SYN掃描 

            這種技術(shù)通常認(rèn)為是半開放掃描,這是因?yàn)閽呙璩绦虿槐匾蜷_一個(gè)完全的TCP連接。掃描程序發(fā)送的是一個(gè)SYN數(shù)據(jù)包,好象準(zhǔn)備打開一個(gè)實(shí)際的連接并等待反應(yīng)一樣(參考TCP的三次握手建立一個(gè)TCP連接的過程)。一個(gè)SYN|ACK的返回信息表示端口處于偵聽狀態(tài)。一個(gè)RST返回,表示端口沒有處于偵聽?wèi)B(tài)。如果收到一個(gè)SYN|ACK,則掃描程序必須再發(fā)送一個(gè)RST信號,來關(guān)閉這個(gè)連接過程。這種掃描技術(shù)的優(yōu)點(diǎn)在于一般不會在目標(biāo)計(jì)算機(jī)上留下記錄。但這種方法的缺點(diǎn)是,必須要有root權(quán)限才能建立自己的SYN數(shù)據(jù)包。 

            (3)TCP FIN 掃描

            有的時(shí)候有可能SYN掃描都不夠秘密。一些防火墻和包過濾器會對一些指定的端口進(jìn)行監(jiān)視,有的程序能檢測到這些掃描。相反,FIN數(shù)據(jù)包可能會順利通過。這種掃描方法的思想是關(guān)閉的端口會用適當(dāng)?shù)腞ST來回復(fù)FIN數(shù)據(jù)包。另一方面,打開的端口會忽略對FIN數(shù)據(jù)包的回復(fù)。這種方法和系統(tǒng)的實(shí)現(xiàn)有一定的關(guān)系。如果有的系統(tǒng)不管端口是否打開,都回復(fù)RST,那么這種掃描方法就不適用了。但這種方法在區(qū)分Unix和NT時(shí)是十分有用的。 

            (4)IP段掃描 

            并不是直接發(fā)送TCP探測數(shù)據(jù)包,是將數(shù)據(jù)包分成二個(gè)較小的IP段。這樣就將一個(gè)TCP頭分成好幾個(gè)數(shù)據(jù)包,從而過濾器就很難探測到。但一些程序在處理這些小數(shù)據(jù)包時(shí)會有些問題。 

            (5)TCP 反向 ident掃描 

            ident 協(xié)議允許(rfc1413-Request For Comments1413)看到通過TCP連接的任何進(jìn)程的擁有者的用戶名,即使這個(gè)連接不是由這個(gè)進(jìn)程開始的。例如用戶連接到http端口,然后用identd來發(fā)現(xiàn)服務(wù)器是否正在以root權(quán)限運(yùn)行。這種方法只能在和目標(biāo)端口建立了一個(gè)完整的TCP連接后才能看到。 

            (6)FTP 返回攻擊 

            FTP協(xié)議的一個(gè)的特點(diǎn)是它支持代理(proxy)FTP連接。即入侵者可以從自己的計(jì)算機(jī)1.com和目標(biāo)主機(jī)2.com的FTP server-PI(協(xié)議解釋器)連接,建立一個(gè)控制通信連接。然后,請求這個(gè)server-PI激活一個(gè)有效的server-DTP(數(shù)據(jù)傳輸進(jìn)程)來給Internet上任何地方發(fā)送文件。這個(gè)協(xié)議的缺點(diǎn)是能用來發(fā)送不能跟蹤的郵件和新聞,給許多服務(wù)器造成打擊,用盡磁盤。 

            利用這個(gè)特點(diǎn)的目的是從一個(gè)代理的FTP服務(wù)器來掃描TCP端口。這樣,用戶能在一個(gè)防火墻后面連接到一個(gè)FTP服務(wù)器,然后掃描端口(這些原來有可能被阻塞)。如果FTP服務(wù)器允許從一個(gè)目錄讀寫數(shù)據(jù),用戶就能發(fā)送任意的數(shù)據(jù)到發(fā)現(xiàn)的打開的端口。 

            對于端口掃描,這個(gè)技術(shù)是使用PORT命令來表示被動的User DTP正在目標(biāo)計(jì)算機(jī)上的某個(gè)端口偵聽。然后入侵者試圖用LIST命令列出當(dāng)前目錄,結(jié)果通過Server-DTP發(fā)送出去。如果目標(biāo)主機(jī)正在某個(gè)端口偵聽,傳輸就會成功(產(chǎn)生一個(gè)150或226的回應(yīng))。否則,會出現(xiàn)″425 Can't build data connection: Connection refused.″。然后,使用另一個(gè)PORT命令,嘗試目標(biāo)計(jì)算機(jī)上的下一個(gè)端口。這種方法的優(yōu)點(diǎn)很明顯,難以跟蹤,能穿過防火墻。主要缺點(diǎn)是速度很慢,有的FTP服務(wù)器最終能得到一些線索,關(guān)閉代理功能。 

            這種方法成功的系統(tǒng)顯示狀態(tài): 

            220 xxxxxxx.com FTP server (Version wu-2.4(3) Wed Dec 14 ...) ready. 

            220 xxx.xxx.xxx.net FTP server ready. 

            220 xx.Telcom.xxxx.edu FTP server (Version wu-2.4(3) Tue Jun 11 ...) ready. 

            220 lem FTP server (SunOS 4.1) ready. 

            220 xxx.xxx.es FTP server (Version wu-2.4(11) Sat Apr 27 ...) ready. 

            220 elios FTP server (SunOS 4.1) ready 

            這種方法不成功的系統(tǒng)顯示狀態(tài): 

            220 wcarchive.cdrom.com FTP server (Version DG-2.0.39 Sun May 4 ...) ready. 

            220 xxx.xx.xxxxx.EDU Version wu-2.4.2-academ[BETA-12](1) Fri Feb 7 

            220 ftp Microsoft FTP Service (Version 3.0). 

            220 xxx FTP server (Version wu-2.4.2-academ[BETA-11](1) Tue Sep 3 ...) ready. 

            220 xxx.unc.edu FTP server (Version wu-2.4.2-academ[BETA-13](6) ...) ready. 

            (7)UDP ICMP端口不能到達(dá)掃描 

            這種方法與上面幾種方法的不同之處在于使用的是UDP協(xié)議。由于這個(gè)協(xié)議很簡單,所以掃描變得相對比較困難。這是由于打開的端口對掃描探測并不發(fā)送一個(gè)確認(rèn),關(guān)閉的端口也并不需要發(fā)送一個(gè)錯(cuò)誤數(shù)據(jù)包。但許多主機(jī)在向一個(gè)未打開的UDP端口發(fā)送一個(gè)數(shù)據(jù)包時(shí),會返回一個(gè)ICMP_PORT_UNREACH錯(cuò)誤。這樣軟件就能發(fā)現(xiàn)哪個(gè)端口是關(guān)閉的。UDP和ICMP錯(cuò)誤都不保證能到達(dá),因此這種掃描器必須還實(shí)現(xiàn)在一個(gè)包看上去是丟失的時(shí)候能重新傳輸。這種掃描方法是很慢的,因?yàn)镽FC對ICMP錯(cuò)誤消息的產(chǎn)生速率做了規(guī)定。同樣,這種掃描方法需要具有root權(quán)限。 

            (8)UDP recvfrom()和write()掃描 

            當(dāng)非root用戶不能直接讀到端口不能到達(dá)錯(cuò)誤時(shí),Linux能間接地在它們到達(dá)時(shí)通知用戶。例如,對一個(gè)關(guān)閉的端口的第二個(gè)write()調(diào)用將失敗。在非阻塞的UDP套接字上調(diào)用recvfrom()時(shí),如果ICMP出錯(cuò)還沒有到達(dá)時(shí)回返回EAGAIN-重試。如果ICMP到達(dá)時(shí),返回ECONNREFUSED-連接被拒絕。這就是用來查看端口是否打開的技術(shù)。 

            (9)ICMP echo掃描 

            這并不是真正意義上的掃描。但有時(shí)通過ping,在判斷在一個(gè)網(wǎng)絡(luò)上主機(jī)是否開機(jī)或網(wǎng)絡(luò)設(shè)備是否在線正常工作時(shí)非常有用。

            3 網(wǎng)絡(luò)掃描的監(jiān)測與處理

            網(wǎng)絡(luò)掃描監(jiān)測系統(tǒng)從邏輯上可以分為三個(gè)部分:即抓包模塊,判定模塊,以及處理模塊。同時(shí)還應(yīng)該保留對處理模塊的接口。

            (1)抓包模塊,這一模塊一般只需要調(diào)用標(biāo)準(zhǔn)的網(wǎng)絡(luò)接口。目前一般的開發(fā)工具都提供相應(yīng)的Winsock API()。

            (2)判定模塊,其流程圖如下;本模塊是處理由抓包模塊提交的數(shù)據(jù)報(bào)文,根據(jù)預(yù)定義的過濾規(guī)則進(jìn)行第一次匹配,選出非正常報(bào)文,提交給上層應(yīng)用,對于選定的非正常報(bào)文,由于存在多種可能,如:TCP SYN、TCP FIN等,則需要進(jìn)行由用戶定制的二次匹配,其中的特征值由用戶根據(jù)相應(yīng)的掃描特點(diǎn)定義。那些仍然沒有確定的報(bào)文,往往帶有二義性,這就需要借助歷史記錄的數(shù)據(jù)庫,或者報(bào)文(如ICMP報(bào)文)長度的閥值來加以判斷。

            (3)處理模塊,這一模塊是按照需要設(shè)置的各種實(shí)現(xiàn)方式和采取相對策略,并且要將相應(yīng)記錄存入日志。需要注意的是對一般的掃描要設(shè)置有效的閥值,僅僅一次、二次的掃描不應(yīng)該被視為網(wǎng)絡(luò)掃描。

            端口掃描雖然可以分為秘密掃描、間接掃描、認(rèn)證掃描、代理掃描、PING掃描和安全掃描等等,其應(yīng)用的領(lǐng)域也十分廣泛,但作為網(wǎng)絡(luò)的用戶對發(fā)生在自己身上的被掃描和請求連接應(yīng)引起足夠的重視,尤其是常用的低端口掃描和聯(lián)結(jié)請求,如23、69、135、139、445等。做到心中有數(shù),安全防范,預(yù)防攻擊。

            參考文獻(xiàn)

            1 Tcp/Ip Illustrated Volume 1The Protocols.U.S. W. Richard Stevens 2000.4

            2 Tcp/Ip Illustrated Volume 2 The Implementation.U.S. Gary R. Wright 2000.4

            3 NETWORK MANAGEMENT-Principles and Practice.Mani  Subramanian 2003

            4 張琳等. 網(wǎng)絡(luò)管理與應(yīng)用. 北京:人民郵電出版社, 2000.5

            5 譚思亮. 監(jiān)聽與隱藏-網(wǎng)絡(luò)偵聽揭密與數(shù)據(jù)保護(hù)技術(shù). 北京:機(jī)械工業(yè)出版社,2002.8

            6 網(wǎng)絡(luò)安全技術(shù)與應(yīng)用. 北京:公安大學(xué)出版社,總第32期, 2003.12

          模數(shù)轉(zhuǎn)換器相關(guān)文章:模數(shù)轉(zhuǎn)換器工作原理




          評論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();