Nmap 常用命令及抓包分析


1.主機發現:主機發現也稱為ping掃描,但是Nmap中主機發現的技術已經不是簡單的采用ping工具發送簡單的ICMP回聲請求報文。用戶完全可以通過使用列表掃描(-sL)或者通過關閉ping(-P0)跳過ping的步驟,也可以使用多個端口把TPC SYN/ACK,UDP和ICMP任意組合使用。通過獲得的響應以推測某個IP地址是否是活動的。

-sL:列表掃描

-sn: Ping掃描 – 禁用端口掃描

-Pn: 檢測所有在線主機 — 跳過主機發現

-PR:利用ARP協議掃描局域網

-n/-R: 從不DNS解析/始終解析 [默認: 有時]
–dns-servers < 服務器1[,服務器2],…>:指定自定義DNS服務器
–system-dns: 使用系統自帶的DNS解析器
–traceroute: 每個主機跟蹤一跳路徑

 

 

准備兩台虛擬機 :

我用的是hbza和kali,都設置橋接,然后給kali設置eth0網卡(vim /etc/network/interfaces)設置一個靜態ip如下圖,設置完成后 systemctl restart networking.service 重啟網絡服務即可ping通

 

 


 

 

01:掃描33.1這台機器的所有端口, -p1-65536 = -p-  

0端口是默認保留端口,如果不指定端口nmap默認掃描1-1024端口再加上nmap-services列出的端口號(當然格式也要和下面命令中指定的一樣)nmap-services是一個包含大約2200個著名的服務的數據庫,Nmap通過查詢該數據庫可以報告那些端口可能對應於什么服務器,但不一定正確。

注意:nmap有自己的庫,存放一些已知的服務和對應端口號,假如有的服務不在nmap-services,可能nmap就不會去掃描,這就是明明一些端口已經是處於監聽狀態,nmap默認沒掃描出來的原因,需要加入-p參數讓其掃描所有端口。
雖然直接使用nmap 192.168.33.1 也可以掃描出開放的端口,但是使用-p1-65535 能顯示出最多的端口
區別在於不加-p 時,顯示的都是已知協議的端口,對於未知協議的端口沒顯示
 
