Nmap網絡安全審計(三)
端口掃描技術
端口的概念
網絡中一共有65536個端口(0-65535),端口是供數據進出網絡設備的,也是計算機與外界通信的出口。
網絡中很多程序需要進行網絡通信,而信息實際上都需要通過網卡出入,如何區分出入信息是哪個程序使用的呢,這個就由操作系統處理,而它採用的機制就是劃分出65536個端口,程序在發送的信息中加入端口編號,而操作系統在接收到信息後會按照端口號將信息分流到當前內存中使用該端口號的程序。
端口的分類
根據端口使用情況的不同,可以簡單的將端口分爲三類:
公認端口:這一類端口是我們常用的端口。端口編號0-1024的端口都是公認端口。通常這些端口已經明確的與某種服務的協議進行了關聯,一般不會進行更改,比如我們常用的80端口(Http)、23端口(Telnet)、22端口(SSH)。
註冊端口:這部分的端口號的範圍是從1025-49151。它們通常也會關聯到一些服務上,但是並沒有明確的規定,不同的程序可以根據實際情況進行定義。
動態/私有端口:這部分端口號的範圍是從49152-65535。一般來說,常見的服務不應該使用這些端口,所有容易被忽視。
此外,我們根據協議的不同,可以分爲TCP協議端口、UDP協議端口,因爲這兩個都屬於傳輸層的協議,爲通信的雙方提供端到端的服務。
Nmap中對端口狀態的定義
Nmap中對端口給出了6種不同的狀態:
open:如果目標端口的狀態處於open,則說明該端口有應用程序接受TCP連接或UDP報文。
closed:如果目標端口的狀態處於close,這裏不完全意味沒有任何反應,狀態爲close的端口是可訪問的,這種端口可以接受Nmap的探測報文並做出響應。
filtered:產生這種狀態主要原因是因爲存網絡數據包過濾,導致Nmap無法確定該端口是否開放
unfiltered:這種結果很少見,它表明目標端口是可以訪問的,但是Nmap卻無法判斷它到底是開放還是關閉,通常在ACK掃描時會出現這種狀況。
open | filtered:無法確定端口是開放的還是被過濾了。
closed | filtered:無法確定端口是關閉的還是被過濾了。
Nmap中的各種端口掃描技術
Nmap中提供了大量的技術來實現對端口狀態的檢測,由於TCP技術相對於UDP技術要複雜一些,所以TCP的檢測手段比UDP要多一些。
-
SYN掃描
SYN掃描是最爲流行的一種掃描方式,同時也是Nmap採用的默認掃描方式。這種掃描方式速度快,可以在一秒鐘掃描上千個端口。
首先Nmap會向目標主機的一個端口發送請求連接的SYN數據包,而目標計算機接收到以後會以SYN/ACK應答,Nmap在接收到SYN/ACK後會發送RST包請求斷開連接, 而不是ACK應答。這樣三次握手就沒有完成,無法建立正常的TCP連接,因此,(準備劃重點)此次掃描就不會被記錄到系統日誌中。
用TCP SYN掃描時會有以下幾種結果:
|
-
Connect掃描
Connect掃描方式其實跟SYN掃描很像,只是這種掃描方式完成了TCP的三次握手。
Connect掃描語法如下:
nmap -sT 192.168.126.139
-
UDP掃描
使用UDP掃描對一個端口進行掃描時有三種結果
目標主機的應答 | 目標端口的狀態 |
---|---|
從目標端口得到任意的UDP應答 | open |
如果目標主機沒有給出應答 | open filtered |
ICMP端口無法抵達錯誤(代碼 3) | closed |
ICMP無法抵達的錯誤(代碼 1 2 9 10 13) | filtered |
UDP的掃描速度相對較慢。語法如下:
nmap -sU 192.168.126.139
......等這個結果確實很慢
這個掃描結果中有很多端口狀態都是filtered,但是這個端口的真實狀態可能是open或者closed,我們要想判斷這些端口到底是開放還是關閉的話就需要進一步測試。UDP程序的服務一般不會對Nmap所發的空數據包做出迴應,UDP程序需要使用它們自己的格式。如果保證能向所有常見的UDP服務發送合適的數據包,Nmap需要一個很大的數據庫來儲存這些格式,Nmap將這些格式存放在Nmap-service-probes中。我們可以使用-sV 或 -A 參數,Nmap將會向每個 open | filtered 端口發送UDP probe,如果目標端口對任何一個probe有了響應,狀態都會被更改爲open。
-
TCP FIN掃描
TCP FIN掃描方法向目標端口發送一個FIN數據包。按照RFC 793的規定,所有關閉的端口,目標系統應該返回RST標誌。
使用TCP FIN掃描端口語法如下:nmap -sF 192.168.126.139
-
NULL掃描
TCP NULL掃描方法是向目標端口發送一個不包含任何標誌的數據包。按照RFC 793的規定,對於所有關閉的端口,目標主機應該返回RST標誌。
使用 TCP NULL掃描端口的語法如下:nmap -sN 192.168.126.139
-
Xmas Tree掃描
TCP Xmas Tree掃描方法是向目標端口發送一個含有FIN URG 和 PUSH標誌的數據包。按照RFC 793規定,對於關閉的端口,目標系統應該返回RST標誌
使用TCP Xmas Tree掃描端口的語法如下:nmap -sX 192.168.126.139
指定掃描的端口
- 掃描常見的100個端口
nmap -F 192.168.126.139
2.指定掃描某個端口
nmap -p 8080 192.168.126.139 //-p後加指定的端口號
3.使用名字來指定掃描端口
nmap -p dns,http 192.168.126.139 //-p後跟端口名稱,多個端口用逗號隔開
4.使用協議指定掃描端口
nmap -p U:53 , T:22 192.168.126.139 //對UDP的53端口和TCP的22端口進行掃描,目標192.168.126.139
5.掃描所有端口
nmap -p * 192.168.126.139 //慎用
6.掃描常用端口
nmap --top-ports 20 192.168.126.139 //對前20個端口進行掃描,數字根據自己需求設置,默認是10個
備註
因爲系統查的比較嚴,所以刪減了一部分的文章,還請諒解