1、TCP connect()掃描:
這 是最基本的TCP掃描,作業系統提供的connect()系統調用可以用來與每一個感興趣的目标計算機的端口進行連接配接。如果端口處于偵聽狀态,那麼 connect()就能成功。否則,這個端口是不能用的,即沒有提供服務。這個技術的一個最大的優點是,你不需要任何權限。系統中的任何使用者都有權利使用這個調用。另一個好處就是速度,如果對每個目标端口以線性的方式,使用單獨的connect()調用,那麼将會花費相當長的時間,使用者可以通過同時打開多個套接字來加速掃描。使用非阻塞I/O允許你設定一個低的時間用盡周期,同時觀察多個套接字。但這種方法的缺點是很容易被察覺的,并且很容易被防火牆将掃描資訊包過濾掉。目标計算機的logs檔案會顯示一連串的連接配接和連接配接出錯消息,并且能很快使它關閉。
2、TCP SYN掃描:
這種技術通常認為 是“半開放”掃描,這是因為掃描程式不必要打開一個完全的TCP連接配接。掃描程式發送的是一個SYN資料包,好象準備打開一個實際的連接配接并等待反應一樣(參 考TCP的三次握手建立一個TCP連接配接的過程)。一個SYN|ACK的傳回資訊表示端口處于偵聽狀态:傳回RST表示端口沒有處于偵聽态。如果收到一個 SYN|ACK,則掃描程式必須再發送一個RST信号,來關閉這個連接配接過程。這種掃描技術的優點在于一般不會在目标計算機上留下記錄,但這種方法的缺點是 必須要有root權限才能建立自己的SYN資料包。
3、TCP FIN 掃描:
SYN掃描雖然是“半開放”方式掃描,但在某些時候也不能 完全隐藏掃描者的動作,防火牆和包過濾器會對管理者指定的端口進行監視,有的程式能檢測到這些掃描。相反,FIN資料包在掃描過程中卻不會遇到過多問題, 這種掃描方法的思想是關閉的端口會用适當的RST來回複FIN資料包。另一方面,打開的端口會忽略對FIN資料包的回複。這種方法和系統的實作有一定的關 系,有的系統不管端口是否打開都會回複RST,在這種情況下此種掃描就不适用了。另外這種掃描方法可以非常容易的區分伺服器是運作Unix系統還是NT系 統。
4、IP段掃描:
這種掃描方式并不是新技術,它并不是直接發送TCP探測資料包,而是将資料包分成兩個較小的IP段。這樣就将一個TCP頭分成好幾個資料包,進而過濾器就很難探測到。但必須小心:一些程式在處理這些小資料包時會有些麻煩。
5、TCP 反向 ident掃描:
ident 協定允許(rfc1413)看到通過TCP連接配接的任何程序的擁有者的使用者名,即使這個連接配接不是由這個程序開始的。例如掃描者可以連接配接到http端口,然後 用identd來發現伺服器是否正在以root權限運作。這種方法隻能在和目标端口建立了一個完整的TCP連接配接後才能看到。
6、FTP 傳回攻擊:
FTP 協定的一個有趣的特點是它支援代理(proxy)FTP連接配接,即入侵者可以從自己的計算機self.com和目标主機target.com的 FTP server-PI(協定解釋器)連接配接,建立一個控制通信連接配接。然後請求這個server-PI激活一個有效的server-DTP(資料傳輸進 程)來給Internet上任何地方發送檔案。對于一個User-DTP,盡管RFC明确地定義請求一個伺服器發送檔案到另一個伺服器是可以的,但現在這 個方法并不是非常有效。這個協定的缺點是“能用來發送不能跟蹤的郵件和新聞,給許多伺服器造成打擊,用盡磁盤,企圖越過防火牆”。
7、UDP ICMP端口不能到達掃描:
這 種方法與上面幾種方法的不同之處在于使用的是UDP協定,而非TCP/IP協定。由于UDP協定很簡單,是以掃描變得相對比較困難。這是由于打開的端口對 掃描探測并不發送确認資訊,關閉的端口也并不需要發送一個錯誤資料包。幸運的是許多主機在向一個未打開的UDP端口發送資料包時,會傳回一個 ICMP_PORT_UNREACH錯誤,這樣掃描者就能知道哪個端口是關閉的。UDP和ICMP錯誤都不保證能到達,是以這種掃描器必須還實作在一個包 看上去是丢失的時候能重新傳輸。這種掃描方法是很慢的,因為RFC對ICMP錯誤消息的産生速率做了規定。同樣這種掃描方法也需要具有root權限。
8、UDP recvfrom()和write() 掃描:
當 非root使用者不能直接讀到端口不能到達錯誤時,Linux能間接地在它們到達時通知使用者。比如,對一個關閉的端口的第二個write()調用将失敗。在 非阻塞的UDP套接字上調用recvfrom()時,如果ICMP出錯還沒有到達時回傳回EAGAIN-重試。如果ICMP到達時,傳回 ECONNREFUSED-連接配接被拒絕。這就是用來檢視端口是否打開的技術。
當然好的技術自然離不開好的工具,我在這裡給大家推薦幾款常用的端口掃描工具:
1. Nmap
Nmap 是一款用于網絡浏覽或安全審計的免費開源工具。
2. Unicornscan
Unicornscan 是一個新的資訊收集引擎,主要用于安全研究和通訊測試,主要特點是精确、靈活而且高效。
3. Zenmap
ZenMap是安全掃描工具NMap的一個官方的圖形 使用者界面,是一個跨平台的開源應用,指令行工具提供了直接與NMap的互動操作。掃描結果能夠被存儲便于事後 查閱。
4. nast
Network Analyzer Sniffer Tool (nast) 是一個網絡包嗅探和區域網路分析工具,基于 libnet 和 libpcap 開發。
5. Knocker
Knocker 是一個簡單易用的 TCP 端口掃描工具,采用 C 語言編寫,用于分析主機上運作的服務。
本期介紹就到這裡了,我們下期再見
掃描二維碼關注我們吧!