http://zone.secevery.com/article/1098
0x00 前言
Masscan號稱最快的互聯網端口掃描器,本文來探測一下Masscan在Windows下的安裝和使用。
masscan的掃描結果類似於nmap,在內部,它更像scanrand, unicornscan, and ZMap,采用了異步傳輸的方式。它和這些掃描器最主要的區別是,它比這些掃描器更快。而且,masscan更加靈活,它允許自定義任意的地址范和端口范圍。
0x01 Windows下編譯Masscan
Masscan需要經過編譯才能生成exe文件在Windows下使用。
Masscan下載地址:
https://github.com/robertdavidgraham/masscan/
編譯工具:vs2012
編譯選項中未添加vs2012的編譯配置,所以直接編譯會報錯
解決方法:
在string_s.h中添加vs2012配置信息
位於misc-string_s.h,添加代碼如下:
如下圖
Packet.dll獲取方法:
安裝WinPcap后在System32下獲得
WinPcap下載地址:
https://www.winpcap.org/install/default.htm
在另一系統安裝WinPcap,在System32下找到Packet.dll和Wpcap.dll,復制到測試系統下masscan.exe的同級目錄,再次運行
程序正常啟動,但是無法掃描,報錯如下:
FAIL: Error opening adapter: 系統找不到指定的設備。 (20) adapter[\Device\NPF_{71D19B82-0818-4685-A8E7-A6C7C812F2EA}].init: failed
0x02 安裝WinPcap
官網下載安裝即可。
https://www.winpcap.org/install/default.htm
0x03 Masscan使用
掃描指定網段和端口:
masscan.exe -p80 192.168.81.1/24
找到一台開啟80端口的服務器,回顯如下:
Discovered open port 80/tcp on 192.168.81.143
掃描指定主機所有開放的端口:
masscan.exe -p0-65535 192.168.81.143
如下圖
掃描指定主機的特定端口:
masscan.exe -p80,443 192.168.81.143
獲取banner:
masscan.exe -p80,443,3306 192.168.81.143 --banners
通過配置文件啟動掃描:
將配置信息保存在1.conf:
masscan.exe -p80,443,3306 192.168.81.143 --banners --echo>1.conf
讀取配置信息1.conf,啟動掃描:
masscan.exe -c 1.conf
修改掃描速度為100,000包/秒(Windos下最大為 300,000包/秒),默認100包/秒:
--rate 100000
掃描結果可以以不同的格式輸出:(XML是默認格式)
-sS: 半開放掃描,不完成完整的TCP/IP連接
-Pn: 跳過主機發現
-n: 跳過DNS解析
--randomize-hosts:隨機化掃描
--send-eth:使用libpcap數據包傳輸詳細參數
<ip/range> IP地址范圍,有三種有效格式:1、單獨的IPv4地址 2、類似"10.0.0.1-10.0.0.233"的范圍地址 3、CIDR地址 類似於"0.0.0.0/0",多個目標可以用都好隔開
Nmap功能
Masscan可以像nmap許多安全人員一樣工作。這里有一些其他類似nmap的選項:
通過傳遞–nmap開關可以看到類似nmap的功能。
已經編譯后的exe文件:
參考:
https://3gstudent.github.io/3gstudent.github.io/%E6%B8%97%E9%80%8F%E6%8A%80%E5%B7%A7-Windows%E5%B9%B3%E5%8F%B0%E8%BF%90%E8%A1%8CMasscan%E5%92%8CNmap/
https://www.freebuf.com/sectool/112583.html
https://danielmiessler.com/study/masscan/
Masscan號稱最快的互聯網端口掃描器,本文來探測一下Masscan在Windows下的安裝和使用。
masscan的掃描結果類似於nmap,在內部,它更像scanrand, unicornscan, and ZMap,采用了異步傳輸的方式。它和這些掃描器最主要的區別是,它比這些掃描器更快。而且,masscan更加靈活,它允許自定義任意的地址范和端口范圍。
0x01 Windows下編譯Masscan
Masscan需要經過編譯才能生成exe文件在Windows下使用。
Masscan下載地址:
https://github.com/robertdavidgraham/masscan/
編譯工具:vs2012
編譯選項中未添加vs2012的編譯配置,所以直接編譯會報錯
解決方法:
在string_s.h中添加vs2012配置信息
位於misc-string_s.h,添加代碼如下:
#if defined(_MSC_VER) && (_MSC_VER == 1700) /*Visual Studio 2012*/ # include <stdio.h> # include <string.h> # define strcasecmp _stricmp # define memcasecmp _memicmp # ifndef PRIu64 # define PRIu64 "llu" # define PRId64 "lld" # define PRIx64 "llx" # endif
編譯成功,執行masscan.exe,提示Packet.dll: not found
如下圖
Packet.dll獲取方法:
安裝WinPcap后在System32下獲得
WinPcap下載地址:
https://www.winpcap.org/install/default.htm
在另一系統安裝WinPcap,在System32下找到Packet.dll和Wpcap.dll,復制到測試系統下masscan.exe的同級目錄,再次運行
程序正常啟動,但是無法掃描,報錯如下:
FAIL: Error opening adapter: 系統找不到指定的設備。 (20) adapter[\Device\NPF_{71D19B82-0818-4685-A8E7-A6C7C812F2EA}].init: failed
0x02 安裝WinPcap
官網下載安裝即可。
https://www.winpcap.org/install/default.htm
0x03 Masscan使用
掃描指定網段和端口:
masscan.exe -p80 192.168.81.1/24
找到一台開啟80端口的服務器,回顯如下:
Discovered open port 80/tcp on 192.168.81.143
掃描指定主機所有開放的端口:
masscan.exe -p0-65535 192.168.81.143
如下圖
掃描指定主機的特定端口:
masscan.exe -p80,443 192.168.81.143
獲取banner:
masscan.exe -p80,443,3306 192.168.81.143 --banners
通過配置文件啟動掃描:
將配置信息保存在1.conf:
masscan.exe -p80,443,3306 192.168.81.143 --banners --echo>1.conf
讀取配置信息1.conf,啟動掃描:
masscan.exe -c 1.conf
修改掃描速度為100,000包/秒(Windos下最大為 300,000包/秒),默認100包/秒:
--rate 100000
掃描結果可以以不同的格式輸出:(XML是默認格式)
-oX <filespec> (XML) -oB <filespec> (Binary) -oG <filespec> (Grep) -oJ <filespec> (Json) -oL <filespec> (List) -oU <filespec> (Unicornscan format)
默認情況,masscan開啟如下配置:
-sS: 半開放掃描,不完成完整的TCP/IP連接
-Pn: 跳過主機發現
-n: 跳過DNS解析
--randomize-hosts:隨機化掃描
--send-eth:使用libpcap數據包傳輸詳細參數
<ip/range> IP地址范圍,有三種有效格式:1、單獨的IPv4地址 2、類似"10.0.0.1-10.0.0.233"的范圍地址 3、CIDR地址 類似於"0.0.0.0/0",多個目標可以用都好隔開
-p <ports,--ports <ports>> 指定端口進行掃描 --banners 獲取banner信息,支持少量的協議 --rate <packets-per-second> 指定發包的速率 -c <filename>, --conf <filename> 讀取配置文件進行掃描 --echo 將當前的配置重定向到一個配置文件中 -e <ifname> , --adapter <ifname> 指定用來發包的網卡接口名稱 --adapter-ip <ip-address> 指定發包的IP地址 --adapter-port <port> 指定發包的源端口 --adapter-mac <mac-address> 指定發包的源MAC地址 --router-mac <mac address> 指定網關的MAC地址 --exclude <ip/range> IP地址范圍黑名單,防止masscan掃描 --excludefile <filename> 指定IP地址范圍黑名單文件 --includefile,-iL <filename> 讀取一個范圍列表進行掃描 --ping 掃描應該包含ICMP回應請求 --append-output 以附加的形式輸出到文件 --iflist 列出可用的網絡接口,然后退出 --retries 發送重試的次數,以1秒為間隔 --nmap 打印與nmap兼容的相關信息 --http-user-agent <user-agent> 設置user-agent字段的值 --show [open,close] 告訴要顯示的端口狀態,默認是顯示開放端口 --noshow [open,close] 禁用端口狀態顯示 --pcap <filename> 將接收到的數據包以libpcap格式存儲 --regress 運行回歸測試,測試掃描器是否正常運行 --ttl <num> 指定傳出數據包的TTL值,默認為255 --wait <seconds> 指定發送完包之后的等待時間,默認為10秒 --offline 沒有實際的發包,主要用來測試開銷 -sL 不執行掃描,主要是生成一個隨機地址列表 --readscan <binary-files> 讀取從-oB生成的二進制文件,可以轉化為XML或者JSON格式. --connection-timeout <secs> 抓取banners時指定保持TCP連接的最大秒數,默認是30秒。
Nmap功能
Masscan可以像nmap許多安全人員一樣工作。這里有一些其他類似nmap的選項:
通過傳遞–nmap開關可以看到類似nmap的功能。
1. -iL filename:從文件讀取輸入。 2. ‐‐exclude filename:在命令行中排除網絡。 3. ‐‐excludefile:從文件中排除網絡。 4. -S:欺騙源IP。 5. -v interface:詳細輸出。 6. -vv interface:非常冗長的輸出。 7. -e interface:使用指定的接口。 8. -e interface:使用指定的接口。
已經編譯后的exe文件:
參考:
https://3gstudent.github.io/3gstudent.github.io/%E6%B8%97%E9%80%8F%E6%8A%80%E5%B7%A7-Windows%E5%B9%B3%E5%8F%B0%E8%BF%90%E8%A1%8CMasscan%E5%92%8CNmap/
https://www.freebuf.com/sectool/112583.html
https://danielmiessler.com/study/masscan/