当前位置: 首页 > news >正文

nmap 命令完整使用手册

🗺️ 网络发现与安全审计神器 - 网络安全必装工具


目录

  1. 简介
  2. 安装
  3. 基础语法
  4. 目标指定
  5. 主机发现
  6. 端口扫描
  7. 服务与版本检测
  8. 操作系统检测
  9. 脚本引擎 (NSE)
  10. 防火墙与 IDS 规避
  11. 输出与报告
  12. 定时与性能
  13. 实战示例
  14. 技巧与最佳实践

一、简介

1.1 什么是 nmap

nmap(Network Mapper)是世界上最流行的网络发现和安全审计工具。它被系统管理员、网络工程师和安全专业人员广泛使用。

核心功能

  • 主机发现(谁在线)
  • 端口扫描(开了哪些端口)
  • 版本检测(运行什么服务)
  • 操作系统检测(什么系统)
  • 脚本扫描(漏洞检测等)

1.2 工作原理

┌─────────────────────────────────────────────────────────────────────┐
│                    nmap 扫描流程                                    │
├─────────────────────────────────────────────────────────────────────┤
│                                                                     │
│    Step 1: 主机发现                                                │
│    ═════════════════                                               │
│    确定目标是否在线                                                │
│    方法:ARP、ICMP、TCP Ping、UDP Ping                             │
│                                                                     │
│           ▼                                                         │
│    Step 2: 端口扫描                                                │
│    ═════════════════                                               │
│    确定哪些端口开放                                                │
│    方法:SYN、TCP Connect、UDP、ACK、FIN、Xmas、Null               │
│                                                                     │
│           ▼                                                         │
│    Step 3: 版本检测(-sV)                                         │
│    ══════════════════════                                          │
│    确定运行的服务和版本                                            │
│                                                                     │
│           ▼                                                         │
│    Step 4: OS 检测(-O)                                           │
│    ════════════════════                                            │
│    确定目标操作系统                                                │
│                                                                     │
│           ▼                                                         │
│    Step 5: 脚本扫描(--script)                                    │
│    ═════════════════════════                                       │
│    运行 NSE 脚本(漏洞检测、暴力破解等)                           │
│                                                                     │
│           ▼                                                         │
│    输出报告                                                        │
│                                                                     │
└─────────────────────────────────────────────────────────────────────┘

1.3 端口状态

状态 说明
open 端口开放,有程序在监听
closed 端口关闭,可达但无程序监听
filtered 被防火墙过滤,无法确定
unfiltered 端口可达,但无法判断开放/关闭
open|filtered 可能开放或被过滤
closed|filtered 可能关闭或被过滤

二、安装

2.1 各平台安装

Linux

# Debian/Ubuntu
sudo apt update
sudo apt install nmap# CentOS/RHEL
sudo yum install nmap# Alpine
apk add nmap# Arch Linux
sudo pacman -S nmap# 编译安装
wget https://nmap.org/dist/nmap-7.94.tar.bz2
tar xjf nmap-7.94.tar.bz2
cd nmap-7.94
./configure && make && sudo make install

macOS

brew install nmap
# 或
sudo port install nmap

Windows

choco install nmap
# 或下载安装包:https://nmap.org/download.html

2.2 验证安装

nmap --version
# 输出: Nmap version 7.94 ( https://nmap.org )# 测试扫描
nmap -sn 127.0.0.1

三、基础语法

3.1 命令格式

nmap [扫描类型] [选项] [目标]

3.2 常用选项

扫描类型

选项 说明 需要 root
-sS TCP SYN 扫描(半开扫描)
-sT TCP Connect 扫描(全连接)
-sU UDP 扫描
-sA TCP ACK 扫描
-sW TCP Window 扫描
-sM TCP Maimon 扫描
-sN TCP Null 扫描
-sF TCP FIN 扫描
-sX TCP Xmas 扫描
-sO IP 协议扫描
-sV 版本检测
-sC 默认脚本扫描
-sn Ping 扫描(只发现主机)
-sL 列表扫描(只列出目标)

主机发现

选项 说明
-sn Ping 扫描,不进行端口扫描
-Pn 跳过主机发现,直接扫描
-PS TCP SYN Ping
-PA TCP ACK Ping
-PU UDP Ping
-PE ICMP Echo Ping
-PP ICMP Timestamp Ping
-PM ICMP Address Mask Ping
-PY SCTP INIT Ping
-PR ARP Ping(局域网)
-n 不做 DNS 解析
-R 总是做 DNS 反向解析

