网站首页 > 精选文章 正文
大家应该都知道,nmap是用来扫描端口的标杆级神器,我们经常在运维工作或安全评估中使用到它。在使用的时候,我们可能会碰到明明目标IP端口有开着,但是nmap却死活扫描不出来,等了大半天却得到一些不可靠的结果。那到底是nmap不行还是我们用法不对呢?下面且听老司机娓娓道来。
为了提高扫描的效率,nmap在扫描指定IP之前会先判断该IP是否存活,如果不存活则忽略,避免花太多的精力去扫描根本就不存在的IP。那nmap是怎么判断目标IP是否存活呢?主要分三种情况:
如果目标IP是在本地网络:
nmap会对该IP进行arp查询,如果有响应则认定其是存活的。
如果目标IP不在本地网络,且当前权限为普通用户权限:
当前权限是普通用户权限,nmap会默认会:
- 向目标的TCP 80端口发送TCP SYN包
- 向目标的TCP443端口发送TCP SYN包
对应的nmap参数为-PS80,443,只要任何一个端口收到响应则判定该IP是存活的。
如果目标IP不在本地,且当前权限为管理员权限,nmap则会:
- 向目标发送ICMP echo request(即ping请求)
- 向目标的TCP 443端口发送TCP SYN包
- 向目标的TCP 80端口发送ACK包
- 向目标发送ICMP timestamp request包
如果以上四个请分别对应-PE、PS443、-PA80、-PP参数,如果任意一个请求有应答,则认定目标是存活的。
举个例子,如果我们执行nmap 8.8.4.4 -p 53命令确认8.8.4.4的TCP 53端口是否开启,以上三种情形实际执行的nmap命令分别为:
- nmap 8.8.4.4 -p 53
- nmap 8.8.4.4 -p 53 -PS80 -PS443
- nmap 8.8.4.4 -p 53 -PE -PS443 -PA80 -PP
那接下来我们分别以管理员及普通用户权限执行以下nmap 8.8.4.4 -p 53命令:
发现问题没?普通用户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的默认参数不一定可靠,因此在执行时要明确指定你想要的参数。
- 上一篇: 实战剖析内网域渗透(上)_内网渗透可以用来干嘛
- 下一篇: 服务器有哪些方法可以检查端口是否打开?
猜你喜欢
- 2025-09-29 服务器有哪些方法可以检查端口是否打开?
- 2025-09-29 实战剖析内网域渗透(上)_内网渗透可以用来干嘛
- 2025-09-29 Masscan扫描工具神器,号称最快扫描器
- 2025-09-29 几款经典的端口扫描工具推荐_端口扫描工具怎么用
- 2025-09-29 「安全测试」使用python+nmap进行端口扫描
- 2025-09-29 如何检查 Linux 中开放的端口列表?
- 2025-09-29 网络安全工程师演示:黑客是如何使用Nmap网络扫描工具的?
- 2025-09-29 第二轮学习笔记: 扫描工具 -- nmap端口扫描
- 2025-09-29 红队渗透工具集——端口扫描_渗透常用端口
- 2025-09-29 SpringBoot + nmap4j 获取端口信息
- 最近发表
- 标签列表
-
- 向日葵无法连接服务器 (32)
- git.exe (33)
- vscode更新 (34)
- dev c (33)
- git ignore命令 (32)
- gitlab提交代码步骤 (37)
- java update (36)
- vue debug (34)
- vue blur (32)
- vscode导入vue项目 (33)
- vue chart (32)
- vue cms (32)
- 大雅数据库 (34)
- 技术迭代 (37)
- 同一局域网 (33)
- github拒绝连接 (33)
- vscode php插件 (32)
- vue注释快捷键 (32)
- linux ssr (33)
- 微端服务器 (35)
- 导航猫 (32)
- 获取当前时间年月日 (33)
- stp软件 (33)
- http下载文件 (33)
- linux bt下载 (33)