大家应该都知道,nmap是用来扫描端口的标杆级神器,我们经常在运维工作或安全评估中使用到它 。在使用的时候,我们可能会碰到明明目标IP端口有开着,但是nmap却死活扫描不出来,等了大半天却得到一些不可靠的结果 。那到底是nmap不行还是我们用法不对呢?下面且听老司机娓娓道来 。
为了提高扫描的效率,nmap在扫描指定IP之前会先判断该IP是否存活,如果不存活则忽略,避免花太多的精力去扫描根本就不存在的IP 。那nmap是怎么判断目标IP是否存活呢?主要分三种情况:
如果目标IP是在本地网络:【为什么端口明明开着,nmap却扫描不出来,看老司机怎么指点迷津】nmap会对该IP进行arp查询,如果有响应则认定其是存活的 。
如果目标IP不在本地网络,且当前权限为普通用户权限:当前权限是普通用户权限,nmap会默认会:
- 向目标的TCP 80端口发送TCP SYN包
- 向目标的TCP443端口发送TCP SYN包
如果目标IP不在本地,且当前权限为管理员权限,nmap则会:
- 向目标发送ICMP echo request(即ping请求)
- 向目标的TCP 443端口发送TCP SYN包
- 向目标的TCP 80端口发送ACK包
- 向目标发送ICMP timestamp request包
举个例子,如果我们执行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
文章插图
发现问题没?普通用户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的默认参数不一定可靠,因此在执行时要明确指定你想要的参数 。
推荐阅读
- ?甲亢为什么会胖
- 为什么店铺流量有但是没有销量 为什么我开的淘宝店没有流量
- 为什么揉眼睛时会看到奇怪的图案?看完绝对涨知识!
- 人造雪是“假雪”吗?北京冬奥会为什么一定要用人造雪?
- 为什么门窗关好后家里还漏风?学会这么做,不进冷风还隔音
- 淘宝店铺买流量有用吗 为什么我开的淘宝店没有流量
- 满月宝宝为什么总爱哭
- 34页PPT干货:为什么选择Spring Cloud
- 为什么共享文件夹、打印机访问还是受限?这几个设置解决90%问题
- 浅谈数据库分布式架构设计