端口指定

选项 说明 示例
-p 指定端口 -p 80
-p- 所有端口 -p-
-p 1-1000 端口范围 -p 1-1000
-p 80,443,8080 多个端口 -p 80,443,8080
-p U:53,T:80 协议+端口 -p U:53,111,T:21-25
-F 快速模式(Top 100) -F
--top-ports N 扫描前 N 个常用端口 --top-ports 1000
-r 顺序扫描(不随机) -r

服务与 OS

选项 说明
-sV 服务版本检测
--version-intensity 0-9 版本检测强度
-O 操作系统检测
--osscan-limit 限制 OS 检测
--osscan-guess 猜测 OS
-A 综合扫描(OS+版本+脚本+traceroute)

定时

选项 说明
-T0 Paranoid(极慢,IDS 规避)
-T1 Sneaky(很慢,IDS 规避)
-T2 Polite(慢速,礼貌)
-T3 Normal(默认)
-T4 Aggressive(快速,可靠网络)
-T5 Insane(极快,可能丢包)
--min-rate 最小发包速率
--max-rate 最大发包速率
--min-parallelism 最小并行数
--max-parallelism 最大并行数

输出

选项 说明
-oN file 标准输出到文件
-oX file XML 输出到文件
-oG file Grepable 输出
-oA base 所有格式输出
-v 详细输出
-vv 更详细
-d 调试模式
--open 只显示开放的端口
--reason 显示端口状态原因

四、目标指定

4.1 IP 地址

# 单个 IP
nmap 192.168.1.1# 多个 IP
nmap 192.168.1.1 192.168.1.2 192.168.1.3# IP 范围
nmap 192.168.1.1-100# CIDR 子网
nmap 192.168.1.0/24# 掩码方式
nmap 192.168.1.0/255.255.255.0

4.2 主机名

# 单个主机
nmap example.com# 多个主机
nmap server1.example.com server2.example.com# 从文件读取目标
nmap -iL targets.txt# targets.txt 内容:
# 192.168.1.1
# 192.168.1.0/24
# example.com
# 10.0.0.1-50

4.3 排除目标

# 排除特定 IP
nmap 192.168.1.0/24 --exclude 192.168.1.100# 排除多个
nmap 192.168.1.0/24 --exclude 192.168.1.100,192.168.1.101# 排除范围
nmap 192.168.1.0/24 --exclude 192.168.1.200-254# 从文件读取排除列表
nmap 192.168.1.0/24 --excludefile exclude.txt

4.4 随机目标

# 随机扫描 N 台主机
nmap -iR 100
# 随机 100 台主机# 随机 + 只扫描 80 端口
nmap -iR 100 -p 80

五、主机发现

5.1 Ping 扫描 (-sn)

# 扫描整个子网(只发现主机,不扫描端口)
sudo nmap -sn 192.168.1.0/24# 输出示例:
# Nmap scan report for 192.168.1.1
# Host is up (0.0010s latency)
# Nmap scan report for 192.168.1.100
# Host is up (0.0050s latency)
# Nmap done: 256 IP addresses (2 hosts up)# 扫描单个主机
nmap -sn 192.168.1.1# 扫描多个主机
nmap -sn 192.168.1.1 192.168.1.2 192.168.1.3

5.2 跳过发现 (-Pn)

# 跳过主机发现,直接扫描端口
# 适用:目标禁 ping 时
nmap -Pn 192.168.1.1# 组合使用
nmap -Pn -p 80,443 192.168.1.0/24

5.3 ARP Ping (-PR)

# 局域网内最有效
sudo nmap -sn -PR 192.168.1.0/24

5.4 TCP Ping

# TCP SYN Ping(默认端口 80)
sudo nmap -sn -PS 192.168.1.1# 指定端口
sudo nmap -sn -PS80,443,22 192.168.1.1# TCP ACK Ping
sudo nmap -sn -PA 192.168.1.1

5.5 UDP Ping

sudo nmap -sn -PU 192.168.1.1
sudo nmap -sn -PU53,161 192.168.1.1

5.6 ICMP Ping

# ICMP Echo(标准 ping)
sudo nmap -sn -PE 192.168.1.1# ICMP Timestamp
sudo nmap -sn -PP 192.168.1.1# ICMP Address Mask
sudo nmap -sn -PM 192.168.1.1

