原创

Nmap 命令的使用场景示例


一、Nmap 简介

Nmap(Network Mapper)是一款开源的网络探测和安全审计工具,被广泛用于网络发现、端口扫描、服务检测、操作系统指纹识别和漏洞检测等任务。它具有强大的功能和灵活的配置选项,适用于各种规模的网络环境,是网络安全从业者的必备工具。

二、安装方法

1. Debian/Ubuntu 系统

sudo apt update && sudo apt install nmap

2. CentOS/RHEL 系统

sudo yum install nmap

3. macOS 系统

brew install nmap

4. Windows 系统

从官方网站下载安装包:https://nmap.org/

三、基本语法

nmap [扫描类型] [选项] <目标主机/IP/网络范围>

四、核心功能与使用示例

1. 主机发现(Ping扫描)

用于快速识别网络中存活的主机,跳过端口扫描

# 扫描单个主机
nmap -sn 10.100.2.136

# 扫描整个子网
nmap -sn 10.100.2.0/24

# 扫描多个离散IP
nmap -sn 10.100.2.1-10 10.100.2.20-30

2. 基础端口扫描

2.1 快速扫描常见端口

nmap -F 10.100.2.136

2.2 扫描指定端口范围

# 扫描1-1000端口
nmap -p 1-1000 10.100.2.136

# 扫描单个端口
nmap -p 80 10.100.2.136

# 扫描多个离散端口
nmap -p 80,443,8080 10.100.2.136

2.3 全端口扫描(1-65535)

nmap -p- 10.100.2.136
# 加速扫描
nmap -T4 -p- 10.100.2.136

3. 服务与版本识别

识别目标主机开放端口对应的服务名称和版本号

# 基础服务版本探测
nmap -sV 10.100.2.136

# 详细版本信息
nmap -sV --version-all 10.100.2.136

# 结合指定端口扫描
nmap -sV -p 80,443 10.100.2.136

4. 操作系统识别

探测目标主机的操作系统类型、版本等信息

nmap -O 10.100.2.136

# 快速操作系统识别(开启猜测模式)
nmap -O --osscan-guess 10.100.2.136

# 结合服务版本与系统识别
nmap -sV -O 10.100.2.136

5. 高级扫描选项

5.1 跳过Ping扫描(假设主机存活)

用于目标主机禁止Ping的场景

nmap -Pn 10.100.2.136

5.2 调整扫描速度等级

速度等级 选项 适用场景
0 -T0 极慢,用于躲避IDS/IPS
1 -T1 慢,用于躲避IDS/IPS
2 -T2 低速度,适合低速网络
3 -T3 默认平衡速度
4 -T4 快速扫描(推荐日常使用)
5 -T5 极快,可能触发防火墙拦截
# 极快全端口扫描
nmap -T5 -p- 10.100.2.136

5.3 指定网络接口扫描

nmap -e eth0 10.100.2.0/24

6. NSE脚本扫描(Nmap Scripting Engine)

使用内置脚本进行漏洞检测、服务探测等高级功能

6.1 列出所有可用脚本及帮助

# 列出所有脚本
nmap --script-help all

# 查看指定脚本帮助
nmap --script-help http-vuln-cve2021-41773

6.2 常见漏洞扫描

# 扫描HTTP相关漏洞
nmap --script http-vuln* 10.100.2.136

# 扫描SMB漏洞(如永恒之蓝)
nmap --script smb-vuln* 10.100.2.136

# 扫描SSL/TLS漏洞
nmap --script ssl-vuln* -p 443 10.100.2.136

# 扫描FTP弱密码
nmap --script ftp-brute -p 21 10.100.2.136

6.3 自定义脚本扫描

# 使用本地自定义脚本
nmap --script /path/to/your/script.nse 10.100.2.136

7. 输出格式控制

将扫描结果保存为不同格式,方便后续分析

# 保存为普通文本格式
nmap -oN scan_result.txt 10.100.2.136

# 保存为XML格式(可导入Metasploit等工具)
nmap -oX scan_result.xml 10.100.2.136

# 保存为可浏览的HTML格式
nmap -oG scan_result.html 10.100.2.136

# 同时保存多种格式
nmap -oN scan.txt -oX scan.xml -oG scan.gnmap 10.100.2.136

# 自动按时间命名报告
nmap -oA nmap_report_$(date +%Y%m%d) 10.100.2.136

8. 批量扫描目标

从文件读取目标列表进行批量扫描

# 创建目标列表文件
echo "10.100.2.136" > targets.txt
echo "10.100.2.137" >> targets.txt
echo "example.com" >> targets.txt

