Nmap
一、簡介
端口掃描是網絡安全工作者的必備的利器,通過對端口的掃描,了解網站中出現的漏洞以及端口的開放情況,對網站安全方面有著不可或缺的貢獻,Nmap是一款開源免費的網絡發現(Network Discovery)和安全審計(Security Auditing)工具。nmap成為世界千萬安全專家列為必備的工具之一。nmap具有以下的這一些優點:
1、多種多樣的參數,豐富的腳本庫,滿足用戶的個人定制需求,其中腳本庫還提供了很多強大的功能任你選擇
2、強大的可移植性,基本上能在所有的主流系統上運行,而且代碼是開源的
3、詳細的文檔說明,和強大的社區團隊進行支持,方面新人上手
下載nmap,然后安裝的步驟跟其他的軟件一樣,最后確認安裝成功只需要在命令行中輸入nmap回車,有相關的參數輸出即為安裝成功。Nmap掃描輸出的XML文件可以直接使用文本編輯器打開,也可以在windows上使用Nmap的圖形化界面打開,這樣查看起來更方便。全面掃描某些主機時,可能會導致主機崩潰、停機或數據丟失等不良結果。所以,在掃描關鍵任務時要小心謹慎。
當目標主機上使用了防火墻、路由器、代理服務或其它安全設備時,使用Nmap掃描結果可能會存在一些偏差。或者當掃描的遠程目標主機不在本地網絡內時,也有可能會出現誤導信息。在使用Nmap實施掃描時,一些選項需要提升權限。在Unix和Linux系統中,必須使用root登錄或者使用sudo命令執行Nmap命令。
二、使用
Nmap可實現:主機發現,端口掃描,服務和版本探測,OS版本探測
Nmap工具默認掃描前1000個端口,即1-1000。如果用戶想掃描1000以上端口的話,需要使用-p選項來指定。
端口掃描基礎
許多傳統的端口掃描器只列出所有端口是開放還是關閉的, Nmap的信息粒度比它們要細得多。 它把端口分成六個狀態: open(開放的), closed(關閉的),filtered(被過濾的), unfiltered(未被過濾的), open|filtered(開放或者被過濾的),或者 closed|filtered(關閉或者被過濾的)。
Nmap所識別的6個端口狀態。
open(開放的)
應用程序正在該端口接收TCP 連接或者UDP報文。發現這一點常常是端口掃描 的主要目標。安全意識強的人們知道每個開放的端口 都是攻擊的入口。攻擊者或者入侵測試者想要發現開放的端口。 而管理員則試圖關閉它們或者用防火墻保護它們以免妨礙了合法用戶。 非安全掃描可能對開放的端口也感興趣,因為它們顯示了網絡上那些服務可供使用。
closed(關閉的)
關閉的端口對于Nmap也是可訪問的(它接受Nmap的探測報文并作出響應), 但沒有應用程序在其上監聽。 它們可以顯示該IP地址上(主機發現,或者ping掃描)的主機正在運行up 也對部分操作系統探測有所幫助。 因為關閉的關口是可訪問的,也許過會兒值得再掃描一下,可能一些又開放了。 系統管理員可能會考慮用防火墻封鎖這樣的端口。 那樣他們就會被顯示為被過濾的狀態,下面討論。
filtered(被過濾的)
由于包過濾阻止探測報文到達端口, Nmap無法確定該端口是否開放。過濾可能來自專業的防火墻設備,路由器規則 或者主機上的軟件防火墻。這樣的端口讓攻擊者感覺很挫折,因為它們幾乎不提供 任何信息。有時候它們響應ICMP錯誤消息如類型3代碼13 (無法到達目標: 通信被管理員禁止),但更普遍的是過濾器只是丟棄探測幀, 不做任何響應。 這迫使Nmap重試若干次以訪萬一探測包是由于網絡阻塞丟棄的。 這使得掃描速度明顯變慢。
unfiltered(未被過濾的)
未被過濾狀態意味著端口可訪問,但Nmap不能確定它是開放還是關閉。 只有用于映射防火墻規則集的ACK掃描才會把端口分類到這種狀態。 用其它類型的掃描如窗口掃描,SYN掃描,或者FIN掃描來掃描未被過濾的端口可以幫助確定 端口是否開放。
open|filtered(開放或者被過濾的)
當無法確定端口是開放還是被過濾的,Nmap就把該端口劃分成 這種狀態。開放的端口不響應就是一個例子。沒有響應也可能意味著報文過濾器丟棄 了探測報文或者它引發的任何響應。因此Nmap無法確定該端口是開放的還是被過濾的。 UDP,IP協議, FIN,Null,和Xmas掃描可能把端口歸入此類。
closed|filtered(關閉或者被過濾的)
該狀態用于Nmap不能確定端口是關閉的還是被過濾的。 它只可能出現在IPID Idle掃描中。
如果Nmap報告狀態組合 open|filtered 和 closed|filtered時,那說明Nmap無法確定該端口處于兩個狀態中的哪一個狀態。
目標說明
-iL <inputfilename>: 從列表中輸入(列表中包含hosts/IP)
-iR <hostnum>: 隨機選擇目標,選項 0 意味著永無休止的掃描。
--exclude <host1[,host2][,host3],...>: 排除主機/網絡
--excludefile <exclude_file>: 排除文件中的列表(文件中的列表用換行符,空格,或者制表符分隔)
主機發現:
(默認:ICMP,SYN,ACK,UDP Ping)
-sL: 列表掃描,列表掃描是主機發現的退化形式,它僅僅列出指定網絡上的每臺主機, 不發送任何報文到目標主機。
-sP: Ping掃描,該選項告訴Nmap僅僅 進行ping掃描 (主機發現),然后打印出對掃描做出響應的那些主機。它可以很方便地得出 網絡上有多少機器正在運行或者監視服務器是否正常運行。常常有人稱它為 地毯式ping
-P0 (無ping)
該選項完全跳過Nmap發現階段。 通常Nmap在進行高強度的掃描時用它確定正在運行的機器。 默認情況下,Nmap只對正在運行的主機進行高強度的探測如 端口掃描,版本探測,或者操作系統探測。用-P0禁止 主機發現會使Nmap對每一個指定的目標IP地址 進行所要求的掃描。所以如果在命令行指定一個B類目標地址空間(/16), 所有 65,536 個IP地址都會被掃描。 -P0的第二個字符是數字0而不是字母O。 和列表掃描一樣,跳過正常的主機發現,但不是打印一個目標列表, 而是繼續執行所要求的功能,就好像每個IP都是活動的。
-PS [portlist] (TCP SYN Ping)
該選項發送一個設置了SYN標志位的空TCP報文。 默認目的端口為80 (可以通過改變nmap.h) 文件中的DEFAULT-TCP-PROBE-PORT值進行配置,但不同的端口也可以作為選項指定。 甚至可以指定一個以逗號分隔的端口列表(如 -PS22,23,25,80,113,1050,35000), 在這種情況下,每個端口會被并發地掃描。
SYN標志位告訴對方您正試圖建立一個連接。 通常目標端口是關閉的,一個RST (復位) 包會發回來。 如果碰巧端口是開放的,目標會進行TCP三步握手的第二步,回應 一個SYN/ACK TCP報文。然后運行Nmap的機器則會扼殺這個正在建立的連接, 發送一個RST而非ACK報文,否則,一個完全的連接將會建立。 RST報文是運行Nmap的機器而不是Nmap本身響應的,因為它對收到 的SYN/ACK感到很意外。
Nmap并不關心端口開放還是關閉。 無論RST還是SYN/ACK響應都告訴Nmap該主機正在運行。
在UNIX機器上,通常只有特權用戶 root 能否發送和接收 原始的TCP報文。因此作為一個變通的方法,對于非特權用戶, Nmap會為每個目標主機進行系統調用connect(),它也會發送一個SYN 報文來嘗試建立連接。如果connect()迅速返回成功或者一個ECONNREFUSED 失敗,下面的TCP堆棧一定已經收到了一個SYN/ACK或者RST,該主機將被 標志位為在運行。 如果連接超時了,該主機就標志位為down掉了。這種方法也用于IPv6 連接,因為Nmap目前還不支持原始的IPv6報文。
-PA [portlist] (TCP ACK Ping)
TCP ACK ping和剛才討論的SYN ping相當類似。 也許您已經猜到了,區別就是設置TCP的ACK標志位而不是SYN標志位。 ACK報文表示確認一個建立連接的嘗試,但該連接尚未完全建立。 所以遠程主機應該總是回應一個RST報文, 因為它們并沒有發出過連接請求到運行Nmap的機器,如果它們正在運行的話。
-PA選項使用和SYN探測相同的默認端口(80),也可以 用相同的格式指定目標端口列表。如果非特權用戶嘗試該功能, 或者指定的是IPv6目標,前面說過的connect()方法將被使用。 這個方法并不完美,因為它實際上發送的是SYN報文,而不是ACK報文。
提供SYN和ACK兩種ping探測的原因是使通過防火墻的機會盡可能大。 許多管理員會配置他們的路由器或者其它簡單的防火墻來封鎖SYN報文,除非 連接目標是那些公開的服務器像公司網站或者郵件服務器。 這可以阻止其它進入組織的連接,同時也允許用戶訪問互聯網。 這種無狀態的方法幾乎不占用防火墻/路由器的資源,因而被硬件和軟件過濾器 廣泛支持。Linux Netfilter/iptables 防火墻軟件提供方便的 --syn選項來實現這種無狀態的方法。 當這樣的無狀態防火墻規則存在時,發送到關閉目標端口的SYN ping探測 (-PS) 很可能被封鎖。這種情況下,ACK探測格外有閃光點,因為它正好利用了 這樣的規則。
另外一種常用的防火墻用有狀態的規則來封鎖非預期的報文。 這一特性已開始只存在于高端防火墻,但是這些年類它越來越普遍了。 Linux Netfilter/iptables 通過 --state選項支持這一特性,它根據連接狀態把報文 進行分類。SYN探測更有可能用于這樣的系統,由于沒頭沒腦的ACK報文 通常會被識別成偽造的而丟棄。解決這個兩難的方法是通過即指定 -PS又指定-PA來即發送SYN又發送ACK。
-PU [portlist] (UDP Ping)
還有一個主機發現的選項是UDP ping,它發送一個空的(除非指定了--data-length UDP報文到給定的端口。端口列表的格式和前面討論過的-PS和-PA選項還是一樣。 如果不指定端口,默認是31338。該默認值可以通過在編譯時改變nmap.h文件中的 DEFAULT-UDP-PROBE-PORT值進行配置。默認使用這樣一個奇怪的端口是因為對開放端口 進行這種掃描一般都不受歡迎。
如果目標機器的端口是關閉的,UDP探測應該馬上得到一個ICMP端口無法到達的回應報文。 這對于Nmap意味著該機器正在運行。 許多其它類型的ICMP錯誤,像主機/網絡無法到達或者TTL超時則表示down掉的或者不可到達的主機。 沒有回應也被這樣解釋。如果到達一個開放的端口,大部分服務僅僅忽略這個 空報文而不做任何回應。這就是為什么默認探測端口是31338這樣一個 極不可能被使用的端口。少數服務如chargen會響應一個空的UDP報文, 從而向Nmap表明該機器正在運行。
該掃描類型的主要優勢是它可以穿越只過濾TCP的防火墻和過濾器。 例如。我曾經有過一個Linksys BEFW11S4無線寬帶路由器。默認情況下, 該設備對外的網卡過濾所有TCP端口,但UDP探測仍然會引發一個端口不可到達 的消息,從而暴露了它自己。
-PE; -PP; -PM (ICMP Ping Types)
除了前面討論的這些不常見的TCP和UDP主機發現類型, Nmap也能發送世人皆知的ping 程序所發送的報文。Nmap發送一個ICMP type 8 (回聲請求)報文到目標IP地址, 期待從運行的主機得到一個type 0 (回聲響應)報文。 對于網絡探索者而言,不幸的是,許多主機和 防火墻現在封鎖這些報文,而不是按期望的那樣響應, 參見RFC 1122。因此,僅僅ICMP掃描對于互聯網上的目標通常是不夠的。 但對于系統管理員監視一個內部網絡,它們可能是實際有效的途徑。 使用-PE選項打開該回聲請求功能。
雖然回聲請求是標準的ICMP ping查詢, Nmap并不止于此。ICMP標準 (RFC 792)還規范了時間戳請求,信息請求 request,和地址掩碼請求,它們的代碼分別是13,15和17。 雖然這些查詢的表面目的是獲取信息如地址掩碼和當前時間, 它們也可以很容易地用于主機發現。 很簡單,回應的系統就是在運行的系統。Nmap目前沒有實現信息請求報文, 因為它們還沒有被廣泛支持。RFC 1122 堅持 “主機不應該實現這些消息”。 時間戳和地址掩碼查詢可以分別用-PP和-PM選項發送。 時間戳響應(ICMP代碼14)或者地址掩碼響應(代碼18)表示主機在運行。 當管理員特別封鎖了回聲請求報文而忘了其它ICMP查詢可能用于 相同目的時,這兩個查詢可能很有價值。
-PR (ARP Ping)
最常見的Nmap使用場景之一是掃描一個以太局域網。 在大部分局域網上,特別是那些使用基于 RFC1918私有地址范圍的網絡,在一個給定的時間絕大部分 IP地址都是不使用的。 當Nmap試圖發送一個原始IP報文如ICMP回聲請求時, 操作系統必須確定對應于目標IP的硬件 地址(ARP),這樣它才能把以太幀送往正確的地址。 這一般比較慢而且會有些問題,因為操作系統設計者認為一般不會在短時間內 對沒有運行的機器作幾百萬次的ARP請求。
當進行ARP掃描時,Nmap用它優化的算法管理ARP請求。 當它收到響應時, Nmap甚至不需要擔心基于IP的ping報文,既然它已經知道該主機正在運行了。 這使得ARP掃描比基于IP的掃描更快更可靠。 所以默認情況下,如果Nmap發現目標主機就在它所在的局域網上,它會進行ARP掃描。 即使指定了不同的ping類型(如 -PI或者 -PS) ,Nmap也會對任何相同局域網上的目標機使用ARP。 如果您真的不想要ARP掃描,指定 --send-ip。
-n (不用域名解析)
告訴Nmap 永不對它發現的活動IP地址進行反向域名解析。 既然DNS一般比較慢,這可以讓事情更快些。
-R (為所有目標解析域名)
告訴Nmap 永遠 對目標IP地址作反向域名解析。 一般只有當發現機器正在運行時才進行這項操作。
--system-dns (使用系統域名解析器)
默認情況下,Nmap通過直接發送查詢到您的主機上配置的域名服務器 來解析域名。為了提高性能,許多請求 (一般幾十個 ) 并發執行。如果您希望使用系統自帶的解析器,就指定該選項 (通過getnameinfo()調用一次解析一個IP)。除非Nmap的DNS代碼有bug--如果是這樣,請聯系我們。 一般不使用該選項,因為它慢多了。系統解析器總是用于IPv6掃描。
端口說明和掃描順序
Nmap提供選項說明那些端口被掃描以及掃描是隨機還是順序進行。 默認情況下,Nmap用指定的協議對端口1到1024以及nmap-services 文件中列出的更高的端口在掃描。
-p <port ranges> (只掃描指定的端口)
該選項指明您想掃描的端口,覆蓋默認值。 單個端口和用連字符表示的端口范圍(如 1-1023)都可以。 范圍的開始以及/或者結束值可以被省略, 分別導致Nmap使用1和65535。所以您可以指定 -p-從端口1掃描到65535。 如果您特別指定,也可以掃描端口0。 對于IP協議掃描(-sO),該選項指定您希望掃描的協議號 (0-255)。
當既掃描TCP端口又掃描UDP端口時,您可以通過在端口號前加上T: 或者U:指定協議。 協議限定符一直有效您直到指定另一個。 例如,參數 -p U:53,111,137,T:21-25,80,139,8080 將掃描UDP 端口53,111,和137,同時掃描列出的TCP端口。注意,要既掃描 UDP又掃描TCP,您必須指定 -sU ,以及至少一個TCP掃描類型(如 -sS,-sF,或者 -sT)。如果沒有給定協議限定符, 端口號會被加到所有協議列表。
-F (快速 (有限的端口) 掃描)
在nmap的nmap-services 文件中(對于-sO,是協議文件)指定您想要掃描的端口。 這比掃描所有65535個端口快得多。 因為該列表包含如此多的TCP端口(1200多),這和默認的TCP掃描 scan (大約1600個端口)速度差別不是很大。如果您用--datadir選項指定您自己的 小小的nmap-services文件 ,差別會很驚人。
-r (不要按隨機順序掃描端口)
默認情況下,Nmap按隨機順序掃描端口 (除了出于效率的考慮,常用的端口前移)。這種隨機化通常都是受歡迎的, 但您也可以指定-r來順序端口掃描。
端口掃描技術
-sS (TCP SYN掃描)
SYN掃描作為默認的也是最受歡迎的掃描選項,是有充分理由的。 它執行得很快,在一個沒有入侵防火墻的快速網絡上,每秒鐘可以掃描數千個 端口。 SYN掃描相對來說不張揚,不易被注意到,因為它從來不完成TCP連接。 它也不像Fin/Null/Xmas,Maimon和Idle掃描依賴于特定平臺,而可以應對任何兼容的 TCP協議棧。 它還可以明確可靠地區分open(開放的), closed(關閉的),和filtered(被過濾的) 狀態
它常常被稱為半開放掃描, 因為它不打開一個完全的TCP連接。它發送一個SYN報文, 就像您真的要打開一個連接,然后等待響應。 SYN/ACK表示端口在監聽 (開放),而 RST (復位)表示沒有監聽者。如果數次重發后仍沒響應, 該端口就被標記為被過濾。如果收到ICMP不可到達錯誤 (類型3,代碼1,2,3,9,10,或者13),該端口也被標記為被過濾。
-sT (TCP connect()掃描)
當SYN掃描不能用時,CP Connect()掃描就是默認的TCP掃描。 當用戶沒有權限發送原始報文或者掃描IPv6網絡時,就是這種情況。 Instead of writing raw packets as most other scan types do,Nmap通過創建connect() 系統調用要求操作系統和目標機以及端口建立連接,而不像其它掃描類型直接發送原始報文。 這是和Web瀏覽器,P2P客戶端以及大多數其它網絡應用程序用以建立連接一樣的 高層系統調用。它是叫做Berkeley Sockets API編程接口的一部分。Nmap用 該API獲得每個連接嘗試的狀態信息,而不是讀取響應的原始報文。
當SYN掃描可用時,它通常是更好的選擇。因為Nmap對高層的 connect()調用比對原始報文控制更少, 所以前者效率較低。 該系統調用完全連接到開放的目標端口而不是像SYN掃描進行 半開放的復位。這不僅花更長時間,需要更多報文得到同樣信息,目標機也更可能 記錄下連接。IDS(入侵檢測系統)可以捕獲兩者,但大部分機器沒有這樣的警報系統。 當Nmap連接,然后不發送數據又關閉連接, 許多普通UNIX系統上的服務會在syslog留下記錄,有時候是一條加密的錯誤消息。 此時,有些真正可憐的服務會崩潰,雖然這不常發生。如果管理員在日志里看到來自同一系統的 一堆連接嘗試,她應該知道她的系統被掃描了。
-sU (UDP掃描)
雖然互聯網上很多流行的服務運行在TCP 協議上,UDP服務也不少。 DNS,SNMP,和DHCP (注冊的端口是53,161/162,和67/68)是最常見的三個。 因為UDP掃描一般較慢,比TCP更困難,一些安全審核人員忽略這些端口。 這是一個錯誤,因為可探測的UDP服務相當普遍,攻擊者當然不會忽略整個協議。 所幸,Nmap可以幫助記錄并報告UDP端口。
UDP掃描用-sU選項激活。它可以和TCP掃描如 SYN掃描 (-sS)結合使用來同時檢查兩種協議。
UDP掃描發送空的(沒有數據)UDP報頭到每個目標端口。 如果返回ICMP端口不可到達錯誤(類型3,代碼3), 該端口是closed(關閉的)。 其它ICMP不可到達錯誤(類型3, 代碼1,2,9,10,或者13)表明該端口是filtered(被過濾的)。 偶爾地,某服務會響應一個UDP報文,證明該端口是open(開放的)。 如果幾次重試后還沒有響應,該端口就被認為是 open|filtered(開放|被過濾的)。 這意味著該端口可能是開放的,也可能包過濾器正在封鎖通信。 可以用版本掃描(-sV)幫助區分真正的開放端口和被過濾的端口。
UDP掃描的巨大挑戰是怎樣使它更快速。 開放的和被過濾的端口很少響應,讓Nmap超時然后再探測,以防探測幀或者 響應丟失。關閉的端口常常是更大的問題。 它們一般發回一個ICMP端口無法到達錯誤。但是不像關閉的TCP端口響應SYN或者Connect 掃描所發送的RST報文,許多主機在默認情況下限制ICMP端口不可到達消息。 Linux和Solaris對此特別嚴格。例如, Linux 2.4.20內核限制一秒鐘只發送一條目標不可到達消息 (見net/ipv4/icmp。c)。
Nmap探測速率限制并相應地減慢來避免用那些目標機會丟棄的無用報文來阻塞 網絡。不幸的是,Linux式的一秒鐘一個報文的限制使65,536個端口的掃描要花 18小時以上。加速UDP掃描的方法包括并發掃描更多的主機,先只對主要端口進行快速 掃描,從防火墻后面掃描,使用--host-timeout跳過慢速的 主機。
-sN; -sF; -sX (TCP Null,FIN,and Xmas掃描)
這三種掃描類型 (甚至用下一節描述的 --scanflags 選項的更多類型) 在TCP RFC 中發掘了一個微妙的方法來區分open(開放的)和 closed(關閉的)端口。第65頁說“如果 [目標]端口狀態是關閉的.... 進入的不含RST的報文導致一個RST響應。” 接下來的一頁 討論不設置SYN,RST,或者ACK位的報文發送到開放端口: “理論上,這不應該發生,如果您確實收到了,丟棄該報文,返回。 ”
如果掃描系統遵循該RFC,當端口關閉時,任何不包含SYN,RST,或者ACK位的報文會導致 一個RST返回,而當端口開放時,應該沒有任何響應。只要不包含SYN,RST,或者ACK, 任何其它三種(FIN,PSH,and URG)的組合都行。Nmap有三種掃描類型利用這一點:
Null掃描 (-sN)
不設置任何標志位(tcp標志頭是0)
FIN掃描 (-sF)
只設置TCP FIN標志位。
Xmas掃描 (-sX)
設置FIN,PSH,和URG標志位,就像點亮圣誕樹上所有的燈一樣。
除了探測報文的標志位不同,這三種掃描在行為上完全一致。 如果收到一個RST報文,該端口被認為是 closed(關閉的),而沒有響應則意味著 端口是open|filtered(開放或者被過濾的)。 如果收到ICMP不可到達錯誤(類型 3,代號 1,2,3,9,10,或者13),該端口就被標記為 被過濾的。
這些掃描的關鍵優勢是它們能躲過一些無狀態防火墻和報文過濾路由器。 另一個優勢是這些掃描類型甚至比SYN掃描還要隱秘一些。但是別依賴它 -- 多數 現代的IDS產品可以發現它們。一個很大的不足是并非所有系統都嚴格遵循RFC 793。 許多系統不管端口開放還是關閉,都響應RST。 這導致所有端口都標記為closed(關閉的)。 這樣的操作系統主要有Microsoft Windows,許多Cisco設備,BSDI,以及IBM OS/400。 但是這種掃描對多數UNIX系統都能工作。這些掃描的另一個不足是 它們不能辨別open(開放的)端口和一些特定的 filtered(被過濾的)端口,從而返回 open|filtered(開放或者被過濾的)。
-sA (TCP ACK掃描)
這種掃描與目前為止討論的其它掃描的不同之處在于 它不能確定open(開放的)或者 open|filtered(開放或者過濾的))端口。 它用于發現防火墻規則,確定它們是有狀態的還是無狀態的,哪些端口是被過濾的。
ACK掃描探測報文只設置ACK標志位(除非您使用 --scanflags)。當掃描未被過濾的系統時, open(開放的)和closed(關閉的) 端口 都會返回RST報文。Nmap把它們標記為 unfiltered(未被過濾的),意思是 ACK報文不能到達,但至于它們是open(開放的)或者 closed(關閉的) 無法確定。不響應的端口 或者發送特定的ICMP錯誤消息(類型3,代號1,2,3,9,10, 或者13)的端口,標記為 filtered(被過濾的)。
-sW (TCP窗口掃描)
除了利用特定系統的實現細節來區分開放端口和關閉端口,當收到RST時不總是打印unfiltered, 窗口掃描和ACK掃描完全一樣。 它通過檢查返回的RST報文的TCP窗口域做到這一點。 在某些系統上,開放端口用正數表示窗口大小(甚至對于RST報文) 而關閉端口的窗口大小為0。因此,當收到RST時,窗口掃描不總是把端口標記為 unfiltered, 而是根據TCP窗口值是正數還是0,分別把端口標記為open或者 closed
該掃描依賴于互聯網上少數系統的實現細節, 因此您不能永遠相信它。不支持它的系統會通常返回所有端口closed。 當然,一臺機器沒有開放端口也是有可能的。 如果大部分被掃描的端口是 closed,而一些常見的端口 (如 22, 25,53) 是 filtered,該系統就非常可疑了。 偶爾地,系統甚至會顯示恰恰相反的行為。 如果您的掃描顯示1000個開放的端口和3個關閉的或者被過濾的端口, 那么那3個很可能也是開放的端口。
-sM (TCP Maimon掃描)
Maimon掃描是用它的發現者Uriel Maimon命名的。他在 Phrack Magazine issue #49 (November 1996)中描述了這一技術。 Nmap在兩期后加入了這一技術。 這項技術和Null,FIN,以及Xmas掃描完全一樣,除了探測報文是FIN/ACK。 根據RFC 793 (TCP),無論端口開放或者關閉,都應該對這樣的探測響應RST報文。 然而,Uriel注意到如果端口開放,許多基于BSD的系統只是丟棄該探測報文。
--scanflags (定制的TCP掃描)
真正的Nmap高級用戶不需要被這些現成的掃描類型束縛。 --scanflags選項允許您通過指定任意TCP標志位來設計您自己的掃描。 讓您的創造力流動,躲開那些僅靠本手冊添加規則的入侵檢測系統!
--scanflags選項可以是一個數字標記值如9 (PSH和FIN), 但使用字符名更容易些。 只要是URG, ACK,PSH, RST,SYN,and FIN的任何組合就行。例如,--scanflags URGACKPSHRSTSYNFIN設置了所有標志位,但是這對掃描沒有太大用處。 標志位的順序不重要。
除了設置需要的標志位,您也可以設置 TCP掃描類型(如-sA或者-sF)。 那個基本類型告訴Nmap怎樣解釋響應。例如, SYN掃描認為沒有響應意味著 filtered端口,而FIN掃描則認為是 open|filtered。 除了使用您指定的TCP標記位,Nmap會和基本掃描類型一樣工作。 如果您不指定基本類型,就使用SYN掃描。
-sI <zombie host[:probeport]> (Idlescan)
這種高級的掃描方法允許對目標進行真正的TCP端口盲掃描 (意味著沒有報文從您的真實IP地址發送到目標)。相反,side-channel攻擊 利用zombie主機上已知的IP分段ID序列生成算法來窺探目標上開放端口的信息。 IDS系統將顯示掃描來自您指定的zombie機(必須運行并且符合一定的標準)。 這種奇妙的掃描類型太復雜了,不能在此完全描述,所以我寫一篇非正式的論文, 發布在https://nmap.org/book/idlescan.html。
除了極端隱蔽(由于它不從真實IP地址發送任何報文), 該掃描類型可以建立機器間的基于IP的信任關系。 端口列表從zombie 主機的角度。顯示開放的端口。 因此您可以嘗試用您認為(通過路由器/包過濾規則)可能被信任的 zombies掃描目標。
如果您由于IPID改變希望探測zombie上的特定端口, 您可以在zombie 主機后加上一個冒號和端口號。 否則Nmap會使用默認端口(80)。
-sO (IP協議掃描)
IP 協議掃描可以讓您確定目標機支持哪些IP協議 (TCP,ICMP,IGMP,等等)。從技術上說,這不是端口掃描 ,既然它遍歷的是IP協議號而不是TCP或者UDP端口號。 但是它仍使用 -p選項選擇要掃描的協議號, 用正常的端口表格式報告結果,甚至用和真正的端口掃描一樣 的掃描引擎。因此它和端口掃描非常接近,也被放在這里討論。
除了本身很有用,協議掃描還顯示了開源軟件的力量。 盡管基本想法非常簡單,我過去從沒想過增加這一功能也沒收到任何對它的請求。 在2000年夏天,Gerhard Rieger孕育了這個想法,寫了一個很棒的補丁程序,發送到nmap-hackers郵件列表。 我把那個補丁加入了Nmap,第二天發布了新版本。 幾乎沒有商業軟件會有用戶有足夠的熱情設計并貢獻他們的改進。
協議掃描以和UDP掃描類似的方式工作。它不是在UDP報文的端口域上循環, 而是在IP協議域的8位上循環,發送IP報文頭。 報文頭通常是空的,不包含數據,甚至不包含所申明的協議的正確報文頭 TCP,UDP,和ICMP是三個例外。它們三個會使用正常的協議頭,因為否則某些系 統拒絕發送,而且Nmap有函數創建它們。協議掃描不是注意ICMP端口不可到達消息, 而是ICMP 協議不可到達消息。如果Nmap從目標主機收到 任何協議的任何響應,Nmap就把那個協議標記為open。 ICMP協議不可到達 錯誤(類型 3,代號 2) 導致協議被標記為 closed。其它ICMP不可到達協議(類型 3,代號 1,3,9,10,或者13) 導致協議被標記為 filtered (雖然同時他們證明ICMP是 open )。如果重試之后仍沒有收到響應, 該協議就被標記為open|filtered
-b <ftp relay host> (FTP彈跳掃描)
FTP協議的一個有趣特征(RFC 959) 是支持所謂代理ftp連接。它允許用戶連接到一臺FTP服務器,然后要求文件送到一臺第三方服務器。 這個特性在很多層次上被濫用,所以許多服務器已經停止支持它了。其中一種就是導致FTP服務器對其它主機端口掃描。 只要請求FTP服務器輪流發送一個文件到目標主機上的所感興趣的端口。 錯誤消息會描述端口是開放還是關閉的。 這是繞過防火墻的好方法,因為FTP服務器常常被置于可以訪問比Web主機更多其它內部主機的位置。 Nmap用-b選項支持ftp彈跳掃描。參數格式是 <username>:<password>@<server>:<port>。 <Server> 是某個脆弱的FTP服務器的名字或者IP地址。 您也許可以省略<username>:<password>, 如果服務器上開放了匿名用戶(user:anonymous password:-wwwuser@)。 端口號(以及前面的冒號) 也可以省略,如果<server>使用默認的FTP端口(21)。
當Nmap1997年發布時,這個弱點被廣泛利用,但現在大部分已經被fix了。 脆弱的服務器仍然存在,所以如果其它都失敗了,這也值得一試。 如果您的目標是繞過防火墻,掃描目標網絡上的開放的21端口(或者 甚至任何ftp服務,如果您用版本探測掃描所有端口), 然后對每個嘗試彈跳掃描。Nmap會告訴您該主機脆弱與否。 如果您只是試著玩Nmap,您不必(事實上,不應該)限制您自己。 在您隨機地在互聯網上尋找脆弱的FTP服務器時,考慮一下系統管理員不太喜歡您這樣濫用他們的服務器。
服務和版本探測
Nmap試圖確定服務協議 (如 ftp,ssh,telnet,http),應用程序名(如ISC Bind,Apache httpd,Solaris telnetd),版本號, 主機名,設備類型(如 打印機,路由器),操作系統家族 (如Windows,Linux)以及其它的細節,如 如是否可以連接X server,SSH協議版本 ,或者KaZaA用戶名)。當然,并非所有服務都提供所有這些信息。
-sV (版本探測)
打開版本探測。 您也可以用-A同時打開操作系統探測和版本探測。
--allports (不為版本探測排除任何端口)
默認情況下,Nmap版本探測會跳過9100 TCP端口,因為一些打印機簡單地打印送到該端口的 任何數據,這回導致數十頁HTTP get請求,二進制 SSL會話請求等等被打印出來。這一行為可以通過修改或刪除nmap-service-probes 中的Exclude指示符改變, 您也可以不理會任何Exclude指示符,指定--allports掃描所有端口
--version-intensity <intensity> (設置 版本掃描強度)
當進行版本掃描(-sV)時,nmap發送一系列探測報文 ,每個報文都被賦予一個1到9之間的值。 被賦予較低值的探測報文對大范圍的常見服務有效,而被賦予較高值的報文 一般沒什么用。強度水平說明了應該使用哪些探測報文。數值越高, 服務越有可能被正確識別。 然而,高強度掃描花更多時間。強度值必須在0和9之間。 默認是7。當探測報文通過nmap-service-probes ports指示符 注冊到目標端口時,無論什么強度水平,探測報文都會被嘗試。這保證了DNS 探測將永遠在任何開放的53端口嘗試, SSL探測將在443端口嘗試,等等。
--version-light (打開輕量級模式)
這是 --version-intensity 2的方便的別名。輕量級模式使 版本掃描快許多,但它識別服務的可能性也略微小一點。
--version-all (嘗試每個探測)
--version-intensity 9的別名, 保證對每個端口嘗試每個探測報文。
--version-trace (跟蹤版本掃描活動)
這導致Nmap打印出詳細的關于正在進行的掃描的調試信息。 它是您用--packet-trace所得到的信息的子集。
-sR (RPC掃描)
這種方法和許多端口掃描方法聯合使用。 它對所有被發現開放的TCP/UDP端口執行SunRPC程序NULL命令,來試圖 確定它們是否RPC端口,如果是, 是什么程序和版本號。因此您可以有效地獲得和rpcinfo -p一樣的信息, 即使目標的端口映射在防火墻后面(或者被TCP包裝器保護)。Decoys目前不能和RPC scan一起工作。 這作為版本掃描(-sV)的一部分自動打開。 由于版本探測包括它并且全面得多,-sR很少被需要。
操作系統探測
Nmap采用TCP/IP協議棧fingerprinting進行遠程操作系統探測。 Nmap發送一系列TCP和UDP報文到遠程主機,檢查響應中的每一個比特,把結果和數據庫nmap-os-fingerprints中超過 1500個已知的操作系統的fingerprints進行比較,如果有匹配,就打印出操作系統的詳細信息。 每個fingerprint包括一個自由格式的關于OS的描述文本, 和一個分類信息,它提供供應商名稱(如Sun),下面的操作系統(如Solaris),OS版本(如10), 和設備類型(通用設備,路由器,switch,游戲控制臺, 等)
-O (啟用操作系統檢測)
也可以使用-A來同時啟用操作系統檢測和版本檢測。
--osscan-limit (針對指定的目標進行操作系統檢測)
如果發現一個打開和關閉的TCP端口時,操作系統檢測會更有效。 采用這個選項,Nmap只對滿足這個條件的主機進行操作系統檢測,這樣可以 節約時間,特別在使用-P0掃描多個主機時。這個選項僅在使用 -O或-A 進行操作系統檢測時起作用。
--osscan-guess; --fuzzy (推測操作系統檢測結果)
當Nmap無法確定所檢測的操作系統時,會盡可能地提供最相近的匹配,Nmap默認 進行這種匹配,使用上述任一個選項使得Nmap的推測更加有效。
防火墻/IDS躲避和哄騙
-f (報文分段); --mtu (使用指定的MTU)
-f選項要求掃描時(包挺ping掃描)使用 小的IP包分段。其思路是將TCP頭分段在幾個包中,使得包過濾器、 IDS以及其它工具的檢測更加困難。必須小心使用這個選項,有些系 統在處理這些小包時存在問題,例如舊的網絡嗅探器Sniffit在接收 到第一個分段時會立刻出現分段錯誤。該選項使用一次,Nmap在IP 頭后將包分成8個字節或更小。因此,一個20字節的TCP頭會被分成3個 包,其中2個包分別有TCP頭的8個字節,另1個包有TCP頭的剩下4個字 節。當然,每個包都有一個IP頭。再次使用-f可使用 16字節的分段(減少分段數量)。使用--mtu選項可 以自定義偏移的大小,使用時不需要-f,偏移量必須 是8的倍數。包過濾器和防火墻對所有的IP分段排隊,如Linux核心中的 CONFIG-IP-ALWAYS-DEFRAG配置項,分段包不會直接使用。一些網絡無法 承受這樣所帶來的性能沖擊,會將這個配置禁止。其它禁止的原因有分段 包會通過不同的路由進入網絡。一些源系統在內核中對發送的報文進行 分段,使用iptables連接跟蹤模塊的Linux就是一個例子。當使用類似Ethereal 的嗅探器時,掃描必須保證發送的報文要分段。如果主機操作系統會產 生問題,嘗試使用--send-eth選項以避開IP層而直接 發送原始的以太網幀。
-D <decoy1 [,decoy2][,ME],...> (使用誘餌隱蔽掃描)
為使誘餌掃描起作用,需要使遠程主機認為是誘餌在掃描目標網絡。 IDS可能會報個某個IP的5-10個端口掃描,但并不知道哪個IP在掃描以及 哪些不是誘餌。但這種方式可以通過路由跟蹤、響應丟棄以及其它主動 機制在解決。這是一種常用的隱藏自身IP地址的有效技術。
使用逗號分隔每個誘餌主機,也可用自己的真實IP作為誘餌,這時可使用 ME選項說明。如果在第6個位置或 更后的位置使用ME選項,一些常用 端口掃描檢測器(如Solar Designer's excellent scanlogd)就不會報告 這個真實IP。如果不使用ME選項,Nmap 將真實IP放在一個隨機的位置
注意,作為誘餌的主機須在工作狀態,否則會導致目標主機的SYN洪水攻擊。 如果在網絡中只有一個主機在工作,那就很容易確定哪個主機在掃描。也可 使用IP地址代替主機名(被誘騙的網絡就不可能在名字服務器日志中發現)。
誘餌可用在初始的ping掃描(ICMP、SYN、ACK等)階段或真正的端口掃描 階段。誘餌也可以用于遠程操作系統檢測(-O)。在進行版 本檢測或TCP連接掃描時,誘餌無效。
使用過多的誘餌沒有任何價值,反而導致掃描變慢并且結果不準確。 此外,一些ISP會過濾哄騙的報文,但很多對欺騙IP包沒有任何限制。
-S <IP_Address> (源地址哄騙)
在某些情況下,Nmap可能無法確定你的源地址(如果這樣,Nmap會給出 提示)。此時,使用-S選項并說明所需發送包的接口IP地址。
這個標志的另一個用處是哄騙性的掃描,使得目標認為是另 一個地址在進行掃描。可以想象某一個競爭對手在不斷掃描某個公司! -e選項常在這種情況下使用,也可采用-P0選項。
-e <interface> (使用指定的接口)
告訴Nmap使用哪個接口發送和接收報文,Nmap可以進行自動檢測, 如果檢測不出會給出提示。
--source-port <portnumber>; -g <portnumber> (源端口哄騙)
僅依賴于源端口號就信任數據流是一種常見的錯誤配置,這個問題非常 好理解。例如一個管理員部署了一個新的防火墻,但招來了很多用戶的不滿,因為 他們的應用停止工作了。可能是由于外部的UDP DNS服務器響應無法進入網絡,而導致 DNS的崩潰。FTP是另一個常見的例子,在FTP傳輸時,遠程服務器嘗試和內部用 建立連接以傳輸數據。
對這些問題有安全解決方案,通常是應用級代理或協議分析防火墻模塊。 但也存在一些不安全的方案。注意到DNS響應來自于53端口,FTP連接 來自于20端口,很多管理員會掉入一個陷阱,即允許來自于這些端口的數據進入 網絡。他們認為這些端口里不會有值得注意的攻擊和漏洞利用。此外,管理員 或許認為這是一個短期的措施,直至他們采取更安全的方案。但他們忽視了安全的 升級。
不僅僅是工作量過多的網絡管理員掉入這種陷阱,很多產品本身也會有這類 不安全的隱患,甚至是微軟的產品。Windows 2000和Windows XP中包含的IPsec過濾 器也包含了一些隱含規則,允許所有來自88端口(Kerberos)的TCP和UDP數據流。另 一個常見的例子是Zone Alarm個人防火墻到2.1.25版本仍然允許源端口53(DNS)或 67(DHCP)的UDP包進入。
Nmap提供了-g和--source-port選項(它們是 等價的),用于利用上述弱點。只需要提供一個端口號,Nmap就可以從這些 端口發送數據。為使特定的操作系統正常工作,Nmap必須使用不同的端口號。 DNS請求會忽略--source-port選項,這是因為Nmap依靠系 統庫來處理。大部分TCP掃描,包括SYN掃描,可以完全支持這些選項,UDP掃 描同樣如此。
--data-length <number> (發送報文時 附加隨機數據)
正常情況下,Nmap發送最少的報文,只含一個包頭。因此TCP包通常 是40字節,ICMP ECHO請求只有28字節。這個選項告訴Nmap在發送的報文上 附加指定數量的隨機字節。操作系統檢測(-O)包不受影響, 但大部分ping和端口掃描包受影響,這會使處理變慢,但對掃描的影響較小。
--ttl <value> (設置IP time-to-live域)
設置IPv4報文的time-to-live域為指定的值。
--randomize-hosts (對目標主機的順序隨機排列)
告訴Nmap在掃描主機前對每個組中的主機隨機排列,最多可達 8096個主機。這會使得掃描針對不同的網絡監控系統來說變得不是很 明顯,特別是配合值較小的時間選項時更有效。如果需要對一個較大 的組進行隨機排列,需要增大nmap.h文件中 PING-GROUP-SZ的值,并重新編譯。另一種方法是使用列表掃描 (-sL -n -oN <filename>),產生目標IP的列表, 使用Perl腳本進行隨機化,然后使用-iL提供給Nmap。
--spoof-mac <mac address,prefix,or vendor name> (MAC地址哄騙)
要求Nmap在發送原以太網幀時使用指定的MAC地址,這個選項隱含了 --send-eth選項,以保證Nmap真正發送以太網包。MAC地址有幾 種格式。如果簡單地使用字符串“0”,Nmap選擇一個完全隨機的MAC 地址。如果給定的字符品是一個16進制偶數(使用:分隔),Nmap將使用這個MAC地址。 如果是小于12的16進制數字,Nmap會隨機填充剩下的6個字節。如果參數不是0或16進 制字符串,Nmap將通過nmap-mac-prefixes查找 廠商的名稱(大小寫區分),如果找到匹配,Nmap將使用廠商的OUI(3字節前綴),然后 隨機填充剩余的3個節字。正確的--spoof-mac參數有, Apple, 0,01:02:03:04:05:06, deadbeefcafe,0020F2, 和Cisco.
輸出
Nmap提供5種不同的輸出格式,其中XML輸出是最重要的輸出類型,可被轉換成HTML,對于程序處理非常方便, 如用于Nmap圖形用戶接口或導入數據庫。除了提供輸出格式外,Nmap還提供了選項來控制輸出的細節以及調試信息。輸出內容可發送給標準輸出或命名文件,可以追加或覆蓋。輸出文件還可被用于繼續中斷的掃描。
-oN <filespec> (標準輸出)
要求將標準輸出直接寫入指定 的文件。如上所述,這個格式與交互式輸出 略有不同。
-oX <filespec> (XML輸出)
要求XML輸出直接寫入指定 的文件。Nmap包含了一個文檔類型定義(DTD),使XML解析器有效地 進行XML輸出。這主要是為了程序應用,同時也可以協助人工解釋 Nmap的XML輸出。DTD定義了合法的格式元素,列舉可使用的屬性和 值。最新的版本可在 http://www.insecure.org/nmap/data/nmap.dtd獲取。
XML提供了可供軟件解析的穩定格式輸出,主要的計算機 語言都提供了免費的XML解析器,如C/C++,Perl,Python和Java。 針對這些語言有一些捆綁代碼用于處理Nmap的輸出和特定的執行程序。 例如perl CPAN中的Nmap::Scanner 和Nmap::Parser。 對幾乎所有與Nmap有接口的主要應用來說,XML是首選的格式。
XML輸出引用了一個XSL樣式表,用于格式化輸出結果,類似于 HTML。最方便的方法是將XML輸出加載到一個Web瀏覽器,如Firefox 或IE。由于nmap.xsl文件的絕對 路徑,因此通常只能在運行了Nmap的機器上工作(或類似配置的機器)。 類似于任何支持Web機器的HTML文件,--stylesheet 選項可用于建立可移植的XML文件。
-oS <filespec> (ScRipT KIdd|3 oUTpuT)
腳本小子輸出類似于交互工具輸出,這是一個事后處理,適合于 'l33t HaXXorZ, 由于原來全都是大寫的Nmap輸出。這個選項和腳本小子開了玩笑,看上去似乎是為了 “幫助他們”。
-oG <filespec> (Grep輸出)
這種方式最后介紹,因為不建議使用。XML輸格式很強大,便于有經驗 的用戶使用。XML是一種標準,由許多解析器構成,而Grep輸屆更簡化。XML 是可擴展的,以支持新發布的Nmap特點。使用Grep輸出的目的是忽略這些 特點,因為沒有足夠的空間。
然面,Grep輸出仍然很常使用。它是一種簡單格式,每行一個主機,可以 通過UNIX工具(如grep、awk、cut、sed、diff)和Perl方便地查找和分解。常可 用于在命令行上進行一次性測式。查找ssh端口打開或運行Sloaris的主機,只需 要一個簡單的grep主機說明,使用通道并通過awk或cut命令打印所需的域。
Grep輸出可以包含注釋(每行由#號開始)。每行由6個標記的域組成,由制表符及 冒號分隔。這些域有主機,端口, 協議,忽略狀態, 操作系統,序列號, IPID和狀態。
這些域中最重要的是Ports,它提供 了所關注的端口的細節,端口項由逗號分隔。每個端口項代表一個所關注的端口, 每個子域由/分隔。這些子域有:端口號, 狀態,協議, 擁有者,服務, SunRPCinfo和版本信息。
對于XML輸出,本手冊無法列舉所有的格式,有關Nmap Grep輸出的更詳細信息可 查閱http://www.unspecific.com/nmap-oG-output。
-oA <basename> (輸出至所有格式)
為使用方便,利用-oA<basename>選項 可將掃描結果以標準格式、XML格式和Grep格式一次性輸出。分別存放在 <basename>.nmap,<basename>.xml和 <basename>.gnmap文件中。也可以在文件名前 指定目錄名,如在UNIX中,使用~/nmaplogs/foocorp/, 在Window中,使用c:\hacking\sco on Windows。
細節和調試選項
-v (提高輸出信息的詳細度)
通過提高詳細度,Nmap可以輸出掃描過程的更多信息。 輸出發現的打開端口,若Nmap認為掃描需要更多時間會顯示估計 的結束時間。這個選項使用兩次,會提供更詳細的信息。這個選 項使用兩次以上不起作用。
大部分的變化僅影響交互式輸出,也有一些影響標準和腳本 小子輸出。其它輸出類型由機器處理,此時Nmap默認提供詳細的信 息,不需要人工干預。然而,其它模式也會有一些變化,省略一些 細節可以減小輸出大小。例如,Grep輸出中的注釋行提供所有掃描 端口列表,但由于這些信息過長,因此只能在細節模式中輸出。
-d [level] (提高或設置調試級別)
當詳細模式也不能為用戶提供足夠的數據時,使用調試可以得到更 多的信息。使用細節選項(-v)時,可啟用命令行參數 (-d),多次使用可提高調試級別。也可在-d 后面使用參數設置調試級別。例如,-d9設定級別9。這是 最高的級別,將會產生上千行的輸出,除非只對很少的端口和目標進行簡單掃描。
如果Nmap因為Bug而掛起或者對Nmap的工作及原理有疑問,調試輸出 非常有效。主要是開發人員用這個選項,調試行不具備自我解釋的特點。 例如,Timeoutvals: srtt: -1 rttvar: -1 to: 1000000 delta 14987 ==> srtt: 14987 rttvar: 14987 to: 100000。如果對某行輸出不明白, 可以忽略、查看源代碼或向開發列表(nmap-dev)求助。有些輸出行會有自 我解釋的特點,但隨著調試級別的升高,會越來越含糊。
--packet-trace (跟蹤發送和接收的報文)
要求Nmap打印發送和接收的每個報文的摘要,通常用于 調試,有助于新用戶更好地理解Nmap的真正工作。為避免輸出過 多的行,可以限制掃描的端口數,如-p20-30。 如果只需進行版本檢測,使用--version-trace。
--iflist (列舉接口和路由)
輸出Nmap檢測到的接口列表和系統路由,用于調試路由 問題或設備描述失誤(如Nmap把PPP連接當作以太網對待)。
--append-output (在輸出文件中添加)
當使用文件作為輸出格式,如-oX或-oN, 默認該文件被覆蓋。如果希望文件保留現有內容,將結果添加在現 有文件后面,使用--append-output選項。所有指 定的輸出文件都被添加。但對于XML(-oX)掃描輸出 文件無效,無法正常解析,需要手工修改。
--resume <filename> (繼續中斷的掃描)
一些擴展的Nmap運行需要很長的時間 -- 以天計算,這類掃描 往往不會結束。可以進行一些限制,禁止Nmap在工作時間運行,導致 網絡中斷、運行Nmap的主機計劃或非計劃地重啟、或者Nmap自己中斷。 運行Nmap的管理員可以因其它原因取消運行,按下ctrl-C 即可。從頭開始啟動掃描可能令人不快,幸運的是,如果標準掃描 (-oN)或Grep掃描(-oG)日志 被保留,用戶可以要求Nmap恢復終止的掃描,只需要簡單地使用選項 --resume并說明標準/Grep掃描輸出文件,不允許 使用其它參數,Nmap會解析輸出文件并使用原來的格式輸出。使用方式 如nmap --resume <logfilename>。 Nmap將把新地結果添加到文件中,這種方式不支持XML輸出格式,原因是 將兩次運行結果合并至一個XML文件比較困難。
--stylesheet <path or URL> (設置XSL樣式表,轉換XML輸出)
Nmap提從了XSL樣式表nmap.xsl,用于查看 或轉換XML輸出至HTML。XML輸出包含了一個xml-stylesheet, 直接指向nmap.xml文件, 該文件由Nmap安裝(或位于Windows當前工作目錄)。在Web瀏覽器 中打開Nmap的XML輸出時,將會在文件系統中尋找nmap.xsl文件, 并使用它輸出結果。如果希望使用不同的樣式表,將它作為 --stylesheet的參數,必段指明完整的路 徑或URL,常見的調用方式是--stylesheet http://www.insecure.org/nmap/data/nmap.xsl。 這告訴瀏覽器從Insecire.Org中加載最新的樣式表。這使得 沒安裝Nmap(和nmap.xsl) 的機器中可以方便地查看結果。因此,URL更方便使用,本地文件系統 的nmap.xsl用于默認方式。
--no-stylesheet (忽略XML聲明的XSL樣式表)
使用該選項禁止Nmap的XML輸出關聯任何XSL樣式表。 xml-stylesheet指示被忽略。
其它選項
-6 (啟用IPv6掃描)
從2002年起,Nmap提供對IPv6的一些主要特征的支持。ping掃描(TCP-only)、 連接掃描以及版本檢測都支持IPv6。除增加-6選項外, 其它命令語法相同。當然,必須使用IPv6地址來替換主機名,如 3ffe:7501:4819:2000:210:f3ff:fe03:14d0。 除“所關注的端口”行的地址部分為IPv6地址。
IPv6目前未在全球廣泛采用,目前在一些國家(亞洲)應用較多, 一些高級操作系統支持IPv6。使用Nmap的IPv6功能,掃描的源和目 的都需要配置IPv6。如果ISP(大部分)不分配IPv6地址,Nmap可以采用 免費的隧道代理。一種較好的選擇是BT Exact,位于https://tb.ipv6.btexact.com/。 此外,還有Hurricane Electric,位于http://ipv6tb.he.net/。6to4隧道是 另一種常用的免費方法。
-A (激烈掃描模式選項)
這個選項啟用額外的高級和高強度選項,目前還未確定代表 的內容。目前,這個選項啟用了操作系統檢測(-O) 和版本掃描(-sV),以后會增加更多的功能。 目的是啟用一個全面的掃描選項集合,不需要用戶記憶大量的 選項。這個選項僅僅啟用功能,不包含用于可能所需要的 時間選項(如-T4)或細節選項(-v)。
--datadir <directoryname> (說明用戶Nmap數據文件位置)
Nmap在運行時從文件中獲得特殊的數據,這些文件有 nmap-service-probes, nmap-services, nmap-protocols, nmap-rpc, nmap-mac-prefixes和 nmap-os-fingerprints。Nmap首先 在--datadir選項說明的目錄中查找這些文件。 未找到的文件,將在BMAPDIR環境變量說明的目錄中查找。 接下來是用于真正和有效UID的~/.nmap 或Nmap可執行代碼的位置(僅Win32);然后是是編譯位置, 如/usr/local/share/nmap 或/usr/share/nmap。 Nmap查找的最后一個位置是當前目錄。
--send-eth (使用原以太網幀發送)
要求Nmap在以太網(數據鏈路)層而不是IP(網絡層)發送 報文。默認方式下,Nmap選擇最適合其運行平臺的方式,原套接 字(IP層)是UNIX主機最有效的方式,而以太網幀最適合Windows操作 系統,因為Microsoft禁用了原套接字支持。在UNIX中,如果沒有其 它選擇(如無以太網連接),不管是否有該選項,Nmap都使用原IP包。
--send-ip (在原IP層發送)
要求Nmap通過原IP套接字發送報文,而不是低層的以 太網幀。這是--send-eth選項的補充。
--privileged (假定用戶具有全部權限)
告訴Nmap假定其具有足夠的權限進行源套接字包發送、 報文捕獲和類似UNIX系統中根用戶操作的權限。默認狀態下, 如果由getuid()請求的類似操作不為0,Nmap將退出。 --privileged在具有Linux內核性能的類似 系統中使用非常有效,這些系統配置允許非特權用戶可以進行 原報文掃描。需要明確的是,在其它選項之前使用這些需要權 限的選項(SYN掃描、操作系統檢測等)。Nmap-PRIVILEGED變量 設置等價于--privileged選項。
-V; --version (打印版本信息)
打印Nmap版本號并退出。
-h; --help (打印幫助摘要面)
打印一個短的幫助屏幕,列出大部分常用的 命令選項,這個功能與不帶參數運行Nmap是相同的。
三、實例
1、Nmap掃描掃描單個目標
通過指定單個目標,使用Nmap工具可以實現一個基本的掃描。指定的目標可以是一個IP地址,也可以是主機名(Nmap會自動解析其主機名)。其中,語法格式如下所示:
nmap [目標]
# nmap 192.168.1.105
Starting Nmap 6.47 ( http://nmap.org ) at 2015-05-05 18:44 CST
Nmap scan report for localhost (192.168.1.105)
Host is up (0.00010s latency).
Not shown: 995 closed ports
PORT STATE SERVICE
21/tcp open ftp
22/tcp open ssh
23/tcp open telnet
111/tcp open rpcbind
445/tcp open microsoft-ds
MAC Address: 00:0C:29:31:02:17 (VMware)
Nmap done: 1 IP address (1 host up) scanned in 0.87 seconds
可以看到目標主機192.168.1.105上開啟的端口有21、22、23、111、445,及這些端口所對應的服務。而且,還可以看到該目標主機的MAC地址為00:0C:29:31:02:17。從最后一行信息,可以看出目標主機是活動的(up),并且掃描該目標主機共用了0.87秒。
使用Nmap掃描單個目標時,指定的IP地址可以是IPv4,也可以是IPv6。上例中指定掃描的目標是使用IPv4類地址。如果用戶指定掃描目標地址是IPv6類地址時,需要使用-6選項。如果要使用IPv6類地址作為目標時,則掃描主機和目標主機都必須支持IPv6協議。否則無法實施掃描。例如,掃描IP地址為fe80::20c:29ff:fe31:217的目標主機,則執行命令如下所示:
# nmap -6 fe80::20c:29ff:fe31:217
2、Nmap掃描掃描多個目標
Nmap可以用來同時掃描多個主機。當用戶需要掃描多個目標時,可以在命令行中同時指定多個目標,每個目標之間使用空格分割。其中,語法格式如下所示:
nmap [目標1 目標2 ...]
# nmap 192.168.1.1 192.168.1.101 192.168.1.105
Starting Nmap 6.47 ( http://nmap.org ) at 2015-05-05 19:07 CST
Nmap scan report for localhost (192.168.1.1)
Host is up (0.00094s latency).
Not shown: 997 closed ports
PORT STATE SERVICE
80/tcp open http
1900/tcp open upnp
49152/tcp open unknown
MAC Address: 14:E6:E4:84:23:7A (Tp-link Technologies CO.)
Nmap scan report for localhost (192.168.1.101)
Host is up (0.0060s latency).
All 1000 scanned ports on localhost (192.168.1.101) are closed
MAC Address: 14:F6:5A:CE:EE:2A (Xiaomi)
Nmap scan report for localhost (192.168.1.105)
Host is up (0.00038s latency).
Not shown: 995 closed ports
PORT STATE SERVICE
21/tcp open ftp
22/tcp open ssh
23/tcp open telnet
111/tcp open rpcbind
445/tcp open microsoft-ds
MAC Address: 00:0C:29:31:02:17 (VMware)
Nmap done: 3 IP addresses (3 hosts up) scanned in 1.00 seconds
從以上輸出信息,可以看到共掃描了三臺主機,并且依次顯示了每臺主機的掃描結果。在以上信息中,將掃描的每臺主機地址行已加粗,方便用戶了解其掃描結果。下面分別介紹這三臺主機的掃描結果,如下所示:
192.168.1.1:從輸出信息中可以看到該主機開啟了三個端口,MAC地址為14:E6:E4:84:23:7A。根據MAC地址后面括號中的信息,可以推斷出該主機是一個Tp-link路由器。
192.168.1.101:從輸出信息中,可以看到該主機上前1000個端口是關閉的。但是,可以看到該主機的MAC地址為14:F6:5A:CE:EE:2A,設備類型為Xiaomi。由此可以判斷出,該主機是一個小米手機設備。
192.168.1.105:從輸出信息中,可以看到該主機上995個端口是關閉的,五個端口是開啟的。其中,MAC地址為00:0C:29:31:02:17,而且是一臺VMware(虛擬機)操作系統。
3、Nmap掃描掃描一個目標列表
當用戶有大量主機需要掃描時,可以將這些主機的IP地址(或主機名)寫入到一個文本文件中。然后,使用Nmap工具進行掃描。這樣避免在命令行中手工輸入目標。其中,語法格式如下所示:
nmap -iL [IP地址列表文件]
iL選項,就是用來從IP地址列表文件中提取所有地址的。IP地址列表文件中包含了一列被掃描的主機IP地址。在IP地址列表文件中的每個條目必須使用空格、Tab鍵或換行符分割。
(1)創建list.txt文本文件,并將掃描的主機IP地址寫入到該文本文件中。如下所示:
# vi list.txt
192.168.1.1
192.168.1.100
192.168.1.101
192.168.1.102
192.168.1.103
192.168.1.104
192.168.1.105
(2)掃描list.txt文件中指定的所有主機。執行命令如下所示:
# nmap -iL list.txt
4、Nmap掃描掃描隨機目標
Nmap工具提供了一個-iR選項,可以用來選擇隨機的互聯網主機來掃描。Nmap工具將會隨機的生成指定數量的目標進行掃描。其中,語法格式如下所示:
nmap -iR [主機數量]
# nmap -iR 2 #選擇兩個目標主機進行掃描
Starting Nmap 6.47 ( http://nmap.org ) at 2015-05-06 11:07 CST
Nmap scan report for suncokret.vguk.hr (161.53.173.3)
Host is up (0.43s latency).
Not shown: 984 closed ports
PORT STATE SERVICE
21/tcp open ftp
25/tcp open smtp
53/tcp open domain
80/tcp open http
81/tcp open hosts2-ns
110/tcp open pop3
135/tcp filtered msrpc
139/tcp filtered netbios-ssn
143/tcp open imap
443/tcp open https
444/tcp open snpp
445/tcp filtered microsoft-ds
593/tcp filtered http-rpc-epmap
2002/tcp open globe
3306/tcp open mysql
4444/tcp filtered krb524
Nmap done: 3 IP addresses (1 host up) scanned in 29.64 seconds
從輸出信息中,可以看到Nmap工具隨機生成了三個IP地址。但是,只有主機161.53.137.3是活動的,并且顯示了對該主機的掃描結果。
提示:一般情況下,不建議用戶實施隨機掃描。除非你是在做一個研究項目。否則經常實施隨機掃描可能會給自己的互聯網服務提供商帶來麻煩。
5、Nmap指定IP地址范圍掃描
用戶在指定掃描范圍時,可以通過IP地址或子網的方式來實現。下面將介紹使用IP地址指定掃描范圍的方法。其中,語法格式如下所示:
nmap [IP地址范圍] # IP地址范圍之間使用短連字符(-)
使用Nmap工具掃描192.168.1.1到100之間的所有主機。執行命令如下所示:
# nmap 192.168.1.1-100
Starting Nmap 6.47 ( http://nmap.org ) at 2015-05-05 19:40 CST
Nmap scan report for localhost (192.168.1.1)
Host is up (0.0014s latency).
Not shown: 997 closed ports
PORT STATE SERVICE
80/tcp open http
1900/tcp open upnp
49152/tcp open unknown
MAC Address: 14:E6:E4:84:23:7A (Tp-link Technologies CO.)
Nmap scan report for localhost (192.168.1.100)
Host is up (0.00025s latency).
Not shown: 986 closed ports
PORT STATE SERVICE
135/tcp open msrpc
139/tcp open netbios-ssn
443/tcp open https
445/tcp open microsoft-ds
902/tcp open iss-realsecure
912/tcp open apex-mesh
1033/tcp open netinfo
1034/tcp open zincite-a
1035/tcp open multidropper
1037/tcp open ams
1039/tcp open sbl
1041/tcp open danf-ak2
2869/tcp open icslap
5357/tcp open wsdapi
MAC Address: 00:E0:1C:3C:18:79 (Cradlepoint)
Nmap done: 100 IP addresses (2 hosts up) scanned in 3.34 seconds
從以上輸出信息中,可以看到192.168.1-100之間,只有192.168.1.1和192.168.1.100兩臺主機是活動的。
用戶也可以指定掃描多個網絡/子網范圍的主機。例如,掃描C類IP網絡192.168.1.*到192.168.100.*之間的所有主機。則執行命令如下所示:
nmap 192.168.1-100.* #星號(*)是一個通配符,表示0-255之間所有有效的主機。
6、Nmap掃描整個子網
Nmap也可以使用CIDR(無類別域間路由)格式來掃描整個子網。CIDR是由網絡地址和子網掩碼兩部分組成,并且中間使用斜杠(/)分割。CIDR 地址中包含標準的32位IP地址和有關網絡前綴位數的信息。以CIDR地址222.80.18.18/25為例,其中“/25”表示其前面地址中的前25位代表網絡部分,其余位代表主機部分。語法格式如下所示:
nmap [CIDR格式的網絡地址]
【示例2-9】使用Nmap掃描192.168.1.1/24整個子網中的所有主機。執行命令如下所示:
# nmap 192.168.1.1/24
Starting Nmap 6.47 ( http://nmap.org ) at 2015-05-05 19:41 CST
Nmap scan report for localhost (192.168.1.1)
Host is up (0.00064s latency).
Not shown: 997 closed ports
PORT STATE SERVICE
80/tcp open http
1900/tcp open upnp
49152/tcp open unknown
MAC Address: 14:E6:E4:84:23:7A (Tp-link Technologies CO.)
Nmap scan report for localhost (192.168.1.100)
Host is up (0.00022s latency).
Not shown: 986 closed ports
PORT STATE SERVICE
135/tcp open msrpc
139/tcp open netbios-ssn
443/tcp open https
445/tcp open microsoft-ds
902/tcp open iss-realsecure
912/tcp open apex-mesh
1033/tcp open netinfo
2869/tcp open icslap
5357/tcp open wsdapi
MAC Address: 00:E0:1C:3C:18:79 (Cradlepoint)
Nmap scan report for localhost (192.168.1.101)
Host is up (0.0041s latency).
All 1000 scanned ports on localhost (192.168.1.101) are closed
MAC Address: 14:F6:5A:CE:EE:2A (Xiaomi)
Nmap scan report for localhost (192.168.1.103)
Host is up (0.00027s latency).
Not shown: 977 closed ports
PORT STATE SERVICE
21/tcp open ftp
22/tcp open ssh
23/tcp open telnet
25/tcp open smtp
53/tcp open domain
80/tcp open http
111/tcp open rpcbind
139/tcp open netbios-ssn
445/tcp open microsoft-ds
512/tcp open exec
513/tcp open login
......
49157/tcp open unknown
MAC Address: 00:0C:29:DE:7E:04 (VMware)
Nmap scan report for localhost (192.168.1.102)
Host is up (0.0000040s latency).
Not shown: 998 closed ports
PORT STATE SERVICE
80/tcp open http
9876/tcp open sd
Nmap done: 256 IP addresses (9 hosts up) scanned in 3.39 seconds
從輸出信息中,可以看到共掃描了256個地址。其中,九臺主機是活動的,并且共用時間為3.39秒。由于章節的原因,以上只列舉了五臺主機的掃描結果。其中,中間部分內容,使用省略號(......)代替了。
7、Nmap排除掃描目標
當用戶指定一個掃描范圍時(如局域網),在該范圍內可能會包括自己的主機,或者是自己搭建的一些服務等。可能不希望掃描這些主機。此時就可以使用--exclude命令將這些主機排除。用戶使用--exclude選項,可以指定排除單個主機、范圍或者整個網絡塊(使用CIDR格式)。例如,掃描192.168.1.1/24網絡內,除192.168.1.100-192.168.1.103之外的所有主機。則執行命令如下所示:
nmap [目標] --exclude [目標]
# nmap 192.168.1.1/24 --exclude 192.168.1.101 #掃描192.168.1.1/24網絡內除192.168.1.101以外的所有主機。
# nmap 192.168.1.1/24 --exclude 192.168.1.100-103
8、Nmap掃描排除列表中的目標
當用戶排除掃描的目標很多時,也可以將這些目標主機的IP地址寫入到一個文本文件中。然后,使用--excludefile選項來指定排除掃描的目標。其中,排除掃描列表中目標的語法格式如下所示:
nmap [目標] --excludefile [目標列表]
使用Nmap掃描192.168.1.0/24網絡內主機,但是排除list.txt文件列表中指定的目標。具體操作步驟如下所示:
(1)創建list.txt文件,并寫入要排除掃描目標的IP地址。如下所示:
#vi list.txt
192.168.102
192.168.1.103
192.168.1.104
192.168.1.105
(2)實施掃描。執行命令如下所示:
# nmap 192.168.1.0/24 --excludefile list.txt
9、Nmap全面掃描
用戶可以使用不同的選項,單獨掃描目標主機上的端口、應用程序版本或操作系統類型等。但是,選項-A可以對目標主機實施全面掃描,掃描結果中包括各種類型的信息。
nmap -A [目標]
使用Nmap工具對目標主機192.168.1.105實施全面掃描。則執行命令如下所示:
# nmap -A 192.168.1.105
Starting Nmap 6.47 ( http://nmap.org ) at 2015-05-06 15:20 CST
Nmap scan report for localhost (192.168.1.105)
Host is up (0.00028s latency).
Not shown: 995 closed ports
PORT STATE SERVICE VERSION
21/tcp open ftp vsftpd 2.2.2 #FTP服務版本為2.2.2,供應商是Vsftpd
| ftp-anon: Anonymous FTP login allowed (FTP code 230) #允許匿名登錄
|_drwxr-xr-x 2 14 0 4096 Apr 03 06:10 pub #FTP服務的根目錄為pub
22/tcp open ssh OpenSSH 5.3 (protocol 2.0) #SSH服務版本是5.3,供應商是OpenSSH
| ssh-hostkey: #SSH服務密鑰
| 1024 83:9f:d0:8e:29:3c:7f:d9:11:da:a8:bb:b5:5a:4d:69 (DSA)
|_ 2048 2e:ea:ee:63:03:fd:9c:ae:39:9b:4c:e0:49:a9:8f:5d (RSA)
23/tcp open telnet Linux telnetd #Telnet服務
111/tcp open rpcbind 2-4 (RPC #100000)
| rpcinfo: #RPC詳細信息
| program version port/proto service
| 100000 2,3,4 111/tcp rpcbind
| 100000 2,3,4 111/udp rpcbind
| 100024 1 34525/tcp status
|_ 100024 1 51866/udp status
445/tcp open netbios-ssn Samba smbd 3.X (workgroup: MYGROUP)#Samba服務版本為3.X,供應商為smbd
MAC Address: 00:0C:29:31:02:17 (VMware) #目標主機的MAC地址
Device type: general purpose #設備類型
Running: Linux 2.6.X|3.X #正在運行的系統
OS CPE: cpe:/o:linux:linux_kernel:2.6 cpe:/o:linux:linux_kernel:3 #操作系統中央處理單元
OS details: Linux 2.6.32 - 3.10 #操作系統詳細信息
Network Distance: 1 hop #網絡距離
Service Info: OSs: Unix, Linux; CPE: cpe:/o:linux:linux_kernel #服務信息
Host script results:
| smb-os-discovery: #SMB操作系統發現
| OS: Unix (Samba 3.6.9-151.el6) #操作系統為Unix,Samba版本為3.6.9
| Computer name: router #計算機名
| NetBIOS computer name: #NetBIOS計算機名
| Domain name: #域名
| FQDN: router #完全合格域名(FQDN)
|_ System time: 2015-05-06T15:20:28+08:00 #系統時間
| smb-security-mode:
| Account that was used for smb scripts: <blank>
| User-level authentication
| SMB Security: Challenge/response passwords supported
|_ Message signing disabled (dangerous, but default)
|_smbv2-enabled: Server doesn't support SMBv2 protocol
TRACEROUTE
HOP RTT ADDRESS
1 0.28 ms localhost (192.168.1.105)
OS and Service detection performed. Please report any incorrect results at http://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 13.51 seconds
可以明顯看出比前面例子掃描結果更詳細。可以看到目標主機上開啟的端口、服務器、版本、操作系統版本、內核、系統類型等。根據分析輸出的信息,可知目標主機上運行了FTP、SSH、Telnet等服務,并且可以看到各服務的版本及權限信息。而且,還可以知道目標主機的操作系統是Linux,內核版本為2.6.32等。
10、端口掃描
1、TCP全鏈接掃描(-sT)
這是一種最為普通的掃描方法,這種掃描方法的特點是:掃描的速度快,準確性高,對操作者沒有權限上的要求,但是容易被防火墻和IDS(防入侵系統)發現
運行的原理:通過建立TCP的三次握手連接來進行信息的傳遞
① Client端發送SYN;
② Server端返回SYN/ACK,表明端口開放;
③ Client端返回ACK,表明連接已建立;
④ Client端主動斷開連接。

2、SYN掃描(-sS)
這是一種秘密的掃描方式之一,因為在SYN掃描中Client端和Server端沒有形成3次握手,所以沒有建立一個正常的TCP連接,因此不被防火墻和日志所記錄,一般不會再目標主機上留下任何的痕跡,但是這種掃描是需要root權限(對于windows用戶來說,是沒有root權限這個概念的,root權限是linux的最高權限,對應windows的管理員權限)
運行的原理圖如下:

3、NULL掃描
NULL掃描是一種反向的掃描方法,通過發送一個沒有任何標志位的數據包給服務器,然后等待服務器的返回內容。這種掃描的方法比前面提及的掃描方法要隱蔽很多,但是這種方法的準確度也是較低的, 主要的用途是用來判斷操作系統是否為windows,因為windows不遵守RFC 793標準,不論端口是開啟還是關閉的都返回RST包

但是雖然NULL具有這樣的一些用處,但是本人卻認為不宜使用NULL
1、NULL方法的精確度不高,端口的狀態返回的不是很準確
2、要獲取目標主機的運行系統,可以使用參數(-O),來獲取對于一些操作系統無法準確判斷的,可以加上參數(-osscan-guess)
3、NULL掃描易被過濾
4、FIN掃描
FIN掃描的原理與NULL掃描的原理基本上是一樣的在這里就不重復了
5、ACK掃描
ACK掃描的原理是發送一個ACK包給目標主機,不論目標主機的端口是否開啟,都會返回相應的RST包,通過判斷RST包中的TTL來判斷端口是否開啟
運行原理圖:

TTL值小于64端口開啟,大于64端口關閉
大致上主要的掃描方法就是這些,除了我們可以按照這樣些參數去執行掃描外,還可以自己定義一個TCP掃描包
6、UDP掃描 sU(使用-sUV能增加掃描的準確性)
7、自定義TCP,參數為--scanflags
例如:定制一個包含ACK掃描和SYN掃描的安裝包
命令:nmap --scanflags ACKSYN nmap.org

8、協議掃描 sO 獲取服務器支持哪些協議

9、輸出命令
-oN 文件名 輸出普通文件
-oX 文件名 輸出xml文件
11、錯誤調試:
--log-errors 輸出錯誤日志
--packet-trace 獲取從當前主機到目標主機的所有節點
接著講上節的內容,上節中提到了一個時間優化的問題是使用參數-n,通過不解析地址來進行優化時間的,但是優化時間的方法還有很多,比如說我們可以通過時間優化(0-5),指定單位時間內的探針數,設置組的大小
12、時間優化(0-5)
時間優化的參數是(-T0~5),最快的掃描速度為-T5,最慢的掃描速度為-T0,實現的原理:通過設置各個端口的掃描周期,從而來控制整個掃描的時間,比如說T0各個端口的掃描周期大約為5分鐘,而T5各個端口的掃描周期為5ms,但是過快的掃描也是有缺點的,掃描的周期過快,會很容易被防火墻和IDS發現并記錄,因為防火墻大多數會將端口周期過段識別為掃描從而屏蔽掉,如果不對其進行設置的話,默認值為T4
--min-hostgroup/--max-hostgroup size 設置組的大小
--min-parallelism/--max-parellelism time指定時間內的探針數
具體的使用方法就不做介紹了,有興趣的話,可以試一試研究一下變知道怎樣使用了
在上節中還講漏了一個知識點獲取指定端口的參數(-p),這個參數的意義在于對于我們有時候只想監控某個特定的端口的狀態,這個參數是即為有用的,可以節約了不少的時間
例如:監控nmap.org的80端口的狀態
命令:nmap -p 80 nmap.org

浙公網安備 33010602011771號