5.7 组合发现

# 禁用所有 Ping,只用 ARP
sudo nmap -sn -PE -PP -PM -PR 192.168.1.0/24# 只用 TCP SYN Ping
sudo nmap -sn -PS22,80,443 -PE 192.168.1.0/24# 不做 DNS 解析
nmap -sn -n 192.168.1.0/24

六、端口扫描

6.1 TCP SYN 扫描 (-sS)

# 半开扫描(最常用,速度快,隐蔽性好)
sudo nmap -sS 192.168.1.1# 指定端口
sudo nmap -sS -p 80,443,22 192.168.1.1# 所有端口
sudo nmap -sS -p- 192.168.1.1# 前 1000 个常用端口
sudo nmap -sS --top-ports 1000 192.168.1.1# 快速模式
sudo nmap -sS -F 192.168.1.1

6.2 TCP Connect 扫描 (-sT)

# 全连接扫描(不需要 root)
nmap -sT 192.168.1.1# 指定端口
nmap -sT -p 80,443,22,3306,6379 192.168.1.1

6.3 UDP 扫描 (-sU)

# UDP 扫描(较慢)
sudo nmap -sU 192.168.1.1# 指定 UDP 端口
sudo nmap -sU -p 53,67,68,161,162 192.168.1.1# TCP + UDP 联合扫描
sudo nmap -sS -sU -p T:22,80,443,U:53,161 192.168.1.1# Top UDP 端口
sudo nmap -sU --top-ports 50 192.168.1.1

6.4 隐蔽扫描

# FIN 扫描
sudo nmap -sF 192.168.1.1# Null 扫描(所有标志位为 0)
sudo nmap -sN 192.168.1.1# Xmas 扫描(FIN+PSH+URG)
sudo nmap -sX 192.168.1.1# Maimon 扫描(FIN+ACK)
sudo nmap -sM 192.168.1.1# TCP Window 扫描
sudo nmap -sW 192.168.1.1# TCP ACK 扫描(检测防火墙规则)
sudo nmap -sA 192.168.1.1

6.5 端口选择

# 指定端口
nmap -p 80 192.168.1.1
nmap -p 80,443,8080 192.168.1.1
nmap -p 1-1024 192.168.1.1# 所有 65535 端口
nmap -p- 192.168.1.1# 快速扫描(Top 100)
nmap -F 192.168.1.1# Top N 端口
nmap --top-ports 100 192.168.1.1
nmap --top-ports 1000 192.168.1.1# 按协议指定
nmap -p T:22,80,443,U:53,161 192.168.1.1# 端口比率
nmap --port-ratio 0.1 192.168.1.1  # 常用度 >= 0.1 的端口

七、服务与版本检测

7.1 基本版本检测 (-sV)

# 版本检测
nmap -sV 192.168.1.1# 输出示例:
# PORT    STATE SERVICE  VERSION
# 22/tcp  open  ssh      OpenSSH 8.9p1 Ubuntu 3ubuntu0.1
# 80/tcp  open  http     Apache httpd 2.4.52
# 443/tcp open  ssl/http Apache httpd 2.4.52
# 3306/tcp open mysql    MySQL 8.0.32# 指定端口
nmap -sV -p 22,80,443,3306 192.168.1.1# 综合扫描
nmap -sS -sV 192.168.1.1

7.2 版本检测强度

# 轻量级(0-2)
nmap -sV --version-intensity 0 192.168.1.1  # 只检测最可能的服务# 中等(3-7,默认 7)
nmap -sV --version-intensity 5 192.168.1.1# 全部(8-9)
nmap -sV --version-intensity 9 192.168.1.1  # 尝试所有探测# 轻量版检测
nmap -sV --version-light 192.168.1.1  # 等于 --version-intensity 2# 全部检测
nmap -sV --version-all 192.168.1.1  # 等于 --version-intensity 9

7.3 版本检测回退

# 回退到 nmap-service-probes
nmap -sV --version-trace 192.168.1.1  # 显示详细探测过程

八、操作系统检测

8.1 基本 OS 检测 (-O)

# 需要 root
sudo nmap -O 192.168.1.1# 输出示例:
# OS details: Linux 5.4
# Network Distance: 1 hop# 指定端口(加快速度)
sudo nmap -O -p 22,80,443 192.168.1.1# 限制 OS 检测(只对有开放/关闭端口的机器)
sudo nmap -O --osscan-limit 192.168.1.0/24# 猜测 OS(即使不确定也给结果)
sudo nmap -O --osscan-guess 192.168.1.1