# 批量扫描并保存结果
nmap -iL targets.txt -oN batch_scan_report.txt

9. 排除指定目标

# 排除单个IP
nmap 10.100.2.0/24 --exclude 10.100.2.1

# 从文件读取排除列表
nmap 10.100.2.0/24 --excludefile exclude_list.txt

五、常见使用场景示例

  1. 快速扫描局域网存活主机
nmap -sn 192.168.1.0/24
  1. 详细扫描Web服务器
nmap -sV -O -p 80,443,8080 example.com
  1. 全面扫描目标主机
nmap -sV -O -sC -T4 -p- 10.100.2.136
  1. 扫描指定端口的服务版本
nmap -sV --version-trace -p 3306 10.100.2.136

六、高级扫描技术(安全测试专用)

1. 隐蔽扫描(躲避IDS/IPS检测)

SYN半连接扫描(不建立完整TCP连接,更隐蔽)

nmap -sS 10.100.2.136
# 需root权限执行,不会在目标主机的日志中留下完整连接记录

FIN/Xmas/Null扫描(绕过无状态防火墙)

# FIN扫描:仅发送FIN标志位
nmap -sF 10.100.2.136
# Xmas扫描:发送FIN+PSH+URG标志位
nmap -sX 10.100.2.136
# Null扫描:不发送任何标志位
nmap -sN 10.100.2.136

诱饵扫描(隐藏真实扫描源)

# 使用多个诱饵IP同时扫描,目标日志中会显示多个扫描源
nmap -D 192.168.1.100,192.168.1.101,192.168.1.102 10.100.2.136
# 随机生成10个诱饵IP
nmap -D RND:10 10.100.2.136

源端口伪造(利用防火墙信任端口规则)

# 伪造源端口为53(DNS),绕过只允许DNS流量的防火墙
nmap --source-port 53 10.100.2.136
# 伪造源端口为80(HTTP)
nmap --source-port 80 10.100.2.136

碎片化扫描

将TCP头拆分成多个小包发送,绕过包过滤设备的检测:

nmap -f 10.100.2.136

2. 防火墙/IDS绕过技巧

# 随机打乱端口扫描顺序
nmap --randomize-hosts --random-ports 10.100.2.0/24

# 修改TTL值模拟正常主机
nmap --ttl 64 10.100.2.136

# 添加MAC地址欺骗(模拟其他设备)
nmap --spoof-mac 00:11:22:33:44:55 10.100.2.136
# 随机生成华为设备MAC地址
nmap --spoof-mac Huawei 10.100.2.136

# 禁用DNS反向解析,减少可疑流量特征
nmap -n 10.100.2.136

七、NSE常用脚本分类速查

脚本分类 说明 常用命令
信息收集 收集目标主机/服务的详细信息 nmap --script discovery 10.100.2.136
漏洞扫描 检测已知CVE漏洞、默认配置漏洞 nmap --script vuln 10.100.2.136
暴力破解 对FTP/SSH/MySQL等服务进行弱密码爆破 nmap --script brute -p 21,22,3306 10.100.2.136
服务枚举 枚举SMB共享、DNS记录、SNMP信息等 nmap --script enum 10.100.2.136
安全审计 检测SSL/TLS配置、HTTP安全头等 nmap --script safe 10.100.2.136
恶意软件检测 检测目标是否被植入后门、挖矿程序等 nmap --script malware 10.100.2.136

常用高频脚本示例

# 检测SSL/TLS安全配置(弱加密套件、过期证书等)
nmap --script ssl-enum-ciphers -p 443 example.com

# 检测HTTP安全头缺失(HSTS/CSP/X-Frame-Options等)
nmap --script http-security-headers -p 80,443 example.com

# 枚举SMB共享目录
nmap --script smb-enum-shares -p 139,445 10.100.2.136

# SSH弱密码爆破
nmap --script ssh-brute --script-args userdb=users.txt,passdb=pass.txt -p 22 10.100.2.136

# 检测永恒之蓝漏洞(MS17-010)
nmap --script smb-vuln-ms17-010 -p 445 10.100.2.136

# 检测Log4j2漏洞(CVE-2021-44228)
nmap --script log4j2-scan -p 8080 10.100.2.136

八、实战场景案例

1. 内网资产测绘

# 快速扫描整个C段存活主机+开放端口+服务版本,输出报告
nmap -sn -sV -T4 -oA internal_asset_$(date +%Y%m%d) 192.168.1.0/24

适用场景:企业内网资产盘点、安全基线检查。

2. 端口合规检查

# 扫描服务器是否开放了非允许端口(如23/3389等高危端口)
nmap -p 21,22,23,3306,3389,6379 --open 10.100.2.0/24 -oN port_compliance_report.txt

