Nmap使用教程(初級篇)


基本掃描技術

掃描單個網絡

nmap 192.168.1.1/www.baidu.com

掃描多個網絡/目標

nmap 192.168.1.1 192.168.1.2                #將掃描同個網段內不同的ip地址。

掃描連續的IP地址

nmap 192.168.2.1-192.168.2.100                #將掃描同個網段內不同的ip地址。
nmap 192.168.2.1/24                #nmap也可以用使用CIDR(無類別域間路由)表示法整個子網。

掃描目標列表

nmap -iL [LIST.txt]                #如果你有大量的系統進行掃描,就可以在文本文件中輸入IP地址(或主機名),並使用該文件作為輸入。

掃描隨機目標

nmap -ir [主機數]                #該-IR參數可以用來選擇隨機Internet主機進行掃描。 NMAP會隨機生成目標的指定數量,並試圖對其進行掃描。
nmap 192.168.2.1/24 -exclude 192.168.2.10                # 該-exclude選項與用於從NMAP的掃描中排除主機。

侵入性掃描

nmap -A 主機                #最常用的選項,試圖用一個簡單字母A的替代長字符串。它也會執行路由跟蹤等。

使用nmap探索

使用NMAP探索是非常有趣且對滲透測試非常有幫助。在發現過程中可以了解服務,端口號,防火牆的存在,協議,操作系統等,我們將一個接一個討論。

不進行Ping

nmap -Pn 目標                #該-Pn選項指示nmap跳過默認的發現檢查並對執行對目標的完整端口掃描。當掃描被阻止ping探針的防火牆保護的主機時,這是非常有用的。

僅進行Ping掃描

nmap -sP 目標                #選項-sP讓NMAP僅對主機進行ping。當要探測一批ip地址中哪些是可達的時候非常有用。通過指定特定的目標,你可以得到更多的信息,比如MAC地址。

TCP SYN掃描

在我們開始之前,我們必須知道SYN數據包是什么?

基本上是一個SYN包被用於啟動兩個主機之間的連接。

TCP SYN握手連接時,Ping發送一個SYN包到目標系統,並監聽響應。這種替代探索方法對被配置為阻止標准ICMP ping消息主機是有用的。

nmap -PS主機                #該-PS選項進行TCP SYN Ping。

TCP Ack Ping掃描

這種類型的掃描將只掃描確認(ACK)數據包。

nmap -PA 目標                #選項-PA對指定主機進行TCP Ack Ping掃描。

UDP Ping 掃描

nmap -PU 目標                #選項-PU對指定主機進行UDP Ack Ping掃描。

SCTP初始化Ping

nmap -PY 目標                #選項-PY指示的Nmap執行一個SCTP INIT Ping。此選項將包含一個最小的INIT塊的SCTP包。這一探索方法試圖找到使用流控制傳輸協議(SCTP)主機。 SCTP通常用於對基於IP的電話系統。

ICMP Echo ping

nmap -PE 目標                #選項-PE將對指定主機執行ICMP(互聯網控制消息協議)回顯Ping。

ICMP 時間戳 ping

nmap -PP 目標                #選項-PP執行一次ICMP時間戳ping。

ICMP 地址掩碼 ping

nmap –PM 目標                #選項-PM 進行ICMP 地址掩碼 ping.

IP 協議 Ping
一個IP協議的ping發送帶有指定的協議目標的數據包。如果沒有指定的協議,則默認的協議1(ICMP)、2(IGMP)和4(IP中的IP)的使用。

nmap -PO 目標                #選項-PO執行IP協議Ping掃描

ARP Ping掃描

nmap -PR 目標               #該-PR選項指示的Nmap對指定目標執行ARP(地址解析協議)ping操作。

掃描本地網絡時,-PR選項會自動暗中啟用。這種類型的發現是比其它Ping的方法快得多。

路由跟蹤

nmap -traceroute 目標               #選項-traceroute可被用於跟蹤的網絡路徑指定的主機。

強制反向DNS解析

nmap -r 目標               #選項-r指示的Nmap始終執行對目標IP地址的反向DNS解析。

選項-r在對一個IP段進行偵查時非常有用,Nmap將嘗試查詢每個ip地址的反向DNS信息