8.2 综合扫描 (-A)

# 综合扫描:OS + 版本 + 脚本 + traceroute
sudo nmap -A 192.168.1.1# 输出示例:
# PORT    STATE SERVICE  VERSION
# 22/tcp  open  ssh      OpenSSH 8.9p1
# | ssh-hostkey:
# |   256 SHA256:xxx (ECDSA)
# |_  256 SHA256:xxx (ED25519)
# 80/tcp  open  http     Apache 2.4.52
# | http-title: Welcome
# OS details: Linux 5.x
# Network Distance: 1 hop
# TRACEROUTE (using port 80/tcp)
# HOP RTT     ADDRESS
# 1   0.5 ms  192.168.1.1

九、脚本引擎 (NSE)

9.1 NSE 概述

nmap 脚本引擎(Nmap Scripting Engine)包含 600+ 脚本,分为以下类别:

类别 说明 示例
auth 认证相关 暴力破解
broadcast 广播发现 局域网发现
brute 暴力破解 SSH、HTTP 暴破
default 默认脚本 -sC
discovery 服务发现 查找服务
dos 拒绝服务 DoS 测试
exploit 漏洞利用 利用已知漏洞
external 外部查询 查询第三方
fuzzer 模糊测试 Fuzz 测试
intrusive 入侵脚本 可能触发告警
malware 恶意软件 检测后门
safe 安全脚本 不会造成危害
version 版本检测 辅助版本识别
vuln 漏洞检测 检测已知漏洞

9.2 使用脚本

# 默认脚本
nmap -sC 192.168.1.1
# 等价于
nmap --script=default 192.168.1.1# 指定脚本
nmap --script=http-title 192.168.1.1# 指定多个脚本
nmap --script=http-title,http-headers 192.168.1.1# 指定类别
nmap --script=vuln 192.168.1.1
nmap --script=discovery 192.168.1.1
nmap --script=auth 192.168.1.1# 多个类别
nmap --script="default,vuln" 192.168.1.1# 排除脚本
nmap --script="default,!http-brute" 192.168.1.1# 通配符
nmap --script="http-*" 192.168.1.1

9.3 常用脚本

HTTP 相关

# 获取 HTTP 标题
nmap --script=http-title -p 80 192.168.1.1# 获取 HTTP 头
nmap --script=http-headers -p 80 192.168.1.1# HTTP 方法
nmap --script=http-methods -p 80 192.168.1.1# Web 指纹
nmap --script=http-enum -p 80 192.168.1.1# CMS 检测
nmap --script=http-generator -p 80 192.168.1.1# robots.txt
nmap --script=http-robots.txt -p 80 192.168.1.1# SSL 证书信息
nmap --script=ssl-cert -p 443 192.168.1.1# SSL 漏洞检测
nmap --script=ssl-heartbleed -p 443 192.168.1.1
nmap --script=ssl-poodle -p 443 192.168.1.1
nmap --script=sslv2 -p 443 192.168.1.1# HTTP 组合
nmap --script="http-title,http-headers,http-methods,http-enum" -p 80,443 192.168.1.1

SMB 相关

# SMB 枚举
nmap --script=smb-enum-shares -p 445 192.168.1.1
nmap --script=smb-enum-users -p 445 192.168.1.1
nmap --script=smb-enum-groups -p 445 192.168.1.1# SMB 漏洞
nmap --script=smb-vuln* -p 445 192.168.1.1# MS17-010(EternalBlue)
nmap --script=smb-vuln-ms17-010 -p 445 192.168.1.1# SMB 信息
nmap --script=smb-os-discovery -p 445 192.168.1.1
nmap --script=smb-security-mode -p 445 192.168.1.1

SSH 相关

# SSH 主机密钥
nmap --script=ssh-hostkey -p 22 192.168.1.1# SSH 认证方法
nmap --script=ssh-auth-methods -p 22 192.168.1.1# SSH 暴力破解
nmap --script=ssh-brute -p 22 192.168.1.1

数据库相关

