masscan的扫描结果类似于nmap(一个很著名的端口扫描器),在内部,它更像scanrand, unicornscan, and ZMap,采用了异步传输的方式。它和这些扫描器最主要的区别是,它比这些扫描器更快。而且,masscan更加灵活,它允许自定义任意的地址范和端口范围。
项目地址:https://github.com/robertdavidgraham/masscan

安装:

  1. $ sudo apt-get install git gcc make libpcap-dev
  2. $ git clone https://github.com/robertdavidgraham/masscan
  3. $ cd masscan
  4. $ make

使用方法

masscan -p80,8080-8100 2010.0.0/8
这条命令将完成如下工作

  • 扫描 10.x.x.x子网,大约由16000万个地址
  • 扫描80端口和8000端口-8100端口范围的端口段

可以 —echo 将当前输出到一个配置文件,利用 -c 来定制配置文件进行扫描
masscan -p80,8000-8100 10.0.0.0/8 —echo > x.conf
masscan -c x.conf —rate 1000

扫描全网

您可以对整个互联网发起扫描,使用的命令如下

# masscan 0.0.0.0/0 -p0-65535

有时候对这个互联网扫描可能会对你造成一些麻烦,你可能会被请去喝茶。所以,我们可以通过设置黑名单来让扫描器扫描时忽略一些网段。语法如下:

# masscan 0.0.0.0/0 -p0-65535 --excludefile exclude.txt

你也可以把扫描的结果不输出到命令行,输出到指定文件中

# masscan 0.0.0.0/0 -p0-65535 -oX scan.xml

这条命令把扫描的结果保存在一个XML文件中
当前的扫描器使用的是默认的速率100包/秒,如果是扫描全网的话,需要提高速度。

# masscan 0.0.0.0/0 -p0-65535 --max-rate 100000

这条命令将以每秒10万包的速率进行扫描
上述的这些命令可能输入起来有点麻烦,我们可以通过创建配置文件,然后用加载配置文件的方式运行。配置文件的内容如下所示:

rate = 100000
output-format = xxx
output-status = all
output-filename = xxx.xxx
ports = 0-65535
range = 0.0.0.0-255.255.255.255
excludefile = exclude.txt

扫描时,用 -c 加载配置文件,这样的话,你进行重复扫描会省很多的力气。

结果输出

主要有五种输出格式

  • XML 默认格式 使用 -oX 或者使用 —output -format xml 和 —output -filename
  • binary masscan内置格式
  • grepable namp格式 使用 -oG
  • json 使用 -oJ
  • list 简单的列表 每行一个主机端口对。 使用 -oL

参数选项

--adapter-ip 指定发包的IP地址

--adapter-port 指定发包的源端口

--adapter-mac 指定发包的源MAC地址

--router-mac 指定网关的MAC地址

--exclude IP地址范围黑名单,防止masscan扫描

--excludefile 指定IP地址范围黑名单文件

--includefile,-iL 读取一个范围列表进行扫描

--wait 指定发送包后等待时间,默认 10s

更多参数

<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秒。

参考