C10-05-1-Nmap常用引數說明

起点·漫步前行發表於2024-09-22

一、Nmap

免責宣告

本文僅是個人對該工具的學習測試過程記錄,不具有惡意引導意向。

本文工具僅面向合法授權的企業安全建設行為,如您需要測試本工具的可用性,請自行搭建靶機環境。

在使用本工具進行檢測時,您應確保該行為符合當地的法律法規,並且已經取得了足夠的授權。請勿對非授權目標進行掃描,以避免侵犯對方的隱私或違反相關法律法規。

1.1 概述

下載地址:https://nmap.org/download.html

官方文件說明:https://nmap.org/man/zh/index.html

埠+IP+指紋

雖然Nmap這些年來功能越來越多,但它最初也是從一個埠掃描器開始的,並且這仍然是它的核心功能。

nmap 是一個網路掃描和安全審計工具,它被廣泛用於網路發現和安全稽核。

Nmap(“Network Mapper<網路對映器>”)是一款開放原始碼的網路探測和安全稽核的工具。它的設計目標是快速掃描大型網路,當然用它掃描單個主機也沒有問題。Nmap以新穎的方式使用原始IP報文來發現網路上有哪些主機,這些主機提供什麼服務(應用程式名和版本),這些服務執行在什麼作業系統中, 它們使用什麼型別的報文過濾器/防火牆,以及一堆其它功能。(埠和指紋資訊)

雖然Nmap通常用於安全稽核,許多系統管理員和網路管理員也用它來做一些日常的工作,比如檢視整個網路的資訊, 管理服務升級計劃,以及監視主機和服務的執行。

Nmap輸出的是掃描目標的列表,以及每個目標的補充資訊,至於是哪些補充資訊則依賴於所使用的選項。通常會列出埠號,協議,服務名稱和狀態。

nmap **這個簡單的命令會掃描主機上的超過1660個TCP埠。許多傳統的埠掃描器只列出所有埠是開放還是關閉的,Nmap的資訊粒度比它們要細得多:

埠狀態:

①open(開放的):意味著目標機器上的應用程式正在該埠監聽連線/報文。

②filtered(被過濾的):意味著防火牆、過濾器或者其它網路障礙阻止了該埠被訪問,Nmap無法得知它是open還是closed。

③closed(關閉的):埠沒有應用程式在它上面監聽,但是它們隨時可能開放。

④unfiltered(未被過濾的):當埠對Nmap的探測做出響應,但是Nmap無法確定它們是關閉還是開放時,這些埠就被認為是unfiltered。

⑤open|filtered 和 closed|filtered :狀態組合,即Nmap無法確定該埠處於兩個狀態中的哪一個狀態。

1.2 nmap目標指定規範

Nmap指定掃描目標支援IPv4的CIDR風格的地址:

192.168.10.0/24

Nmap透過八位位元組地址範圍支援IPv4這樣的掃描:

192.168.0-255.1-254

0-255.0-255.13.37

Nmap掃描目標也可以是域名

1.3 選項及示例

nmap -A -T4 scanme.nmap.org

說明:

-A: Enable OS detection, version detection, script scanning, and traceroute

用來進行作業系統及其版本的探測,及路由跟蹤。

-T4:時間模板;設定掃描速度。可以設定不同的速度等級,以適應不同的掃描環境。速度級別從0到5,級別越高,掃描速度越快,但也越容易被防火牆攔截。


模板名稱:預設模式為Normal(T3)

paranoid (0)、sneaky (1)、polite (2)、normal(3)、aggressive(4)、insane(5)

(T0)適合需要極小網路影響的掃描,幾乎不會被IDS/IPS檢測到。這是序列掃描,速度極慢(至少間隔5m)

(T1)掃描速度很慢,可用於IDS躲避;仍然是序列掃描(15s)

(T2)降低了掃描速度以使用更少的頻寬和目標主機資源(400ms,但會動態地調整間隔,最大為1s)