# MySQL 信息
nmap --script=mysql-info -p 3306 192.168.1.1
nmap --script=mysql-enum -p 3306 192.168.1.1
nmap --script=mysql-brute -p 3306 192.168.1.1
nmap --script=mysql-vuln-cve2012-2122 -p 3306 192.168.1.1# Redis 信息
nmap --script=redis-info -p 6379 192.168.1.1# PostgreSQL
nmap --script=pgsql-brute -p 5432 192.168.1.1# MongoDB
nmap --script=mongodb-info -p 27017 192.168.1.1

DNS 相关

# DNS 枚举
nmap --script=dns-brute example.com# DNS 缓存
nmap --script=dns-cache-snoop -p 53 192.168.1.1# DNS 区域传送
nmap --script=dns-zone-transfer -p 53 example.com

漏洞检测

# 所有漏洞脚本
nmap --script=vuln 192.168.1.1# 特定漏洞
nmap --script=http-sql-injection -p 80 192.168.1.1
nmap --script=http-xss -p 80 192.168.1.1
nmap --script=http-csrf -p 80 192.168.1.1

9.4 脚本参数

# 传递参数
nmap --script=http-title --script-args http-title.path=/admin 192.168.1.1# 多个参数
nmap --script=ssh-brute --script-args userdb=users.txt,passdb=passwords.txt 192.168.1.1# HTTP User-Agent
nmap --script=http-enum --script-args http.useragent="Mozilla/5.0" -p 80 192.168.1.1# 暴力破解参数
nmap --script=mysql-brute --script-args \userdb=/path/to/users.txt,\passdb=/path/to/passwords.txt,\brute.delay=1 \-p 3306 192.168.1.1

9.5 自定义脚本

-- hello.nse
local nmap = require "nmap"
local shortport = require "shortport"description = [[简单测试脚本]]categories = {"safe", "discovery"}portrule = shortport.httpaction = function(host, port)return "Hello from NSE!"
end
# 使用自定义脚本
nmap --script=hello.nse -p 80 192.168.1.1

十、防火墙与 IDS 规避

10.1 分片 (-f)

# 小分片
sudo nmap -f 192.168.1.1# 自定义 MTU
sudo nmap --mtu 24 192.168.1.1# 两次分片
sudo nmap -ff 192.168.1.1

10.2 诱饵 (-D)

# 使用诱饵 IP
sudo nmap -D 10.0.0.1,10.0.0.2,10.0.0.3 192.168.1.1# 随机诱饵 + 自己
sudo nmap -D RND:10 192.168.1.1# 随机诱饵,不包含自己
sudo nmap -D RND:10 ME 192.168.1.1

10.3 源地址欺骗

# 指定源 IP
sudo nmap -S 10.0.0.100 -e eth0 192.168.1.1# 指定源端口
sudo nmap --source-port 53 192.168.1.1
# 或
sudo nmap -g 53 192.168.1.1

10.4 随机化

# 随机化目标顺序
nmap --randomize-hosts 192.168.1.0/24# 随机化延迟
nmap --randomize-hosts --scan-delay 1s 192.168.1.0/24

10.5 数据填充 (--data-length)

# 添加随机数据
sudo nmap --data-length 32 192.168.1.1# 添加自定义数据
sudo nmap --data-length 0 192.168.1.1

10.6 TTL 和校验

# 自定义 TTL
sudo nmap --ttl 128 192.168.1.1# 错误校验和
sudo nmap --badsum 192.168.1.1

10.7 综合规避

# 隐蔽扫描组合
sudo nmap -sS -f -D RND:5 --source-port 53 --data-length 32 \--randomize-hosts -T2 192.168.1.0/24

十一、输出与报告

11.1 输出格式

# 标准输出到文件
nmap -oN scan_results.txt 192.168.1.1# XML 输出
nmap -oX scan_results.xml 192.168.1.1# Grepable 输出
nmap -oG scan_results.gnmap 192.168.1.1# 所有格式
nmap -oA scan_results 192.168.1.1
# 生成:scan_results.nmap, scan_results.xml, scan_results.gnmap# 追加模式
nmap -oN --append-output scan_results.txt 192.168.1.2# 详细输出
nmap -v -oN scan.txt 192.168.1.1# 只显示开放的端口
nmap --open 192.168.1.0/24

11.2 XML 报告转 HTML

# 使用 xsltproc 转换
xsltproc scan_results.xml -o report.html# 使用 nmap-bootstrap-xslt
# https://github.com/honze-net/nmap-bootstrap-xslt
xsltproc nmap-bootstrap.xsl scan_results.xml -o report.html

