- 前言
- 0x01 主機發現
- 0x02 端口掃描
- 0x03 作業系統掃描
- 0x04 應用和服務版本發現
- 0x05 其他掃描選項
前言

由上圖中可以看出,Nmap的指令行使用主要分為四個部分:應用程式名稱、掃描類型、選項和目标。
由上圖中可以看出,在指令行參數中,除了目标和應用程式名稱,掃描相關的參數主要分為11個部分,按照圖,順序依次為目标确定參數、主機發現參數、掃描類型類型參數、端口掃描參數、服務及版本發現參數、掃描腳本參數、作業系統發現參數、時間參數、防火牆/入侵檢測系統欺騙參數、輸出參數及雜項。
0x01 主機發現
本文中,
-
表示參數,
--
表示選項。
-sL 這個參數單獨使用時,實際并不會向目标發送任何的探測包,僅僅列舉一下某一個IP段的清單。(可以用來生成IP清單,然後用awk、cut等文本處理工具生成相應的IP文本,友善重複使用IP位址,而不需要每次都輸入)
-sn 這個參數隻是進行PING掃描,而不進行端口掃描
-Pn 這個參數認為所有的目标都認為是活躍的,直接跳過活躍主機發現環節
-PS/PA/PU/PY[portlist] 這些參數分别使用TCP SYN/ACK、UDP 或 SCTP方式向指定的端口發送包,來探測主機是否活躍
-PE/PP/PM 這些參數分别使用ICMP echo、timestamp 或 netmask方式發送探測包,來探測主機是否活躍
-PO[protocol list] 這個參數使用IP協協PING的方式來探測方主機是否活躍,其中IP協定都有相應的數字來對應,詳見這裡,protocol list可以用數字來替代
-n 這個參數的應用場景在于目标隻是IP位址,而不是域名,使用這個選項是為了省去域名解析的步驟
–dns-server 這個選項用于使用者自定義DNS伺服器,如果目标是用的IP位址,那麼這個選項也就沒有用了
–system-dns 這個選項是告訴NMAP使用系統自身的DNS來解析域名,如果目标是用的IP位址,那麼這個選項也就沒有用了
–tranceroute 這個選項用來跟蹤到目标的所有網絡路徑
0x02 端口掃描
-p 這個參數的主要作用是指定掃描的端口号,用法如圖中所示
–exclude-ports 這個選項從字面意思可以知道,是指定不掃描的端口号
-F 這個參數主要目的是為了快速掃描,是以在掃描的時候就會從預設的端口中進行選擇性的掃描
-r 這個參數的主要目的是對于標明的端口,按照順序來掃描,而非随機
–top-ports 這個選項的主要目的是從常用的端口中選擇幾個來掃描
–port-ration 這個選項的主要目的是指定掃描頻率,取值範圍是0<=ration<1
對于Nmap的端口掃描來說,有三種場景:
- 在不加任何掃描參數的時候,也會進行端口掃描,但是這個時候的掃描隻是對Nmap配置檔案中指定的端口進行掃描;
- 當加了部分的的掃描參數時,比如:
,這個時候會依據相應的協定來掃描在活躍主機上開放的端口;-sS -sT -sU
- 使用上述的參數,對活躍主機的指定端口進行掃描。
0x03 作業系統掃描
對于Nmap來說,在不加任何掃描參數或選項的時候,隻進行主機發現及端口掃描。
-O 這個參數的主要目的是激活作業系統掃描的功能
–osscan-limit 這個選項的主要目的是通過盡可能少的端口掃描來發現作業系統的版本,通常情況掃描一個開放的端口和一個關閉的端口
–osscan-guess 這個選項的主要目的是給出特征相比對的若幹個作業系統
0x04 應用和服務版本發現
對于Nmap來說,在不加任何掃描參數的時候,是不進行應用和服務版本的确定的。應用和服務版本的确定主要是對于在滲透測試中,針對具體的版本容易找到相應的漏洞。
-sV 這個參數的主要目的是在端口掃描的時候,激活應用和服務版本發現的功能
–version-intesity 這個選項的主要目的指定掃描的強度,範圍是從0-9,逐漸增強
–version-light 這個選項指定了掃描的強度為2
–version-all 這個選項指定了掃描的強度為9
–version-trace 這個選項顯示了詳細的版本發現的過程,一般這個用于調試
0x05 其他掃描選項
對于Nmap來說,上述是其主要功能,看官們根據我本章開始的那個圖可以看出,Nmap還有一些選項在上面沒有說,下面我們一起放到這一小節來說。
-iL 這個參數主要是從文本檔案中批量的讀取掃描目标
-iR 這個參數主要是從指定的掃描目标是随機選項指定數目的目标進行掃描,而不是全部
–exclude 從這個選項的字面含義來講是掃描中不包含哪些主機
–excludefile 從這個選項的字面含義來講是掃描中不包含文本檔案中指定的主機
-sS/sT/sA/sW/sM/sU/sN/sF/sX/sI/sY/sZ/sO 這些參數主要是掃描方式,在端口掃描中經常利用這些掃描參數來進行開放端口發現
–scanflags 這個選項的主要目的是自定義協定標頭中的标志位,比如上面提到的S、T等
-b 這個參數的主要目的是利用指定的FTP代理進行掃描,這樣做的好處是可以避免被掃描主機追蹤
筆者在一開始學習Nmap的時候對于這個參數開始也是有點懵,但是細細品來,才發現這其實是相當于一個增強掃描的插件一樣,比如:增強的主機發現、增強的版本發現、漏洞發現、木馬發現及漏洞利用,這樣的功能有點類metasploit的感覺。這也讓筆者發現,這個系列的文章有必要對這個進行深入的介紹。
對于Nmap之是以可以進行腳本掃描,原因是它有一個腳本掃描引擎(NSE)。
-sC 這個參數主要是啟動腳本掃描
–script 這個選項主要是指定腳本的位置
–script-args 這個選項主要是指定腳本所使用的外部輸入參數,類似于SHELL腳本執行時在指令行需要添加的參數
–script-args-file 這個選項主要是指定腳本外部參數所存放的檔案
–script-trace 這個選項主要是展示腳本掃描的整個過程
–script-updatedb 這個選項主要是更新NSE的腳本庫
–script-help 這個選項主要是列出scrip的相關用法
在實際的掃描過程中,對于防火牆、入侵檢測系統等會對掃描行為進行相關的探測,其中對于發包頻率是一個名額,是以Nmap為了适用于各種複雜的網絡環境,設定了與時間及性能相關的參數。
-T 這個參數主要是指定掃描的頻率,有0-5個級别,其中數字越大則掃描的頻率越快
–min-hostgroup/max-hostgroup 這個選項主要是指定并行掃描主機的數量
–min-parallelism/max-parallelism 這個選項主要是指定并行發出的探測包的數量
–min-rtt-timeout/max-rtt-timeout/initial-rtt-timeout 這個選項主要是指定探測包所跳的路由數量
–host-timeout 這個選項主要是指定主機回複探測包的時間
–scan-delay/–max-scan-delay 這個選項主要是指定探測包的延遲時間
–min-rate 這個選項主要是指定最小的發包率,即每秒最少發多少個探測包
–max-rate 這個選項主要是指定最大的發包率,即每秒最多發多少個探測包
在實際的網絡環境中,無論是在區域網路内或網際網路,在用nmap進行掃描的時候,會受到個人防火牆或企業防火牆的攔截,為了躲避這些防火牆的攔截,nmap加入了相關參數:
-f 這個參數會将探測包進行分包處理,加大防火牆識别探測包的難度,預設一個-f參數是為8個位元組
–mtu 這個選項是用來指定最大傳輸單元的大小,預設的情況下是1500個位元組,但是有的防火牆會将mtu進行設定
-D 這個參數主要是僞造若幹個虛假的掃描機器,用于迷惑防火牆
-S 這個參數主要是将掃描機器的真實位址進行替換
-e 這個參數主要是指定發送掃描包的網絡接口
-g 這個參數主要是指定發送掃描包的端口
–proxies 這個選項主要是指定發送掃描包所使用的代理
–data 這個選項主要是在發送的掃描包中添加自定義的負載
–data-string 這個選項主要是在發送的資料包中添加處自定義的ASCII負載
–data-length 這個選項主要是指定掃描包中資料的長度
–ip-options 這個選項主要是指定發送探測包的IP協定相關選項,比如:記錄的時間戳、路由等
–ttl 這個選項主要是指定IP包在被丢棄前最大的網段數量
–spoof-mac 這個選項主要是用來構造假的掃描機MAC位址
–badsum 這個選項主要是用來發送僞造的校驗和
上圖主要是針對掃描結果輸出的參數:
-oN/-oX/-oS/-oG 這個參數主要是指定掃描結果的輸出格式
-oA 這個參數主要是指定掃描結果為三種主要的輸出格式
-v 這個參數主要是指定下掃描結果的詳細程度
-d 這個參數主要是指定調試的級别
–reason 這個選項主要是對活躍端口進行說明
–open 這個選項主要指定隻顯示活躍的端口
–packet-trace 這個選項主要指定掃描過程的所有資料包的收、發情況
–iflist 這個選項主要是列印活躍主機的端口和路徑
–append-output 這個選項主要是指定将輸出結果追加到檔案
–resume 這個選項主要是恢複一個被停止的掃描
–stylesheet 這個選項主要是将XML格式轉化為HTML
–webxml 這個選項将ORG格式轉化為XML
–no-stylesheet 這個選項禁止将XSL樣式輸出到XML
-6 這個參數主要是允許對IPv6位址進行掃描
-A 這個參數主要是指定對目标主機進行主機掃描、作業系統掃描、服務版本掃描、腳本掃描及掃描路由跟蹤
–datadir 這個選項主要是自定義Nmap的資料檔案路徑
–send-eth/–send-ip 這個選項主要是定義發送原始套接字的網卡及IP
–privileged 這個選項主要是假設使用者具有所有的權限
–unprivileged 這個選項主要是假設使用者缺少原始套接字權限
-V 這個參數主要是列印Nmap的版本号
-h 這個參數主要是列印Nmap的所有幫助