禁用反向DNS解析

nmap -n 目標               #選項-n用於禁用反向DNS解析

反向dns解析會很明顯的減慢Nmap掃描的過程。使用-n選項大大降低了掃描時間,尤其是掃描大量主機的時候。如果你不關心目標系統的DNS信息,並願意執行產生更快的結果掃描此選項很有用。

選擇DNS查找方法

nmap -system-dns 目標               #選項-system-dns指示NMAP使用主機系統自帶的DNS解析器,而不是其自身內部的方法。

手動指定DNS服務器

nmap -dns-server server1 server2 目標               #選項-dns-servers用於掃描時手動指定DNS服務器進行查詢。

選項-dns-servers允許您為nmap的查詢指定一個或多個備用服務器,這對於沒有配置DNS,或者如果你想防止您的掃描查找出現在您的本地配置的DNS服務器的日志文件系統非常有用。

清單掃描

nmap -sL 目標               #選項-sL將顯示一個列表,並執行指定的IP地址反向DNS查找。

TCP SYN掃描

nmap -sS 目標               #它可以在不受防火牆限制的高速網絡每秒掃描數千個端口 。同時也是相對不顯眼的和隱蔽的,因為它永遠不會完成TCP連接。

SYN掃描是默認的且最流行的掃描選項是有一定原因的。

TCP連接掃描

nmap -sT 目標               

當SYN掃描不可用的時候,TCP連接掃描是默認的TCP掃描類型。這是在用戶不具有發送RAW數據包的特權的情況下。不是像大多數其他掃描器那樣寫原始數據包,nmap要求底層的操作系統通過發出連接系統調用來建立與目標機和端口的連接。

UDP掃描

雖然互聯網上最流行的服務運行在TCP協議,但UDP服務也是廣泛部署的。DNS,SNMP和DHCP(注冊端口53,161/162,和67/68)這三種最常見的UDP服務。因為UDP掃描通常比TCP慢和更加困難,一些安全審計員忽略這些端口。這是一個錯誤,因為UDP服務是相當普遍,攻擊者也不會忽略整個協議。

nmap -sU 目標               

選項-data-length可以用來固定長度的隨機有效載荷發送到每一個端口或(如果指定0值)來禁用有效載荷。如果返回一個ICMP端口不可達錯誤(類型3,代碼3),那么端口是關閉的。其他ICMP不可達錯誤(類型3,編碼1,2,9,10或13)標記端口過濾。有時服務會返回一個UDP包響應以證明它是開放的。如果重發后沒有收到回應,端口被列為開放或者過濾。

nmap -sU–data-length=value 目標

SCTP INIT掃描
SCTP是對TCP和UDP協議的相對較新的替代方案,結合TCP和UDP最具特色的部分,同時也增加了新的功能,如多宿主和多流。它主要被用於SS7 / SIGTRAN相關的服務,但有可能被用於其他用途。 SCTP INIT掃描SCTP相當於TCP SYN掃描。它可以在不受防火牆限制的高速網絡每秒掃描數千個端口。像SYN掃描,掃描INIT相對不顯眼的和隱蔽的,因為它永遠不會完成SCTP連接。

nmap -sY 目標

探測防火牆狀態

利用FIN掃描的方式探測防火牆的狀態。FIN掃描用於識別端口是否關閉,收到RST回復則說明該端口關閉,否則就是open或filtered狀態。

nmap -sF 目標

TCP NULL和Xmas掃描

· NULL掃描(-sN)

  不設置任何位(TCP標志標頭是0)。

 · Xmas掃描(-sX)

  設置FIN,PSH,URG和標志。

TCP ACK掃描

nmap -scanflags=value -sA 目標                #這種掃描跟其他方式不同的地方在於它沒有判斷端口的開放情況。用來繪制出防火牆規則,對哪些端口進行了保護。

該ACK掃描探測報文只具有ACK標志設置(除非您使用-scanflags)。當掃描未經過系統過濾,打開和關閉的端口都將返回一個RST包。 NMAP然后把它們標記為未過濾的,這意味着它們是ACK包可達的。

TCP 窗口掃描

