Nmap 网络探测工具
一句话概述:Nmap 是最强大的网络扫描工具,可以发现网络上的设备、开放的端口、运行的服务和操作系统版本,是安全人员和运维的必备工具。
核心知识点
| 概念 | 白话解释 |
|---|
| 端口扫描 | 探测目标机器哪些端口是开放的 |
| 主机发现 | 找出网络上有哪些在线的设备 |
| 服务识别 | 检测开放端口上跑的是什么服务和版本 |
| OS 检测 | 猜测目标机器的操作系统类型和版本 |
| NSE 脚本 | Nmap 脚本引擎,可以跑漏洞检测等高级功能 |
| SYN 扫描 | 半开扫描,快且隐蔽(默认方式,需要 root) |
安装配置
# Ubuntu/Debian
sudo apt install nmap # 安装
# CentOS/RHEL
sudo yum install nmap
# macOS
brew install nmap
nmap --version # 查看版本
基本使用
# 扫描单个主机
nmap 192.168.1.1 # 扫描常见的 1000 个端口
# 扫描多个主机
nmap 192.168.1.1 192.168.1.2 # 扫描两个 IP
nmap 192.168.1.1-50 # 扫描 IP 范围
nmap 192.168.1.0/24 # 扫描整个子网
# 扫描域名
nmap example.com # 域名扫描
# 指定端口
nmap -p 80 192.168.1.1 # 只扫 80 端口
nmap -p 80,443,8080 192.168.1.1 # 扫多个端口
nmap -p 1-1000 192.168.1.1 # 扫端口范围
nmap -p- 192.168.1.1 # 扫所有 65535 个端口(慢)
常用扫描类型
# SYN 扫描(默认,最常用,需要 root)
sudo nmap -sS 192.168.1.1 # 半开扫描,快且隐蔽
# TCP 连接扫描(不需要 root)
nmap -sT 192.168.1.1 # 完整 TCP 握手
# UDP 扫描
sudo nmap -sU 192.168.1.1 # 扫描 UDP 端口(很慢)
# Ping 扫描(只发现主机,不扫端口)
nmap -sn 192.168.1.0/24 # 发现网络上的活跃主机
# 版本检测
nmap -sV 192.168.1.1 # 检测服务版本
# 比如能告诉你 22 端口跑的是 OpenSSH 8.9
# 操作系统检测
sudo nmap -O 192.168.1.1 # 检测操作系统
高级用法
综合扫描
# 常用的综合扫描命令
sudo nmap -sS -sV -O -A 192.168.1.1 # SYN扫描+版本检测+OS检测+高级功能
# -A 包括:OS检测、版本检测、脚本扫描、traceroute
# 快速扫描
nmap -F 192.168.1.1 # 只扫最常用的 100 个端口
# 高强度扫描
nmap -T4 -A -v 192.168.1.1 # -T4: 加速,-v: 详细输出
NSE 脚本
# 运行默认脚本
nmap -sC 192.168.1.1 # 等同于 --script=default
# 指定脚本
nmap --script=http-title 192.168.1.1 # 获取 Web 页面标题
nmap --script=ssl-cert -p 443 example.com # 查看 SSL 证书信息
nmap --script=vuln 192.168.1.1 # 运行漏洞检测脚本
# 列出可用脚本
nmap --script-help="http-*" # 查看 http 相关脚本
输出格式
nmap -oN result.txt 192.168.1.1 # 普通文本输出
nmap -oX result.xml 192.168.1.1 # XML 输出
nmap -oG result.gnmap 192.168.1.1 # Greppable 输出
nmap -oA result 192.168.1.1 # 同时输出三种格式
绕过防火墙
# 分片扫描(绕过简单的 IDS)
sudo nmap -f 192.168.1.1 # IP 分片
# 指定源端口(某些防火墙信任特定端口)
sudo nmap --source-port 53 192.168.1.1 # 伪装成 DNS 流量
# 慢速扫描(降低被检测概率)
nmap -T1 192.168.1.1 # -T0 最慢,-T5 最快
常见报错
| 报错信息 | 原因 | 解决方案 |
|---|
requires root privileges | 需要 root 权限 | 加 sudo |
Host seems down | 主机不响应 ping | 加 -Pn 跳过主机发现 |
| 扫描很慢 | 端口太多或网络慢 | 用 -F 或 -T4 加速 |
| 全部显示 filtered | 防火墙拦截了 | 尝试不同扫描方式 |
| 结果不准 | 目标有 IDS/IPS | 调整扫描速度和方式 |
速查表
# 主机发现
nmap -sn 192.168.1.0/24 # Ping 扫描
nmap -Pn <目标> # 跳过主机发现直接扫描
# 端口扫描
nmap <目标> # 扫描常见 1000 端口
nmap -p 80,443 <目标> # 指定端口
nmap -p- <目标> # 全端口扫描
nmap -F <目标> # 快速扫描(100 端口)
# 服务/OS 检测
nmap -sV <目标> # 服务版本
nmap -O <目标> # 操作系统
nmap -A <目标> # 全面检测
# 速度控制
-T0 (偏执) -T1 (鬼鬼祟祟) -T2 (礼貌) -T3 (正常) -T4 (激进) -T5 (疯狂)
# 端口状态
open # 开放(有服务在监听)
closed # 关闭(没有服务,但端口可达)
filtered # 被防火墙过滤(无法判断)
unfiltered # 未被过滤但无法确定开放/关闭
# ⚠️ 法律提醒
# 只扫描你有权限扫描的目标!
# 未经授权扫描他人网络是违法行为
参考:Nmap 官网 | Nmap 文档 | Nmap 参考指南