Nmap 初学者完整教程(中文)

john
john 在知识的海洋中遨游

0 人点赞了该文章 · 36 浏览

1. 简介:Nmap 是什么?

Nmap(Network Mapper)是一个开源的网络扫描和主机发现工具,用于:

  • 扫描主机是否在线(主机发现)

  • 探测开放端口与服务

  • 识别服务版本与操作系统(指纹识别)

  • 使用脚本(NSE)查找更细致的信息或漏洞
    常被用于网络运维、渗透测试与安全评估。请只在你有权限的网络/主机上运行


2. 安装(快速)

  • Linux(Debian/Ubuntu)

    sudo apt update sudo apt install nmap -y
  • macOS(brew)

    brew install nmap
  • Windows

    • 下载官方安装包(安装时会附带Zenmap GUI 可选)。安装后在 PowerShell 或 CMD 里运行 nmap

  • 检查版本

    nmap --version

3. 基本用法与概念

语法:nmap [选项] <目标>
目标可以是单个 IP(192.168.1.10)、IP 范围(192.168.1.1-254)、CIDR(192.168.1.0/24)或域名。

3.1 简单主机发现

  • Ping 扫描(快速看哪些主机在线)

    nmap -sn 192.168.1.0/24

    -sn 仅做主机发现,不做端口扫描。

3.2 常见端口扫描(TCP Connect)

  • 最直接(不需 root)

    nmap -sT 192.168.1.100

    -sT 使用系统 TCP connect,速度较慢但兼容性高。

3.3 SYN 扫描(半开/隐蔽)

  • 需要 root/管理员权限

    sudo nmap -sS 192.168.1.100

    -sS 更快、常用于渗透测试场景。

3.4 扫描指定端口或端口范围

nmap -p 22,80,443 192.168.1.100 # 指定端口 nmap -p 1-1000 192.168.1.100 # 端口范围 nmap --top-ports 100 example.com # 扫描最常用的100端口

3.5 服务/版本探测

sudo nmap -sV 192.168.1.100

-sV 会尝试与开放端口的服务握手以识别服务与版本。

3.6 操作系统识别

sudo nmap -O 192.168.1.100

-O 做 OS 指纹识别(需要较多探测包,可能被防火墙检测到)。

3.7 综合扫描(快速获取全家桶信息)

sudo nmap -A 192.168.1.100

-A = OS 指纹 + 版本探测 + 脚本扫描 + 路由器检测 等(侵入性更强)。


4. Nmap 脚本引擎(NSE)

NSE 是 Nmap 的强项:内置大量脚本用于发现漏洞、抓取 banners、进行认证测试等。

  • 列表所有脚本:

    ls /usr/share/nmap/scripts # Linux 常见路径 nmap --script-help
  • 使用单个脚本:

    sudo nmap --script smb-vuln-ms17-010 -p445 192.168.1.105
  • 使用脚本类别:

    sudo nmap --script "vuln" 192.168.1.105

脚本非常强大但也可能干扰目标(产生更多流量或触发检测)。


5. UDP 扫描(注意慢且噪声大)

sudo nmap -sU -p 53,123 192.168.1.100

UDP 扫描通常更慢、误报更多,且许多设备对 UDP 探测不响应。


6. 扫描性能/节奏控制

  • Timing(速度模板):-T0 最慢(最隐蔽),-T5 最快(最吵)

    sudo nmap -sS -T4 192.168.1.0/24
  • 指定最大并发探针等更精细控制:--min-rate / --max-retries / --host-timeout 等(高级用法)。


7. 输出保存(方便后续分析)

  • 普通文本:

    nmap -oN result.txt 192.168.1.100
  • XML(便于机器解析):

    nmap -oX result.xml 192.168.1.100
  • Greppable(旧格式):

    nmap -oG result.gnmap 192.168.1.100
  • 同时保存三种:

    nmap -oA myscan 192.168.1.100 # 生成 myscan.nmap/.xml/.gnmap

8. 实际示例(带解释)

示例 A:扫描整个局域网常见端口并识别服务

sudo nmap -sS -sV --top-ports 100 -T4 192.168.1.0/24 -oA lan_top100

解释:

  • -sS SYN 扫描(需 root)

  • -sV 服务版本识别

  • --top-ports 100 扫描最常见的100个端口

  • -T4 加快速度(局域网通常可用)

  • -oA lan_top100 保存结果

示例 B:只想快速查看某台机器哪些端口开放

nmap -Pn -p 1-1024 10.0.0.5

解释:

  • -Pn 跳过 ping(强制认为主机在线,适用于被 ICMP/ping 阻挡的主机)

  • -p 1-1024 扫描前 1024 个端口

示例 C:运行一个漏洞脚本

sudo nmap --script vuln 203.0.113.5

解释:运行所有标记为 “vuln” 的脚本来查找已知漏洞(慎用,可能触发告警或破坏性行为)。


9. 常见注意事项与陷阱

  1. 权限:某些扫描(如 -sS, -O)需要 root/管理员权限。

  2. 误报/漏报:被防火墙或 IDS/IPS 拦截会导致漏报,服务可能设置了反扫描策略。

  3. 合法性一定只在你有权限的主机/网络上扫描。未经授权扫描可能违法或触犯管理规定。

  4. 效率:大网段全文扫描很耗时,先用 -sn 找在线主机,再对在线主机做端口扫描。

  5. 噪音-T5、大量并发探针或频繁扫描会产生明显网络噪音并触发监控。

  6. 结果解释:开放端口并不等于漏洞存在;还需后续验证与人工判断。


10. 学习路径(建议练习)

  1. 在本地虚拟机(或家里路由器)环境练习,先用 -sn-sT-sS-sV-O

  2. -oA 保存输出并用文本工具对比结果。

  3. 学会简单的 NSE 脚本:先用 --script-help 查功能,再逐个测试。

  4. 学习如何组合 Nmap 与其它工具(如 masscan 做超高速端口发现,再用 nmap 深扫;或把 XML 导入 Nessus/其他分析工具)。

  5. 阅读 Nmap 官方文档和 man nmap(本地 man nmap 非常详细)。


11. 速查表(常用命令速记)

nmap -sn 192.168.1.0/24 # 主机发现 sudo nmap -sS 192.168.1.100 # SYN 扫描 nmap -sT 192.168.1.100 # TCP connect sudo nmap -sU -p 53 192.168.1.1 # UDP 扫描(示例) sudo nmap -sV 192.168.1.100 # 服务版本识别 sudo nmap -O 192.168.1.100 # OS 指纹 sudo nmap -A 192.168.1.100 # Aggressive 扫描(全能) nmap -p 22,80,443 example.com # 指定端口 nmap -p 1-65535 192.168.1.100 # 全端口扫描 nmap -oA scanname target # 输出三种格式 nmap --script vuln target # 运行 vuln 脚本集合

12. 进一步资源(自学建议)

  • man nmap / nmap --help

  • 官方 Nmap 文档与书籍(如《Nmap Network Scanning》)

  • 在受控环境中练习(VM、靶场如 Metasploitable)

发布于 3 天前

免责声明:

本文由 john 原创或转载,著作权归作者所有,如有侵权,请联系我们删除。 info@frelink.top

登录一下,更多精彩内容等你发现,贡献精彩回答,参与评论互动

登录! 还没有账号?去注册

暂无评论

All Rights Reserved Frelink ©2025