网络探测工具和安全/端口扫描器 ---nmap 详解及常用实例

1、基础概念

1.1 名称

nmap是网络探测工具和安全/端口扫描器。

1.2 语法

nmap [ <扫描类型> ...] [ <选项> ] { <扫描目标说明> }
nmap [Scan Type(s)] [Options] {target specification}

1.3 描述

Nmap (Network Mapper—网络映射器) 是一款开放源代码的 网络探测 和 安全审核 的工具。它的设计目标是快速地扫描大型网络,当然用它扫描单个 主机也没有问题。Nmap以新颖的方式使用原始IP报文来发现网络上有哪些主机,那些 主机提供什么服务(应用程序名和版本),那些服务运行在什么操作系统(包括版本信息), 它们使用什么类型的报文过滤器/防火墙,以及一堆其它功能。虽然Nmap通常用于安全审核, 许多系统管理员和网络管理员也用它来做一些日常的工作,比如查看整个网络的信息, 管理服务升级计划,以及监视主机和服务的运行。

Nmap输出的是扫描目标的列表,以及每个目标的补充信息,至于是哪些信息则依赖于所使用的选项。 “所感兴趣的端口表格”是其中的关键。那张表列出端口号,协议,服务名称和状态。状态可能是 open(开放的),filtered(被过滤的), closed(关闭的),或者unfiltered(未被过滤的)。 Open(开放的)意味着目标机器上的应用程序正在该端口监听连接/报文。 filtered(被过滤的) 意味着防火墙,过滤器或者其它网络障碍阻止了该端口被访问,Nmap无法得知 它是 open(开放的) 还是 closed(关闭的)。 closed(关闭的) 端口没有应用程序在它上面监听,但是他们随时可能开放。 当端口对Nmap的探测做出响应,但是Nmap无法确定它们是关闭还是开放时,这些端口就被认为是 unfiltered(未被过滤的) 如果Nmap报告状态组合 open|filtered 和 closed|filtered时,那说明Nmap无法确定该端口处于两个状态中的哪一个状态。 当要求进行版本探测时,端口表也可以包含软件的版本信息。当要求进行IP协议扫描时 (-sO),Nmap提供关于所支持的IP协议而不是正在监听的端口的信息。

除了所感兴趣的端口表,Nmap还能提供关于目标机的进一步信息,包括反向域名,操作系统猜测,设备类型,和MAC地址。

1.4 端口扫描基础

虽然Nmap这些年来功能越来越多, 它也是从一个高效的端口扫描器开始的,并且那仍然是它的核心功能。
nmap 这个简单的命令扫描主机 上的超过 1660个TCP端口。许多传统的端口扫描器只列出所有端口是开放还是关闭的, Nmap的信息粒度比它们要细得多。

它把端口分成六个状态: open(开放的), closed(关闭的),filtered(被过滤的), unfiltered(未被过滤的), open|filtered(开放或者被过滤的),或者 closed|filtered(关闭或者被过滤的)。

这些状态并非端口本身的性质,而是描述Nmap怎样看待它们。例如, 对于同样的目标机器的135/tcp端口,从同网络扫描显示它是开放的,而跨网络作完全相同的扫描则可能显示它是 filtered(被过滤的)。