适用场景:等保合规检查、服务器端口基线审计。

3. 漏洞应急响应

# 爆发高危漏洞后,批量扫描全网主机是否存在受影响版本
nmap -sV --script vuln-CVE-XXXX-XXXX -p 对应端口 -iL all_hosts.txt -oN vuln_scan_report.txt

适用场景:高危漏洞爆发时的全网排查。

4. Web站点上线前安全检查

# 扫描站点服务器开放端口+服务版本+常见Web漏洞+SSL配置
nmap -sV -O --script http-vuln*,ssl-vuln* -p 80,443 example.com -oA web_site_security_check

适用场景:新站点上线前安全审计。

九、扫描结果解读指南

端口状态说明

状态 含义 风险级别
open 端口开放,有服务监听 高,需要重点关注
closed 端口关闭,没有服务监听
filtered 端口被防火墙/IDS拦截,无法判断是否开放
`open filtered` 无法判断端口是开放还是被过滤(常见于UDP端口)
`closed filtered` 无法判断端口是关闭还是被过滤

结果风险分级

发现项 风险级别 处理建议
高危端口开放(23/445/3389/6379/11211等)且无访问控制 高危 立即关闭端口或配置白名单访问控制
服务版本存在已知高危CVE漏洞 高危 立即升级服务版本或打补丁
弱密码/默认凭证 高危 立即修改密码
敏感服务对公网开放(SSH/MySQL/Redis等) 中危 配置VPN访问或IP白名单
SSL/TLS使用弱加密套件/过期证书 中危 升级TLS版本、更换证书
安全响应头缺失 低危 按需配置对应安全头
服务器/服务版本信息泄露 低危 可隐藏版本号减少攻击面

十、常见问题解答

Q:扫描速度太慢怎么办?

A:可以通过以下方式优化扫描速度:

  1. 使用-T4快速扫描等级,普通网络环境下不会触发拦截
  2. 缩小端口范围,不需要全端口扫描时指定-p 1-10000或常用端口
  3. -n参数禁用DNS反向解析,减少无用请求
  4. 调整超时时间:--host-timeout 300s(每个主机最多扫描5分钟)
  5. --min-parallelism 10调整并行扫描线程数

Q:扫描结果显示所有端口都是filtered怎么办?

A:说明目标主机开启了防火墙或IDS拦截,尝试以下方法:

  1. 使用-sS半连接扫描替代默认的全连接扫描
  2. 降低扫描速度到-T2,避免被流量检测拦截
  3. 尝试使用诱饵扫描、源端口伪造、碎片化扫描等绕过技术
  4. 确认你所在的网络没有被目标防火墙封禁

Q:操作系统识别不准确怎么办?

A:可以尝试以下方法提高识别准确率:

  1. 同时开启服务版本识别:nmap -O -sV,结合服务版本信息判断
  2. --osscan-guess开启激进猜测模式
  3. 多端口扫描,至少有一个开放端口和一个关闭端口才能准确识别操作系统

Q:怎么把Nmap结果导入其他工具?

A:Nmap支持多种导出格式:

  • 导出XML格式:-oX result.xml,可直接导入Metasploit、BurpSuite、Nessus等工具
  • 导出grepable格式:-oG result.gnmap,方便用shell命令过滤分析
  • 导出JSON格式:--json -oJ result.json,适合脚本批量处理

十一、合法使用注意事项

  1. 必须获得书面授权:仅在你拥有明确合法授权的目标上使用Nmap,未经授权的扫描可能违反《中华人民共和国网络安全法》等法律法规。
  2. 避免触发安全防护:使用合适的扫描速度,避免被目标的防火墙、IDS/IPS拦截或封禁。
  3. 结果保密:扫描结果仅用于合法的安全加固工作,不得泄露给任何第三方。
  4. 最小权限原则:仅扫描必要的端口和范围,避免收集不必要的敏感信息。
  5. 遵守道德准则:不得利用扫描结果进行未授权的访问或攻击行为。
  6. 闲时扫描:扫描可能会对网络造成一定的负载,尤其是在大规模扫描时,要注意选择合适的时间和方式。

Nmap 是一款功能强大的网络扫描工具,熟练掌握其各种命令的使用,可以为网络安全和系统管理工作提供有力的支持。但同时,也要在合法合规的前提下,合理使用这一工具。

入侵扫描
渗透攻击
  • 作者:一介闲人(联系作者)
  • 发表时间: 2026-03-26 17:20
  • 版权声明:原创-转载需保持署名
  • 公众号转载:请在文末添加本文链接
  • 评论