(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)

单端口:nmap -p22 靶机IP 

多端口:nmap -p22,80,443 靶机IP 端口段:nmap -p1-1000 靶机IP

精准扫描实验指定端口,减少扫描时间
-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 实验前了解脚本适用场景
常用脚本类别

vuln:漏洞扫描类(含常见高危漏洞) ②auth:权限验证类(枚举账号、验证弱口令)

http:HTTP 服务类(探测标题、漏洞、目录)

ssh:SSH 服务类(探测认证方式、漏洞)

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 专属操作注意事项

  1. 所有带 -sS/-O/-A/--script 的命令,必须加 sudo(Kali 默认密码:kali),否则权限不足导致扫描失败 / 结果为空;
  2. 扫描中需终止操作,按 Ctrl + C 即可;
  3. 忘记参数用法,直接在终端执行 nmap -h 查看全参数帮助,nmap --script-help <脚本名> 查看脚本帮助。

实验 1:主机发现(基础必做)

实验目标 

掌握 -sn 等主机发现参数,判断 Ubuntu 靶机是否在线,梳理网段内存活主机。 实验命令与执行结果 基础主机发现(仅探测存活,不扫端口):

终端显示 Host is up (0.00056s latency).,说明靶机在线

2.网段存活主机探测(拓展)

列出网段内所有在线主机的 IP,区分 Kali 本机和 Ubuntu 靶机。

实验分析

-sn 是最快的主机发现方式,实验中优先使用;

若显示 Host is down,排查网络模式(是否桥接 / 仅主机)、靶机是否开机、防火墙是否关闭

实验 2:端口扫描(核心必做,覆盖所有端口参数) 

实验目标 

掌握默认端口、指定端口、全端口扫描,结合 --open 过滤结果,熟悉端口状态(开放 / 关闭 / 过滤)。

实验命令与执行结果
  1. 默认端口扫描(1000 个常用端口):

显示 Ubuntu 开放的常用端口(如 22/SSH,Ubuntu 默认开启)

2.指定端口扫描(22/80/443):

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

3.全端口 + 仅开放端口扫描

仅列出靶机所有开放的端口,无关闭 / 过滤端口信息,便于整理。(这里我又开启了80端口)

实验分析

Ubuntu 默认开启 22/SSH 端口,用于远程连接,是实验中最常见的开放端口;

--open 只显示开放状态的端口,是实验结果整理的核心参数,可大幅减少无效信息。

实验 3:服务 / 操作系统探测

实验目标

掌握 -sV/-O/-A 参数,识别靶机开放端口的服务版本、操作系统类型,完成全量信息收集。

实验命令与执行结果
  1. 服务版本探测:

显示开放端口对应的服务信息(如图 22/tcp open ssh OpenSSH 10.0p2 Ubuntu 5ubuntu5.1);

2.操作系统探测(必须加 sudo):-O:识别操作系统  --osscan-guess:加强系统猜测

显示靶机系统信息(如 Running: Linux 4.X|5.XOS details:Linux 4.15 - 5.19);nmap只能识别底层linux内核,看不出发行版名字,因为发行版信息不在网络流量里,我们靠服务版本后缀就能推出是Ubuntu了

全面扫描(一键获取所有信息,实验核心):-A : 一键完成信息收集,建议优先使用。

整合主机存活 + 开放端口 + 服务版本 + 操作系统 + 路由跟踪全量信息,无需单独执行多条命令。

实验分析

-sV 能精准识别服务版本,是后续漏洞扫描的基础(如特定版本 OpenSSH 存在已知漏洞);

-A 是实验 / 实训中最常用的命令,一键完成信息收集,建议优先使用。

实验 4:脚本扫描(NSE,实验考点必做)

实验目标

掌握 --script 参数,调用 NSE 脚本扫描 Ubuntu 靶机的常见漏洞,熟悉脚本类别和常用脚本用法。

实验命令与执行结果
  1. 通用漏洞扫描(调用 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. 靶机执行 sudo systemctl stop ufw 

3. 重新查询靶机 IP(ip a

操作系统探测无结果 未加 sudo,Kali 权限不足 命令前加 sudo,输入 Kali 密码 kali
扫描结果无开放端口

1. 未加 --open 过滤 

2. 靶机无开放服务

3. 端口扫描范围过窄

1. 加 --open 参数 

2. 靶机安装服务(如 sudo apt install openssh-server apache2

3. 使用 -p- 扫描全端口

脚本扫描无结果 1. 靶机无对应开放服务 2. 脚本名输入错误

1. 先扫描靶机开放端口,再选择对应脚本 

2. 用 nmap --script-help 脚本名 验证脚本是否存在

导出文件找不到 忘记当前目录路径,或命令执行失败 1. 执行 pwd 查看当前目录 2. 重新执行导出命令,确保无报错

五、实验拓展与实操提升

  1. 靶机服务安装:在 Ubuntu 靶机安装 Apache(80 端口)、MySQL(3306 端口),重新执行 Nmap 扫描,练习探测更多服务;
  2. 防火墙对抗:开启 Ubuntu 防火墙(sudo systemctl start ufw),使用 -PS/-Pn 参数扫描,练习绕过简单防火墙的方法;
  3. 脚本拓展:尝试使用 --script auth 脚本类别,枚举 Ubuntu 靶机的 SSH 账号,练习权限验证类脚本的使用;
  4. 批量扫描:针对网段(如 192.168.1.0/24)执行全端口 + 脚本扫描,练习批量资产信息收集
Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