天天看點

Nmap、Zmap、Masscan

網絡掃描是資訊收集的重要手段。通過掃描可以發現存活主機、開放端口,進而發現其運作的服務、作業系統等資訊,為下一步的工作奠定基礎。掃描工具的選取尤為重要。目前,有不少掃描工具可供選擇,且各有特色。其中,Nmap以其強大而豐富的功能被絕大部分人所使用。除此之外,号稱“45分鐘掃描全網”的Zmap以及“6分鐘掃描全網”的Masscan也有着較高的使用率。接下來,本文将對Nmap、Zmap、Masscan這三種掃描工具進行一些比較。

Nmap可以在Linux、Windows、Mac OS下運作,并且有圖形化界面Zenmap;

Zmap、Masscan可以在Linux、Mac OS下運作,同時也可以在Windows下使用,不過要借助Cygwin等工具。

Zmap采用了無狀态的掃描技術,沒有進行完整的TCP三向交握,是以掃描速度極大提升。Zmap的基本功能是掃描發現主機的開放端口。

l  一次掃描支援單端口,不支援在指令裡設定目标IP。

l  設定黑白名單,由于Zmap設計為在全網範圍内尋找主機,若想對特定網段進行掃描,可以利用白名單的方式;

l  設定掃描數量和掃描時間;

l  設定掃描速率,由于Zmap會以網絡擴充卡支援的最快速率進行掃描,不會根據上遊流量提供商自動調整發送速率,需要手動調整,來減少丢包和不正确的結果。可以通過設定每秒發包數量或帶寬進行調整;

l  設定掃描源端口、源IP,僞造網關MAC位址進行僞裝。

l  結果輸出預設csv格式,經過額外的配置可輸出redis和JSON;使用者也可以用官方提供的API自己編寫輸出子產品。

l  掃描模式,支援TCPSYN、ICMP echo、UDP三種掃描模式,使用者也可以用官方提供的API自己編寫探測子產品。

l  Banner擷取,Zmap并不直接提供Banner擷取功能,需要編寫擴充子產品,不過開發者已經為我們提供了一個樣本。詳情見後文。

Masscan與Zmap類似,同樣采用了無狀态的掃描技術。

l  允許自定義任意的位址範圍和端口範圍;

 l  設定黑白名單;

 l  設定掃描速率;

 l  指定發包的源IP位址、源端口和源MAC位址進行僞裝。

 l  結果輸出支援xml、binary、JSON、list等多種格式。

 l  為了配合使用者的各種掃描需求,Masscan提供了重試次數、UA字段值、發出資料包的TTL值、發包後的等待時間等掃描設定。

 l  Banner擷取直接在掃描指令裡使用—banners即可。

Nmap的功能非常強大,而且作為一個廣泛使用的開源工具,全球的開發者都為其功能的豐富貢獻了力量。是以,本文僅對其功能進行簡單的描述。

        基本功能:主機發現,開放端口掃描,支援多端口、多網段,可對目标域名進行掃描;

        識别功能:識别端口服務類型及版本、作業系統、裝置類型等;

        掃描模式:TCP SYN scan、TCP connectscan、UDP scan、No Ping scan等;

        規避檢測:分片、IP僞裝、MAC僞裝。

Zmap的擴充子產品需使用C語言編寫,官方提供了兩個擴充子產品用于擷取Banner。

1.      banner-grab-tcp

       原理是向掃描發現的IP進行二次發包抓取Banner,二次發包的内容需要自定義。

2.      forge-socket

            功能與前者一樣,但需要先安裝驅動。該子產品以底層驅動方式,效率更高。

            除了以上兩個擴充子產品,使用者也可以結合需求自行編寫。

Nmap有強大的腳本引擎架構,使用者可以使用Lua語言編寫擴充。目前官方提供了400多個擴充腳本,用于增強基礎功能和擴充更多功能,如漏洞檢測、密碼爆破等。在掃描指令中使用—script=scriptname調用即可。

三種掃描工具在功能上各有長短,本文針對其最基本的端口掃描、主機發現功能進行了實驗對比。

         作業系統:CentOS 6.5    

         網絡帶寬:2000Kbps左右

本文分别編寫了三個Python腳本,執行掃描指令。選取來自美歐中非的幾個網段,在一次掃描中,針對相同網段和15個常用端口進行掃描,并将結果最後轉存到資料庫中,對比Zmap、Masscan、Nmap三種工具在相同環境下執行掃描的速度和結果數量。

網段

 

Zmap

Masscan

Nmap

144.76.183.0/24

時間

11min43s

1min27s

7min39s

結果數量

323

315

317

125.56.212.0/24

11min34s

54s

7min53s

496

129.232.174.0/24

11min24s

53s

15min55s

416

427

429

125.71.28.0/24

11min437s

50s

5min42s

47

125.65.110.0/24

11min39s

56s

4min55s

275

254

134.213.61.0/24

11min46s

37min50s

167

168

138.186.177.0/24 105.198.227.0/24     

22min34s

1min29s

2h18min47s

363

183

368 

時間方面,Zmap和Masscan掃描耗時與到掃描目标數量成正比,Zmap由于每次隻能針對一個端口進行掃描,對于15個端口的情況需要在腳本中發起15次掃描,是以耗時高于Masscan;Nmap的耗時情況并不穩定,懷疑與目标網段網絡環境有關。

結果數量方面,在對一個C段進行掃描的時候,三種工具的主機發現數量差距不大;而在對兩個C段進行掃描的實驗中,Masscan出現了明顯的遺漏。

         【Masscan Web Interface】可以導入XML檔案,讓使用者友善地搜尋掃描結果。
         【Rainmap Lite】Web版Nmap,僅需安裝Django,就可以建立新的掃描伺服器,允許使用者從他們的手機/平闆電腦/網絡浏覽器啟動Nmap掃描。          【Dracnmap】将Nmap複雜的指令進行一定程度的內建與簡化,使新使用者更加容易上手。          【LazyMap】可以自動進行Nmap掃描,并且能自動生成定制的Nessus政策。          【DNmap】Nmap的分布式版本,采用C/S結構,由伺服器接受指令分發到用戶端執行掃描。

以上三種掃描工具各有利弊,工具的選取應該結合具體情況決定。Zmap和Masscan采用了無狀态的掃描技術,掃描速度非常可觀。在資訊收集的初級階段,可以使用Zmap或Masscan進行目标的情勢了解,掃描單一端口的情況考慮使用Zmap,而多端口的情況下Masscan則更為快速。在做完初步了解之後,則應該使用功能更加豐富的Nmap進行進一步的詳細掃描。

<a href="https://github.com/robertdavidgraham/masscan">https://github.com/robertdavidgraham/masscan</a>

<a href="https://zmap.io/documentation.html">https://zmap.io/documentation.html</a>

<a href="https://nmap.org/">https://nmap.org/</a>

<a href="https://www.offensive-security.com/offsec/masscan-web-interface/">https://www.offensive-security.com/offsec/masscan-web-interface/</a>

<a href="http://www.freebuf.com/sectool/115782.html">http://www.freebuf.com/sectool/115782.html</a>

<a href="http://www.freebuf.com/sectool/117092.html">http://www.freebuf.com/sectool/117092.html</a>

<a href="http://www.freebuf.com/sectool/114701.html">http://www.freebuf.com/sectool/114701.html</a>

<a href="http://www.freebuf.com/sectool/29436.html">http://www.freebuf.com/sectool/29436.html</a>

 本文轉自 技術花妞妞 51CTO部落格,原文連結:http://blog.51cto.com/xiaogongju/2068513

繼續閱讀