(T3)預設模式為Normal,因此 -T3實際上是未做任何最佳化;(不使用固定的掃描間隔,而是採用並行掃描技術,同時傳送多個探測;單次掃描延時1s,一秒後當前埠被放棄並進行下一個埠掃描)

(T4)假設使用者具有合適及可靠的網路從而加速掃描;(行掃描來增加速度,但可能會增加被檢測到的風險;單次掃描延時10ms)

(T5)假設使用者具有特別快的網路或者願意為獲得速度而犧牲準確性最快,但可能會產生大量的網路流量,極有可能被IDS/IPS檢測到;(單次掃描延時5ms)

從Nmap的某個版本開始(可能是Nmap 7.00或更高版本),-T 引數的行為有所變化,並且可能已經被新的引數(如--min-rate, --max-rate, --min-hostgroup, --max-hostgroup, --min-parallelism, --max-parallelism, --min-rtt-timeout, --max-rtt-timeout, --initial-rtt-timeout, --max-retries, --host-timeout, --scan-delay 等)所取代,這些引數提供了更細粒度的控制來最佳化掃描速度和避免被檢測。

C10-05-1-Nmap常用引數說明

C10-05-1-Nmap常用引數說明

1.3.1 nmap指定主機的其他方式

除了直接自定域名或IP為掃描目標,也可以透過選項指定

加黑字型的選項是網路安全人員常用選項

-iL (IP地址列表檔案)

列表中的項可以是Nmap在命令列上接受的任何格式(IP地址,主機名,CIDR,IPv6,或者八位位元組範圍)。 每一項必須以一個或多個空格,製表符或換行符分開

-iR (主機數量)

(隨機選擇目標)可以用來選擇隨機的網際網路主機來掃描;不合需要的IP如特定的私有,組播或者未分配的地址自動略過。選項0意味著永無休止的掃描;些網管對於未授權的掃描可能會很感冒並加以抱怨,使用該選項的後果自負!

--exclude <host1,host2,host3,...> (排除主機/網路)

--excludefile (排除檔案中的列表)以換行符,空格,或者製表符分隔

1.3.2 主機發現常用引數(主機發現)

加黑字型的選項是網路安全人員常用選項

-sL (列表掃描)

它僅僅列出指定網路上的每臺主機,不傳送任何報文到目標主

機,也並不能確定主機是否存活,所以掃描速度是很快的。預設情況下,Nmap會對主機進行反向域名解析以獲取它們的名字(是主機發現的退化形式);如果主機的域

名出乎您的意料,那麼就值得進一步檢查以防錯誤地掃描其它組織的網路。既然只是列印目標主機的列表,像其它一些高階功能如埠掃描,作業系統探測或者Ping掃描的選項就沒有了。(從描述看,感覺該選項更多關注反向域名解析結果)

C10-05-1-Nmap常用引數說明

-sP (Ping掃描)

只進行ping掃描(主機發現),然後輸出對掃描做出響應的那些主機,沒有進一步的測試 (如埠掃描或者作業系統探測)當防守嚴密的防火牆位於執行Nmap的源主機和目標網路之間時, 推薦使用那些高階選項。否則,當防火牆捕獲並丟棄探測包或者響應包時,一些主機就不能被探測到。

C10-05-1-Nmap常用引數說明

-P0 (無ping)

預設情況下,Nmap只對正在執行的主機進行高強度的探測如埠掃描,版本探測,或者作業系統探測。用-P0禁止主機發現會使Nmap對每一個指定的目標IP地址進行所要求的掃描(也就是說預設情況nmap現對目標探活,再對活動的目標執行其他探測)

Namp -P0 10.0.0.0/24 (不預先探活,直接全部掃描,省時)

C10-05-1-Nmap常用引數說明

Nmap 10.0.0.0/24 (現探活,再對活目標掃描,耗時)

