30 秒看懂
  • 1. 简介:Nmap 是什么
  • Nmap(Network Mapper)是一个开源的网络扫描和主机发现工具
  • 用于: 扫描主机是否在线(主机发现) 探测开放端口与服务 识别服务版本与操作系统(指纹识别) 使用脚本(NSE)查找更细...

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

热点解释
john
john 在知识的海洋中遨游

0 人认可了这条内容 · 748 浏览

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)

下一步阅读
相关文章
Unity 3D 如何轻松访问 UI 对象?详细教程与代码示例分享
在 Unity 3D 中,访问 UI 对象是开发用户界面的基础操作。Unity 提供了一整套 U...
相关文章
在 VS Code 中一键同步代码到多个远程仓库!详细教程来了!🚀💻
小伙伴们,今天教大家如何在 VS Code 中设置一个本地 Git 仓库,并同时推送到多个远程仓...
相关文章
VS Code 调用微信开发者工具教程,效率提升秘籍!🚀💻
想在 VS Code 中一键启动微信开发者工具吗?本篇教程手把手教你如何配置 VS Code,让...
相关文章
如何快速获取Telegram群聊ID?简单教程来啦!
&nbsp; &nbsp; &nbsp;还在为找不到Telegram群聊的ID而烦恼吗?这里有一...

发布于 2025-10-19 17:20

免责声明:

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

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

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

暂无评论

公告与更新

关于本站
欢迎来到创想引擎,一个为创意和思想提供源源不断动力的创新平台。在这里,每个人的灵感都能迅速转化为行动,每个创意都能在思想的碰撞中飞速发展。我们相信,创想不仅仅是灵感的闪现,更是一次次打破常规、突破极限的动力释放。创想引擎致力于为用户提供一个开放、自由的创意空间,汇聚多元化的知识和观点。在这个平台上,...

核心主题

美食制作

ppt

智能体

Unity3D

量化交易

这是自定义内容