Nmap 网络扫描综合实验报告
(Kali Linux + Ubuntu 虚拟机环境)
实验环境:Kali Linux(攻击机,Nmap 运行端)、Ubuntu(靶机,被扫描端)
网络配置:双虚拟机NAT模式,确保互通(Ubuntu 关闭防火墙:sudo systemctl stop ufw && sudo systemctl disable ufw)
实验目的:掌握 Nmap 核心功能、全参数使用方法,能完成从主机发现到漏洞扫描的全流程信息收集,适配网络安全实训基础要求
靶机基础信息:Ubuntu 靶机 IP 为 192.168.3.229
一、Nmap 核心介绍与功能概述
1. 工具介绍
Nmap(Network Mapper)是 Kali Linux 预装的开源网络扫描工具,专为网络安全信息收集、渗透测试设计,支持主机发现、端口扫描、服务 / 系统探测、漏洞扫描等核心功能,是渗透测试信息收集阶段的必备工具,命令行操作、跨平台兼容,Kali 终端可直接调用。
2. 核心功能
| 功能分类 | 功能说明 | 实验应用 |
|---|---|---|
| 主机发现 | 探测指定 IP / 网段内在线存活的主机 | 定位 Ubuntu 靶机是否在线,排查网络互通性 |
| 端口扫描 | 探测目标主机开放的 TCP/UDP 端口,区分端口状态(开放 / 关闭 / 过滤) | 查找 Ubuntu 开放的服务入口(如 22/SSH、80/HTTP) |
| 服务 / 版本探测 | 识别开放端口对应的服务类型、软件版本及协议 | 精准定位 Ubuntu 端口运行的服务(如 OpenSSH、Apache) |
| 操作系统探测 | 识别目标主机的操作系统类型、版本及内核信息 | 判断靶机为 Ubuntu 系统,为后续渗透提供依据 |
| 脚本扫描(NSE) | 调用内置脚本库,检测漏洞、枚举服务信息、验证弱口令 | 扫描 Ubuntu 常见服务(如 SSH/HTTP)的高危漏洞 |
| 结果导出 | 将扫描结果保存为文本 / XML 等格式 | 整理实验数据,生成可提交的实验报告 |
二、Nmap 全参数使用方法
1. 通用执行语法
nmap [可选参数组合] 目标IP/域名/网段 # 单IP:192.168.x.x;网段:192.168.x.0/24