C10-05-1-Nmap常用引數說明

-PS [portlist] (TCP SYN Ping)

SYN標誌位告訴對方正試圖建立一個連線。 通常目標埠是關閉的,一個RST (復位) 包會發回來。 如果碰巧埠是開放的,目標會進行TCP三步握手的第二步,回應一個SYN/ACK TCP報文。然後執行Nmap的機器則會扼殺這個正在建立的連線, 傳送一個RST而非ACK報文, RST報文是執行Nmap的機器而不是Nmap本身響應的,因為它對收到的SYN/ACK感到很意外。Nmap並不關心埠開放還是關閉。 無論RST還是SYN/ACK 響應都告訴Nmap該主機正在執行;

定義:TCP SYN Ping掃描是Nmap用於檢測目標主機是否存活的一種技術。

工作原理:在這種掃描方式中,Nmap向目標主機的特定埠(通常是80)傳送一個TCP SYN資料包。如果目標主機在該埠上監聽,並且主機是活躍的,它將返回一個SYN/ACK響應。Nmap收到這個響應後,就知道目標主機是活躍的,但並不會進一步嘗試建立連線。

許可權要求:通常不需要特殊許可權,因為它不涉及建立完整的TCP連線。

應用場景:主要用於快速檢測目標主機是否線上,而不進行深入的埠掃描或作業系統檢測。

-PA [portlist] (TCP ACK Ping)

遠端主機應該總是回應一個RST報文, 因為它們並沒有發出過連線請求到執行Nmap的機器,如果它們正在執行的話;

-PU [portlist] (UDP Ping)

不指定埠,預設是31338;如果目標機器的埠是關閉的,UDP探測應該馬上得到一個ICMP埠無法到達的回應報文。 這對於Nmap意味著該機器正在執行。沒有回應也被這樣解釋:類似許多其它型別的ICMP錯誤,像主機/網路無法到達或者TTL超時則表示down掉的或者不可到達的主機。(該掃描型別的主要優勢是它可以穿過只過濾TCP的防火牆和過濾器)

-PE; -PP; -PM (ICMP Ping Types)

-PE:Nmap傳送一個ICMP type 8 (回聲請求),期望返回type 0 (回聲響應)報文;type 0 (回聲響應)報文;

當管理員特別封鎖了回聲請求報文,而忘了其它ICMP查詢可能用於相同目的時,這兩個查詢可能很有價值:

-PP:時間戳請求;Nmap傳送一個ICMP type 13 (回聲請求),期望返回type 14 (回聲響應)報文;

-PM:地址掩碼請求;Nmap傳送一個ICMP type 17 (回聲請求),期望返回type 18 (回聲響應)報文;

-n (不用域名解析)

告訴Nmap永不對它發現的活動IP地址進行反向域名解析;

-R (為所有目標解析域名)

告訴Nmap 永遠 對目標IP地址作反向域名解析。 一般只有當發現機器正在執行時才進行這項操作。

1.3.3 埠掃描

雖然Nmap努力產生正確的結果,但請記住所有結果都是基於目標機器(或者它們前面的防火牆)返回的報文的。這些主機也許是不值得信任的,它們可能響應以迷惑或誤導Nmap的報文。

這一節討論Nmap支援的大約十幾種掃描技術。一般一次只用一種方法。

-sS (TCP SYN掃描) 半連線掃描,使用最頻繁,安全,快

它執行得很快,在一個沒有入侵防火牆的快速網路上,每秒鐘可以掃描數千個埠。SYN掃描相對來說不張揚,不易被注意到,因為它從來不完成TCP連線;

定義:半開放掃描(SYN Scan),也稱為SYN半連線掃描,是Nmap中最常用的掃描技術之一。

