主动扫描的工具很多,最为优秀的非Nmap莫属,本篇我们主要先介绍使用Nmap进行设备发现,即确定设备是否为活跃设备。
一、Nmap的基本用法
1、对单台设备扫描:nmap IP地址
starting nmap:表示版本为7.92,扫描开始时间为2023-03-18 05:17
host is up:给出目标设备状态为up(开机并联网)
not shown:表明在检查的1000个端口中,有995个是关闭的
接下来是一张表,分别是端口、状态、提供的服务
最后一行表明共对一台设备进行扫描,一台状态为up,耗时8.47秒
默认情况下nmap会同时进行活跃状态和端口状态扫描,使用参数 -sn只进行活跃状态扫描
2、对IP地址不连续的多台设备扫描:nmap IP地址1 IP地址2 IP地址3 ...
为了节约时间我们这里加上参数 -sn
3、对IP地址在连续范围内的多台设备扫描:nmap IP地址的范围
比如我们对192.168.88.1~192.168.88.255的设备进行扫描
内容太长了,我们还是加上-sn (实际扫描的时候根据实际需求选择加或不加)
4、对整个子网设备的扫描:nmap IP地址/掩码位数
同样以3中的范围为例
二、使用Nmap进行设备发现
1、使用ARP进行设备发现
ARP(地址解析协议)位于TCP/IP模型的网络层,主要用来解决逻辑地址和物理地址的转换关系。同一网段中的通信一般使用物理地址,不同网段之间的通信一般使用逻辑地址。在同一网段中,所有的设备都会连接到交换机上,这些设备的物理地址的表—ARP表,就存在交换机的内容寻址寄存器上。
思路:构造ARP请求数据包,并广播出去,若得到回应,则说明该设备为活跃设备。
当目标设备与我们处于同一网段时,ARP扫描技术是最佳选择,因为没有任何安全措施会阻止正常的ARP请求。
其实在执行nmap命令时就会默认向同一网段的目标设备发送ARP请求,产生的数据包如下
2、使用ICMP进行设备发现
ICMP(因特网控制消息协议)位于网络层,在IP设备、路由器之间传递控制消息。
ICMP的报文可分为两类——差错和查询,Nmap中ICMP活跃设备发现技术使用的是查询报文。
ICMP中适合使用的查询报文有三类:
① 回送请求和回答:使用参数 -PE 实现(这个过程实际和ping命令是一样的)
语法:nmap -PE 目标设备IP地址
向目标设备发送ICMP echo 请求数据包(包中type字段值为8)
若目标在线,且没有防火墙隔离通信,将会收到回应数据包,但可惜的是这种ping的方式已经被很多网络禁止了。
② 时间戳请求和回答:使用参数 -PP 实现
语法:nmap -PP 目标设备IP地址
(type字段值为13)
③ 地址掩码请求和回答:使用参数 -PM实现
语法:nmap -PM 目标设备IP地址
(type字段值为17)
通常,nmap在进行其他扫描前,都会对目标设备进行ping扫描,若ping扫描没反应,就会直接结束整个扫描过程,我们可以指定无论目标设备是否响应ping扫描,都将整个扫描过程完成。
语法:nmap -Pn 目标设备IP地址
3、使用TCP进行设备发现
TCP是一个位于传输层的协议,它的主要过程由 “三次握手” 构成:
主动端发送SYN数据包,被动端回应SYN+ACK数据包,主动端再回应ACK数据包。
① TCP SYN扫描
使用参数 -PS 向目标设备发送SYN标志的数据包,内容部分为空,默认是80端口
若这个端口是开放的,目标设备就会发回一个SYN+ACK数据包,表示同意建立连接,
若是端口关闭的,则发回RST数据包,表示拒绝这次连接。
无论返回什么包,都表明目标是活跃设备。
语法:nmap -PS 端口1 端口2 ... 目标设备IP址
产生数据包如下:
在指定端口时常用组合:-PS 22 80,而 -PS 80 443 的意义不大(要么都提供,要么都不提供)
② TCP ACK扫描
使用参数 -PA 向目标设备发送ACK标志的数据包
同样是以80为默认端口,也可进行指定。
语法:nmap -sn -PA 目标设备IP地址(数据包太多了为了大家看得清楚这里加了参数 -sn )
产生数据包如下:
实际情况中,这种类型的扫描很少能成功,因为目标设备上的安全机制或安全设备将这种ACK数据包直接过滤了。
4、使用UDP进行设备发现
UDP(用户数据包协议)位于传输层,它完成的工作与TCP是相同的,但UDP不是面向连接的。
当一个端口收到一个UDP数据包时,若它是关闭的,就会给源端口发回一个ICMP端口不可达数据包;若它是开放的,就会直接忽略这个数据包,丢弃且不返回任何信息。
对此我们可以完成对UDP端口的探测,但扫描结果可靠性不高。
UDP扫描使用参数 -PU 实现
语法:nmap -PU 目标设备IP地址
OK,本篇内容到此为止,后面将会继续介绍使用Nmap对端口、目标系统、目标服务、web服务的扫描以及将扫描结果存为XML文件等。