nmap,也就是Network Mapper,是Linux下的網絡掃描和嗅探工具包。
其基本功能有四個:
- 主機發現(Host Discovery)
- 端口掃描(Port Scanning)
- 版本偵測(Version Detection)
- 操作系統偵測(Operating System Detection)
主機掃描:
1)-sL 列表掃描:可以對主機進行反向域名解析,校驗ip或域名是否存在
nmap -sL 192.168.2.0/24或www.baidu.com/24
2)-sP ping掃描:使用ping主機,得出可響應的主機列表
nmap -sP 192.168.2.0/24或www.baidu.com/24
3)-P0 (無ping):高強度的掃描時用它確定正在運行的機器, 默認情況下,Nmap只對正在運行的主機進行高強度的探測如 端口掃描,版本探測,或者操作系統探測。
nmap -P0 192.168.8.111
4)-PS [portlist] (TCP SYN Ping):發送一個設置了SYN標誌位的空TCP報文,嘗試建立連接,成功返回報文up以及運行信息,失敗返回down;
nmap -PS 192.168.8.118
5)-PA [portlist] (TCP ACK Ping):發送一個設置了ACK標誌位的空TCP報文,嘗試建立連接,成功返回報文up以及運行信息,失敗返回down;
nmap -PA 192.168.8.118
6) -PU [portlist] (UDP Ping):它發送一個空的UDP報文,返回響應報文up以及運行信息,失敗返回down;
nmap -PU 192.168.8.118
7)-PE; -PP; -PM (ICMP Ping Types):發送一個ICMP type 8 (回聲請求)報文到目標IP地址, 期待從運行的主機得到一個type 0 (回聲響應)報文。
nmap -PE 192.168.8.118
8)-PR (ARP Ping):同一個局域網內,當進行ARP掃描時,Nmap用它優化的算法管理ARP請求。 當它收到響應時, Nmap甚至不需要擔心基於IP的ping報文,既然它已經知道該主機正在運行了。 這使得ARP掃描比基於IP的掃描更快更可靠。
nmap -PR 192.168.2.118
端口掃描
端口狀態:掃描之後,你可能會看到一些端口狀態如 open(開放的),filtered(被過濾的),closed(關閉的)等等。
- Open(開放的): 應用程序正在這個端口上監聽連接。
- Closed(關閉的): 端口對探測做出了響應,但是現在沒有應用程序在監聽這個端口。
- Filtered(過濾的): 端口沒有對探測做出響應。同時告訴我們探針可能被一些過濾器(防火牆)終止了。
- Unfiltered(未被過濾的):端口對探測做出了響應,但是Nmap無法確定它們是關閉還是開放。
- Open/Filtered: 端口被過濾或者是開放的,Nmap無法做出判斷。
- Closed/Filtered: 端口被過濾或者是關閉的,Nmap無法做出判斷。
1)-sS (TCP SYN掃描): 被稱爲半開放掃描, 因爲它不打開一個完全的TCP連接。 SYN/ACK表示端口在監聽 (開放),而 RST (復位)表示沒有監聽者。
nmap -sS 192.168.2.118
2)-sT (TCP connect()掃描):Nmap通過創建connect() 系統調用要求操作系統和目標機以及端口建立連接,而不像其它掃描類型直接發送原始報文。
3)-sU (UDP掃描):UDP掃描發送空的(沒有數據)UDP報頭到每個目標端口。 如果返回ICMP端口不可到達錯誤(類型3,代碼3), 該端口是closed(關閉的)。 其它ICMP不可到達錯誤(類型3, 代碼1,2,9,10,或者13)表明該端口是filtered(被過濾的).
4)-sN; -sF; -sX (TCP Null,FIN,and Xmas掃描):
nmap端口狀態解析:
open
: 應用程序在該端口接收 TCP 連接或者 UDP 報文。
closed :關閉的端口對於nmap也是可訪問的, 它接收nmap探測報文並作出響應。但沒有應用程序在其上監聽。
filtered :由於包過濾阻止探測報文到達端口,nmap無法確定該端口是否開放。過濾可能來自專業的防火牆設備,路由規則 或者主機上的軟件防火牆。
unfiltered :未被過濾狀態意味着端口可訪問,但是nmap無法確定它是開放還是關閉。 只有用於映射防火牆規則集的 ACK 掃描纔會把端口分類到這個狀態。
open
| filtered :無法確定端口是開放還是被過濾, 開放的端口不響應就是一個例子。沒有響應也可能意味着報文過濾器丟棄了探測報文或者它引發的任何反應。UDP,IP協議,FIN, Null 等掃描會引起。
closed|filtered:(關閉或者被過濾的):無法確定端口是關閉的還是被過濾的
ping掃描:掃描192.168.0.0/24網段上有哪些主機是存活的;
[root@laolinux ~]# nmap -sP 192.168.0.0/24
端口掃描:掃描192.168.0.3這臺主機開放了哪些端口;
[root@laolinux ~]# nmap -sT 192.168.0.3
隱藏掃描,只在目標主機上留下很少的日誌信息:隱藏掃描192.168.0.220
[root@laolinux ~]# nmap -sS 192.168.0.127
UDP端口掃描:掃描192.168.0.127開放了哪些UDP端口;
[root@laolinux ~]# nmap -sU 192.168.0.127
操作系統識別:
[root@laolinux ~]# nmap -sS -O 192.168.0.127
讀取文件
假設我們有list.txt文件,文件的內容是ip列表,一行一個。比如這樣:
10.73.31.145
10.73.31.116
我們可以輸入這條指令讓nmap自動掃描:
nmap -iL list.txt
在nmap運行的時候,如果我們可以像其他編程一樣打“斷點”,直接按鍵盤的d鍵就行了,如果想知道運行的進度可以按下X鍵