工作原理:在這種掃描方式中,Nmap向目標埠傳送一個SYN資料包,就像它打算建立一個完整的TCP連線一樣。但是,一旦收到SYN/ACK響應,Nmap不會傳送ACK資料包來完成三次握手,而是傳送一個RST資料包來終止連線。這種方式的好處是,它不會建立一個完整的TCP連線,因此掃描速度更快,且不易被目標主機記錄在系統日誌中。

許可權要求:通常需要root或管理員許可權來執行,因為它涉及到傳送原始套接字資料包。

應用場景:適用於快速掃描大量主機的開放埠,同時減少被目標主機記錄的風險。

-sS和-PS的區別總結:

主要區別:-sS用於掃描目標主機的開放埠,而-PS主要用於檢測目標主機是否存活。-sS會嘗試與目標埠的TCP連線(但不完全建立),而-PS只是傳送一個SYN資料包來檢測主機是否響應。

使用場景:-sS適用於需要了解目標主機開放埠的情況,而-PS則適用於僅需要知道目標主機是否線上的場景。

-sT (TCP connect()掃描)

一種基本的TCP掃描方式,它基於TCP連線機制來探測目標主機的埠狀態。

原理

-sT掃描透過傳送TCP連線請求(即進行三次握手)來探測目標埠的開放狀態。具體來說,掃描器會嘗試與目標主機上的指定埠建立TCP連線。如果目標埠有程式在監聽,那麼連線會成功建立,此時埠被視為開放(open);如果目標埠沒有程式監聽,則目標主機會回覆一個RST(重置)包,表示埠不可達(close)。

特點

易於使用:-sT掃描不需要特殊的許可權,在大多數UNIX系統下,任何使用者都可以自由使用這個系統呼叫。

易被發現:由於這種掃描方式需要建立完整的TCP連線,因此它很容易被目標主機察覺並記錄在系統日誌中。這表現為一系列的連線請求和可能的錯誤資訊。

有效性:雖然易於被發現,但-sT掃描是一種非常有效的埠掃描方式,它能夠準確地識別出目標主機的開放埠。

使用場景

-sT掃描適用於大多數需要探測目標主機開放埠的場景。然而,由於其易於被發現的特點,建議在網路掃描和滲透測試等需要高度隱蔽性的場景中謹慎使用,或者結合其他掃描方式以提高隱蔽性。

C10-05-1-Nmap常用引數說明

-sU (UDP掃描)

UDP掃描用-sU選項啟用。它可以和TCP掃描如 SYN掃描 (-sS)結合使用來同時檢查兩種協議;UDP不建立連線,通常依賴於目標主機對特定型別 UDP 資料包的響應來推斷埠狀態;

closed(關閉的):回ICMP埠不可到達錯誤(型別3,程式碼3)

filtered(被過濾的):ICMP不可到達錯誤(型別3, 程式碼1,2,9,10,或者13)

open(開放的):某服務會響應一個UDP報文

open|filtered(開放|被過濾的)幾次重試後還沒有響應:

防火牆和過濾規則:UDP 掃描可能會受到網路中的防火牆和過濾規則的影響。一些防火牆可能會丟棄 UDP 資料包或傳送偽造的 ICMP 埠不可達訊息來欺騙掃描器。

掃描速度和效率:由於 UDP 掃描的複雜性,它可能比 TCP 掃描更慢且效率更低。因此,在進行大規模 UDP 掃描時,需要仔細考慮掃描引數和掃描策略。

1.3.4 埠說明和掃描順序

除了所有前面討論的常用掃描方法, Nmap提供選項說明哪些埠被掃描以及掃描是隨機還是順序進行。

預設情況下,Nmap用指定的協議對埠1到1024以及nmap-services 檔案中列出的更高的埠在掃描。

-p (只掃描指定的埠)

該選項指明想掃描的埠,覆蓋預設值,引數後面可以跟一個或多個埠號或埠範圍。埠號之間可以用逗號(,)分隔,範圍可以用連字元(-)表示(如1-1023)。