11.3 解析结果

# 从 grepable 输出中提取开放端口
grep "open" scan_results.gnmap | awk -F: '{print $2}' | awk '{print $1}'# 提取所有 IP
grep "Up" scan_results.gnmap | awk '{print $2}'# 使用 nmap-parse-output
# https://github.com/ernw/nmap-parse-output# 使用 Python 解析 XML
python3 -c "
import xml.etree.ElementTree as ET
tree = ET.parse('scan_results.xml')
for host in tree.findall('.//host'):addr = host.find('address').get('addr')for port in host.findall('.//port'):portid = port.get('portid')state = port.find('state').get('state')if state == 'open':print(f'{addr}:{portid}')
"

十二、定时与性能

12.1 定时模板

# T0 - Paranoid(极慢,IDS 规避)
sudo nmap -T0 192.168.1.1
# 串行扫描,间隔 5 分钟# T1 - Sneaky(很慢,IDS 规避)
sudo nmap -T1 192.168.1.1
# 串行扫描,间隔 15 秒# T2 - Polite(慢速,减少影响)
sudo nmap -T2 192.168.1.1
# 串行扫描,间隔 400ms# T3 - Normal(默认)
nmap -T3 192.168.1.1# T4 - Aggressive(快速)
nmap -T4 192.168.1.1
# 适用:可靠网络# T5 - Insane(极快)
nmap -T5 192.168.1.1
# 适用:千兆网络,可能丢包

12.2 自定义速率

# 最小发包速率
nmap --min-rate 100 192.168.1.1# 最大发包速率
nmap --max-rate 1000 192.168.1.1# 并行探测组
nmap --min-parallelism 10 192.168.1.1
nmap --max-parallelism 100 192.168.1.1# 扫描延迟
nmap --scan-delay 1s 192.168.1.1
nmap --max-scan-delay 5s 192.168.1.1# 超时
nmap --host-timeout 30m 192.168.1.0/24
nmap --max-retries 2 192.168.1.1# 综合调优
nmap -T4 --min-rate 500 --max-retries 2 192.168.1.0/24

十三、实战示例

13.1 快速网络发现

#!/bin/bash
# discover.sh - 网络发现SUBNET="192.168.1.0/24"echo "=== 网络发现: $SUBNET ==="# 1. 发现存活主机
echo "[1] 发现存活主机..."
sudo nmap -sn -n "$SUBNET" -oG alive.gnmapgrep "Up" alive.gnmap | awk '{print $2}' | sort > alive_ips.txt
echo "    发现 $(wc -l < alive_ips.txt) 台主机"# 2. 快速端口扫描
echo "[2] 扫描常用端口..."
sudo nmap -sS -F --open -n "$SUBNET" -oG ports.gnmap# 3. 输出结果
echo "[3] 结果:"
grep "open" ports.gnmap | while read line; doip=$(echo "$line" | awk '{print $2}')ports=$(echo "$line" | sed 's/.*Ports: //' | tr ',' '\n' | grep "open" | awk -F/ '{print $1}' | tr '\n' ' ')echo "  $ip: $ports"
done

13.2 Web 服务器审计

#!/bin/bash
# web_audit.sh - Web 服务器安全审计TARGET=$1echo "=== Web 服务器审计: $TARGET ==="# 1. 端口扫描
echo "[1] 端口扫描..."
nmap -sS -sV -p 80,443,8080,8443 "$TARGET"# 2. HTTP 信息
echo -e "\n[2] HTTP 信息..."
nmap --script=http-title,http-headers,http-server-header -p 80,443 "$TARGET"# 3. HTTP 方法
echo -e "\n[3] HTTP 方法..."
nmap --script=http-methods -p 80 "$TARGET"# 4. 目录枚举
echo -e "\n[4] 目录枚举..."
nmap --script=http-enum -p 80 "$TARGET"# 5. SSL 检测
echo -e "\n[5] SSL 检测..."
nmap --script=ssl-cert,ssl-heartbleed,ssl-poodle -p 443 "$TARGET"# 6. 已知漏洞
echo -e "\n[6] 漏洞检测..."
nmap --script=http-vuln* -p 80 "$TARGET"

13.3 数据库安全审计

