主動掃描之Nmap
主動掃描之Nmap
目錄本文參考於李華峰等人的圖書《Kali Linux2 網路滲透測試實踐指南》2018年第1版
主動掃描一般都是針對目標傳送特定的資料包,然後根據目標的反應來獲得一些資訊。
Nmap是非常優秀的主動掃描工具,通過Nmap對一臺計算機進行掃描,我們可以得到的目標資訊如下:
- 目標主機是否線上
- 目標主機所在的網路結構
- 目標主機上開放的埠
- 目標主機所使用的作業系統
- 目標主機上所執行的服務及版本
- 目標主機上所存在的漏洞
基本用法
對單個主機進行掃描nmap <目標ip地址>
對多個不連續的主機進行掃描nmap [目標1 目標2 目標3 目標4...]
對連續範圍內的主機進行掃描nmap [ip範圍]
,如nmap 192.168.164.1-255
使用CIDR掃描整個子網nmap [ip地址/掩碼位數]
,如nmap 192.168.164.1/24
主機發現
跳過Ping掃描階段
通常在Nmap進行其他掃描前,先對目標主機進行Ping掃描,若該掃描無反應,則結束整個掃描過程。然而有時目標主機其實線上,但採用某種手段遮蔽了Ping掃描,因此也會躲過其他掃描操作。所以我麼可以指定無論目標是否響應Ping,都要完成整個掃描過程,該引數為-PN
,例如
nmap -PN 192.168.169.131
使用ARP協議進行主機發現
當目標主機與我們處於同一網段時,使用ARP協議掃描是最佳選擇,不僅速度最快,而且掃描結果也是最精準的,因為沒有任何安全措施會阻止正常的ARP請求。引數-PR
nmap -PR 192.168.169.131
僅使用Ping協議進行主機發現
有時我們要對大量主機進行掃描,若採用所有方式進行掃描的話就會花費大量的時間,這時我們可以只對目標主機進行Ping掃描,引數為-sP
,例如
nmap -sP 192.168.169.131
使用TCP協議進行主機發現
TCP協議主要由三次握手構成,其中最後一步意義不大,所以掃描的時候也可以不完成最後一步。若完成最後一步,則稱為全開(Connect)掃描,引數為-sT
,否則稱為半開(SYN)掃描,引數為-sS
,例如
nmap -sS 192.168.169.131 nmap -sT 192.168.169.131
使用UDP協議進行主機發現
UDP協議比TCP協議簡單,但在掃描時所花時間卻比TCP長,因此這種掃描方式並不常用。引數-sU
,例如
nmap -sU 192.168.164.131
埠發現
埠狀態
Nmap對目標埠進行掃描時,對埠的狀態判斷有5種:
- open,應用程式在該埠接收TCP連線或者UDP報文
- closed,關閉的埠對於nmap也是可訪問的,它接收nmap探測報文並作出響應,但沒有應用程式在其上監聽。
- filtered,由於包過濾阻止探測報文到達埠,nmap無法確定該埠是否開放。過濾可能來自專業的防火牆裝置,路由規則或者主機上的軟體防火牆。
- unfiltered,未被過濾狀態意味著埠可訪問,但nmap無法確定它是開放還是關閉。只有用於對映防火牆規則集的ACK掃描才會把埠分類到這個類別。
- open|filtered,無法確定埠是開放還是被過濾,開放的埠不響應就是一個例子。
掃描全部埠
每個網路裝置有65536個埠,如果對這些埠全部進行掃描,那麼就會花費很長的時間,所以Nmap預設掃描的埠只有最常用的1000個。
若要對所有的65536個埠進行掃描,可使用引數-p "*"
,例如
nmap -p "*" 192.168.164.131
掃描前n個埠
如果只想掃描使用頻率最高的n個埠,可以使用引數--top-ports n
,例如
nmap --top-ports 10 192.168.164.131
掃描指定埠
如果只對指定埠進行測試的話,可以使用引數-p 埠號
,例如
nmap -p 80 192.168.164.131
掃描目標作業系統
如果我們知道目標所使用的作業系統,之後就可以大大減少工作量。但沒有一種工具可以提供絕對準確的資訊,所有的工具都是使用“猜”的方法:通過向目標傳送探針,不同系統對這些探針會做出不同的響應,Nmap將這些響應特徵提取出來並記錄在一個數據庫中,然後根據目標的迴應來猜測系統。探針和響應特徵的對應關係存放在安裝目錄的Nmap-os-db
檔案中。
Nmap會嘗試驗證如下引數:
- 作業系統供應商的名字,如微軟或sun
- 作業系統的名字,如windows、Mac OS X、Linux
- 作業系統的版本,如XP、2000、2003、2008
- 當前裝置的型別,比如通用計算機、列印伺服器、媒體播放器、路由器、WAP或者電力裝置
除此之外,作業系統檢測還提供關於系統執行時間和TCP序列可預測性資訊的分類。
對系統的掃描使用引數-O
,例如
nmap -O 192.168.164.131
掃描目標服務
對作業系統而言,那些安裝在作業系統之上的軟體更是網路安全的重災區,因此在進行滲透時,要儘量的檢測出目標系統執行的各種軟體。
有時我們並沒有使用Nmap進行服務識別操作,也得到了服務型別的資訊。其實Nmap並沒有進行服務的識別,只是將埠號在自己的埠服務表資料(nmap-services)中進行查詢,然後返回。即這種返回的服務只是資料庫中的,並非事實中埠所執行的服務。
Nmap提供了更精準的服務及版本檢測選項,引數為-sV
,例如
nmap -sV 192.168.164.131
掃描結果儲存
Nmap支援多種儲存格式,若儲存為XML格式,可使用引數-oX 檔名
,例如
nmap -oX Report.xml 192.168.164.131