Masscan简要原理
Masscan 针对 TCP 端口进行扫描,使用 SYN 扫描的方式,不建立一个完全的 TCP 连接,而是首先发送一个 SYN 数据包到目标端口,然后等待接收。如果接收到 SYN-ACK 包,则说明该端口是开放的,此时发送一个 RST 结束建立过程即可;否则,若目标返回 RST,则端口不开放。
实例
单端口扫描
扫描443端口
masscan 10.1.0.0/16 -p443
多端口扫描
扫描80或443端口
masscan 10.1.0.0/16 -p80,443
扫描一系列端口
扫描22到25端口
masscan 10.1.0.0/16 -p22-25
快速扫描
默认情况下,Masscan扫描速度为每秒100个数据包,这是相当慢的。为了增加这一点,只需提供该-rate选项并指定一个值。
扫描65535个端口的B类子网,每秒100000 个数据包
masscan 10.1.1.0/24 -p0-65535 --max-rate 100000
排除目标
–excludefile交换机以及包含要避免的范围列表的文件的名称。
扫描B类子网,但避免在exclude.txt中的
masscan 10.11.0.0/16 -p 80,800-900 --excludefile exclude.txt
指定ip
masscan --ports 1-10000 192.168.26.131 --adapter-ip 192.168.26.1
–adapter-ip 指定发包的ip地址
–adapter-port 指定发包源端口
–adapter-mac 指定发包的源MAC地址
–router-mac 指定网关MAC地址
–exclude IP地址范围黑名单,防止masscan扫描
–excludefile 指定IP地址范围黑名单文件
–includefile,-iL 读取一个范围列表进行扫描
–wait 指定发包后的等待时间
结果保存
–echo 将当前的配置输出到一个配置文件,利用 -c 来制定配置文件进行扫描
masscan -p80,8000-8100 10.0.0.0/8 --echo > xxx.conf
masscan -c xxx.conf --rate 1000
输出到指定文件中
masscan 10.1.1.0/24 -p0-65535 -oX scan.xml
这条命令把扫描的结果保存在一个XML文件中
Banner获取
masscan 10.0.0.0/8 -p80 --banners --source-ip x.x.x.x
这条命令的意思是扫描10.x.x.x网段80端口的开放信息,并且获取banner信息。–source-ip 是指定源IP,这个ip必须指定独立有效的IP地址。
编写配置文件
# My Scan
rate = 100000.00
output-format = xml
output-status = all
output-filename = scan.xml
ports = 0-65535
range = 0.0.0.0-255.255.255.255
excludefile = exclude.txt
使用-c参数引用执行:
masscan -c myscan.conf
常见参数
<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秒。