2. 核心参数分类详解(按功能划分,附实验用法)
(1)主机发现参数
| 参数 | 功能说明 | 实验使用命令 | 适用场景 |
|---|---|---|---|
-sn(原-sP) |
仅执行主机发现,不扫描端口,扫描速度最快 | nmap -sn 靶机IP |
快速判断靶机是否在线、网段内存活主机梳理 |
-PE |
使用 ICMP 回声请求进行主机发现(Windows/Linux 通用) | nmap -PE 靶机IP |
常规主机发现,兼容性强 |
-PS |
使用 TCP SYN 包探测(针对防火墙屏蔽 ICMP 的场景) | nmap -PS22,80 靶机IP |
靶机开启防火墙时,指定常用端口探测存活 |
-PU |
使用 UDP 包探测主机发现 | nmap -PU53 靶机IP |
针对 UDP 服务为主的主机探测 |
(2)端口扫描参数
| 参数 | 功能说明 | 实验使用命令 | 适用场景 |
|---|---|---|---|
| 无端口参数 | 扫描 Nmap 默认 1000 个常用 TCP 端口 | nmap 靶机IP |
快速初步探测开放端口,实验基础操作 |
-p <端口/端口段> |
指定单个 / 多个 / 连续端口扫描(TCP) |
单端口: 多端口: |
精准扫描实验指定端口,减少扫描时间 |
-p- |
扫描全部 65535 个 TCP 端口,无遗漏 | nmap -p- 靶机IP |
全面探测靶机所有开放端口,实验进阶操作 |
-sT |
TCP 全连接扫描(完整三次握手),易被检测 | nmap -sT 靶机IP |
无权限要求,实验基础端口扫描测试 |
-sS(默认) |
TCP SYN 半开放扫描(仅发送 SYN 包),隐蔽性高 | nmap -sS 靶机IP |
渗透测试常用,Kali 需 sudo 权限 |
-sU |
UDP 端口扫描(速度较慢) | nmap -sU -p53,67 靶机IP |
探测靶机 UDP 服务端口(如 DNS/53) |
--open |
仅显示开放状态的端口,过滤关闭 / 过滤端口 | nmap -p- --open 靶机IP |
实验结果整理,只保留有效开放端口信息 |
(3)服务 / 系统探测参数
| 参数 | 功能说明 | 实验使用命令 | 注意事项 |
|---|---|---|---|
-sV |
服务版本探测,识别端口对应服务名、版本、协议 | nmap -sV 靶机IP |
可结合-p指定端口,精准探测目标服务 |
-sV --version-intensity <0-9> |
调整版本探测强度(9 为最高,最精准) | nmap -sV --version-intensity 5 靶机IP |
强度越高扫描越慢,实验默认 5 即可 |
-O |
操作系统探测,识别系统类型、版本、内核 | sudo nmap -O 靶机IP |
必须加 sudo(Kali),否则无结果 |
--osscan-guess |
操作系统模糊探测,提高识别成功率(针对未知系统) | sudo nmap -O --osscan-guess 靶机IP |
靶机系统版本不明确时使用 |
-A |
全面扫描,整合端口扫描 + 服务版本 + 系统探测 + 路由跟踪 + 基础 NSE 脚本 | sudo nmap -A 靶机IP |
实验综合扫描核心命令,一键获取全量信息 |
(4)扫描速度与优化参数
| 参数 | 功能说明 | 实验使用命令 | 实验建议 |
|---|---|---|---|
-T<0-5> |
设置扫描速度等级(0 最慢,5 最快),平衡速度 / 隐蔽性 / 稳定性 | nmap -T4 靶机IP |
实验必加 T4,兼顾速度和准确性,不触发靶机防护 |
-T0 |
偏执级,扫描极慢,隐蔽性最高 | nmap -T0 靶机IP |
实验不推荐,仅了解用法 |
-T5 |
疯狂级,扫描最快,易漏扫 / 被检测 | nmap -T5 靶机IP |
全端口扫描时可临时使用,不推荐常规扫描 |
--min-rate <数值> |
设置最小发包速率(如 100,每秒至少发 100 个包) | nmap -p- --min-rate 100 靶机IP |
全端口扫描时提速,实验进阶优化 |
--max-rate <数值> |
设置最大发包速率,控制扫描速度 | nmap --max-rate 50 靶机IP |
避免扫描速度过快导致靶机断连 |
(5)脚本扫描(NSE)参数
| 参数 | 功能说明 | 实验使用命令 | 常用脚本场景 |
|---|---|---|---|
--script <脚本名/脚本类别> |
调用指定 NSE 脚本 / 脚本类别扫描 | 单脚本:nmap --script smb-vuln-ms17-010 靶机IP 类别:nmap --script vuln 靶机IP |
实验核心漏洞扫描命令 |
--script-help <脚本名> |
查看指定脚本的功能、用法、参数 | nmap --script-help vuln |
实验前了解脚本适用场景 |
| 常用脚本类别 |
① ③ ④ |
nmap --script http-title 靶机IP(查 HTTP 标题) nmap --script ssh-auth-methods 靶机IP(查 SSH 认证) |
实验按靶机开放服务选择对应脚本 |
(6)结果导出参数
| 参数 | 功能说明 | 实验使用命令 | 结果查看方式 |
|---|---|---|---|
-oN <文件名.txt> |
将扫描结果保存为纯文本格式(实验 / 报告首选) | nmap -A 靶机IP -oN nmap_scan_report.txt |
cat nmap_scan_report.txt(Kali 终端查看) |
-oX <文件名.xml> |
将结果保存为 XML 格式(可导入其他工具分析) | nmap -sV 靶机IP -oX nmap_scan.xml |
用浏览器 / 文本编辑器打开 |
-oG <文件名.gnmap> |
将结果保存为 Grepable 格式(便于 grep 过滤) | nmap -p- --open 靶机IP -oG nmap_scan.gnmap |
grep "open" nmap_scan.gnmap(过滤开放端口) |
-oA <文件名> |
同时保存为 TXT+XML+GNMAP 三种格式 | sudo nmap -A 靶机IP -oA nmap_all_report |
生成 3 个同名不同后缀的文件 |
3. Kali 专属操作注意事项
- 所有带
-sS/-O/-A/--script的命令,必须加sudo(Kali 默认密码:kali),否则权限不足导致扫描失败 / 结果为空; - 扫描中需终止操作,按
Ctrl + C即可; - 忘记参数用法,直接在终端执行
nmap -h查看全参数帮助,nmap --script-help <脚本名>查看脚本帮助。
实验 1:主机发现(基础必做)
实验目标
掌握 -sn 等主机发现参数,判断 Ubuntu 靶机是否在线,梳理网段内存活主机。 实验命令与执行结果 基础主机发现(仅探测存活,不扫端口):

终端显示 Host is up (0.00056s latency).,说明靶机在线;
2.网段存活主机探测(拓展)


列出网段内所有在线主机的 IP,区分 Kali 本机和 Ubuntu 靶机。
实验分析
-sn 是最快的主机发现方式,实验中优先使用;
若显示 Host is down,排查网络模式(是否桥接 / 仅主机)、靶机是否开机、防火墙是否关闭
实验 2:端口扫描(核心必做,覆盖所有端口参数)
实验目标
掌握默认端口、指定端口、全端口扫描,结合 --open 过滤结果,熟悉端口状态(开放 / 关闭 / 过滤)。
实验命令与执行结果
- 默认端口扫描(1000 个常用端口):

显示 Ubuntu 开放的常用端口(如 22/SSH,Ubuntu 默认开启)
2.指定端口扫描(22/80/443):

仅显示指定 3 个端口的状态,若未安装 Apache,80/443 端口为关闭;(我只开启了22端口)
3.全端口 + 仅开放端口扫描

仅列出靶机所有开放的端口,无关闭 / 过滤端口信息,便于整理。(这里我又开启了80端口)
实验分析
Ubuntu 默认开启 22/SSH 端口,用于远程连接,是实验中最常见的开放端口;
--open 只显示开放状态的端口,是实验结果整理的核心参数,可大幅减少无效信息。
实验 3:服务 / 操作系统探测
实验目标
掌握 -sV/-O/-A 参数,识别靶机开放端口的服务版本、操作系统类型,完成全量信息收集。
实验命令与执行结果
- 服务版本探测:

显示开放端口对应的服务信息(如图 22/tcp open ssh OpenSSH 10.0p2 Ubuntu 5ubuntu5.1);
2.操作系统探测(必须加 sudo):-O:识别操作系统 --osscan-guess:加强系统猜测

显示靶机系统信息(如 Running: Linux 4.X|5.X、OS details:Linux 4.15 - 5.19);nmap只能识别底层linux内核,看不出发行版名字,因为发行版信息不在网络流量里,我们靠服务版本后缀就能推出是Ubuntu了
全面扫描(一键获取所有信息,实验核心):-A : 一键完成信息收集,建议优先使用。

整合主机存活 + 开放端口 + 服务版本 + 操作系统 + 路由跟踪全量信息,无需单独执行多条命令。
实验分析
-sV 能精准识别服务版本,是后续漏洞扫描的基础(如特定版本 OpenSSH 存在已知漏洞);
-A 是实验 / 实训中最常用的命令,一键完成信息收集,建议优先使用。
实验 4:脚本扫描(NSE,实验考点必做)
实验目标
掌握 --script 参数,调用 NSE 脚本扫描 Ubuntu 靶机的常见漏洞,熟悉脚本类别和常用脚本用法。
实验命令与执行结果
- 通用漏洞扫描(调用 vuln 脚本类别,覆盖常见高危漏洞):

扫描靶机开放端口对应的漏洞,无漏洞则显示 No vulnerabilities detected;这里面有个dos漏洞,不能轻信单一扫描工具的结果,还需要进一步验证。
针对性脚本扫描(SSH 服务探测):

