主动扫描-Nmap-设备发现

简介: 主动扫描-Nmap-设备发现

主动扫描的工具很多,最为优秀的非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文件等。

相关实践学习
深入解析Docker容器化技术
Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。Docker是世界领先的软件容器平台。开发人员利用Docker可以消除协作编码时“在我的机器上可正常工作”的问题。运维人员利用Docker可以在隔离容器中并行运行和管理应用,获得更好的计算密度。企业利用Docker可以构建敏捷的软件交付管道,以更快的速度、更高的安全性和可靠的信誉为Linux和Windows Server应用发布新功能。 在本套课程中,我们将全面的讲解Docker技术栈,从环境安装到容器、镜像操作以及生产环境如何部署开发的微服务应用。本课程由黑马程序员提供。     相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
目录
相关文章
|
Java 关系型数据库 Oracle
|
4月前
|
数据采集 人工智能 安全
动态IP代理与静态IP代理的深度解析及国内服务评估
动态IP代理与静态IP代理在技术原理、性能表现及应用场景上各有千秋。动态IP通过IP池轮换实现高频短时访问,适合预算有限的企业,成本低、效率高;静态IP采用固定分配模式,连接稳定且安全性强,适配长期会话需求。国内服务商分三大梯队,提供多样化方案。选型需综合业务需求、安全要求与成本预算,未来技术发展将推动代理服务更高效、可信。企业应根据解析评估,选择适配方案以提升竞争力。
227 0
|
算法 C++
单调队列(C/C++)
单调队列(C/C++)
|
11月前
|
安全 测试技术 网络安全
除了安全的编程实践,还有哪些常见的缓冲区溢出攻击防范方法?
【10月更文挑战第20天】综上所述,防范缓冲区溢出攻击需要综合运用多种方法,从系统安全机制增强、漏洞检测与修复、网络安全防护到安全策略与管理等多个层面入手,形成全方位的安全防护体系,才能有效地抵御缓冲区溢出攻击,保障计算机系统和网络的安全。
|
应用服务中间件 Linux nginx
Docker镜像管理篇
关于Docker镜像管理的教程,涵盖了Docker镜像的基本概念、管理命令以及如何制作Docker镜像等内容。
898 7
Docker镜像管理篇
|
存储 缓存 人工智能
bidict,一个超酷的 Python 双向字典库!
bidict,一个超酷的 Python 双向字典库!
245 1
|
网络协议 网络架构 Windows
解锁远程联机模式:使用MCSM面板搭建我的世界服务器,并实现内网穿透公网访问
解锁远程联机模式:使用MCSM面板搭建我的世界服务器,并实现内网穿透公网访问
901 0
|
C++
VS #define _CRT_SECURE_NO_WARNINGS 1 添加了仍然报错
一些小的错误,往往让初学者抓耳挠腮 VS #define _CRT_SECURE_NO_WARNINGS 1 一定要放在最开始的位置
579 2
|
JSON 安全 API
API开发实战:从设计到部署的全流程指南
在数字化转型中,API成为系统集成的关键。本文引导读者逐步实践API开发: 1. 设计阶段确定需求,选择RESTful风格,例如天气查询API(/api/weather/{city}),返回JSON数据。 2. 使用Python和Flask实现API,处理GET请求,返回城市天气信息。 3. 进行测试,如用curl请求`http://localhost:5000/api/weather/Beijing`。 4. 文档化API,借助Flask-RESTPlus自动生成文档。 5. 部署到Heroku,创建`Procfile`,通过`heroku`命令推送代码。 【6月更文挑战第28天】
2114 0
|
XML Java 数据库
Android App开发实战之实现微信记账本(附源码 超详细必看)
Android App开发实战之实现微信记账本(附源码 超详细必看)
533 0