跳转至

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 参考指南