--- notion-id: 791bb34d-83f4-4da0-b527-5200e216e933 --- 参考文献:[https://blog.csdn.net/weixin_39953244/article/details/110890333](https://blog.csdn.net/weixin_39953244/article/details/110890333) # **如果目标IP是在本地网络:** nmap会对该IP进行arp查询,如果有响应则认定其是存活的。 # **如果目标IP不在本地网络,且当前权限为普通用户权限:** **当前权限是普通用户权限,nmap会默认会:** 1. 向目标的TCP 80端口发送TCP SYN包 2. 向目标的TCP443端口发送TCP SYN包 对应的nmap参数为-PS80,443,只要任何一个端口收到响应则判定该IP是存活的。 # **如果目标IP不在本地,且当前权限为管理员权限,nmap则会:** 3. 向目标发送ICMP echo request(即ping请求) 4. 向目标的TCP 443端口发送TCP SYN包 5. 向目标的TCP 80端口发送ACK包 6. 向目标发送ICMP timestamp request包 如果以上四个请分别对应-PE、PS443、-PA80、-PP参数,如果任意一个请求有应答,则认定目标是存活的。 举个例子,如果我们执行**nmap 8.8.4.4 -p 53**命令确认8.8.4.4的TCP 53端口是否开启,以上三种情形实际执行的nmap命令分别为: 7. nmap 8.8.4.4 -p 53 8. nmap 8.8.4.4 -p 53 **PS80 -PS443** 9. nmap 8.8.4.4 -p 53 **PE -PS443 -PA80 -PP** 那接下来我们分别以管理员及普通用户权限执行以下**nmap 8.8.4.4 -p 53**命令: ![[IMG-20260516155636122.png]] 发现问题没?普通用户msf扫描不到53端口,为什么呢? 正如我们上面所提到的,如果当前用户是普通用户权限,nmap默认会通过目标IP的80及443端口来判断目标IP是否存活,在这个例子中,目标80及443端口均不可达,所以nmap认为8.8.4.4是死的并不再继续执行扫描动作。 # 总结 **1、nmap如果不正确使用,其扫描结果将不可靠。** **2、nmap在扫描目标之前会先确定其是否存活,如果存活才会继续执行扫描操作。** **3、nmap可以通过-PE、-PS、PA、PP、-Pn等参数指定判断目标存活状态的条件。** **4、nmap的默认参数不一定可靠,因此在执行时要明确指定你想要的参数。**