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