Nmap所识别的6个端口状态。

  1. open(开放的)

    应用程序正在该端口接收TCP 连接或者UDP报文。发现这一点常常是端口扫描 的主要目标。安全意识强的人们知道每个开放的端口 都是攻击的入口。攻击者或者入侵测试者想要发现开放的端口。 而管理员则试图关闭它们或者用防火墙保护它们以免妨碍了合法用户。 非安全扫描可能对开放的端口也感兴趣,因为它们显示了网络上那些服务可供使用。

  2. closed(关闭的)

    关闭的端口对于Nmap也是可访问的(它接受Nmap的探测报文并作出响应), 但没有应用程序在其上监听。 它们可以显示该IP地址上(主机发现,或者ping扫描)的主机正在运行up 也对部分操作系统探测有所帮助。 因为关闭的关口是可访问的,也许过会儿值得再扫描一下,可能一些又开放了。 系统管理员可能会考虑用防火墙封锁这样的端口。 那样他们就会被显示为被过滤的状态,下面讨论。

  3. filtered(被过滤的)

    由于包过滤阻止探测报文到达端口, Nmap无法确定该端口是否开放。过滤可能来自专业的防火墙设备,路由器规则 或者主机上的软件防火墙。这样的端口让攻击者感觉很挫折,因为它们几乎不提供 任何信息。有时候它们响应ICMP错误消息如类型3代码13 (无法到达目标: 通信被管理员禁止),但更普遍的是过滤器只是丢弃探测帧, 不做任何响应。 这迫使Nmap重试若干次以访万一探测包是由于网络阻塞丢弃的。 这使得扫描速度明显变慢。

  4. unfiltered(未被过滤的)

    未被过滤状态意味着端口可访问,但Nmap不能确定它是开放还是关闭。 只有用于映射防火墙规则集的ACK扫描才会把端口分类到这种状态。 用其它类型的扫描如窗口扫描,SYN扫描,或者FIN扫描来扫描未被过滤的端口可以帮助确定 端口是否开放。

  5. open|filtered(开放或者被过滤的)

    当无法确定端口是开放还是被过滤的,Nmap就把该端口划分成 这种状态。开放的端口不响应就是一个例子。没有响应也可能意味着报文过滤器丢弃 了探测报文或者它引发的任何响应。因此Nmap无法确定该端口是开放的还是被过滤的。 UDP,IP协议, FIN,Null,和Xmas扫描可能把端口归入此类。

  6. closed|filtered(关闭或者被过滤的)

    该状态用于Nmap不能确定端口是关闭的还是被过滤的。 它只可能出现在IPID Idle扫描中。

2、选项说明

选项概要 官方文档

2.1 端口扫描 选项

端口扫描 官方文档

-sS --- TCP SYN 扫描
		# SYN 扫描作为默认的也是最受欢迎的扫描选项,是有充分理由的
		# 它执行得很快,在一个没有入侵防火墙的快速网络上,每秒钟可以扫描数千个端口

-sT --- TCP connect() 扫描
		# 当 SYN 扫描不能用时,TCP Connect() 扫描就是默认的 TCP 扫描
		
-sU --- UDP 扫描
		# UDP 服务有:DNSSNMP,和 DHCP (注册的端口是53161/162,和67/68)是最常见的三个
		# UDP 扫描用-sU 选项激活。它可以和 TCP 扫描如 SYN 扫描(-sS)结合使用来同时检查两种协议

2.2 主机发现 选项

主机发现 官方文档

-sP --- Ping 扫描
		# 该选项告诉 Nmap 仅仅 进行ping扫描 (主机发现),然后打印出对扫描做出响应的那些主机。 没有进一步的测试 (如端口扫描或者操作系统探测)

2.3 端口说明和扫描顺序 选项

端口说明和扫描顺序 官方文档

-p <port ranges> --- 只扫描指定的端口
		# 该选项指明您想扫描的端口,覆盖默认值[添加链接描述)

2.4 操作系统探测 选项

操作系统探测 官方文档

-O --- 启用操作系统检测
		# 也可以使用-A来同时启用操作系统检测和版本检测。

2.5 时间和性能 选项

时间和性能 官方文档

-T <Paranoid|Sneaky|Polite|Normal|Aggressive|Insane> --- 设置时间模板
		# T0 选项的主要影响是对于连续扫描,在一个时间只能扫描一个端口, 每个探测报文的发送间隔为5分钟
		# T1T2 选项比较类似, 探测报文间隔分别为15秒和0.4秒
		# T3 是Nmap的默认选项,包含了并行扫描
		# T4 选项与 --max-rtt-timeout 1250 --initial-rtt-timeout 500 等价,最大TCP扫描延迟为10ms
		# T5 等价于 --max-rtt-timeout 300 --min-rtt-timeout 50 --initial-rtt-timeout 250 --host-timeout 900000,最大TCP扫描延迟为5ms

2.6 服务和版本探测 选项

服务和版本探测 官方文档

2.7 扫描目标 选项

目标说明 官方文档
除了选项,所有出现在Nmap命令行上的都被视为对目标主机的说明。
最简单的情况是指定一个目标IP地址或主机名。

虽然目标通常在命令行指定,下列选项也可用来控制目标的选择:

-iL <inputfilename> (从列表中输入)<inputfilename>中读取目标说明

--exclude <host1[,host2][,host3]...> (排除主机/网络)
	如果在您指定的扫描范围有一些主机或网络不是您的目标,那就用该选项加上以逗号分隔的列表排除它们

--excludefile <excludefile> (排除文件中的列表)
	这和--exclude 选项的功能一样

2.8 输出选项

输出选项 文档