#!/bin/bash
# db_audit.sh - 数据库安全审计TARGET=$1echo "=== 数据库审计: $TARGET ==="# MySQL
echo "[1] MySQL..."
nmap -sV --script=mysql-info,mysql-enum,mysql-brute \--script-args userdb=users.txt,passdb=pass.txt \-p 3306 "$TARGET"# PostgreSQL
echo "[2] PostgreSQL..."
nmap -sV --script=pgsql-brute \--script-args userdb=users.txt,passdb=pass.txt \-p 5432 "$TARGET"# Redis
echo "[3] Redis..."
nmap -sV --script=redis-info -p 6379 "$TARGET"# MongoDB
echo "[4] MongoDB..."
nmap -sV --script=mongodb-info -p 27017 "$TARGET"

13.4 全网扫描

#!/bin/bash
# full_scan.sh - 全面扫描TARGET=$1
OUTPUT="scan_$(date +%Y%m%d_%H%M%S)"echo "=== 全面扫描: $TARGET ==="# 1. 主机发现
echo "[1] 主机发现..."
nmap -sn "$TARGET" -oA "${OUTPUT}_ping"# 2. 端口扫描
echo "[2] 端口扫描..."
sudo nmap -sS -sV --version-intensity 5 -p- "$TARGET" -oA "${OUTPUT}_ports"# 3. OS 检测
echo "[3] OS 检测..."
sudo nmap -O --osscan-guess "$TARGET" -oA "${OUTPUT}_os"# 4. 脚本扫描
echo "[4] 脚本扫描..."
nmap -sC --script="default,vuln,auth" "$TARGET" -oA "${OUTPUT}_scripts"# 5. 综合报告
echo "[5] 生成报告..."
sudo nmap -A "$TARGET" -oA "${OUTPUT}_full"echo "=== 扫描完成 ==="
echo "报告: ${OUTPUT}_*"

13.5 常用扫描命令

# 快速扫描
nmap -T4 -F 192.168.1.1# 全面扫描
sudo nmap -A -T4 192.168.1.1# 隐蔽扫描
sudo nmap -sS -T2 -f -D RND:5 192.168.1.1# 扫描所有端口
sudo nmap -sS -p- -T4 192.168.1.1# 扫描特定服务
nmap -sV -p 22,80,443,3306,5432,6379,8080,27017 192.168.1.1# 扫描整个网段
sudo nmap -sS -sn 192.168.0.0/16# 扫描并保存
nmap -A -oA results 192.168.1.1# UDP 扫描
sudo nmap -sU --top-ports 100 192.168.1.1# 漏洞扫描
nmap --script=vuln 192.168.1.1

十四、技巧与最佳实践

14.1 实用别名

# 快速扫描
alias nmapfast='nmap -T4 -F --open'
alias nmapall='sudo nmap -sS -p- -T4 --open'
alias nmapvuln='nmap --script=vuln'
alias nmapweb='nmap --script=http-enum,http-title,http-headers -p 80,443,8080'
alias nmapdb='nmap -sV -p 3306,5432,6379,27017'
alias nmapos='sudo nmap -O --osscan-guess'
alias nmapfull='sudo nmap -A -T4'

14.2 扫描建议

场景 命令
快速发现 nmap -sn 192.168.1.0/24
常用端口 nmap -F --open target
全面扫描 sudo nmap -A -T4 target
全端口 sudo nmap -p- -T4 target
漏洞检测 nmap --script=vuln target
隐蔽扫描 sudo nmap -sS -T2 -f target
Web 审计 nmap -sV --script=http-* -p 80,443 target

14.3 安全与法律

# ⚠️ 重要提醒:
# 1. 只扫描自己拥有的网络或有授权的网络
# 2. 未经授权的扫描可能是违法的
# 3. 使用 -T2 或更低的速度减少影响
# 4. 在生产环境中先获取书面授权
# 5. 扫描可能触发 IDS/IPS 告警

14.4 常见问题

端口都是 filtered

# 可能被防火墙拦截
# 尝试:
nmap -Pn -sT -p 80 target  # 跳过 ping,用全连接
nmap -Pn --source-port 53 target  # 使用 DNS 源端口

扫描太慢

# 加速
nmap -T4 --min-rate 500 --max-retries 1 target
# 减少端口
nmap -F target  # 只扫 Top 100
nmap --top-ports 100 target

需要 root

# SYN 扫描和 OS 检测需要 root
sudo nmap -sS -O target# 不需要 root 的扫描
nmap -sT -sV target  # TCP Connect + 版本检测

附录

A. 命令速查表

扫描类型

