除了非常优秀的商业化软件外,还有很多开源免费的工具也非常不错。下面介绍一些用于资产扫描的常用开源免费工具,例如Nmap、Zmap、Masscan。虽然现在很多漏洞扫描的工具也同样提供资产扫描的功能,但作为功能专一的工具,资产扫描类工具也是非常有价值的。
Nmap(Network Mapper)是一个开源免费的网络层扫描软件,用来扫描网上活跃的主机和开放的端口,以及确定哪些服务运行在哪些端口上,甚至推断主机运行在哪个操作系统上。Nmap于1997年9月推出,支持众多主流的操作系统,例如Linux、Windows、Solaris、BSD、MacOS X等系统。它是评估网络系统安全的重要软件,也是攻击者常用的工具之一(攻击者通常会使用开源工具或者自制工具)。除了Nmap这个命令行工具,在Nmap的产品家族中,还包括了一些其他工具,比如利用图形化页面对扫描数据进行查看的Zenmap、可以对扫描结果进行对比的Ndiff、生成数据包并对返回结果进行分析的Nping等。
Nmap的官方网站是 https://nmap.org ,读者可以从该网站获取所需的信息。
为了便于读者更深入地了解Nmap,我准备了一个测试环境,并通过它来详细介绍Nmap的安装和使用方法。
测试环境如下所示。 虚拟化:VirtualBox 5.6.2 虚拟机:nmap(操作系统:Ubuntu 16.04.5 LTS, 安装软件:Nmap, IP地址:192.168.1.10) 虚拟机:target(操作系统:Ubuntu 16.04.5 LTS, 安装软件:Apache HTTP Server、MySQL、 MongoDB、vsftpd、SNMP、OpenLDAP, IP地址:192.168.1.6)
Nmap的安装比较简单,在Ubuntu上直接用apt安装即可。
root@nmap:~# apt install nmap root@nmap:~# nmap -V Nmap version 7.01 ( https://nmap.org ) Platform: x86_64-pc-linux-gnu Compiled with: liblua-5.2.4 openssl-1.0.2g libpcre-8.38 libpcap-1.7.4 nmap-libdnet-1.12 ipv6 Compiled without: Available nsock engines: epoll poll select root@nmap:~#
首先,利用Nmap对被扫描主机进行一个全面的扫描,包括主机存活、开放端口、运行服务、操作系统信息等,其中使用的两个参数是-A(Enable OS detection, version detec-tion, script scanning, and traceroute)和-F(Fast mode - Scan fewer ports than the default scan)。
root@nmap:~# nmap -A -F 192.168.1.6 Starting Nmap 7.01 ( https://nmap.org ) at 2020-02-15 18:12 CST Nmap scan report for target (192.168.1.6) Host is up (0.00043s latency). Not shown: 95 closed ports PORT STATE SERVICE VERSION 21/tcp open ftp vsftpd 3.0.3 22/tcp open ssh OpenSSH 7.2p2 Ubuntu 4ubuntu2.8 (Ubuntu Linux; protocol 2.0) | ssh-hostkey: | 2048 c4:aa:eb:23:40:fc:24:b3:c2:e2:b2:f7:4e:95:ea:f4 (RSA) |_ 256 10:03:89:89:9e:85:0e:48:29:b8:f4:4b:3b:ab:4f:38 (ECDSA) 80/tcp open http Apache httpd 2.4.18 ((Ubuntu)) |_http-server-header: Apache/2.4.18 (Ubuntu) |_http-title: Apache2 Ubuntu Default Page: It works 389/tcp open ldap OpenLDAP 2.2.X - 2.3.X 3306/tcp open mysql MySQL (unauthorized) MAC Address: 08:00:27:E8:FE:F9 (Oracle VirtualBox virtual NIC) Device type: general purpose Running: Linux 3.X|4.X OS CPE: cpe:/o:linux:linux_kernel:3 cpe:/o:linux:linux_kernel:4 OS details: Linux 3.2 - 4.0 Network Distance: 1 hop Service Info: OSs: Unix, Linux; CPE: cpe:/o:linux:linux_kernel TRACEROUTE HOP RTT ADDRESS 1 0.43 ms target (192.168.1.6) OS and Service detection performed. Please report any incorrect results at https://nmap.org/submit/ . Nmap done: 1 IP address (1 host up) scanned in 14.52 seconds root@nmap:~#
其次,可以利用Nmap对被扫描主机进行开放端口及运行服务探测,其中使用的参数是-sV(Probe open ports to determine service/version info)。
root@nmap:~# nmap -sV 192.168.1.6 Starting Nmap 7.01 ( https://nmap.org ) at 2020-02-15 16:46 CST Nmap scan report for target (192.168.1.6) Host is up (0.00039s latency). Not shown: 996 closed ports PORT STATE SERVICE VERSION 21/tcp open ftp vsftpd 3.0.3 22/tcp open ssh OpenSSH 7.2p2 Ubuntu 4ubuntu2.8 (Ubuntu Linux; protocol 2.0) 80/tcp open http Apache httpd 2.4.18 ((Ubuntu)) 389/tcp open ldap OpenLDAP 2.2.X - 2.3.X MAC Address: 08:00:27:E8:FE:F9 (Oracle VirtualBox virtual NIC) Service Info: OSs: Unix, Linux; CPE: cpe:/o:linux:linux_kernel Service detection performed. Please report any incorrect results at https://nmap.org/submit/ . Nmap done: 1 IP address (1 host up) scanned in 11.87 seconds root@nmap:~#
再次,可以利用Nmap对被扫描主机的UDP端口进行开放端口及运行服务探测,使用的参数是-sU(UDP Scan)。
root@nmap:~# nmap -sUV -F 192.168.1.6 Starting Nmap 7.01 ( https://nmap.org ) at 2020-02-15 18:15 CST Nmap scan report for target (192.168.1.6) Host is up (0.00083s latency). Not shown: 98 closed ports PORT STATE SERVICE VERSION 68/udp open|filtered dhcpc 161/udp open snmp SNMPv1 server; net-snmp SNMPv3 server (public) MAC Address: 08:00:27:E8:FE:F9 (Oracle VirtualBox virtual NIC) Service detection performed. Please report any incorrect results at https://nmap.org/submit/ . Nmap done: 1 IP address (1 host up) scanned in 193.43 seconds root@nmap:~#
最后,可以利用Nmap对被扫描主机的操作系统进行探测,其中使用的参数是-O(Enable OS detection)。
root@nmap:~# nmap -O 192.168.1.6 Starting Nmap 7.01 ( https://nmap.org ) at 2020-02-15 16:39 CST Nmap scan report for target (192.168.1.6) Host is up (0.00071s latency). Not shown: 996 closed ports PORT STATE SERVICE 21/tcp open ftp 22/tcp open ssh 80/tcp open http 389/tcp open ldap MAC Address: 08:00:27:E8:FE:F9 (Oracle VirtualBox virtual NIC) Device type: general purpose Running: Linux 3.X|4.X OS CPE: cpe:/o:linux:linux_kernel:3 cpe:/o:linux:linux_kernel:4 OS details: Linux 3.2 - 4.0 Network Distance: 1 hop OS detection performed. Please report any incorrect results at https://nmap.org/submit/ . Nmap done: 1 IP address (1 host up) scanned in 5.02 seconds root@nmap:~#
第二个值得推荐的开源免费资产扫描工具是Zmap。2015年3月27日,在Usenix国际安全研讨会上,由密歇根大学研究人员组成的研究团队推出了一款名为Zmap的工具,这款工具能令一台普通的服务器在短短44分钟内扫描互联网上的每一个地址。团队中的Durumeric及其同事在2013年年末开发了Zmap。在此之前,用软件扫描互联网需要耗时数周或数月,当时的工具比Zmap慢1000倍。Zmap是一款无状态(Stateless)的工具,也就是说,这款工具会向服务器发出请求,然后“忘记”这些请求。Zmap不会保留未获回复请求的清单,而是在传出的数据包中对识别信息进行编码,这样一来该工具就能对回复进行鉴别。
Zmap的官方网站为 https://github.com/zmap/zmap ,可以从该网站获取所需的信息。
为了便于读者更深入地了解Zmap,我准备了一个测试环境,并通过它来详细介绍Zmap的安装和使用方法。
测试环境如下所示。 虚拟化:VirtualBox 5.6.2 虚拟机:zmap(操作系统:Ubuntu 16.04.5 LTS, 安装软件:Zmap, IP地址:192.168.1.10) 虚拟机:target(操作系统:Ubuntu 16.04.5 LTS, 安装软件:Apache HTTP Server、MySQL、 MongoDB、vsftpd、SNMP、OpenLDAP, IP地址:192.168.1.6)
Zmap的安装与Nmap类似,在Ubuntu上直接用apt安装即可。
root@zmap:~# apt install zmap root@zmap:~# zmap -V zmap 2.1.1 root@zmap:~#
Zmap的使用方法很简单,只需制定一个扫描网段和扫描端口就可以开始扫描了。
root@zmap:~# zmap -p 80 192.168.1.0/24 Feb 15 19:46:42.223 [WARN] blacklist: ZMap is currently using the default blacklist located at /etc/zmap/blacklist.conf. By default, this blacklist excludes locally scoped networks (e.g. 10.0.0.0/8, 127.0.0.1/8, and 192.168.0.0/16). If you are trying to scan local networks, you can change the default blacklist by editing the default ZMap configuration at /etc/zmap/zmap.conf. Feb 15 19:46:42.242 [INFO] zmap: output module: csv Feb 15 19:46:42.243 [INFO] csv: no output file selected, will use stdout 0:00 0%; send: 0 0 p/s (0 p/s avg); recv: 0 0 p/s (0 p/s avg); drops: 0 p/s (0 p/s avg); hitrate: 0.00% 0:00 0%; send: 0 0 p/s (0 p/s avg); recv: 0 0 p/s (0 p/s avg); drops: 0 p/s (0 p/s avg); hitrate: 0.00% 192.168.1.6 192.168.1.1 … Feb 15 19:46:51.279 [INFO] zmap: completed root@zmap:~#
第三个推荐的工具是Masscan(Massive Scan)。Masscan同样也是互联网级别的端口扫描器,Zmap可以在44分钟内扫遍全网,而Masscan则号称可以在6分钟内扫遍全网,它最快可以从单台服务器上每秒发出1000万个数据包。
Masscan的官方网站是 https://github.com/robertdavidgraham/masscan ,如果有需要可以从中获得更多的信息。
为了便于读者更深入地了解Masscan,我准备了一个测试环境,并通过它来详细介绍Masscan的安装和使用方法。
测试环境如下所示。 虚拟化:VirtualBox 5.6.2 虚拟机:masscan(操作系统:Ubuntu 16.04.5 LTS, 安装软件:masscan, IP地址:192.168.1.10) 虚拟机:target(操作系统:Ubuntu 16.04.5 LTS, 安装软件:Apache HTTP Server、MySQL、 MongoDB、vsftpd、SNMP、OpenLDAP, IP地址:192.168.1.6)
Masscan的安装相对复杂,它需要从GitHub上下载源码,然后自行编译,具体步骤如下。
root@masscan:~# apt install git gcc make libpcap-dev root@masscan:~# git clone https://github.com/robertdavidgraham/masscan root@masscan:~# cd masscan root@masscan:~/masscan# make
Masscan的使用方法并不复杂,首先,可以针对某一个特定端口进行扫描。
root@masscan:~# ./masscan/bin/masscan 192.168.1.0/24 -p80 ...arping router MAC address... Starting masscan 1.0.6 (http://bit.ly/14GZzcT) at 2020-02-15 12:14:49 GMT -- forced options: -sS -Pn -n --randomize-hosts -v --send-eth Initiating SYN Stealth Scan Scanning 256 hosts [1 port/host] Discovered open port 80/tcp on 192.168.1.1 Discovered open port 80/tcp on 192.168.1.6 root@masscan:~#
其次,可以按一定速度,扫描一个范围内的端口,其中使用的参数有--ports和--rate。
root@masscan:~# ./masscan/bin/masscan 192.168.1.6 --ports 0-65535 --rate 10000 ...arping router MAC address... Starting masscan 1.0.6 (http://bit.ly/14GZzcT) at 2020-02-15 12:29:58 GMT -- forced options: -sS -Pn -n --randomize-hosts -v --send-eth Initiating SYN Stealth Scan Scanning 1 hosts [65536 ports/host] Discovered open port 27017/tcp on 192.168.1.6 Discovered open port 389/tcp on 192.168.1.6 Discovered open port 80/tcp on 192.168.1.6 Discovered open port 3306/tcp on 192.168.1.6 Discovered open port 22/tcp on 192.168.1.6 Discovered open port 21/tcp on 192.168.1.6 root@masscan:~#