Nmap配合Masscan實現高效率掃描資產

2019-06-03 105305人圍觀 ,發現 9 個不明物體 工具

之前看過不少大佬的文章,提到nmap掃描準確,并且顯示信息詳細,但是速度太慢;masscan掃描快但是不會顯示端口服務的相關信息,二者結合起來使用會有很不錯的效果。后來經@罐罐大神邀請參加了濟南defcon會議,在會上聽@硬糖大神介紹了他設計這款掃描器的思路,于是想著自己以后有空也弄一版嘗試一下??催^一些大佬們寫的工具,很多都用到了數據庫來存儲掃描結果,我第一版只想弄一款高效易用的,存儲結果就用txt保存了。

安裝配置

我用的是python2.7版,首先需要下載masscan,下載地址:https://github.com/robertdavidgraham/masscan,需要安裝編譯,安裝方法如下:

1.jpg

安裝完成后的可執行程序在masscan/bin目錄中。

代碼邏輯

程序主要的邏輯是先從文本里讀取目標ip列表,啟用多線程掃描ip列表。掃描過程是先調用masscan掃描全端口,然后調用nmap進行端口服務識別,如果是web服務,把web的url、端口及title都打印出來;如果非web,只打印ip、端口及服務名稱。

功能講解

首先從文本中讀取ip資產列表,啟用多線程掃描,這里設置的是100線程,可以自己根據情況設定:

1.jpg

然后調用masscan進行端口掃描,這里要注意masscan的發包速率設置,如果設置過大漏報率會比較高,建議設置1000-2000,我這里設的是1000。masscan掃描完后會生成一個json文件,然后從中提取相關端口信息。這里參考了硬糖大神提到的掃描時遇到防火墻的問題,就是如果在掃描過程中發現目標主機幾乎每個端口都開放,那說明很可能是有防火墻,這種情況可以設定一個端口數量閾值,超過閾值則直接跳過,掃描下一個ip(是的,目前就是跳過,就是躲開不搞的意思,以后再研究怎么硬搞),這里我設置的閾值是50:

1.jpg

接下來調用nmap識別端口對應的服務,如果識別出來是web服務則通過Title函數來識別對應的網站title信息:

3.jpg

識別網站title信息這里我首先識別了網站采用的編碼,因為如果不加識別直接按UTF-8或GBK來解碼有時候會出錯,只有識別了對應的編碼才能有針對性地解碼。另外這里之前遇到過獲取到的網站標題為空列表,這樣會報錯,雖然能在頁面打印出相關的web服務信息,但最后無法將web服務保存到掃描結果里,所以這里加了個if判斷,在標題為空的情況下也將web服務信息保存下來:

2.jpg

最后將掃描結果進行一個去重處理,打印掃描所用的時間:

6.jpg

掃描結果

掃描結果大概如下所示:

9.jpg

1.jpg

此致敬禮

整個過程都是盡量使用了一些簡單直接的方法,數據保存、去重等都沒有在數據庫層面進行操作。沒有涉及usage提示,也沒有杠這杠那的參數選項,是上來就干的這種類型。

這個是1.0版本,肯定會有諸多不足之處,后續會考慮加入一些復雜點的功能,希望大家能多批評指正。

代碼已上傳至github:https://github.com/hellogoldsnakeman/masnmapscan-V1.0

*本文作者:軒轅踏月留香,轉載請注明來自FreeBuf.COM

發表評論

已有 9 條評論

取消
Loading...
軒轅踏月留香

美人遲暮,英雄末路,本就是世間最無可奈何的悲哀

1 文章數 2 評論數

特別推薦

推薦關注

填寫個人信息

姓名
電話
郵箱
公司
行業
職位
css.php jizzz