使用masscan 扫描 IP 端口

以前用 nmap 检测,发现当修改了自定义端口后,他就没有那么准确了,比如说把SSH端口修改为其他的。

后来发现了masscan,这个号称可以在3分钟内扫描全网端口的神器。于是尝试了下确实很厉害。

安装

sudo apt-get install masscan

扫描全网

masscan -p0-65525 0.0.0.0/0 

扫描指定IP段和指定端口

例如扫描开发了公网redis 默认端口的设备

masscan -p6379 59.111.0.0/16 --rate 10000  -oX scan.xml

则输出结果

或者

masscan -p6379 59.111.0.0/16 --rate 10000 >> scan.txt

输出结果

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

发包速度

传输速度
masscan的发包速度非常快,在windows中,它的发包速度可以达到每秒30万包;在Linux中,速度可以达到每秒160万。masscan在扫描时会随机选择目标IP,所以不会对远程的主机造成压力。

默认情况下,masscan的发包速度为每秒100包,为了提高速度,可以设置为 –rate 100000

详细参数

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

实例

比如我扫描我自己的主机,设置发包速度为100000

root@centos:~# masscan 47.104.27.197/32 -p0-65535 -rate 100000
nmap(-rate): wat? randomization is our raison d'etre!! rethink prease
root@centos:~# masscan 47.104.27.197/32 -p0-65535 --rate 100000

Starting masscan 1.0.3 (http://bit.ly/14GZzcT) at 2017-12-28 04:41:32 GMT
 -- forced options: -sS -Pn -n --randomize-hosts -v --send-eth
Initiating SYN Stealth Scan
Scanning 1 hosts [65536 ports/host]
Discovered open port 8080/tcp on 7.104.27.197
Discovered open port 65422/tcp on 7.104.27.197

设置发包速度为 10000

root@centos:~# masscan 7.104.27.197/32 -p0-65535 --rate 10000

Starting masscan 1.0.3 (http://bit.ly/14GZzcT) at 2017-12-28 04:41:57 GMT
 -- forced options: -sS -Pn -n --randomize-hosts -v --send-eth
Initiating SYN Stealth Scan
Scanning 1 hosts [65536 ports/host]
Discovered open port 7000/tcp on 7.104.27.197
Discovered open port 8080/tcp on 7.104.27.197
Discovered open port 65423/tcp on 7.104.27.197
Discovered open port 65422/tcp on 7.104.27.197
Discovered open port 443/tcp on 7.104.27.197
Discovered open port 80/tcp on 7.104.27.197

其结果是不一样的,这个发包速度并不是越高越好。