nmap -sW 目標                #窗口掃描跟ACK掃描是幾乎一樣的,除了它利用某些系統的實現細節來區分端口的,而不是當返回一個RST時總是認為端口未經過濾。

TCP Maimon 掃描

nmap -sM 目標                

Maimon 掃描的名字來源於它的發現者,Uriel Maimon。他在Phrack雜志問題#49(1996年11月)中描述的技術。這種技術與NULL,FIN和Xmas掃描類似,唯一的不同之處在於探針是FIN/ ACK。

自定義的TCP掃描使用-scanflag選項

對於滲透測試,一個滲透測試人員不會使用一般的TCP掃描比如ACK、FIN等,因為這些東西可以被IDS / IPS阻斷。因此他們將通過指定“-scanflag”選項使用一些不同的技術。這也可以用於繞過防火牆。

該-scanflags的參數可以是一個數字標記值如9(PSH和FIN),但使用符號名稱更容易。只是URG,ACK,PSH,RST,SYN和FIN的任意組合。例如,-scanflags URGACKPSHRSTSYNFIN所有設置,雖然掃描時不是非常有用的。

nmap –scanflags 目標                

SCTP COOKIE ECHO掃描

SCTP COOKIE ECHO掃描是一種更先進的SCTP掃描。SCTP會默認丟棄開放端口返回的包含COOKIE ECHO數據包塊,但如果端口關閉則發送中止。這種掃描方式優點是,它並不像INIT掃描一樣明顯。除此之外,無狀態防火牆會阻斷INIT塊而不是COOKIE ECHO塊。但一個優秀的IDS仍能夠探測到SCTP COOKIE ECHO掃描SCTP COOKIE ECHO掃描的缺點是無法區分開放和過濾的端口。

nmap -sZ 目標                

TCP空閑掃描

這種先進的掃描方法允許對目標進行一個真正的盲目TCP端口掃描(即沒有數據包從你的真實IP地址發送到目標)。相反獨特的側信道攻擊利用僵屍主機上可預測的IP分段ID序列生成來收集關於目標的開放端口的信息。IDS系統只會顯示掃描是從您指定的僵屍機發起。這在進行MITM(中間人攻擊)非常有用的。

nmap -sI zombie 目標               #選項-sL將顯示一個列表,並執行指定的IP地址反向DNS查找。

這里簡單介紹下空閑的原理:

1、向僵屍主機發送SYN/ACK數據包,獲得帶有分片ID(IPID)的RST報文。 

2、發送使用僵屍主機IP地址的偽數據包給目標主機。 如果目標主機端口關閉,就會向僵屍主機響應RST報文。如果目標端口開放,目標主機向僵屍主機響應SYN/ACK報文,僵屍主機發現這個非法連接響應,並向目標主機發送RST報文,此時IPID號開始增長。 

3、通過向僵屍主機發送另一個SYN/ACK報文以退出上述循環並檢查僵屍主機RST報文中的IPID是否每次增長2,同時目標主機的RST每次增長1。 重復上述步驟直到檢測完所有的端口。

接下來是進行空閑掃描的步驟:
1、尋找合適的僵屍主機

一個常見的方法就是在NMAP下執行Ping掃描一些網絡。你可以選擇NMAP提供的隨機IP選項(-iR),但是這很有可能造成與Zombie主機之間的大量延遲。

在Zombie主機候選列表中執行一個端口掃描以及操作系統識別(-o)比簡單的使用Ping命令篩選更容易找尋到合適的。只要啟動了詳細模式(-v),操作系統檢測通常會確定IP ID增長方法,然后返回“IP ID Sequence Generation: Incremental”。如果這個類型被作為增長或是破損的低字節序增長量,那么該機是不錯的僵屍主機備選。

還有一種方法是對運行ipidseq NSE腳本。該腳本探測一台主機的IP ID生成方法並進行分類,然后就像操作系統檢測一樣輸出IP ID分級。

NMAP --script ipidseq [ --script-args probeport=port] 目標

我們也可以使用hping用於發現僵屍主機。

首先選擇使用Hping3發送數據包,並觀察ID號是不是逐一增加,那么該主機就是空閑的。如果ID號隨意增加,那么主機實際上不是空閑的,或者主機的操作系統沒有可預測的IP ID。

