天天看點

nmap操作說明之nmap進階用法Nmap進階用法

Nmap進階用法

Nmap 腳本引擎

Nmap Scripting Engine(NSE) 是 Nmap 非常重要的特性,它允許使用者使用 Lua 語言編寫簡單的腳本程式來實作各種網絡管理任務的自動化運作。目前 Nmap 已提供超過 150 個腳本,可以在 https://nmap.org/nsedoc/ 檢視和下載下傳這些腳本,或者在本地 Nmap 安裝目錄下的 scripts 目錄中檢視這些腳本,或者編寫 Lua 程式定制腳本。

nmap腳本主要分為以下幾類,在掃描時可根據需要設定–script=類别這種方式進行比較籠統的掃描:

類别 解釋
auth 負責處理鑒權證書(繞開鑒權)的腳本
broadcast 在區域網路内探查更多服務開啟狀況,如dhcp/dns/sqlserver等服務
brute 提供暴力破解方式,針對常見的應用如http/snmp等
default 使用-sC或-A選項掃描時候預設的腳本,提供基本腳本掃描能力
discovery 對網絡進行更多的資訊,如SMB枚舉、SNMP查詢等
dos 用于進行拒絕服務攻擊
exploit 利用已知的漏洞入侵系統
external 利用第三方的資料庫或資源,例如進行whois解析
fuzzer 模糊測試的腳本,發送異常的包到目标機,探測出潛在漏洞 intrusive:入侵性的腳本,此類腳本可能引發對方的IDS/IPS的記錄或屏蔽
malware 探測目标機是否感染了病毒、開啟了後門等資訊
safe 此類與intrusive相反,屬于安全性腳本
version 負責增強服務與版本掃描(Version Detection)功能的腳本
vuln 負責檢查目标機是否有常見的漏洞(Vulnerability),如是否有MS08_067

nmap的腳本預設目錄為:/usr/share/nmap/scripts/

掃描優化

選項 解釋
–min-hostgroup 調整并行掃描組的大小
–min-parallelism 調整探測封包的并行度
–max-parallenlism 調整探測封包的并行度
–min-rtt-timeout 調整探測封包逾時
–max-rtt-timeout 調整探測封包逾時
–initial-rtt-timeout 調整探測封包逾時
–host-timeout 放棄低速目标主機
–scan-delay 調整探測封包的時間間隔
–max-scan-delay 調整探測封包的時間間隔

調整并行掃描組的大小

Nmap預設情況下在進行掃描的時候,首先開始掃描較小的組,最小為5,随後慢慢增長組的大小,最大為1024,為了保證效率,Nmap會針對UDP或少量端口的TCP掃描。

–max-hostgroup選項用于說明使用最大的組,Nmap不會超過這個大小。–min-hostgroup選項說明最小的組,Nmap會保持組大于這個值。

nmap  --min-hostgroup  30  192.168.0.12/24
nmap  --max-hostgroup  10  192.168.0.12/24
           

調整探測封包的并行度

–min-parallelism大于1可以在網絡或主機不好的情況下更好地掃描,但會影響準确度。–max-parallelism應該設定為1,防止Nmap對同一主機同一時間發送多次封包。

nmap --min-parallelism 100 192.168.0.12/24
nmap --max-parallelism 100 192.168.0.12
           

調整探測封包逾時

使用–max-rtt-timeout選項時,規定100毫秒比較合适。一般情況下,rtt值不得小于100毫秒,也最好不要超過1000毫秒。

namp --initial-rtt-timeout 1000ms 192.168.0.12
nmap --max-rtt-timeout 500ms 192.168.0.12
nmap --min-rtt-timeout 500ms 192.168.0.12
           

放棄緩慢的目标主機

nmap --host-timeout 100ms 192.168.0.12/24
           

調整封包适合時間間隔

改選項可以控制Nmap對一個或多個主機發送探測封包的等待時間,等待時間以毫秒為機關,很多時候Nmap會發送很多不必要的封包,會時Nmap運作速度降低。當我們的帶寬不是很樂觀的情況下可以使用該選項,但此選項并不能将Nmap應有的性能發揮出來,對于這個選項還是需要謹慎使用。

nmap --scan-delay ls 192.168.0.12
nmap--max-scan-delay 30s 192.168.0.12
           

防火牆/IDS逃逸

選項 解釋
-f 封包分段
–mtu 指定偏移大小
-D IP欺騙
-sI 源位址欺騙
–source-port 源端口欺騙
–data-length 指定發包長度
–randomize-hosts 目标主機随機排序
–spoof-mac MAC位址欺騙

封包分段

在Nmap使用-f選項時會将TCP頭分段在幾個包中,使得包過濾器、IDS以及其他工具的檢測更加困難。Nmap在IP頭後會将包分為8個位元組或更小。

一些主機會禁止相應ICMP請求,對于這種情況就可以使用封包分段的方法來逃避目标防火牆的規則。

nmap  -f  -v  192.168.121.1
           

指定偏移大小

此值設定TCP/IP協定傳輸資料報時的最大傳輸單元。使用指定MTU可以達到逃逸防火牆/IDS的目的,需要注意的是偏移量必須是8的倍數。

nmap  --mtu  16  192.168.126.131
           

IP欺騙

在使用該選項對目标進行掃描的時候,會讓目标主機誤認為是在利用誘餌進行掃描,而不是一個真實的掃描,這樣可以躲避防火牆和某些規則的限制,也可以達到隐藏自身的目的,這在實際的掃描中是非常有用的一個選項。

可以使用英文的逗号對每個誘餌主機進行分割,當然也要領會目标主機管理者的想法,他可能會認為該掃描使用的是誘餌主機進行的掃描,而不是真實的掃描位址,是以會忽略這次掃描,反而可以使用自己的真實IP去進行掃描,會達到欺騙目标主機管理者的目的,這樣做時最好與誘餌主機交叉使用。

IP欺騙文法如下:

Nmap -D【decoy1,decoy2…|RND:number】【目标】
           

使用-D選項可以指定多個IP位址,或使用RND随機生成幾個位址,在指定的誘餌之間使用逗号進行分割,需注意的是在進行版本檢測或者TCP掃描的時候誘餌是無效的。

nmap -D RND:11 192.168.126.131
nmap -D 192.168.0.1,192.168.0.2,192.168.0.254 192.168.121.1
nmap -D 192.168.0.1,192.168.0.2,192.168.0.254,ME  192.168.121.1
           

注意:誘餌主機必須處于工作狀态,否則會導緻目标主機的syn洪水攻擊。

源位址欺騙

使用-sI可以進行源位址欺騙,如果Nmap無法确定你的源位址,Nmap會給出相應的提示,我們使用該選項指定所需要發包的接口IP位址。

nmap  -sI  www.oday.co:80  192.168.126.131
           

源端口欺騙

使用–source-port選項就可以進行源端口欺騙,也可以使用-g,我們隻需提供一個端口号,Nmap就可以從這些端口中發送資料,因為防火牆對伺服器的設定會根據端口選擇是否信任資料流,管理者可能會認為這些端口不會有攻擊發生,可以利用這些端口進行掃描。

nmap  --source-port  53 192.168.126.131
           

指定發包長度

通常情況下,TCP包時40個位元組,ICMP Echo 有28個位元組,是以在原來的封包基礎上附加随機資料達到規避防火牆的效果。

nmap  --data-length 30 192.168.126.131
           

目标主機随機排序

使用–randomize-hosts選項就可以對目标主機的順序進行随機排序,最多可達8096個主機。單方面使用這個選項對防火牆/IDS逃逸效果不大,如果配合時間選項則會有很好的效果。

nmap  -randomize-hosts 192.168.126.1-200
           

MAC位址欺騙

使用–spoof-mac選項就可以進行MAC欺騙。冒失的指定一個MAC定制反而會引起管理者的懷疑,這時我們可以使用字元串“0”随機配置設定一個MAC位址。指定的MAC位址最好真實存在,這樣才能起到欺騙效果。

–spoof-mac選項可以使用 的參數包括0、MAC Address、Vendor Name。0表示随機生成一個MAC位址,MAC Address表示使用者手動指定一個MAC位址,Vendor Name表示從指定的廠商生成一個MAC位址。

nmap -sT -PN --spoof-mac 0 192.126.131

           

Nmap技巧

nmap中不常用但是卻非常有用的選項。

