Nmap(Network Mapper)是一款開放源代碼的網絡探測和安全審核工具。它的設計目標是快速地掃描大型網絡,不適應於單一主機。Nmap使用檢測IP數據包來確定訪問的主機、提供的服務、數據包的類型等其他信息;Nmap通常被用來做安全審查,比如日常的網絡日常檢查、管理service升級計划以及檢測hosts和service的運行時長等。
使用方法:nmap [Scan Type(s)] [Options] {target specification}
主要的參數和用法
-sT | TCP connect()掃描,這是最基本的TCP掃描方式。這種掃描很容易被檢測到,在目標主機的日志中會記錄大批的連接請求以及錯誤信息。 |
-sS | TCP同步掃描(TCP SYN),因為不必全部打開一個TCP連接,所以這項技術通常稱為半開掃描(half-open)。這項技術最大的好處是,很少有系統能夠把這記入系統日志。不過,你需要root權限來定制SYN數據包。 |
-sF,-sX,-sN | 秘密FIN數據包掃描、聖誕樹(Xmas Tree)、空(Null)掃描模式。這些掃描方式的理論依據是:關閉的端口需要對你的探測包回應RST包,而打開的端口必需忽略有問題的包(參考RFC 793第64頁)。 |
-sP | ping掃描,用ping方式檢查網絡上哪些主機正在運行。當主機阻塞ICMP echo請求包是ping掃描是無效的。nmap在任何情況下都會進行ping掃描,只有目標主機處於運行狀態,才會進行后續的掃描。 |
-sU | 如果你想知道在某台主機上提供哪些UDP(用戶數據報協議,RFC768)服務,可以使用此選項。 |
-sA | ACK掃描,這項高級的掃描方法通常可以用來穿過防火牆。 |
-sW | 滑動窗口掃描,非常類似於ACK的掃描。 |
-sR | RPC掃描,和其它不同的端口掃描方法結合使用。 |
-sV | 掃描服務端口、名稱和版本 |
-O | 遠程檢測操作系統類型以及版本 |
基礎命令
#nmap cnblogs.com
#nmap 192.168.1.2
掃描整個子網,命令如下:
#nmap 192.168.1.1/24
掃描多個目標,命令如下:
#nmap 192.168.1.2 192.168.1.5
掃描一個范圍內的目標,如下:
#nmap 192.168.1.1-100 (掃描IP地址為192.168.1.1-192.168.1.100內的所有主機)
如果你有一個ip地址列表,將這個保存為一個txt文件,和namp在同一目錄下,掃描這個txt內的所有主機,命令如下:
#nmap -iL target.txt
如果你想看到你掃描的所有主機的列表,用以下命令:
#nmap -sL 192.168.1.1/24
掃描局域網存活的IP
#nmap -sP 192.168.0.0/24
掃描除過某一個ip外的所有子網主機,命令:
#nmap 192.168.1.1/24 -exclude 192.168.1.1
掃描除過某一個文件中的ip外的子網主機命令
#nmap 192.168.1.1/24 -exclude file xxx.txt (xxx.txt中的文件將會從掃描的主機中排除)
掃描特定主機上的80,21,23端口,命令如下
#nmap -p80,21,23 192.168.1.1
Tcp SYN Scan (sS)
這是一個基本的掃描方式,它被稱為半開放掃描,因為這種技術使得Nmap不需要通過完整的握手,就能獲得遠程主機的信息。Nmap發送SYN包到遠程主機,但是它不會產生任何會話.因此不會在目標主機上產生任何日志記錄,因為沒有形成會話。這個就是SYN掃描的優勢.
如果Nmap命令中沒有指出掃描類型,默認的就是Tcp SYN.但是它需要root/administrator權限.
#nmap -sS 192.168.1.1
Tcp connect() scan(sT)
如果不選擇SYN掃描,TCP connect()掃描就是默認的掃描模式.不同於Tcp SYN掃描,Tcp connect()掃描需要完成三次握手,並且要求調用系統的connect().Tcp connect()掃描技術只適用於找出TCP和UDP端口.
#nmap -sT 192.168.1.1
Udp scan(sU)
顧名思義,這種掃描技術用來尋找目標主機打開的UDP端口.它不需要發送任何的SYN包,因為這種技術是針對UDP端口的。UDP掃描發送UDP數據包到目標主機,並等待響應,如果返回ICMP不可達的錯誤消息,說明端口是關閉的,如果得到正確的適當的回應,說明端口是開放的.
#nmap -sU 192.168.1.1
FIN scan (sF)
有時候Tcp SYN掃描不是最佳的掃描模式,因為有防火牆的存在.目標主機有時候可能有IDS和IPS系統的存在,防火牆會阻止掉SYN數據包。發送一個設置了FIN標志的數據包並不需要完成TCP的握手.
root@bt:~# nmap -sF 192.168.1.8
PING Scan (sP)
PING掃描不同於其它的掃描方式,因為它只用於找出主機是否是存在在網絡中的.它不是用來發現是否開放端口的.PING掃描需要ROOT權限,如果用戶沒有ROOT權限,PING掃描將會使用connect()調用.
#nmap -sP 192.168.1.1
版本檢測(sV)
版本檢測是用來掃描目標主機和端口上運行的軟件的版本.它不同於其它的掃描技術,它不是用來掃描目標主機上開放的端口,不過它需要從開放的端口獲取信息來判斷軟件的版本.使用版本檢測掃描之前需要先用TCP SYN掃描開放了哪些端口.
#nmap -sV 192.168.1.1
Idle scan (sL)
Idle scan是一種先進的掃描技術,它不是用你真實的主機Ip發送數據包,而是使用另外一個目標網絡的主機發送數據包.
#nmap -sL 192.168.1.6 192.168.1.1
Idle scan是一種理想的匿名掃描技術,通過目標網絡中的192.168.1.6向主機192.168.1.1發送數據,來獲取192.168.1.1開放的端口
有需要其它的掃描技術,如 FTP bounce(FTP反彈), fragmentation scan(碎片掃描), IP protocol scan(IP協議掃描),以上討論的是幾種最主要的掃描方式.
Nmap的OS檢測(O)
Nmap最重要的特點之一是能夠遠程檢測操作系統和軟件,Nmap的OS檢測技術在滲透測試中用來了解遠程主機的操作系統和軟件是非常有用的,通過獲取的信息你可以知道已知的漏洞。Nmap有一個名為的nmap-OS-DB數據庫,該數據庫包含超過2600操作系統的信息。 Nmap把TCP和UDP數據包發送到目標機器上,然后檢查結果和數據庫對照
# nmap -O 192.168.1.1/24
如果遠程主機有防火牆,IDS和IPS系統,你可以使用-PN命令來確保不ping遠程主機,因為有時候防火牆會組織掉ping請求.-PN命令告訴Nmap不用ping遠程主機。
# nmap -O -PN 192.168.1.1/24
想好通過Nmap准確的檢測到遠程操作系統是比較困難的,需要使用到Nmap的猜測功能選項, –osscan-guess 猜測認為最接近目標的匹配操作系統類型
# nmap -O –osscan-guess 192.168.1.1