hping3 -s 目標

發送偽造SYN包到你指定的目標主機上的端口。

hping3 -spoof 僵屍主機 -S p 22 目標

正如你所看到的,沒有任何反應,這表明數據包100%的丟失。這意味着我們並沒有發現僵屍主機。同時我們將檢查確認以下的步驟。

hping3 -S 目標                #檢查PID值是否逐一增加

2、使用NMAP進行攻擊

NMAP -Pn -p- -sI 僵屍主機 目標

首先我們用NMAP掃描僵屍主機的端口:

發現僵屍主機22端口是關閉着的。

我們指定利用僵屍主機的22端口進行空閑掃描,結果顯而易見,無法攻擊目標。

默認情況下,NMAP的偽造探針使用僵屍主機的80端口作為源端口。您可以通過附加一個冒號和端口號僵屍名選擇一個不同的端口(例如www.baidu.com:90)。所選擇的端口必須不能被攻擊者或目標過濾。僵屍主機的SYN掃描會顯示端口的開放狀態。

這里解釋下參數的含義:

-Pn:防止NMAP的發送初始數據包到目標機器。

-p-:將掃描所有65535個端口。

-sI:用於閑置掃描和發送數據包欺騙。

TCP空閑掃描

作為一個滲透測試人員,我們必須明白nmap TCP空閑掃描的內部運行原理,然后用我們自己的方法來實現同樣的事情。為此,我們將使用NMAP的數據包跟蹤選項。

nmap -sI 僵屍主機:113 -Pn -p20-80,110-180 -r - packet-trace -v 目標                #-Pn是隱身的必要,否則ping數據包會用攻擊者的真實地址發送到目標。未指定-sV選項是因為服務識別也將暴露真實地址。 -r選項(關閉端口隨機化)讓這個例子運行起來更簡單。

nmap首先通過發送6個 SYN / ACK數據包並分析響應,測試僵屍主機的IP ID序列生成。在這里R表示復位包,意味該端口不可達。

正如我之前說的,成功的攻擊需要選擇一個合適的僵屍主機端口。

TCP空閑掃描原理:

眾所周知,空閑掃描允許完全盲端口掃描。 攻擊者實際上可以掃描目標,而無需從自己的IP地址向目標發送單個數據包! 取而代之的是,旁道攻擊可以使掃描從無辜的“僵屍主機”反彈。 入侵檢測系統(IDS)的報告會將無辜的僵屍指為攻擊者。 除了非常隱秘之外,此掃描類型還允許發現機器之間基於IP的信任關系。

盡管空閑掃描比到目前為止討論的任何技術都復雜,但可以歸納出如下基本特點:

  確定TCP端口是否打開的一種方法是將SYN(會話建立)數據包發送到該端口。 如果端口打開,則目標計算機將以SYN / ACK(會話請求確認)數據包進行響應,如果端口是關閉的,則將以RST(重置)數據包進行響應。 這是前面討論的SYN掃描的基礎。

  收到未經請求的SYN / ACK數據包的計算機將以RST響應。 未經請求的RST將被忽略。

  Internet上的每個IP數據包都有一個片段標識號(IP ID)。 由於許多操作系統只是為它們發送的每個數據包增加該數字,因此探測IPID可以告訴攻擊者自上次探測以來已發送了多少個數據包。

通過組合這些特征,可以在偽造您的身份的同時掃描目標網絡,以使它看起來像是無辜的僵屍機器進行的掃描。

空閑掃描步驟

從根本上說,空閑掃描包括三個步驟,每個端口都重復進行以下操作:

 探測僵屍主機的IP ID並記錄下來。

 偽造來自僵屍主機的SYN數據包,並將其發送到目標上的所要探測的端口。 根據端口狀態,目標的反應可能會或着不會導致僵屍主機的SYN數據包的IP ID增加。

 再次探測僵屍主機的IP ID。 然后,通過將此新IP ID與步驟1中記錄的IP ID進行比較,來確定目標端口狀態。

