0%

《Kali攻防》 — 7、masscan(端口扫描器)

前言

masscan 是一个快速端口扫描器。当你知道你的目标ip后,需要知道目标机器开了哪些端口,才能尝试通过这些端口进行渗透。

前面讲过 hping3 工具也可以用来扫描端口。但 masscan 相对更加专业,更加高效,更加精确,hping3可能漏。

一般来讲,主机都会开启一些端口用于与外界通信,比如80端口、443端口。一般用来提供http服务

基本使用

帮助文档

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
[email protected]:~$ masscan --help
MASSCAN is a fast port scanner. The primary input parameters are the
IP addresses/ranges you want to scan, and the port numbers. An example
is the following, which scans the 10.x.x.x network for web servers:
masscan 10.0.0.0/8 -p80
The program auto-detects network interface/adapter settings. If this
fails, you'll have to set these manually. The following is an
example of all the parameters that are needed:
--adapter-ip 192.168.10.123
--adapter-mac 00-11-22-33-44-55
--router-mac 66-55-44-33-22-11
Parameters can be set either via the command-line or config-file. The
names are the same for both. Thus, the above adapter settings would
appear as follows in a configuration file:
adapter-ip = 192.168.10.123
adapter-mac = 00-11-22-33-44-55
router-mac = 66-55-44-33-22-11
All single-dash parameters have a spelled out double-dash equivalent,
so '-p80' is the same as '--ports 80' (or 'ports = 80' in config file).
To use the config file, type:
masscan -c <filename>
To generate a config-file from the current settings, use the --echo
option. This stops the program from actually running, and just echoes
the current configuration instead. This is a useful way to generate
your first config file, or see a list of parameters you didn't know
about. I suggest you try it now:
masscan -p1234 --echo

masscan 常用选项

1
2
3
4
5
6
7
8
9
-p 		      // 指定要扫描的端口,同时指定多个端口要用逗号隔开
--rate // 指定发包速率,根据你自己的实际带宽来定,我自己是20M的光纤,一般给1000足矣,一两兆的vpn,给100就差不多了,都是粗略估计的,懒的算
--open-only // 仅显示开放的端口
--banners // 获取banners
-c // 使用自定义的扫描配置文件
--ping // 扫之前是否要先ping下目标
-iL // 从文件中读取ip
-oL // 把扫描结果存到指定文件中
--excludefile // 排除不扫描的ip段

masscan 配置文件格式

1
2
3
4
5
6
7
8
9
rate =1000.00       	                # 指定发包速率,根据自己的实际带宽计算
output-format=list # 指定扫描结果保存的文件格式,这里我就用最普通的文本存,当然,它是支持直接输出成xml格式的,后续方便用程序处理
output-filename=/data/port_hacking.txt # 指定要把扫描的结果文件保存到哪里
output-status=open # 只保留开放的端口信息
ports=80,443,8080,U:53 # 指定要扫描的端口,默认tcp,当然,你也可以指定UDP的端口,U即udp
range=203.174.48.0/24 # 指定要扫描的ip段,可以连续指定多个,中间记得逗号隔开就好了
ping=false # 扫描的时候要不要先ping下,true表示真,即ping
banners=true # 获取端口banner信息
excludefile=/etc/zmap/blacklist.conf # 指定不扫描的ip段,可以把不想扫描的一些ip段都加到这个文件中,如:内网ip段是不需要扫的

使用案例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
[email protected]:~$ sudo masscan 104.18.33.51 --ports 0-65535  // 扫描 104.18.33.51 开启了哪些端口
Starting masscan 1.0.5 (http://bit.ly/14GZzcT) at 2020-03-05 13:58:27 GMT
-- forced options: -sS -Pn -n --randomize-hosts -v --send-eth
Initiating SYN Stealth Scan
Scanning 1 hosts [65536 ports/host]
Discovered open port 443/tcp on 104.18.33.51
Discovered open port 2053/tcp on 104.18.33.51
Discovered open port 2096/tcp on 104.18.33.51
Discovered open port 8880/tcp on 104.18.33.51
Discovered open port 2095/tcp on 104.18.33.51
Discovered open port 2087/tcp on 104.18.33.51
Discovered open port 2083/tcp on 104.18.33.51
Discovered open port 80/tcp on 104.18.33.51
Discovered open port 2082/tcp on 104.18.33.51
Discovered open port 8080/tcp on 104.18.33.51
Discovered open port 2052/tcp on 104.18.33.51

[email protected]:~$ sudo masscan --ports 0-80 --range 192.168.0.100-192.168.0.200 // 扫描多个主机的多个端口


[email protected]:~$ sudo masscan --ports 0-80 -iL ip.txt


[email protected]:~$ sudo masscan --ports 80,443,U:83-85 --range 192.168.0.100-192.168.0.200 // 扫描80和443 TCP端口,还有83、84、85UDP端口

实战插曲(搜索本机局域网内所有主机开启的所有端口)

利用前面学到的工具,搜索本机局域网内某台主机开启的所有端口

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
[email protected]:~$ fping -g 192.168.0.0/24 -a -q > ip.txt  // 首先查出局域网内存活的所有主机, 并保存到 ip.txt

[email protected]:~$ cat ip.txt
192.168.0.1
192.168.0.100
192.168.0.105
192.168.0.102
192.168.0.101
192.168.0.103
192.168.0.108
192.168.0.109
192.168.0.107

[email protected]:~$ sudo masscan -iL ip.txt --ports 0-1000 // 然后扫描这些ip的端口。这里为了不花很长时间,端口只选择了0-1000
Starting masscan 1.0.5 (http://bit.ly/14GZzcT) at 2020-03-05 14:32:47 GMT
-- forced options: -sS -Pn -n --randomize-hosts -v --send-eth
Initiating SYN Stealth Scan
Scanning 9 hosts [1001 ports/host]
Discovered open port 80/tcp on 192.168.0.100
Discovered open port 23/tcp on 192.168.0.100
Discovered open port 80/tcp on 192.168.0.1

原理

扫描TCP端口就是发送SYN TCP连接,根据对方的回应识别对方端口是否开启

扫描UDP端口就是发送UDP协议数据,根据对方的回应识别对方端口是否开启

下篇预告

netdiscover 一款主动/被动的ARP侦查工具




微信关注我,及时接收最新技术文章