显示 SSH 服务的认证方式publickey,password,支持密码登录;这里意味着攻击者可以暴力破解
HTTP 服务探测(若靶机安装 Apache,开放 80 端口):

显示 HTTP 服务的网页标题 Welcome to nginx!
实验分析
vuln 脚本类别是实验基础,涵盖 SMB/SSH/HTTP 等常见服务的漏洞检测;
脚本扫描结果依赖靶机开放的服务,无对应服务则无扫描结果,属正常现象。
实验 5:结果导出与整理(报告必做)
实验目标
掌握 -oN/-oA 导出参数,将扫描结果保存为文件,能在 Kali 终端查看并整理实验数据。
实验命令与执行结果
1.全面扫描结果导出为纯文本(实验报告首选):

Kali 当前目录生成 nmap_ubuntu.txt 文件
查看导出结果:


终端显示与直接扫描一致的全量信息,文件可复制到 Windows 整理成报告;
2.多格式同时导出(拓展):


生成 nmap_ubuntu_all.txt/nmap_ubuntu_all.xml/nmap_ubuntu_all.gnmap 三个文件。
实验分析
-oN 生成的纯文本文件是实验报告的核心附件,需包含关键扫描命令和结果;
导出文件保存在 Kali 当前执行命令的目录,可通过 pwd 查看目录路径,ls 查看文件是否生成。
四、实验总结与问题排查
1. 实验核心总结
(1)Nmap 核心操作逻辑:主机发现→端口扫描→服务 / 系统探测→漏洞扫描→结果导出,按此流程可完成所有信息收集任务;
(2)实验必记核心命令组合(Kali 专用,含权限和优化参数):
1. 主机发现:nmap -sn -T4 靶机IP
2. 全端口开放扫描:nmap -p- --open -T4 靶机IP
3. 服务/系统探测:sudo nmap -A --open -T4 靶机IP
4. 漏洞扫描:sudo nmap --script vuln --open -T4 靶机IP
5. 结果导出:sudo nmap -A --open -T4 靶机IP -oN 报告名.txt
(3)Kali 操作关键:所有高级功能(-O/-A/--script)必须加 sudo,否则无权限执行;扫描必加 -T4,平衡速度和准确性。
2. 常见问题排查(实验踩坑指南)
| 问题现象 | 原因分析 | 解决方法 |
|---|---|---|
扫描显示 Host is down |
1. 双虚拟机网络模式不一致 2. 靶机防火墙未关闭 3. 靶机 IP 输入错误 |
1. 均设置为桥接 / 仅主机模式 2. 靶机执行 3. 重新查询靶机 IP( |
| 操作系统探测无结果 | 未加 sudo,Kali 权限不足 |
命令前加 sudo,输入 Kali 密码 kali |
| 扫描结果无开放端口 |
1. 未加 2. 靶机无开放服务 3. 端口扫描范围过窄 |
1. 加 2. 靶机安装服务(如 3. 使用 |
| 脚本扫描无结果 | 1. 靶机无对应开放服务 2. 脚本名输入错误 |
1. 先扫描靶机开放端口,再选择对应脚本 2. 用 |
| 导出文件找不到 | 忘记当前目录路径,或命令执行失败 | 1. 执行 pwd 查看当前目录 2. 重新执行导出命令,确保无报错 |
五、实验拓展与实操提升
- 靶机服务安装:在 Ubuntu 靶机安装 Apache(80 端口)、MySQL(3306 端口),重新执行 Nmap 扫描,练习探测更多服务;
- 防火墙对抗:开启 Ubuntu 防火墙(
sudo systemctl start ufw),使用-PS/-Pn参数扫描,练习绕过简单防火墙的方法; - 脚本拓展:尝试使用
--script auth脚本类别,枚举 Ubuntu 靶机的 SSH 账号,练习权限验证类脚本的使用; - 批量扫描:针对网段(如 192.168.1.0/24)执行全端口 + 脚本扫描,练习批量资产信息收集
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐



所有评论(0)