在此過程之后,僵屍主機的IP ID應該增加一到兩個。增加1表示僵屍主機除了向攻擊者的探測回復外沒有發送任何數據包。缺少發送的數據包意味着端口未打開(目標必須向僵屍發送了RST數據包,該數據包被忽略,或者什么都沒有發送)。增加兩個表示僵屍在兩個探測器之間發送了一個數據包。這個額外的數據包通常意味着端口是開放的(目標可能會響應偽造的SYN數據包而向僵屍主機發送SYN / ACK數據包,從而導致了僵屍主機發送了RST數據包)。大於2的增量通常表示惡意僵屍主機。它可能沒有可預測的IP ID號,或者可能參與了與空閑掃描無關的通信。

即使已關閉的端口的情況與過濾的端口稍有不同,但攻擊者在兩種情況下的測量結果相同,即IP ID增加1。*因此,空閑掃描無法區分關閉並過濾端口。 * Nmap記錄IP ID增加1時,表示端口已關閉或者已過濾。

對於那些想要了解更多細節的人,以下三個圖准確顯示了在打開,關閉和過濾端口的三種情況下發生的情況。


圖1 空閑掃描開放端口

圖2 空閑掃描關閉端口

圖3 空閑掃描過濾端口

TCP空閑掃描是真正的隱身掃描。 Nmap提供了誘餌掃描(-D)來幫助用戶屏蔽其身份,但是(不同於空閑掃描)攻擊者仍然需要攻擊者從其真實IP地址向目標發送一些數據包,以獲取掃描結果。 空閑掃描的一個結果是,入侵檢測系統通常會發送警報,聲稱僵屍計算機已對其發起了掃描。

尋找在進行空閑掃描的僵屍主機

執行IP ID空閑掃描的第一步是找到合適的僵屍。它需要在全局(而不是與其通信的每個主機)的基礎上遞增地分配IP ID數據包。它應該是空閑的(因此具有掃描名稱),因為無關的流量會增加其IP ID序列,從而混淆掃描的邏輯。

嘗試進行空閑掃描時,Nmap會測試建議的僵屍並報告其任何問題。如果一個不起作用,請嘗試另一個。僵屍候選人並不難找到足夠的互聯網主機。由於主機需要處於空閑狀態,因此選擇知名主機(例如www.yahoo.com或google.com)幾乎是行不通的。我們不僅在上圖中選擇了打印機圖標來代表僵屍主機,還有其他簡單有趣的網絡設備通常會成為巨大的僵屍,因為它們通常都未被充分利用(閑置),並且內置了簡單的網絡堆棧,容易受到IP ID流量檢測的攻擊。

一種常見的方法是簡單地執行某些網絡的Nmap ping掃描。您可以使用Nmap的隨機IP選擇模式(-iR),但是這很可能會導致遙遠的僵屍出現大量延遲。選擇靠近您的源地址或目標位置的網絡會產生更好的結果。您可以嘗試從ping掃描結果中使用每個可用主機進行TCP空閑掃描,直到找到一個有效的主機為止。

在候選的僵屍網絡上執行端口掃描和OS標識(-O)而不是僅執行ping掃描有助於選擇一個好的僵屍。只要啟用了詳細模式(-v),OS檢測通常就會確定IP ID序列生成方法並打印一行,例如“ IP ID序列生成:增量”。如果將類型指定為“增量”或“小尾數遞增”,則該機器是不錯的僵屍候選對象。這仍然不能保證它會正常工作,因為Solaris和其他一些系統會為與它們通信的每個主機創建一個新的IP ID序列。主機也可能太忙。操作系統檢測和開放端口列表還可以幫助識別可能處於空閑狀態的系統。

識別僵屍候選者的另一種方法是針對主機運行ipidseq NSE腳本。該腳本探測主機以對其IP ID生成方法進行分類,然后像操作系統檢測一樣打印IP ID分類。像大多數NSE腳本一樣,ipidseq.nse可以針對許多主機並行運行,這使得它在掃描整個網絡以尋找合適的主機時成為另一個不錯的選擇。

雖然確定合適的僵屍需要一些初步工作,但您可以繼續重復使用那些好的僵屍。

執行空閑掃描