root@zhaizewen:~# nmap 192.168.2.100 -p-
Starting Nmap 7.80 ( https://nmap.org ) at 2020-04-06 10:53 CST
Nmap scan report for 192.168.2.100
Host is up (0.0028s latency).
Not shown: 65531 closed ports
PORT     STATE SERVICE
22/tcp   open  ssh
111/tcp  open  rpcbind
5901/tcp open  vnc-1
6001/tcp open  X11:1
MAC Address: 00:50:56:2D:67:A3 (VMware)

Nmap done: 1 IP address (1 host up) scanned in 44.67 seconds

 

看抓包文件可以看到,比如80端口沒有開放,那么只有一個SYN的請求報文和一個RST的返回報文,其中RST的返回報文中的RST值為1 也就是說 連接不能建立,就代表了這個端口沒有開啟監聽

 

 

 

 

 

 

 

而已經打開的22端口 也就是ssh端口 ,可以觀察一下 ,給我們返回的報文中RST值是0而SYN值是1,所以這個端口開啟監聽了,並且一共進行了3次報文交互,只不過最后一次是nmap發的RST請求,算是半連接

 

 

 

 

TCP端口掃描是通過SYN數據包進行的,用於掃描目標機器的端口上是否存在程序監聽,通常意義上,普通個人機器上的某個端口如果有程序監聽的話,那么它一般是系統漏洞。由於TCP是一個有連接的可靠協議,所以要使用三次握手來建立連接,三次握手的報文分別是(SYN)、(ACK SYN)和(ACK)。進行端口掃描時,首先向對方主機的某一端口發送(SYN)報文,如果對方這一端口上有程序在監聽(或者說存在漏洞),則回復(SYN ACK)報文,否則回復(RST)報文。據此就可以判斷對方端口上是否有程序在監聽了,或者是否存在漏洞了。

 

比如TCP掃描時處於open狀態的端口抓包:

 

 

 沒打開的80端口  就是直接 RST ACK了 而不是SYN ACK

 

 

 


 

02:掃描一個IP的多個端口

連續的端口可以用橫線連起來,端口之間可用逗號隔開,在hbza上再啟動兩個tcp的監聽,分別占用6666和7777端口用於測試,加上&符號可以放入后台。

[root@zh1z3ven ~]# nc -l 6666&
[1] 54408
[root@zh1z3ven ~]# nc -l 7777&
[2] 54415
[root@zh1z3ven ~]#

 

root@zhaizewen:~# nmap 192.168.2.100 -p1-1000,6666,7777
Starting Nmap 7.80 ( https://nmap.org ) at 2020-04-06 11:29 CST
Nmap scan report for 192.168.2.100
Host is up (0.00057s latency).
Not shown: 998 closed ports
PORT     STATE SERVICE
22/tcp   open  ssh
111/tcp  open  rpcbind
6666/tcp open  irc
7777/tcp open  cbt
MAC Address: 00:50:56:2D:67:A3 (VMware)

Nmap done: 1 IP address (1 host up) scanned in 13.67 seconds
root@zhaizewen:~#

 


03:-sU 掃描UDP端口

UDP掃描發送空的(沒有數據)UDP報頭到每個目標端口。 如果返回ICMP端口不可到達錯誤(類型3,代碼3), 該端口是closed(關閉的)。 其它ICMP不可到達錯誤(類型3, 代碼1,2,9,10,或者13)表明該端口是filtered(被過濾的)。 偶爾地,某服務會響應一個UDP報文,證明該端口是open(開放的)。 如果幾次重試后還沒有響應,該端口就被認為是open|filtered(開放|被過濾的)。 先查看哪些ipv4的監聽,使用grep -v 排除回環接口上的監聽

[root@zh1z3ven ~]# netstat -lnup --inet |grep -v 127.0.0.1
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
udp        0      0 0.0.0.0:5353            0.0.0.0:*                           696/avahi-daemon: r 
udp        0      0 0.0.0.0:833             0.0.0.0:*                           669/rpcbind         
udp        0      0 192.168.122.1:53        0.0.0.0:*                           1469/dnsmasq        
udp        0      0 0.0.0.0:47169           0.0.0.0:*                           696/avahi-daemon: r 
udp        0      0 0.0.0.0:67              0.0.0.0:*                           1469/dnsmasq        
udp        0      0 0.0.0.0:111             0.0.0.0:*                           669/rpcbind         
[root@zh1z3ven ~]#

 

 這里我只選擇了1-1024的端口 如果要全掃描的話需要20多分鍾

 

 

 

抓包分析:

可以看到udp這里是有個portmap協議的響應包的,portmap進程的主要功能是把RPC程序號轉化為Internet的端口號。portmap只在第一次建立連接的時候起作用,幫助網絡應用程序找到正確的通訊端口,但是一旦這個雙方正確連接,端口和應用就綁定,portmap也就不起作用了。但對其他任何第一次需要找到端口建立通訊的應用仍然有用。

 

 

 
UDP端口掃描是通過普通數據包進行的,也是用於掃描對方端口上是否有程序在運行,就像上面所說的,如果普通個人機器上存在這樣的端口,那一般也是系統漏洞。但對於UDP來說,不存在監聽這個概念,因為它是無連接不可靠的協議,發送數據包過去以后,通常也不會有任何的對等回應。因此,UDP端口掃描主要是檢測是否存在ICMP端口不可達數據包。若該數據包出現,則說明對方這一端口上沒有程序在監聽,或者說該端口不存在漏洞,否則就說明該端口上有程序在監聽,或者說存在漏洞。

 

 

 以上

UDP和TCP掃描時的區別:
1. TCP是有連接的協議,而UDP是無連接的;

2. TCP掃描檢測(ACK SYN)或者是(RST)報文,而UDP檢測ICMP端口不可達報文;

3. TCP協議是可靠但低效的,可以有效進行端口掃描,范圍廣,效率低,可以應用於任何網絡中;UDP協議時不可靠但高效的,范圍小,效率高,一般應用於局域網內部,隨着網絡規模的增大,UDP端口掃描的結果准確度會越來越差,極端情況是,如果對Internet使用UDP端口掃描,所得到的結果一定不准確。

那可以看到上圖,UDP掃描一般沒有程序在其上運行的端口就會返回一個ICMP的無法到達目的主機的包,這也就證明了端口沒被監聽(close,沒有程序在其上運行)而883和111就不一樣了,111端口收到了portmap的replay包 所以表示它open (監聽,或者有程序在其上運行)而883沒有回應也沒有目標不可達就代表open|filtered

參考文章


04:掃描多個IP的用法

ip中間可用逗號或者空格連接

連續的ip之間可用- 例如 192.168.2.100-101

root@zhaizewen:~# nmap 192.168.2.100 192.168.2.150
Starting Nmap 7.80 ( https://nmap.org ) at 2020-04-06 12:48 CST
Nmap scan report for 192.168.2.100
Host is up (0.00066s latency).
Not shown: 994 closed ports
PORT     STATE SERVICE
22/tcp   open  ssh
111/tcp  open  rpcbind
5901/tcp open  vnc-1
6001/tcp open  X11:1
6666/tcp open  irc
7777/tcp open  cbt
MAC Address: 00:50:56:2D:67:A3 (VMware)

Nmap scan report for 192.168.2.150
Host is up (0.0000070s latency).
Not shown: 999 closed ports
PORT    STATE SERVICE
111/tcp open  rpcbind

Nmap done: 2 IP addresses (2 hosts up) scanned in 26.62 seconds
root@zhaizewen:~# 

 用逗號隔開:

root@zhaizewen:~# nmap 192.168.2.100,150
Starting Nmap 7.80 ( https://nmap.org ) at 2020-04-06 12:50 CST
Nmap scan report for 192.168.2.100
Host is up (0.0020s latency).
Not shown: 994 closed ports
PORT     STATE SERVICE
22/tcp   open  ssh
111/tcp  open  rpcbind
5901/tcp open  vnc-1
6001/tcp open  X11:1
6666/tcp open  irc
7777/tcp open  cbt
MAC Address: 00:50:56:2D:67:A3 (VMware)

Nmap scan report for 192.168.2.150
Host is up (0.0000060s latency).
Not shown: 999 closed ports
PORT    STATE SERVICE
111/tcp open  rpcbind

Nmap done: 2 IP addresses (2 hosts up) scanned in 26.39 seconds
root@zhaizewen:~# 

0x05:-sP :進行ping掃描

打印出對ping掃描做出響應的主機,不做進一步測試(如端口掃描或者操作系統探測):

下面去掃描192.168.2.0/24這個網段的的主機

root@zhaizewen:~# nmap -sP 192.168.2.0/24
Starting Nmap 7.80 ( https://nmap.org ) at 2020-04-06 14:09 CST
Nmap scan report for 192.168.2.100
Host is up (0.045s latency).
MAC Address: 00:50:56:2D:67:A3 (VMware)
Nmap scan report for 192.168.2.150
Host is up.
Nmap done: 256 IP addresses (2 hosts up) scanned in 29.89 seconds
root@zhaizewen:~# 

 抓包分析:用ARP協議,直接廣播,有響應的主機即為 host is up

 

 

 


 

06:-sn:  Ping Scan - disable port scan  ping探測掃描主機, 不進行端口掃描

(測試過對方主機把icmp包都丟棄掉,依然能檢測到對方開機狀態)

root@zhaizewen:~# nmap -sP 192.168.2.0/24
Starting Nmap 7.80 ( https://nmap.org ) at 2020-04-06 14:09 CST
Nmap scan report for 192.168.2.100
Host is up (0.045s latency).
MAC Address: 00:50:56:2D:67:A3 (VMware)
Nmap scan report for 192.168.2.150
Host is up.
Nmap done: 256 IP addresses (2 hosts up) scanned in 29.89 seconds
root@zhaizewen:~# 

 


07:-sA (發送tcp的ack包進行探測,可以探測主機是否存活)

ACK掃描探測報文一般只設置ACK標志位。當掃描未被過濾的系統時, open(開放的)和closed(關閉的) 端口 都會返回RST報文。Nmap把它們標記為 unfiltered(未被過濾的),意思是 ACK報文不能到達,但至於它們是open(開放的)或者 closed(關閉的) 無法確定。不響應的端口 或者發送特定的ICMP錯誤消息(類型3,代號1,2,3,9,10, 或者13)的端口,標記為 filtered(被過濾的)。

root@zhaizewen:~# nmap 192.168.2.100 -sA
Starting Nmap 7.80 ( https://nmap.org ) at 2020-04-06 14:19 CST
Nmap scan report for 192.168.2.100
Host is up (0.00091s latency).
All 1000 scanned ports on 192.168.2.100 are unfiltered
MAC Address: 00:50:56:2D:67:A3 (VMware)

Nmap done: 1 IP address (1 host up) scanned in 13.41 seconds
root@zhaizewen:~# 

 


08:-sS  半開放掃描 Tcp SYN Scan  

半開放掃描,它只發送一個SYN報文然后等待回應,若SYN/ACK表示端口在監聽 (開放),而 RST (復位)表示沒有監聽者。如果數次重發后仍沒響應, 該端口就被標記為被過濾。如果收到ICMP不可到達錯誤 (類型3,代碼1,2,3,9,10,或者13),該端口也被標記為被過濾。

root@zhaizewen:~# nmap  -sS   192.168.2.100
Starting Nmap 7.80 ( https://nmap.org ) at 2020-04-06 14:25 CST
Nmap scan report for 192.168.2.100
Host is up (0.0011s latency).
Not shown: 994 closed ports
PORT     STATE SERVICE
22/tcp   open  ssh
111/tcp  open  rpcbind
5901/tcp open  vnc-1
6001/tcp open  X11:1
6666/tcp open  irc
7777/tcp open  cbt
MAC Address: 00:50:56:2D:67:A3 (VMware)

Nmap done: 1 IP address (1 host up) scanned in 13.41 seconds
root@zhaizewen:~# 

 


0x09:-sT   3次握手方式tcp的掃描

正兒八經的三次握手 最后RST掉連接

 

 

 

 

 

 

 Tcp connect() scan (sT)和上面的Tcp SYN 對應,TCP connect()掃描就是默認的掃描模式.
不同於Tcp SYN掃描,Tcp connect()掃描需要完成三次握手,並且要求調用系統的connect().
優點:你勿需root權限。普通用戶也可以使用。
缺點:這種掃描很容易被檢測到,在目標主機的日志中會記錄大批的連接請求以及錯誤信息,由於它要完成3次握手,效率低,速度慢,建議使用-sS
CPConnect()掃描是默認的TCP掃描,Nmap通過創建connect() 系統調用要求操作系統和目標機以及端口建立連接,而不像其它掃描類型直接發送原始報文。

root@zhaizewen:~# nmap -sT 192.168.2.100
Starting Nmap 7.80 ( https://nmap.org ) at 2020-04-06 14:31 CST
Nmap scan report for 192.168.2.100
Host is up (0.055s latency).
Not shown: 994 closed ports
PORT     STATE SERVICE
22/tcp   open  ssh
111/tcp  open  rpcbind
5901/tcp open  vnc-1
6001/tcp open  X11:1
6666/tcp open  irc
7777/tcp open  cbt
MAC Address: 00:50:56:2D:67:A3 (VMware)

Nmap done: 1 IP address (1 host up) scanned in 16.36 seconds
root@zhaizewen:~# 

 


10:-sF:FIN scan(sF)  也是tcp的掃描一種,發送一個FIN標志的數據包


有時候TcpSYN掃描不是最佳的掃描模式,因為有防火牆的存在.目標主機有時候可能有IDS和IPS系統的存在,防火牆會阻止掉SYN數據包。發送一個設置了FIN標志的數據包並不需要完成TCP的握手.
和sS掃描效果差不多,比sT速度快

root@zhaizewen:~# nmap -sF 192.168.2.100
Starting Nmap 7.80 ( https://nmap.org ) at 2020-04-06 14:41 CST
Nmap scan report for 192.168.2.100
Host is up (0.00018s latency).
Not shown: 996 closed ports
PORT     STATE         SERVICE
22/tcp   open|filtered ssh
111/tcp  open|filtered rpcbind
5901/tcp open|filtered vnc-1
6001/tcp open|filtered X11:1
MAC Address: 00:50:56:2D:67:A3 (VMware)

Nmap done: 1 IP address (1 host up) scanned in 14.36 seconds
root@zhaizewen:~#

 

處於open|filtered狀態的端口 沒有返回RST,ACK包也沒有做出響應  而close的端口是會返回RST,ACK的包的

 

 

 


 

11:-sV:版本檢測(sV)  常用
版本檢測是用來掃描目標主機和端口上運行的軟件的版本,如下掃描,多出了ssh的版本信息

root@zhaizewen:~# nmap -sV 192.168.2.100
Starting Nmap 7.80 ( https://nmap.org ) at 2020-04-06 15:02 CST
Nmap scan report for 192.168.2.100
Host is up (0.00050s latency).
Not shown: 996 closed ports
PORT     STATE SERVICE VERSION
22/tcp   open  ssh     OpenSSH 7.4 (protocol 2.0)
111/tcp  open  rpcbind 2-4 (RPC #100000)
5901/tcp open  vnc     VNC (protocol 3.8)
6001/tcp open  X11     (access denied)
MAC Address: 00:50:56:2D:67:A3 (VMware)
Service Info: OS: Unix

Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 28.41 seconds
root@zhaizewen:~# 

 


 

12:--top-ports <number>: Scan <number> most common ports
掃描常用的端口,number如果寫成10,那就是掃描最常用的10個端口。比如,ssh,http,ftp等熱門端口
也是基於TCP的掃描   

root@zhaizewen:~# nmap --top-ports 10 192.168.2.100
Starting Nmap 7.80 ( https://nmap.org ) at 2020-04-06 15:04 CST
Nmap scan report for 192.168.2.100
Host is up (0.00028s latency).

PORT     STATE  SERVICE
21/tcp   closed ftp
22/tcp   open   ssh
23/tcp   closed telnet
25/tcp   closed smtp
80/tcp   closed http
110/tcp  closed pop3
139/tcp  closed netbios-ssn
443/tcp  closed https
445/tcp  closed microsoft-ds
3389/tcp closed ms-wbt-server
MAC Address: 00:50:56:2D:67:A3 (VMware)

Nmap done: 1 IP address (1 host up) scanned in 13.30 seconds
root@zhaizewen:~# 

 


 

參考文章:Nmap使用說明以及掃描原理

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM