Nmap使用手册
安装与基础环境
各平台安装
-
Kali Linux :已经装好,直接使用
nmap命令 -
Ubuntu/Debian
Bashsudo apt update && sudo apt install nmap -
CentOS/RHEL
Bashsudo yum install nmap -
Windows :官网下载安装包,必须勾选 Npcap 驱动(抓包核心)
-
macOS
Bashbrew install nmap
权限说明
-
高级功能(
-sSSYN扫描、-O系统识别、-sV深度版本探测)必须管理员/root权限 -
Windows:以管理员身份运行 CMD/PowerShell
-
Linux/macOS:加
sudo
核心语法与目标指定
基础语法
Bash
nmap [扫描类型] [选项] [目标]
目标指定方式
-
单个IP:
192.168.1.1 -
网段:
192.168.1.0/24、192.168.1.1-50 -
域名:
baidu.com -
多个目标:
192.168.1.1 192.168.1.10 baidu.com -
从文件读取:
-iL targets.txt(一行一个目标) -
排除目标:
--exclude 192.168.1.5、--excludefile exclude.txt
主机发现(存活扫描)
用途:判断网段内哪些IP在线,避免无效扫描
| 参数 | 作用 | 示例 |
|---|---|---|
-sn |
Ping扫描(无端口扫描) | nmap -sn 192.168.1.0/24 |
-PR |
ARP扫描(局域网最准) | nmap -PR 192.168.1.0/24 |
-PE |
ICMP Echo请求(标准Ping) | nmap -PE 192.168.1.0/24 |
-PS/PA/PU |
TCP SYN/ACK、UDP Ping(绕过禁ICMP) | nmap -PS80,443 192.168.1.0/24 |
-n |
禁用DNS解析(提速) | nmap -n -sn 192.168.1.0/24 |
端口扫描(核心功能)
端口状态(Nmap定义)
-
open:开放(有服务监听) -
closed:关闭(无服务) -
filtered:被防火墙/IDS屏蔽 -
unfiltered:未屏蔽,但需进一步确认 -
open|filtered:开放或被屏蔽 -
closed|filtered:关闭或被屏蔽
TCP 核心扫描类型:-sS 与 -sT 详解
一句话总结
-
-sS= SYN 半开扫描**:只完成 TCP 三次握手前两步,不建完整连接,**隐蔽、快、需 root -
-sT= Connect 全连接扫描**:完成完整三次握手,**稳定、无需 root、易被日志记录
详细对比表
| 项目 | -sS (SYN 半开扫描) |
-sT (Connect 全连接扫描) |
|---|---|---|
| 全称 | TCP SYN Scan | TCP Connect Scan |
| 握手过程 | SYN → SYN-ACK → RST 不建立完整连接 | SYN → SYN-ACK → ACK 完整建立连接 |
| 权限要求 | 必须 root / 管理员 | 普通用户即可 |
| 速度 | 快 | 较慢 |
| 隐蔽性 | 高,不易被日志记录 | 低,目标系统会记录连接 |
| 防火墙/IDS | 更难被简单规则检测 | 容易被检测、拦截 |
| 可靠性 | 稍弱(可能丢包) | 非常稳定、准确 |
| 默认规则 | root 下默认扫描方式 | 普通用户下自动 fallback 为 -sT |
| 适用场景 | 渗透测试、外网扫描、隐蔽扫描 | 内网信任环境、普通权限、稳定扫描 |
工作原理
-
-sS:发送 SYN → 收到 SYN+ACK 判定端口开放 → 直接发送 RST 断开,无完整连接,应用层无日志 -
-sT:完成完整三次握手建立连接,判定端口状态后关闭,系统日志会记录该连接
使用示例
Bash
# SYN 半开扫描(需 sudo)
sudo nmap -sS 192.168.1.1
# TCP 全连接扫描(普通权限即可)
nmap -sT 192.168.1.1
其他扫描类型
| 参数 | 名称 | 特点 | 适用场景 |
|---|---|---|---|
-sA |
ACK扫描 | 探测防火墙规则 | 识别防火墙策略 |
-sF/-sN/-sX |
FIN/Null/Xmas扫描 | 发送异常TCP包 | 绕过简单防火墙/IDS |
-sU |
UDP扫描 | 速度慢,无连接机制 | DNS、SNMP 等UDP服务 |
-sO |
IP协议扫描 | 探测支持的IP协议 | 网络层信息收集 |
端口指定
| 参数 | 作用 | 示例 |
|---|---|---|
-p <端口> |
指定端口/范围 | -p 80、-p 1-1000、-p U:53,T:80 |
-p- |
扫描全部65535端口 | nmap -p- 192.168.1.1 |
-F |
快速扫描(常用100端口) | nmap -F 192.168.1.1 |
--top-ports <n> |
扫描最常用n个端口 | nmap --top-ports 100 192.168.1.1 |
服务与版本探测(-sV)
用途:识别端口对应服务、版本、组件(如 Apache 2.4.49、OpenSSH 8.2)
Bash
sudo nmap -sV 192.168.1.1
-
--version-intensity 0-9:探测强度 -
--version-all:全量探测 -
--version-trace:调试输出
操作系统探测(-O)
Bash
sudo nmap -O 192.168.1.1
-
--osscan-limit:仅对有开放端口的主机探测 -
--osscan-guess:激进猜测操作系统
全能扫描(-A)
-A = -sV + -O + 脚本扫描 + 路由跟踪
Bash
sudo nmap -A -T4 192.168.1.1
扫描速度与时序(-T)
0~5级,数字越大速度越快,越易被检测
-
-T0/-T1:极慢,用于躲避IDS -
-T2:轻柔扫描,不占用带宽 -
-T3:默认模式 -
-T4:推荐常用,速度与稳定性平衡 -
-T5:疯狂扫描,易丢包、易被拦截
示例:
Bash
sudo nmap -sS -T4 192.168.1.0/24
防火墙/IDS规避
| 参数 | 作用 | 示例 |
|---|---|---|
-f |
数据包分片 | nmap -f -sS target |
-D |
诱饵IP隐藏真实地址 | nmap -D 1.1.1.1,ME target |
--source-port |
指定源端口 | nmap --source-port 53 target |
--data-length |
附加随机数据 | nmap --data-length 50 target |
NSE 脚本引擎
常用脚本分类
-
default(-sC):默认安全脚本 -
safe:安全无害 -
vuln:漏洞探测 -
auth:弱口令爆破 -
discovery:信息收集
常用命令
Bash
# 默认脚本扫描
nmap -sC 192.168.1.1
# 漏洞扫描
nmap --script vuln 192.168.1.1
# SSH 弱口令尝试
nmap --script ssh-brute 192.168.1.1
输出格式
| 参数 | 格式 | 用途 |
|---|---|---|
-oN |
普通文本 | 直接阅读 |
-oX |
XML | 导入漏洞管理工具 |
-oG |
Grep格式 | 命令行过滤 |
-oA |
全格式输出 | 归档保存 |
| 示例: |
Bash
sudo nmap -sS -sV -oA result 192.168.1.1
实战常用命令
Bash
# 存活主机扫描
nmap -sn 192.168.1.0/24
# 标准 SYN 快速端口扫描
sudo nmap -sS -T4 192.168.1.1
# 全端口+服务版本
sudo nmap -sS -sV -p- -T4 192.168.1.1
# 全面信息收集
sudo nmap -A -T4 192.168.1.1
# 漏洞探测
nmap --script vuln 192.168.1.1