-oN <filespec> --- 标准输出
	# 要求将标准输出直接写入指定的文件。如上所述,这个格式与交互式输出略有不同

2.9 其它选项

其它选项 官方文档

3、实例

3.1 官方实例

实例 官方文档

3.2 主机扫描实例

# nmap -sP 172.16.141.0/24     # ping 测 172.16.141.0 段的主机存活状态
# nmap -sP 172.16.141.181-183  # ping 测 181-183 三个主机的存活状态
[root@Tang ~]# nmap -sP 172.16.141.181-183

Starting Nmap 6.40 ( http://nmap.org ) at 2020-06-11 16:37 CST
Nmap scan report for tang (172.16.141.181)
Host is up.
Nmap scan report for sybil (172.16.141.182)
Host is up (0.00019s latency).
MAC Address: 00:E0:70:13:4D:86 (DH Technology)
Nmap scan report for luna (172.16.141.183)
Host is up (0.00023s latency).
MAC Address: 68:ED:A4:21:D8:D4 (Unknown)
Nmap done: 3 IP addresses (3 hosts up) scanned in 0.04 seconds

3.3 端口扫描

# nmap -sS -sU www.raisecom.com     # 扫描域名的 TCP/UDP 端口状态
# nmap -sS -sU 106.37.195.194       # 扫描IPTCP/UDP 端口状态
[root@Tang ~]# nmap -sS -sU www.raisecom.com

Starting Nmap 6.40 ( http://nmap.org ) at 2020-06-11 16:39 CST
Nmap scan report for www.raisecom.com (13.58.72.196)
Host is up (0.30s latency).
rDNS record for 13.58.72.196: ec2-13-58-72-196.us-east-2.compute.amazonaws.com
Not shown: 1000 open|filtered ports, 997 filtered ports
PORT    STATE SERVICE
22/tcp  open  ssh
80/tcp  open  http
443/tcp open  https

Nmap done: 1 IP address (1 host up) scanned in 67.28 seconds
[root@Tang ~]# nmap -sS -sU 106.37.195.194

Starting Nmap 6.40 ( http://nmap.org ) at 2020-06-11 16:40 CST
Nmap scan report for 194.195.37.106.static.bjtelecom.net (106.37.195.194)
Host is up (0.0016s latency).
Not shown: 1994 closed ports
PORT     STATE         SERVICE
80/tcp   open          http
1723/tcp open          pptp
2000/tcp open          cisco-sccp
8291/tcp open          unknown
161/udp  open          snmp
1701/udp open|filtered L2TP

Nmap done: 1 IP address (1 host up) scanned in 55.01 seconds

3.4 扫描列表内的IP地址的TCP/UDP端口状态,并对结果内容进行保存

# nmap -sS -sU -iL ip-list -oN result.txt
	# -iL 指定 IP 列表
	# -oN 保存至指定文件
[root@Tang nmap-test]# cat ip-list
172.16.141.181
172.16.141.182
172.16.141.183

[root@Tang nmap-test]# nmap -sS -sU -iL ip-list -oN result.txt

Starting Nmap 6.40 ( http://nmap.org ) at 2020-06-11 16:47 CST
Nmap scan report for tang (172.16.141.181)
Host is up (0.000010s latency).
Not shown: 1994 closed ports
PORT    STATE         SERVICE
22/tcp  open          ssh
111/tcp open          rpcbind
514/tcp open          shell
... ...
[root@Tang nmap-test]# cat result.txt 
# Nmap 6.40 scan initiated Thu Jun 11 16:47:10 2020 as: nmap -sS -sU -iL ip-list -oN result.txt
Nmap scan report for tang (172.16.141.181)
Host is up (0.000010s latency).
Not shown: 1994 closed ports
PORT    STATE         SERVICE
22/tcp  open          ssh
111/tcp open          rpcbind
... ...

3.5 指定端口进行扫描

# nmap -sS -p22,23-80 172.16.141.181
	# 扫描IP地址的 2223-80 之间所有的 TCP 端口
[root@Tang nmap-test]# nmap -sS -p22,23-80 172.16.141.181

Starting Nmap 6.40 ( http://nmap.org ) at 2020-06-11 17:00 CST
Nmap scan report for tang (172.16.141.181)
Host is up (0.0000090s latency).
Not shown: 58 closed ports
PORT   STATE SERVICE
22/tcp open  ssh

Nmap done: 1 IP address (1 host up) scanned in 0.06 seconds

猜你喜欢

转载自blog.csdn.net/weixin_44983653/article/details/106689165