一旦找到合適的僵屍,進行掃描就很容易了。 只需將僵屍主機名指定給-sI選項,其余的由Nmap完成。 例5.19展示了Ereet通過在名為Kiosk的Adobe機器上啟動空閑掃描來掃描美國唱片業協會的示例。

針對RIAA的空閑掃描

從上面的掃描中,我們了解到RIAA不太注重安全性(請注意開放的端口PC anywhere等端口)。 由於它們顯然沒有防火牆,因此它們不太可能具有IDS。 但是,如果這樣做,它將顯示kiosk.adobe.com作為第一掃描者。 -Pn選項可防止Nmap將初始ping數據包發送到RIAA計算機。 不加-Pn ,則會泄露真實地址。 由於指定了-p-來掃描所有端口(1-65535),因此掃描花費了很長時間。 由於該地址(kiosk.adobe.com)已被移除,請勿嘗試使用該地址進行掃描。

默認情況下,Nmap將僵屍網絡的源端口80偽裝為目標探針。 我們可以通過在所用的僵屍網絡后附加冒號和端口號來選擇其他端口(例如-sI kiosk.adobe.com:113)。所選端口必須不得被攻擊者機器或目標機所過濾的。

IP協議掃描

nmap -sO 目標                #IP協議掃描可以讓您確定哪些IP協議(TCP,ICMP,IGMP等)是目標機器的支持。

這不是技術上的端口掃描,因為只是IP協議號的循環而不是TCP或UDP端口號。

FTP彈跳掃描

nmap –b ftp rely host                #這允許用戶連接到一個FTP服務器,然后文件被發送到目標主機

NMAP會發送文件到你指定的目標主機上的端口,通過錯誤消息判斷該端口的狀態。
這是繞過防火牆的好方法,因為相對於互聯網上的主機,公司或組織的FTP服務器經常被放置在可被內網訪問的范圍中。它的格式為 : @ : 是一個脆弱的FTP服務器的名稱或IP地址。

FTP彈跳掃描

nmap –b ftp rely host                #這允許用戶連接到一個FTP服務器,然后文件被發送到目標主機

如使用用戶名“username”,密碼為“password”的FTP服務器“FTP server.tld”,ftp端口則是21,用於掃描的文件是服務器上的victim.tld。

nmap -T0-b username:password@ftpserver.tld:21 victim.tld

如果FTP服務器支持匿名登錄,就不用填寫“username:password@”部分。如果FTP端口是默認的21,也可以省略不寫,但如果FTP端口是21之外的必須得指明。

端口規范和掃描順序

除了所有的前面討論的掃描方法,NMAP提供選項用於指定被掃描的端口和掃描順序是隨機的或順序的。默認情況下NMAP掃描最常見的1000個端口。

-p<端口范圍>(只掃描指定的端口)

此選項指定要掃描的端口范圍,並覆蓋默認。單個端口號也行,因為是用連字符(例如1-1023)分割范圍。范圍的起始或結束可以被省略,NMAP會分別使用1和65535。所以你可以指定-p-,相當於從1到65535進行掃描。

nmap -p1-1023 目標

也可以指定用於端口掃描的協議類型,比如T代表TCP,U代表UDP,S代表SCTP,P代表IP。

nmap -p U:53,111,137,T:21-25,80,139,8080 目標

-F(快速(有限的端口)掃描)

指定比默認情況下更少的端口數。

nmap -F 目標                #通常情況下的NMAP掃描每個掃描協議中最常見的1000個端口。用-F將會減少到100個。

-r(不要隨機端口)

默認情況下NMAP會隨機掃描端口,但您可以指定-r為順序(從最低到最高排序)端口掃描來代替。

nmap -r 目標              

在接下來的部分,我們將使用NMAP繞過防火牆,創建自定義利用程序。
眾所周知NMAP是經常用來進行端口發現、端口識別。除此之外我們還可以通過NMAP的NSE腳本做很多事情,比如郵件指紋識別,檢索WHOIS記錄,使用UDP服務等。

獲取Whois記錄信息

WHOIS記錄通常包含如注冊人的姓名和聯系方式的重要數據。雖然這里有很多工具可以查詢WHOIS協議,但NMAP的證明了自身的優秀,因為它能夠批量處理IP范圍和主機列表。

nmap --script whois 目標

