本章重点内容:
1、Nmap的基本用法
2、使用Nmap进行设备发现
3、使用Nmap进行端口扫描
4、使用Nmap扫描目标系统
5、使用Nmap扫描目标服务
接下来针对本章内容展开详细说明
1、Nmap的基本用法
在kali中直接打开shell命令行,输入nmap+ip地址,可以直接扫描单台设备,如下
通过扫描的结果数据,我们来细看结果的内容:
第一行:starting Nmap一行,给出了Nmap版本7.91,以及扫描开始的时间2021-07-05 09:42
第二行:Nmap scan report 是一个标题,表明生成的是关于ip地址为****的设备报告
第三行:Host is up 表示设备的状态是up(开机并联网的状态)
第四行:Not shown 表示在进行检查的1000个端口中,有994个端口是关闭的
从第五行开始,是一个表,表中有三个字段,分别是Port、State、Service
Port指的是端口,state指的是状态,service值得是提供的服务
以第一个【135/tcp】为例,state的值是open,service的值是msrpc,表示发现目标设备上的135号端口目前处于开发状态,这个端口提供msrpc服务
最后一行:表示共对1台设备进行扫描,发现1台状态为up的设备,耗时9.71秒
对于以上数据的说明自己可以尝试扫描不同的ip,如下,如果扫描自己ip会发现什么?
针对以上扫描结果可以自行解读试试看
2、使用Nmap进行设备发现
2.1 使用ARP进行设备发现
可以通过参数【-sn】来扫描发现主机,如下:
从扫描结果可以看到,【-sn】参数表示不进行端口扫描,只进行主机发现扫描
2.2 使用ICMP进行设备发现
可以通过参数【-PE/PP/PM】分别进行使用ICMP响应(echo)、时间戳或子网掩码请求来发现探测,此处用【-PE】参数为例,如下:
从结果看,其实扫描的时候是无法发现的,主要是因为这种方式因为有防火墙的原因,被很多的网络所禁止了
根据结果中的提示,可以尝试【-Pn】的扫描,如下:
参数【-Pn】的意思是将所有主机都默认为在线,跳过主机发现,为什么要跳过主机发现呢?
Nmap在进行扫描之前,都会对目标设备进行ping扫描,如果目标设备对ping扫描没有反应,就会直接结束整个扫描过程。
如果目标设备在线,只是采用某种手段屏蔽了ping扫描,那么也会因此躲过其他扫描操作,
所以该参数的意义就是,不利目标设备是否响应ping扫描,都要将整个扫描过程完成
2.3 通过TCP进行设备发现
参数【-PS】表示TCP SYN扫描,使用如下:
从扫描结果看,无法发现主机,被屏蔽
参数【-PA】表示TCP ACK扫描,使用如下:
从上面的扫描结果看,也没有成功,这种类型的扫描很少能成功,因为目标设备商的安全机制或者安全设备将这种数据包直接过滤了。
2.4 使用UDP进行设备发现
对应使用的参数是【-PU】,具体使用如下:
直接使用,系统会提示需要root权限,切换到root权限再使用,如下:
在nmap前面增加【sudo】表示通过root权限运行,第一行会提示要求输入密码,输入密码,回车即可,此处不会显示输入的密码
从扫描的结果看,也没有成功,说明目标设备对其数据包进行了屏蔽或者过滤
3、使用Nmap进行端口扫描
前面我们使用的是直接扫描ip地址,其实Nmap也可以针对端口进行扫描
不同的端口扫描技术
SYN扫描:参数【-sS】,具体使用如下:特别提醒,要通过root权限的方式运行
Connect扫描:参数【-sT】,具体使用如下:
UDP扫描:参数【-sU】,具体使用如下:
4、使用Nmap扫描目标系统
对目标系统的扫描可以通过参数【-O】来实现,如下:
从结果看,扫描结果会对目标系统进行猜测,在这里占比最高的是97%,是windows系统
在这个参数基础上,还有一个更深入的参数【--osscan-guess】表示,猜测认为最接近目标设备的操作系统类型,具体使用如下:
可以对比一下两个扫描的结果,看下有什么不同,端口的扫描结果有差异
5、使用Nmap扫描目标服务
使用参数【-sV】可以打开和控制版本探测,具体使用如下:
从扫描结果看,在服务右侧多了一列,是版本的数据,对应前面不同服务和端口