nmap 基本介绍
Nmap(Network Mapper)是一款开源的网络扫描工具,广泛用于网络发现和安全审计。它能够扫描网络中的主机、端口和服务,并提供详细的网络拓扑信息。以下是 Nmap 的主要功能和特点:
1. 主机发现
- Nmap 可以识别网络中的活动主机,支持多种探测技术,如 ICMP ping、TCP SYN 扫描等。
2. 端口扫描
- 支持多种扫描方式(如 TCP SYN、TCP Connect、UDP 等),检测目标主机上开放的端口及其服务。
3. 服务与版本检测
- 能够识别端口上运行的服务及其版本信息,帮助管理员了解网络中的服务配置。
4. 操作系统检测
- 通过分析网络栈特征,Nmap 可以推测目标主机的操作系统类型。
5. 脚本扫描
- Nmap 支持 NSE(Nmap Scripting Engine),允许用户编写脚本进行自动化任务,如漏洞检测、服务枚举等。
6. 输出格式
- 支持多种输出格式(文本、XML、Grepable 等),便于与其他工具集成或生成报告。
7. 灵活性
- 提供丰富的命令行选项,用户可以根据需求定制扫描行为。
8. 跨平台
- 支持 Windows、Linux、macOS 等多种操作系统。
基本使用
1.主机发现
- ICMP Echo 请求(Ping 扫描)
发送 ICMP Echo 请求包,检测目标是否响应。
# 扫描整个子网,列出活动的主机
nmap -sn 192.168.123.0/24
nmap -sn 192.168.123.0-100
# 扫描本地网络使用ARP协议进行请求,扫描远程网络使用了ICMP协议,还会利用TCP SYN和TCP ACK进行主机发现
# 像windows服务,防火墙默认会屏蔽所有的ICMP包,使用no ping绕过防火墙
nmap -Pn 192.168.123.11
- TCP SYN Ping
向目标主机的指定端口发送 TCP SYN 包,检测是否响应。
nmap -PS 192.168.1.1
- UDP Ping
向目标主机的指定端口发送 UDP 包,检测是否响应。
nmap -PU 192.168.1.1
- ARP Ping
在局域网中使用 ARP 请求检测活动主机(仅适用于本地网络)。
nmap -PR 192.168.1.0/24
- 组合探测
使用多种探测技术提高准确性。
nmap -sn -PE -PS 21,22,80 192.168.1.0/24
主机发现常用选项:
-sn:仅进行主机发现,不扫描端口。-PE:使用 ICMP Echo 请求。-PS:使用 TCP SYN Ping。-PU:使用 UDP Ping。-PR:使用 ARP Ping(适用于本地网络)。-n:禁用 DNS 解析,加快扫描速度。
2.端口扫描
-
TCP SYN 扫描(半开放扫描)
发送 TCP SYN 包,检测目标端口是否开放。这是最常用的扫描方式,速度快且隐蔽。
nmap -sS 192.168.1.1


-
TCP Connect 扫描 使用操作系统的
connect()函数完成 TCP 三次握手,检测端口是否开放。nmap -sT 192.168.1.1


-
UDP 扫描 检测目标主机上的 UDP 端口是否开放。
nmap -sU 192.168.1.1 -
ACK 扫描 发送 TCP ACK 包,用于检测防火墙规则。
nmap -sA 192.168.1.1 -
FIN 扫描 发送 TCP FIN 包,用于绕过某些防火墙。
nmap -sF 192.168.1.1
端口扫描常用选项:
-
-p:指定扫描的端口范围。# 仅扫描TCP端口nmap -p 1-1000 192.168.1.1 # 扫描1到1000端口nmap -p 80,443 192.168.1.1 # 扫描80和443端口nmap -p- 192.168.1.1 # 扫描所有端口(1-65535) -
-F:快速扫描,仅扫描常用端口。 -
--top-ports:扫描最常见的 N 个端口。nmap --top-ports 100 192.168.1.1 -
-sV:检测端口上运行的服务版本。nmap -sV 192.168.1.1 -
-O:检测目标主机的操作系统。nmap -O 192.168.1.1
综合示例
-
扫描整个子网的主机并检测开放端口
nmap -sn 192.168.1.0/24nmap -sS 192.168.1.0/24 -
扫描特定主机的常用端口并检测服务版本
nmap -sV -F 192.168.1.1 -
扫描特定主机的所有端口并检测操作系统
nmap -p- -O 192.168.1.1 -
扫描 UDP 端口
nmap -sU 192.168.1.1