參數--script whois告訴NMAP去查詢區域互聯網注冊管理機構WHOIS數據庫,來獲得目標的whois記錄。這個腳本使用IANA分配的數據選擇RIR並在本地緩存結果。或者我們可以覆蓋這一行為,指定whois數據庫的提供商並依次查詢。

nmap --script whois --script-args whois.whodb=arin+ripe+afrinic <目標>

腳本將會按順序在WHOIS提供商中查詢記錄或者推薦記錄,要忽略推薦記錄請指定參數值nofollow。

nmap --script whois --script-args whois.whodb=nofollow <目標>

要批量查詢的主機名列表(-iL <文件名>)的WHOIS記錄而不啟用端口掃描(-sn)。

nmap -sn –script whois -v -iL hosts.txt                 #(hosts.txt包含主機或者ip的列表)

有時候whois查詢返回的是緩存的結果而不是最新的,可以指定參數禁止查詢緩存。

nmap -sn --script whois -script-args whois.whodb=nocache scanme. Nmap.org                #禁用whois緩存

檢查主機是否有惡意行為

NMAP通過調用谷歌安全瀏覽服務API來檢查主機是否進行惡意軟件分發或者網絡釣魚攻擊的行為。
使用腳本http-google-malware之前,先獲取谷歌安全瀏覽服務API的密鑰:https://developers.google.com/safe-browsing/key_signup?csw=1

nmap -p80 --script http-google-malware -v scanme.Nmap.org

收集有效的郵箱

收集郵箱對滲透測試非常有用,我們可以對這些郵箱進行釣魚工具或者暴力破解攻擊。NMAP可以進行郵箱的收集,但是腳本http-google-email不在NMAP的官方資料庫中,我們需要手動下載https://seclists.org/nmap-dev/2011/q3/att-401/http-google-email.nse,並把它復制到本地腳本目錄。

nmap -p80 --script http-google-email <目標>

注:我們可以手動更新腳本數據庫:

nmap -script-updatedb
nse腳本參數

選項–script-args是用於設置NSE腳本的參數。例如:

nmap -sV --script http-title --script-args http.useragent=”Mozilla 999 ” <目標>                #此命令設置了參數useragent的值。

猜測操作系統
如果NMAP無法確定操作系統類型,通過選項–osscan-guess強制識別os。

nmap -O –osscan-guess 目標

它將列出的NMAP腳本數據庫操作系統的所有可能的匹配。–fuzzy可以用作–osscan-guess的快捷方式。

如果目標至少有一個開放和一個關閉的TCP端口那么操作系統的類型識別會比較有效。選項–osscan-limit將會使NMAP不對沒有滿足這個要求的目標進行操作系統的識別。這樣可以節省大量的時間,尤其是在對許多主機-Pn掃描。它只與選項-O或者-A搭配使用。

執行RPC掃描

選項-sR對目標進行RPC(遠程過程調用)掃描

nmap -sR 目標

上述-sR掃描的輸出顯示有關目標系統上運行的RPC服務的信息。RPC與Unix和Linux系統上的NFS(網絡文件系統)服務關系很緊密。

Nmap掃描使用-hostmap選項

此hostmap腳本基於第三方服務,而官方版本只支持BFK的DNS歷史記錄。正如我前面所說的,下載腳本https://svn.nmap.org/nmap/scripts/hostmap-bfk.nse並更新nmap的腳本數據庫,然后執行命令:

nmap -p80 –script hostmap Nmap.org

這些參數–script hostmap -p80告訴Nmap的啟動HTTP版的hostmap腳本,並限制只掃描80端口以加快這一任務。

該hostmap.nse查詢兩個不同的Web服務:BFK DNS記錄和ip2hosts.com。 BFK DNS記錄是一項免費服務,從公共DNS數據和ip2hosts收集其信息。這兩項服務都是免費的,濫用他們將很有可能讓你禁止使用該服務。

可以設定參數指定不同的搜索引擎。

nmap -p80 –script hostmap –script-args hostmap.provider=BING  <目標>

nmap -p80 –script hostmap –script-args hostmap.provider=BFK  <目標>

nmap -p80 –script hostmap –script-args hostmap.provider=ALL  <目標>