選項 解釋
–send-eth 發送以太網資料包
–send-ip 網絡層發送
–privileged 假定擁有所有權
–interactive 在互動模式中啟動
-d 設定調試級别
–packet-trace 跟蹤發送接受的封包
-iflist 列舉接口和路由
-e 指定網絡接口
-oG 繼續中斷掃描
firewalk 探測防火牆
vmauthd-brute VM認證破解

發送以太網資料包

該選項會要求Nmap在資料鍊路層發送封包,而不是在網絡層發送封包。注意:在UNIX中無論是否使用該選項,Nmap都會使用原IP包。

nmap  --send-eth  192.168.126.131
           

網絡層發送

該選項要去Nmap通過網絡層發送封包,而不是在資料鍊路層發送封包,這個選項與–send-eth選項在實際運用中互相補充。

nmap  --send-ip  192.168.126.131
           

假定擁有所有權

–privileged選項要求Nmap假定其具有足夠的權限進行源套接字包發送、封包捕獲和類似UNIX系統中根使用者操作的權限。預設狀态下,如果由getuid()請求的類似操作不為0,Nmap将退出。

–pricileged在具有Linux核心性能的類似系統中使用非常有效,這些系統配置允許非特權使用者可以進行原封包掃描。需要明确的是,其他選項之前使用這些西藥權限的選項(SYN掃描、作業系統檢測等)。Nmap-PRIVILEGED變量設定等價于–privileged選項。

在互動模式中啟動

Nmap提供互動模式,便于進行多個掃描。如果使用這個選項,需要對shell終端的指令足夠熟悉。

nmap  --interactive 
n  -T4  192.168.126.163
           

設定調試級别

當詳細模式也不能為問提供充足的資料時,可以啟用-d選項,在-d選項後面填入輸入表示調試級别可選1~9,-d 9 是最高階别,這時候産生的資料會非常多。

nmap  -d  1  192.168.126.131
           

跟蹤發送接受的封包

該選項經常用于調試,而不是實際運用到掃描網絡。該選項會要求Nmap将接收到的每個封包列印出來。未來便于分析,可以使用-p選項控制端口而産生少量的封包,便于我們分析。

nmap  --packet-trace  -p  20-30  192.168.126.131
           

列舉接口和路由

該選項會告訴Nmap列印出檢測到的接口清單和路由,多用于調試路由。

nmap  --iflist www.0day.co
           

指定網絡接口

-e選項可以指定從哪個網絡接口發送資料。

nmap -e eth0 192.168.126.131
           

繼續中斷掃描

在使用Nmap掃描網絡的時候可能會需要很長的時間,但是我們可能需要在多個時間的進行掃描,或者由于其他的原因導緻網絡中斷時,我們可以使用–resume選項繼續掃描,但是必須配合-oN選項或者-oG選項使用。

我們使用-oG将掃描結果儲存為TXT,然後在掃描過程中按下Ctrl+C中斷掃描。

nmap  -oG 1.txt -v 192.168.126.1/24
nmap  --resume 1.txt
           

Nmap的分布式實作-Dnmap

Dnmap是一款基于Nmap的分布式架構,使用用戶端/伺服器架構,伺服器接受指令并發送至用戶端進行Nmap安全掃描,掃描完畢後,用戶端傳回掃描結果。

首先再http://sourceforge.net/projects/dnmap/下載下傳Dnmap。

下載下傳安裝好之後

建立一個檔案,寫入需要掃描的指令,每行一條,如下所示:

啟動Dnmap服務。-f選項指定我們的指令檔案。

./dnmap_server.py  -f  /home/test
           

重新打開一個終端,讓Dnmap連結伺服器。

./dnmap_client.py -s 192.168.126.130 -a test 
           

此時兩個Dnmap的視窗資料會不斷滾動直到掃描完成。

在nmap_output檔案夾下面有Dnmap儲存的掃描結果。

探測防火牆

在Nmap的firewalk腳本通過發送一個請求并分析TTL值,可以探測防火牆的規則。

nmap  --script=firewalk  --traceroute 192.168.131.1
           

VMWare認證破解

Nmap中的vmauthd-brute腳本可以破解安裝虛拟機系統的使用者名與密碼。

nmap -p 902 --script vmauthd-brute 192.168.121.1