Nmap实时主机探测
- 什么是nmap
Nmap(Network Mapper)是一个开源的网络扫描工具,用于探测网络上的主机、服务和网络可用性。它具有广泛的功能和灵活性,可用于多种网络相关任务,包括:
- 主机发现:识别网络上活动的主机。
- 端口扫描:确定主机上开放的端口和正在运行的服务。
- 服务版本检测:尝试识别主机上运行的具体服务和应用程序的版本信息。
- 操作系统检测:尝试确定目标主机的操作系统类型和版本。
- 脚本扫描:使用Nmap脚本引擎执行自定义脚本,对主机进行更深入的检测和评估。
Nmap常被网络管理员、安全专家和渗透测试人员用于网络评估、安全审计和监控。但是,由于其功能强大,使用者需要谨慎使用并遵守法律法规,确保在合法和授权的范围内使用Nmap进行网络扫描和测试。
- Nmap 命令行选项的快速摘要
- 扫描类型与命令示例
| 扫描类型 | 命令示例 | 说明 |
|---|---|---|
| ARP扫描 | sudo nmap -PR -sn MACHINE_IP/24 | 这个选项告诉 nmap 使用ICMP协议的Ping(ARP请求包)请求,对目标网络的主机进行主机发现 |
| ICMP 回波扫描 | sudo nmap -PE -sn MACHINE_IP/24 | 告诉 nmap 使用ICMP协议的Echo请求(ping),对目标网络的主机进行主机发现 |
| ICMP 时间戳扫描 | sudo nmap -PP -sn MACHINE_IP/24 | |
| ICMP 地址掩码扫描 | sudo nmap -PM -sn MACHINE_IP/24 | |
| TCP SYN Ping 扫描 | sudo nmap -PS22,80,443 -sn MACHINE_IP/30 | |
| TCP ACK Ping 扫描 | sudo nmap -PA22,80,443 -sn MACHINE_IP/30 | |
| UDP Ping 扫描 | sudo nmap -PU53,161,162 -sn MACHINE_IP/30 | |
| SYN 扫描(即隐秘扫描) | nmap -sS 10.10.231.61 | 这个命令中的参数 "-sS" 指定使用 SYN 扫描。SYN 扫描是一种 TCP 扫描技术,它通过发送 TCP 的 SYN 包来尝试连接到目标主机的端口,然后根据响应来判断端口是否开放。 |
| TCP连接扫描(-sT) | nmap -sT 10.10.231.61 | 是一种基于TCP协议的扫描方式,它通过向目标主机的每个端口发送完整的TCP连接请求来扫描端口。这种扫描方式的行为类似于正常的TCP连接,因此可能被目标主机的防火墙或入侵检测系统所记录。 |
| UDP扫描 (-sU) | -sU: 这个选项告诉Nmap执行UDP扫描。UDP是一种无连接的传输协议,与TCP(有连接)不同。UDP扫描尝试发现目标主机上开放的UDP端口。 | -F: 这个选项告诉Nmap执行快速扫描(快速模式),只扫描最常见的端口。对于UDP扫描,它会尝试扫描一组常见的UDP端口而不是整个端口范围,-v: 这个选项启用了详细模式,输出更多的信息,包括扫描的进度和更详细的结果 |
-sn 如果您只对主机发现感兴趣而无需端口扫描,请记住添加。省略 -sn 将使 Nmap 默认对活动主机进行端口扫描。
Echo请求(ICMP Echo)和ARP请求包(Address Resolution Protocol)是用于网络通信的不同类型的数据包,具有不同的功能和作用: 1.ICMP Echo请求: ICMP(Internet Control Message Protocol)是用于在IP网络上发送错误消息和操作消息的协议。其中,Echo请求是ICMP消息类型之一。 ICMP Echo请求用于探测远程主机的可达性,发送Echo请求并等待远程主机回复,从而确认主机是否可访问。 在网络诊断和主机发现中常用,例如Ping命令通常使用ICMP Echo请求。 2.ARP请求包: ARP(Address Resolution Protocol)是用于在IP地址和MAC地址之间建立映射关系的协议。 ARP请求包用于在局域网上寻找目标设备的MAC地址。主机在尝试与另一台主机进行通信时,会首先检查自己的ARP缓存,如果找不到对应的MAC地址,则会发送ARP请求。 ARP请求广播到网络上的所有设备,询问特定IP地址对应的MAC地址,该IP地址对应的设备会回复包含自己MAC地址的ARP响应包。 总的来说,ICMP Echo请求用于检测主机的可达性,而ARP请求包用于在局域网中寻找IP地址对应的MAC地址。它们都是网络通信中常用的数据包类型,但用途和功能不同。
枚举目标:定义侦察的范围,确定潜在目标,例如 IP 范围、域名或特定系统。
发现活跃主机:使用各种方法,如 Ping 扫描、ARP 扫描或网络扫描工具(例如 Nmap)来识别网络上哪些目标是活跃/在线的。
反向 DNS 查询:使用反向 DNS 查询工具或命令,将 IP 地址转换为域名,以获取有关相关域名的信息。
扫描端口:使用诸如 Nmap 等工具扫描已发现的活跃主机的开放端口,这些端口信息能提供有关运行在该主机上的服务的信息。
检测版本:在识别出开放端口后,利用工具或技术确定这些端口上运行的服务版本。这有助于评估潜在的漏洞。
检测操作系统:使用操作系统指纹识别技术或诸如 Nmap 等工具来确定目标主机的操作系统,这有助于更好地了解环境。
Traceroute(路由追踪):使用 Traceroute 或类似工具来绘制您的系统与目标之间的网络路径,显示数据包传输经过的路由器或系统的顺序。
脚本:使用自定义脚本或预先构建的工具来自动化其中的一些过程,使枚举更加高效。
撰写输出:记录并组织侦察过程中获得的信息。重要的是要记录发现并将其组织起来以便进行分析和潜在的利用。
| 选项 | 目的 |
|---|---|
| -n | 没有 DNS 查找 |
| -p- | 所有端口 |
| -p1-1023 | 扫描端口1到1023 |
| -F | 100个最常见端口 |
| -r | 按顺序扫描端口 |
| -R | 所有主机的反向 DNS 查找 |
| -sn | 仅主机发现 |
| -T<0-5> | -T0 最慢,-T5 最快 |
| --max-rate 50 | 速率 <= 50 packets/秒 |
| --min-rate 15 | 速率 >= 15 packets/秒 |
| --min-parallelism 100 | 至少100个并行探测 |