為了保存掃描每個IP的主機名,使用參數hostmap.prefix。設置此參數將在我們的工作目錄下創建一個<前綴><目標>文件名的文件:

nmap -p80 –script hostmap-script-ARGS hostmap.prefix=hostfile <目標>

暴力破解DNS記錄

這是用於試圖通過暴力枚舉DNS主機名猜測常見的子域。指定DNS-brute.srv,dns-bruter也將嘗試列舉常見的DNS SRV記錄。

Nmap的時間選項

作為一個滲透測試人員,我們通常會在NMAP上設置時間選項,但我們必須得了解時間選項是什么,為什么要設置這個選項?

我們使用NMAP的時候經常會遇到防火牆,這些防火牆會阻礙某些請求。我們會根據需求設置時間選項以加快或減慢NMAP的掃描速度。

當在快速網絡中(比如內網)掃描大量的主機時,我們可能需要增加並行操作的數量以便更快的獲得結果。另外在掃描速度慢的網絡時(或在互聯網上),你可能需要減慢掃描速度以獲得更准確的結果,或者逃避入侵檢測系統。下面是一些nmap的時間選項。

時間參數

默認情況下我們掃描使用的Nmap是在幾秒鍾內開始掃描。但是我們可以通過設置時間參數進一步提高性能。NMAP支持下列的時間格式:

M-分鍾

S-秒

MS-毫秒

H-小時

有時如何選擇時間參數可能會讓人感到困惑,我們將設置多少時間用於掃描。要解決這些問題,NMAP的提供了如下多種掃描時序選項。

Nmap -T[0-5] 目標
選項0:

這是一個非常緩慢的掃描選項,以便防火牆或IDS不會阻斷該請求

Nmap -T0 目標
選項1:

比選項0稍微快一點點的掃描速度,用於繞過防火牆和IDS。

nmap -T1 目標

雖然T0和T1對於避免IDS報警非常有用,但它們將會花非常多的時間來掃描數千個端口或者服務器。

選項2:

比較“禮貌”的選項,占用較少的帶寬以及目標計算機的資源。

nmap -T2 目標
選項3:

常規的掃描速度和資源占用。

Nmap -T3 目標                #nmap的默認選項
選項4和5:

在T4和T5是一個非常快速和侵略性的掃描。假設在一個相當快速和可靠的網絡中,T4可以加速掃描。T5則是在此基礎之上犧牲了准確性。

nmap -T4/-T5 目標

Nmap的並行選項:

作為一個滲透測試人員,我們不應該通過一個接一個的掃描浪費我們的時間。相反,我們可以通過並行掃描來優化。NMAP將目標IP段進行分組,然后在一次掃描一個組。一般情況下較大的分組是更有效的。缺點直到整個分組完成才能知道目標主機的情況。

並行處理有兩個選項:最大值和最小值。

最小值

Nmap –min-parallelism [數量] [目標]                #選項–min-parallelism用於指定並行端口掃描操作的最小數量。

手動設置–min-parallelism選項可能會提升掃描性能,設置過高可能會產生不准確的結果。

最大值

Nmap –max-parallelism [數量] [目標]                #選項–max-parallelism用於指定並行端口掃描操作的最大數量。

Nmap主機分組大小選項:

nmap也可以設置主機分組的最大值和最小值。

最大值

Nmap –max-hostgroup [數目] [目標]                #選項–max-hostgroup用於指定的Nmap並行掃描主機數的最大值。

最小值

Nmap –min-hostgroup [數目] [目標]                #選項–min-hostgroup用於指定的Nmap並行掃描主機數的最小值。

在掃描一個IP段或整個子網時NMAP將並行掃描多個目標以節省時間。默認情況下,基於掃描類型和網絡條件Nmap會自動調整正在執行的主機組的大小。通過指定–min-hostgroup選項,Nmap嘗試保持主機組的大小為指定值。
設置最大值會有效避免網絡擁堵和避免網內安全設備的告警。

參考鏈接:
https://nmap.org/book/idlescan.html
http://www.nmap.com.cn/doc/manual.shtm
https://seclists.org/nmap-dev/
https://svn.nmap.org/nmap/


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM