Nmap的參數和選項繁多,功能非常豐富,詳細教程及下載:http://nmap.org
主機發現
主機發現原理
主機發現的原理與Ping命令類似,發送探測包到目標主機,如果收到回復,那么說明目標主機是開啟的。
實例演示
需求:掃描局域網內192.168.3.1到 192.168.3.200范圍內哪些主機是存活的
-sn Ping Scan只進行主機發現,不進行端口掃描
root@kali:~# nmap -sn 192.168.3.1-200
端口的概念
為什么要進行端口掃描?
通過掃描端口,可以發現目標主機中運行的程序。然后,再對這些程序進行信息收集,以獲取期漏洞信息,並實施滲透測試。
在計算機中端口的英文是Port。在網絡技術中,端口有幾種意思。這里指的端口並不是物理意義上的端口,而是特指TCP/IP協議中的端口。是邏輯意義上的端口。
在TCP/IP協議中,最常用的協議是TCP和UDP協議。由於TCP和UDP兩個協議是獨立的,因此各自的端口號也相互獨立。如,TCP有235端口,UDP也可以有235端口,兩者並不沖突。
1、端口的作用
用戶都知道一台主機對應一個IP地址,可以提供多個服務,如Web服務和FTP服務等。如果只有一個IP,無法區分不同的網絡服務,所以使用IP+端口號來區分不同的服務。
2、端口的定義
端口號是標識主機內唯一的一個進程,【IP+端口】就可以標識網絡中唯一的進程。在網絡開發的Socket編程中 ,IP+端口號就是套接字。端口號是由16位二進制數字編號,范圍是0~65535。但是,這些端口並不是可以隨隨便便使用的,一些端口已經別占用。
例如:web服務器的端口為80,FTP服務的端口為21等。所以,端口被進行了分類,並規定了用戶可以使用的端口訪問。
3、端口分類
端口分類的方法很多,這里按照服務端使用還是客戶端使用進行分類 。其中,服務端使用的端口后又可以分為預留端口號和注冊端口號。
預留端口號:該類端口的取值范圍為0-1023.其中,這些端口在用戶編程的時候不能使用,是一些程序固定使用。例如:WWW服務默認端口80,FTP服務默認端口為21等。不過,用戶也可以為這些網絡服務指定其它端口號。
注冊端口號:該類端口的訪問1024-49151,用戶平時編寫服務器使用的端口號范圍。這些端口在沒有別服務器資源占用的時候,用戶端口可以選用。
客戶端端口: 又稱臨時端口,取值范圍49152-65535.其中,這部分是客戶端進行運行時動態選擇范圍。
4、常用端口
實施端口掃描(kali中的兩款工具)
使用Nmap工具
使用Nmap工具實施端口掃描,可以識別6種端口狀態:open(開發的)、closed(關閉的)、filtered(被過濾的)、unfiltered(未被過濾的)、open/filtered(開放或者被過濾的)和closed/filtered(關閉或者被過濾的)。
- open(開放的):應用程序正在該端口接收TCP連接或者UDP報文。
- closed(關閉的):關閉的端口對於Nmap也是可訪問的(它接收Nmap的探測報文並作出相應),但沒有應用程序在其上監聽。對部分操作系統探測有所幫助。
- filtered(被過濾的):由於包過濾阻止探測報文到達端口,Nmap無法確定該端口是否開放。過濾看你來自專業的防火牆設備、路由器規則或者主機上的軟件防火牆。
- unfiltered(未被過濾的):未被過濾狀態意味着端口可訪問,但Nmap不能確定它是開放還是關閉。
- open/filtered(開放或者被過濾的):當無法確定端口是開放還是被過濾時,Nmap就把該端口划分成這種狀態。開放的端口不響應就是這種情況。
- closed/filtered(關閉或者被過濾的):該狀態用於Nmap不能確定端口是關閉的還是被過濾的。
掃描用法
- 單個掃描:nmap xxx.xxx.xxx.xxx
- 多個掃描:nmap 192.168.1.1 192.168.1.2
- 網段掃描:nmap 192.168.2.1-192.168.2.100
- 導入掃描:nmap -iL [LIST.TXT]
- -sS:TCP SYN掃描(匿名掃描,默認不加類型,需要root權限,掃描速度快)
- -sT:TCP全連接掃描(不需要root權限,TCP掃描的默認模式,端口狀態和SYN相同,耗時長)
- -sU:UDP掃描(掃描DNS,SNMP和DHCP等服務,更慢更困難)
- -sV:指定nmap進行版本探測
- -O:nmap進行OS探測
例如:
- nmap -sS 192.168.88.1-255
- nmap -sT 192.168.88.1-255
- nmap -sU 192.168.88.1-255
Nmap實例
語法:nmap -p <range> [target] ,選項-p用來指定掃描的端口。其中,指定的端口可以是單個端口、多個端口或端口訪問。當指定多個掃描端口時,端口之間用【逗號】分隔。默認情況下,Nmap掃描的端口范圍為1-1000。
例1:一次使用多個參數對端口進行掃描(常用)
root@kali:~# nmap -sS -sU -T4 -top-ports 300 192.168.3.25
-sS表示使用TCP SYN方式掃描TCP端口;
-sU表示掃描UDP端口;
-T4表示時間級別配置4級
--top-ports 300表示掃描最有可能開放的300個端口(TCP和UDP分別有300個端口)
例2:對目標主機192.168.10.7實施端口掃描。
執行命令如下:
root@kalitian:~# nmap 192.168.10.7
Starting Nmap 7.70 ( https://nmap.org ) at 2020-01-13 17:39 CST
Nmap scan report for 192.168.10.7
Host is up (0.00095s latency).
Not shown: 984 closed ports #關閉的端口
PORT STATE SERVICE
80/tcp open http
135/tcp open msrpc
139/tcp open netbios-ssn
902/tcp open iss-realsecure
912/tcp open apex-mesh
3306/tcp open mysql
3389/tcp open ms-wbt-server
6000/tcp open X11
8080/tcp open http-proxy
8888/tcp open sun-answerbook
49152/tcp open unknown
49153/tcp open unknown
49154/tcp open unknown
49155/tcp open unknown
49175/tcp open unknown
49176/tcp open unknown
MAC Address: E0:3F:49:E9:30:E9 (Asustek Computer)
Nmap done: 1 IP address (1 host up) scanned in 2.17 seconds
備注:從輸出的信息可以看到,Nmap工具默認掃描了1000個端口。其中,989個端口是關閉的,11個端口是開發的。例如:端口21/22/80/135等端口是開發的。
例3:指定端口范圍為1-100,對目標主機實施端口掃描
執行命令如下:
root@kalitian:~# nmap -p 1-100 192.168.10.7
Starting Nmap 7.70 ( https://nmap.org ) at 2020-01-13 17:43 CST
Nmap scan report for 192.168.10.7
Host is up (0.00012s latency).
Not shown: 99 closed ports #關閉端口99個
PORT STATE SERVICE
80/tcp open http
MAC Address: E0:3F:49:E9:30:E9 (Asustek Computer)
備注:從輸出結果可以看到,掃描了端口范圍為1-100之間的端口。其中99個端口是關閉的,80端口是開放的。
例4:指定掃描目標主機的21和23端口
執行命令如下:
root@kalitian:~# nmap -p 21,23 192.168.10.7
Starting Nmap 7.70 ( https://nmap.org ) at 2020-01-13 17:47 CST
Nmap scan report for 192.168.10.7
Host is up (0.00013s latency).
PORT STATE SERVICE
21/tcp closed ftp
23/tcp closed telnet
MAC Address: E0:3F:49:E9:30:E9 (Asustek Computer)
備注:從輸出信息可以看到,目標主機21和23端口均為關閉。
例5:指定多台目標主機進行端口掃描:192.168.10.7,192.168.10.31
root@kalitian:~# nmap 192.168.10.7 , 192.168.10.31
Starting Nmap 7.70 ( https://nmap.org ) at 2020-07-10 13:52 CST
Failed to resolve ",".
Nmap scan report for 192.168.10.7
Host is up (0.00023s latency).
Not shown: 993 filtered ports
PORT STATE SERVICE
85/tcp open mit-ml-dev
135/tcp open msrpc
139/tcp open netbios-ssn
1121/tcp open rmpp
3306/tcp open mysql
3389/tcp open ms-wbt-server
6000/tcp open X11
MAC Address: E0:3F:49:E9:30:E9 (Asustek Computer)
Nmap scan report for 192.168.10.31
Host is up (0.0010s latency).
Not shown: 997 filtered ports
PORT STATE SERVICE
21/tcp open ftp
80/tcp open http
3389/tcp open ms-wbt-server
MAC Address: 00:0C:29:4E:66:96 (VMware)
版本偵測
用法
-sV : 指定Nmap進行版本探測
實例
root@kali:~# nmap -sV 192.168.3.25
2、使用DMitry工具
DMitry工具提供了一個-p選項,可以實施端口掃描。語法格式:dmitry -p [host]
實例1:使用Dmitry掃描目標主機192.168.10.7上開放的端口
執行命令:root@kalitian:~# dmitry -p 192.168.10.7FDH