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