既掃描TCP埠又掃描UDP埠時,可以在埠號前加上T:或者U:指定協議( -p U:53,111,137,T:21-25,80,139,8080),但必須指定 -sU ,以及至少一個TCP掃描型別(如 -sS,-sF,或者 -sT)。如果沒有給定協議限定符, 埠號會被加到所有協議列表

注意:

預設情況下,nmap 使用 TCP 協議進行掃描。如果你需要掃描 UDP 埠,可以使用 -sU 引數。

你可以透過 -p-(連字元後無空格)來指定掃描目標上的所有埠(TCP 或 UDP,取決於是否使用了 -sU)。

對於大範圍的埠掃描,考慮使用 -T 引數來設定掃描的時間模板,以加快掃描速度。但要注意,提高掃描速度可能會增加被目標網路發現的風險

C10-05-1-Nmap常用引數說明

-r (不要按隨機順序掃描埠)

預設情況下,Nmap按隨機順序掃描埠(除了出於效率的考慮,常用的埠前移)。這種隨機化通常都是受歡迎的, 但您也可以指定-r來按順序進行埠掃描。

1.3.5 服務和版本探測

在用某種其它型別的掃描方法發現TCP 和/或者UDP埠後,版本探測會詢問這些埠,確定到底什麼服務正在執行。nmap-service-probes 資料庫包含查詢不同服務的探測報文和解析識別響應的匹配表示式

Nmap試圖確定服務協議 (如 ftp,ssh,telnet,http),應用程式名(如ISC Bind,Apache httpd,Solaris telnetd),版本號, 主機名,裝置型別(如 印表機,路由器),作業系統家族 (如Windows,Linux)以及其它的細節,如 如是否可以連線X server,SSH協議版本 ,或者KaZaA使用者名稱)

-sV (版本探測)

開啟版本探測,也可以用 -A 同時開啟作業系統探測和版本探測。

--allports (不為版本探測排除任何埠)

用於指示Nmap掃描目標主機上所有可能的埠(通常是1到65535之間的所有埠),而不是僅限於Nmap的預設掃描範圍;

預設情況下,Nmap版本探測會跳過 9100 TCP埠,因為一些印表機會列印傳送到該埠的任何資料,會導致數十頁HTTP get請求、二進位制 SSL會話請求等等被列印出來。這一行為可以透過修改或刪除nmap-service-probes 中的Exclude指示符改變,也可以不理會任何Exclude指示符,指定--allports掃描所有埠。

1.3.6 作業系統探測

-O (啟用作業系統檢測)

也可以使用 -A 來同時啟用作業系統檢測和版本檢測。

1.3.7 時間和效能

-T <Paranoid|Sneaky|Polite|Normal|Aggressive|Insane> (設定時間模板)

詳細說明

1.3.8 輸出

-oN <檔名>: 將掃描結果儲存到指定檔案中,以標準格式(nmap 的預設輸出格式)儲存。

-oX <檔名>: 將掃描結果以 XML 格式儲存到指定檔案中,這便於後續使用其他工具進行解析和處理。

-oG <檔名>: 將掃描結果以 Grepable 格式儲存到指定檔案中,這種格式便於透過 grep 等工具進行搜尋和過濾。

-oA <基本檔名>: 同時以 -oN、-oX 和 -oS 的格式儲存掃描結果,檔名由指定的基本檔名和副檔名組成(例如,-oA myscan 將產生 myscan.nmap、myscan.xml 和 myscan.gnmap)。

-oS <檔名>: 將掃描結果以指令碼 kiddie 友好的格式儲存到指定檔案中,這通常是一種更容易閱讀的格式。

-v (提高輸出資訊的詳細度)

透過提高詳細度,Nmap可以輸出掃描過程的更多資訊。 輸出發現的開啟埠,若Nmap認為掃描需要更多時間會顯示估計 的結束時間。這個選項使用兩次,會提供更詳細的資訊。這個選 項使用兩次以上不起作用。

相關文章