选项 说明 Root
-sS SYN 扫描
-sT Connect 扫描
-sU UDP 扫描
-sV 版本检测
-sC 默认脚本
-A 综合扫描
-sn Ping 扫描
-Pn 跳过发现

端口

选项 说明
-p 80 指定端口
-p 1-1000 范围
-p- 所有端口
-F 快速(Top 100)
--top-ports N Top N

输出

选项 说明
-oN file 标准输出
-oX file XML
-oG file Grepable
-oA base 所有格式
-v 详细
--open 只显示开放
--reason 显示原因

B. 常用端口

端口 服务 端口 服务
21 FTP 110 POP3
22 SSH 143 IMAP
23 Telnet 389 LDAP
25 SMTP 443 HTTPS
53 DNS 445 SMB
80 HTTP 993 IMAPS
111 RPC 995 POP3S
135 MSRPC 1433 MSSQL
139 NetBIOS 1521 Oracle
161 SNMP 3306 MySQL
389 LDAP 3389 RDP
443 HTTPS 5432 PostgreSQL
445 SMB 6379 Redis
514 Syslog 8080 HTTP Proxy
636 LDAPS 8443 HTTPS Alt
993 IMAPS 9200 Elasticsearch
1434 MSSQL UDP 27017 MongoDB

C. 在线资源

  • 官方文档: https://nmap.org/docs.html
  • man page: https://nmap.org/book/man.html
  • NSE 文档: https://nmap.org/nsedoc/
  • 参考指南: https://nmap.org/book/toc.html
  • 在线测试: https://scanme.nmap.org/

http://www.jsqmd.com/news/624534/

相关文章:

  • 终极指南:3步掌握Yansongda Pay统一支付SDK,告别多平台支付接入烦恼
  • DDrawCompat:让经典DirectDraw游戏在现代Windows上重获新生的终极方案
  • Windows 11拖放修复终极指南:5分钟恢复任务栏拖放功能
  • 建筑工程行业融资难?我发现能拿到低息贷款的老板,第一步是选对了渠道 - 速递信息
  • 2025届毕业生推荐的五大AI论文平台解析与推荐
  • PKHeX自动合法性插件:如何5分钟内完成宝可梦数据合规检查
  • YOLO-Master 与 YOLO 开始美
  • 003-注意力机制详解:从基础Attention到DeepSeek的优化策略
  • gitru:一个由 Rust 打造的零依赖 Git 提交信息校验工具仲
  • 别再为排版翻车了!微信编辑器哪里买?深度解析6款,新手秒上手 - 速递信息
  • 2026洛阳江浙菜宴请选型指南:3个硬指标 - 精选优质企业推荐榜
  • 跟随b站狂神老师步入博客
  • 浏览器Cookie本地导出终极方案:Get cookies.txt LOCALLY完全指南
  • 杭州房产抵押贷款哪家好?2026正规银行+助贷机构盘点|杭州抵押贷办理流程及避坑指南 - 速递信息
  • STM32开发者必看:Openocd烧录全流程详解(附Keil生成bin文件技巧)
  • 从创意到实体:Blender 3MF插件的完整3D打印解决方案
  • 南京经略碳纤维拉挤技术引领创新,以严苛匠心铸就高端型材精品 - 博客湾
  • 3分钟让你的Windows任务栏秒变高级:TranslucentTB终极美化指南
  • 你的macOS菜单栏太乱了?3个步骤让Ice帮你彻底整理干净
  • 帮普通人「驯服」Agent,这支硅谷初创团队冲上了X全球热搜
  • 2026年纺织业必备:揭秘高效验布机技术选择指南
  • 仅限首批200名架构师获取:AI原生服务设计模式矩阵V2.3(含17个可直接复用的Service Contract Schema与OpenAPI 3.1语义约束规范)
  • nginx配docker-compose
  • Windows苹果设备驱动安装难题的终极解决方案
  • 上海家装市场2026年度标杆企业推荐:基于全维度调研 - 速递信息
  • 软件建造者管理中的复杂对象构建
  • 告别官方API:手把手教你从零封装YOLOv8-Pose的推理代码(附完整Python脚本)
  • Pytorch图像处理秘籍:利用make_grid和save_image生成专业级雪碧图教程
  • EKF组合导航系统:惯性导航与组合导航MATLAB实现
  • Avalonia UI 12.0.0 正式发布:架构演进和性能飞跃