网络安全技术实践教程 — 教案11

信息收集与漏洞扫描(二):任务5.2 使用Nmap识别主机、端口及操作系统
教材:人民邮电出版社《网络安全技术实践教程》(微课版) | 授课教师:fashion | 课时:90分钟(2学时) | 2026-05-21 下午 | 理论+实践 | 督导听课 🔴

一、教学目标

维度目标
知识掌握Nmap的基本功能与工作原理;理解主机发现、端口扫描、操作系统检测、版本侦测的技术原理;能区分TCP SYN扫描与TCP Connect扫描的区别;熟悉6种端口状态及其含义
技能能使用Nmap对局域网进行主机发现;能使用-sS/-sT/-sU进行端口扫描并解读结果;能使用-O/-sV进行操作系统与版本侦测;能根据扫描结果判断目标开放的服务和潜在漏洞
素养理解"主动扫描"与"被动踩点"的安全边界差异;建立"端口即入口"的攻击面意识;培养扫描结果的关联分析能力;强化授权范围内合法操作的法律意识

二、教学重难点

三、教材内容框架(知识准备)

5.2.1 Nmap简介

Nmap(Network Mapper,网络映射器)是一款开源的网络探测和安全审计工具。它被广泛应用于网络安全领域,用于扫描网络中的主机、探测开放的端口、识别运行的服务及版本,甚至推断目标主机的操作系统类型。Nmap被称为"网络管理员的瑞士军刀",同时也是渗透测试中继踩点之后的关键一步——从被动信息收集升级为主动探测。

Nmap的四大核心功能:

功能英文名说明关键参数
主机发现Host Discovery发现网络中哪些主机在线-sn-Pn-PE
端口扫描Port Scanning探测目标主机开放了哪些端口-sS-sT-sU
版本侦测Version Detection识别开放端口上运行的服务及版本-sV
操作系统检测OS Detection推断目标主机的操作系统类型和版本-O

💡 这四大功能之间存在依赖关系:通常先做主机发现(确定谁在线)→ 再做端口扫描(确定开了什么门)→ 然后做版本侦测(确定门后面是什么服务)→ 最后做OS检测(确定房子的结构)。上一节5.1是"查户口",本节5.2是"上门观察+敲门试探"。

5.2.2 主机发现(Host Discovery)

目标:扫描指定网段,确认哪些IP地址的主机处于在线(活跃)状态。

原理:Nmap向目标主机发送不同类型的探测包,如果收到回复,说明主机在线。探测方式包括:

探测方式参数原理优缺点
Ping扫描(ICMP Echo)-sn -PE发送ICMP Echo Request包简单快速;很多防火墙禁ICMP
TCP SYN Ping-sn -PS<端口>发送TCP SYN包到指定端口绕过ICMP封锁;需指定端口
TCP ACK Ping-sn -PA<端口>发送TCP ACK包绕过部分包过滤防火墙
UDP Ping-sn -PU<端口>发送UDP包到指定端口探测仅开UDP服务的主机
ARP Ping(局域网默认)-sn -PR发送ARP请求局域网中最可靠,不受防火墙影响

🎯 关键区别:局域网内扫描时,Nmap默认使用ARP探测(最可靠!);跨网段扫描时,Nmap默认依次发送ICMP Echo + TCP SYN(80) + TCP ACK(80) + ICMP时间戳共4种探测包。这就是为什么同一个-sn命令,在不同场景下行为不同。

5.2.3 端口扫描(Port Scanning)

目标:探测目标主机上哪些TCP/UDP端口处于开放状态,确定运行的服务。

6种端口状态:

状态含义类比
open端口开放,有应用在监听门开着,有人在
closed端口可达但无应用监听门关着但能敲到
filtered被防火墙/IDS过滤,无法判断有门卫挡着,看不到门
unfiltered端口可达但无法确定开/关知道门在那,看不清开没开
open|filtered开放或被过滤(UDP常见)要么门开着,要么有门卫
closed|filtered关闭或被过滤(少见)要么门关着,要么有门卫

三种核心扫描方式:

扫描方式参数原理特点
TCP SYN扫描
(半开扫描)
-sS发SYN包→收到SYN/ACK(open)/RST(closed)→立刻发RST断开,不完成三次握手速度快、隐蔽、不建立完整连接;需root权限;Nmap默认扫描方式
TCP Connect扫描-sT调用系统connect(),完成完整三次握手建立连接后断开不需root权限;但会留下日志;SYN被禁时的兜底方案
UDP扫描-sU发送空UDP包→收到ICMP端口不可达(closed)→无响应或UDP回复(open|filtered)速度慢、不建立连接;但DNS(53)/SNMP(161)/DHCP(67)等UDP服务只能这样扫

🔑 核心类比:SYN扫描 = 你敲门(SYN),对方开门(SYN/ACK),你立刻转身就走(RST),假装敲错门——既确认了有人,又没进去。TCP Connect扫描 = 你敲门、对方开门、你说"不好意思走错了"然后离开——进去了但又出来了,留下了"来访记录"。

5.2.4 操作系统与版本检测

版本侦测(-sV):向开放端口发送一系列探测包,分析服务的响应特征(Banner信息、协议行为),识别服务名称和版本号。

操作系统检测(-O):Nmap内置了数千个操作系统的"指纹库",通过分析以下特征来推断OS类型和版本:

综合扫描(-A):一条命令同时启用OS检测、版本侦测、脚本扫描和路由追踪。

功能参数示例命令
版本侦测-sVnmap -sV 192.168.1.1
OS检测-Onmap -O 192.168.1.1
综合扫描-Anmap -A 192.168.1.1
指定端口-pnmap -p 80,443,22 192.168.1.1
扫描速度-T0~T5nmap -T4 -A 192.168.1.1

💡 类比:OS检测就像听一个人说话的口音来判断他是哪里人——不同操作系统在TCP/IP的"说话习惯"上有微小差异,Nmap就是那个"方言专家"。版本侦测则像是看到一个人穿的衣服品牌来判断他的消费水平。


四、教学过程

第一阶段:回顾与导入(8分钟)

1. 上节回顾(3min)

🔄 过渡语:"上节课我们讲了踩点——通过whois查域名户口、nslookup查DNS、ping测连通性。大家还记得踩点最核心的一个限制是什么吗?"

🙋 快速提问:"上节课的五个工具,和今天要学的Nmap,最本质的区别是什么?"

📝 参考答案:上节课的工具都是被动收集——查询公开数据库、发送常规协议包(ICMP/DNS),不与目标服务层直接交互。Nmap是主动扫描——主动向目标发送构造好的探测包,通过分析响应来判断端口、服务和OS。从"暗中观察"升级到"主动试探"。

2. 情境导入(5min)

工程师小林完成踩点后,拿到了目标IP地址范围——一个C段,256个IP。但他面临三个问题:哪些IP是真正的服务器?(大部分可能空置)这些服务器上开了哪些"门"(端口)?每个门后面是什么服务?门后面的服务器是Windows还是Linux?

引出本节任务:使用Nmap,从256个IP中精准锁定真正的服务器,识别端口和服务,判断操作系统——完成从"踩点"到"扫描"的关键升级。

🙋 悬念提问:"如果给你256个IP,一个个去ping,你觉得合理吗?有没有更高效的办法?"

📝 参考答案:ping 256个IP不是不行,但太慢——Nmap可以一条命令搞定整个网段,而且ping不通的主机,Nmap还有其他方法确认它是否在线(比如TCP SYN Ping、UDP Ping)。这就是专业工具和手动工具的效率差距。

⚠️ 强调:Nmap是主动扫描工具,扫描行为会被目标感知!未授权扫描他人网络属于违法行为。本节所有实验均在授权靶机上进行。

第二阶段:Nmap简介与基本使用(12分钟)

🔄 过渡语:"从踩点的被动观察到Nmap的主动探测,我们进入渗透测试Kill Chain的第二阶段——扫描。"

2.1 Nmap是什么(4min)

🙋 提问:"为什么Nmap被称为'网络管理员的瑞士军刀'?它和上节课whois/nslookup这些'单一功能工具'有什么本质不同?"

📝 参考答案:whois只能查域名信息,nslookup只能查DNS,ping只能测连通性——每个工具只做一件事。Nmap一个工具能做四件事:发现主机、扫描端口、识别服务、推断OS。而且它还可以通过NSE脚本扩展功能(漏洞检测、暴力破解等)。像瑞士军刀一样,一个工具集成多种能力。

2.2 安装与基本语法(4min)

教师演示:

# 最简单的扫描——默认扫描目标主机1000个常用端口
nmap 192.168.1.1

# 扫描一个网段
nmap 192.168.1.0/24

# 扫描多个不连续目标
nmap 192.168.1.1,100,200

# 查看帮助
nmap -h

2.3 四大功能概览(4min)

演示一条综合扫描命令,让学生看到Nmap的完整输出能力:

nmap -A -T4 192.168.1.1

# 输出解读(逐段讲解):
# ① 主机发现 → "Host is up (0.0023s latency)"
# ② 端口扫描 → "PORT     STATE    SERVICE"
# ③ 版本侦测 → "Apache httpd 2.4.41"
# ④ OS检测   → "OS details: Linux 3.2 - 4.9"

🔄 过渡语:"刚才我们看到了Nmap一次输出的四大部分。接下来,我们一个一个拆开来讲——先从第一步'主机发现'开始。"

第三阶段:主机发现(15分钟)

🔄 过渡语:"扫256个IP之前,你得先知道哪些IP上有机器。就像快递员送快递之前,先确认哪些房间有人住。这就是主机发现——Nmap四大功能的第一步。"

3.1 为什么需要主机发现(3min)

3.2 只做主机发现:-sn(4min)

# Ping扫描——只做主机发现,不做端口扫描
nmap -sn 192.168.1.0/24

# 输出示例:
# Nmap scan report for 192.168.1.1
# Host is up (0.0015s latency).
# Nmap scan report for 192.168.1.100
# Host is up (0.0082s latency).
# Nmap done: 256 IP addresses (4 hosts up)

教师演示:

  1. nmap -sn 192.168.1.0/24 → 扫描整个C段,列出所有在线主机
  2. 强调结果:"256个IP,只有4台在线"——这就是主机发现的价值

🙋 提问:"为什么在局域网内用-sn扫描,总能准确发现主机,而跨网段时经常漏报?"

📝 参考答案:局域网内,Nmap默认用ARP协议探测——ARP是二层协议,不经过IP层,不受防火墙拦截,非常可靠。跨网段时不能用ARP(ARP不能跨路由器),Nmap改用ICMP+TCP+UDP组合探测,但防火墙可能拦截这些探测包。所以局域网扫描最准确,远程扫描需要多种探测方式组合。

3.3 跳过主机发现:-Pn(3min)

# 跳过主机发现,假定所有目标均在线
nmap -Pn 192.168.1.100

# 适用场景:主机禁ping、防火墙过滤ICMP、已知主机在线

为什么需要-Pn?很多Windows服务器默认禁ping,如果Nmap先做主机发现→判定离线→直接跳过,你就错过了真正的目标!所以当你确定目标存在但主机发现不到时,用-Pn强制扫描。

3.4 多种Ping方式对比(5min)

参数探测方式适用场景
-sn -PEICMP Echo常规扫描,目标允许ICMP
-sn -PS80TCP SYN to 80端口目标禁ICMP但开了Web服务
-sn -PA80TCP ACK to 80端口绕过简单包过滤防火墙
-sn -PU53UDP to 53端口探测DNS服务器
-sn -PRARP(仅局域网)最可靠,不受防火墙影响

🎯 口诀:局域网找ARP,禁ICMP用SYN,全封了上-Pn直接扫。实战中常见组合:nmap -sn -PS80,443,22 192.168.1.0/24(同时用TCP SYN Ping探测80/443/22三个端口,提高发现率)

🔄 过渡语:"主机发现帮我们锁定了目标——256个IP里只有4台在线。接下来,这4台主机开了哪些'门'?哪些门我们可以走进去?这就是端口扫描。"

第四阶段:端口扫描(22分钟)

🔄 过渡语:"如果说主机发现是确认'小区里哪些房子有人住',那端口扫描就是'看看每栋房子开了哪些门和窗'。在网络安全里,每一个开放的端口,都是一个可能的攻击入口。"

4.1 端口是什么?为什么重要?(3min)

端口服务端口服务
21FTP(文件传输)22SSH(安全远程管理)
23Telnet(不安全远程)25SMTP(邮件发送)
53DNS(域名解析)80HTTP(Web服务)
443HTTPS(加密Web)3306MySQL(数据库)
3389RDP(远程桌面)6379Redis(缓存数据库)

🙋 提问:"扫描时发现目标开放了3389端口(远程桌面),这能告诉你什么信息?"

📝 参考答案:3389 = Windows远程桌面。说明:① 目标大概率是Windows系统;② 管理员通过远程桌面管理这台机器;③ 如果存在弱密码,攻击者可以直接远程登录控制桌面。这就是"端口泄密"——一个端口号就是一条情报。

4.2 TCP SYN扫描(-sS)——默认模式,重点讲解(7min)

原理(关键!督导重点检查):

正常TCP三次握手:客户端发SYN → 服务器回SYN+ACK → 客户端回ACK,连接建立。

SYN扫描:客户端发SYN → 服务器回SYN+ACK(端口开放)/ RST(端口关闭)→ 客户端立刻发RST断开,不完成第三次握手。因此叫"半开扫描"(Half-open Scan)。

# SYN扫描(默认,需root)
nmap -sS 192.168.1.100

# 指定端口范围
nmap -sS -p 1-1000 192.168.1.100

# 扫描全部65535个端口
nmap -sS -p- 192.168.1.100

# 扫描常用100个端口(快速)
nmap -sS -F 192.168.1.100

优点:速度快、不建立完整连接(不留下应用层日志)、隐蔽性好

缺点:需要root/管理员权限

🙋 提问:"SYN扫描为什么比TCP Connect扫描更隐蔽?"

📝 参考答案:因为SYN扫描不完成三次握手,目标应用层(如Apache、SSH)根本不知道有人来过——只有系统层的防火墙/IDS可能记录到半开连接。而TCP Connect扫描完成了完整连接,应用层日志会留下记录(如Apache的access.log里会出现你的IP)。

4.3 TCP Connect扫描(-sT)——兜底方式(3min)

# TCP Connect扫描(不需root)
nmap -sT 192.168.1.100

4.4 UDP扫描(-sU)——容易被忽略但很重要(4min)

# UDP扫描(慢!需要耐心)
nmap -sU -p 53,67,161 192.168.1.100

# 常用UDP端口:53(DNS), 67/68(DHCP), 69(TFTP), 123(NTP), 161(SNMP)

🙋 提问:"为什么UDP扫描通常结果显示的是 open|filtered,而不是明确的 open?"

📝 参考答案:UDP没有像TCP SYN/ACK那样的握手确认机制。Nmap发一个空UDP包→如果收到"ICMP端口不可达"→确认closed;如果没任何回复→可能是open(服务收到但不回复),也可能是filtered(防火墙丢掉了)。两者无法区分,所以标记为 open|filtered。

4.5 端口扫描实战演示(5min)

教师演示三步走:

  1. nmap -sS 192.168.1.100 → 看默认扫描结果(1000端口)
  2. nmap -sS -p 22,80,443,3306,3389 192.168.1.100 → 指定端口扫描
  3. nmap -sS -sU -p 53,161 192.168.1.100 → TCP+UDP混合扫描

🔄 阶段小结:"端口扫描是Nmap最核心的能力。三种扫描方式各有主场——SYN是主力(快+隐蔽),Connect是备胎(不需要root),UDP是侦察兵(专门搜UDP服务)。实战中-sS最常用,遇到Windows服务器加-sU搜SNMP/DNS。"

第五阶段:操作系统与版本检测(12分钟)

🔄 过渡语:"端口扫描告诉了我们'门牌号'——22、80、3306。但22后面是OpenSSH还是Dropbear?80后面是Apache还是Nginx?这些服务的具体版本有没有已知漏洞?这就是版本侦测和OS检测的价值。"

5.1 版本侦测(-sV)——看门后面是什么(5min)

# 版本侦测
nmap -sV 192.168.1.100

# 输出示例:
# PORT    STATE  SERVICE  VERSION
# 22/tcp  open   ssh      OpenSSH 7.4 (protocol 2.0)
# 80/tcp  open   http     Apache httpd 2.4.6 ((CentOS))
# 3306/tcp open  mysql    MySQL 5.7.32

🙋 提问:"版本侦测拿到了Apache 2.4.6和MySQL 5.7.32,下一步你会做什么?"

📝 参考答案:拿着版本号去查CVE漏洞库(cve.mitre.org或nvd.nist.gov),筛选出该版本存在的已知漏洞→如果有可远程利用的高危漏洞(如RCE),就可以尝试利用(在授权范围内!)。这就是信息收集→漏洞匹配→利用的完整攻击链。

5.2 操作系统检测(-O)——推断操作系统(5min)

# OS检测(需root)
nmap -O 192.168.1.100

# 输出示例:
# OS details: Linux 3.10 - 4.11
# OS CPE: cpe:/o:linux:linux_kernel:3.10

原理(类比讲解):

🙋 提问:"-O和-sV有什么区别?有时候看-sV的输出也能猜出操作系统啊?"

📝 参考答案:-sV看的是应用层(如Apache/2.4.6 (CentOS)在括号里暗示了CentOS),属于间接推断。-O看的是网络层/传输层的TCP/IP协议栈行为,属于直接指纹识别。两者可以互相印证——比如-sV暗示CentOS,-O识别为Linux 3.10-4.11(CentOS 7的内核版本范围),交叉验证后可信度更高。

5.3 综合扫描(-A)——一键全开(2min)

# -A = -O + -sV + -sC + --traceroute
nmap -A 192.168.1.100

# 一条命令 = OS检测 + 版本侦测 + 默认脚本扫描 + 路由追踪
⚠️ -A 扫描强度大、特征明显,容易被IDS/IPS检测。实战中仅在确认目标无监控、或时间紧迫时使用。对抗场景下建议分步扫描。

第六阶段:学生实操(13分钟)

🔄 过渡语:"讲了这么多参数,脑子里可能一团浆糊。动手敲两遍就清楚了——下面15分钟,大家打开Kali Linux。"

实验环境:

任务清单(按顺序完成):

序号任务命令记录内容
1主机发现nmap -sn 192.168.x.0/24网段内有多少台主机在线?列出IP
2SYN端口扫描nmap -sS 靶机IP开放了哪些TCP端口?端口状态?
3指定端口扫描nmap -sS -p 21,22,23,25,80,443,3306 靶机IP这些关键端口各自的开放情况
4UDP扫描nmap -sU -p 53,69,111,137,161 靶机IPUDP端口开放情况(注意是open还是open|filtered)
5版本侦测nmap -sV 靶机IP每个开放端口的服务名+版本号
6OS检测sudo nmap -O 靶机IP推测的操作系统类型和版本
7综合扫描nmap -A -T4 靶机IP完整扫描报告,与分步结果对比

实验报告要求:

教师巡视要点:

⚠️ 严禁扫描校园网其他IP!严禁扫描互联网上的任意主机!仅对教师指定的靶机IP操作。

第七阶段:总结与预告(5分钟)

本节要点回顾:

  1. Nmap四大功能:主机发现(找到谁在线)→ 端口扫描(找到开了什么门)→ 版本侦测(看清门后是什么)→ OS检测(推断房子的结构)
  2. 三种扫描方式:SYN扫描(-sS,半开,隐敲)| TCP Connect(-sT,全开,留痕)| UDP扫描(-sU,慢但必要)
  3. 6种端口状态:open / closed / filtered / unfiltered / open|filtered / closed|filtered
  4. 常用参数速记:-sn主机发现、-sSSYN扫描、-sV版本侦测、-OOS检测、-A综合、-p指定端口、-T4加速
  5. 安全底线:从5.1的"暗中观察"到5.2的"主动试探",风险升级了——未授权扫描即违法!

下节预告:

任务5.3-5.5 漏洞扫描——拿到端口和服务版本后,下一步就是匹配已知漏洞,找到真正可以攻破的"弱点"。Nessus、OpenVAS等重量级漏洞扫描器即将登场。

课后作业:


五、板书设计

项目5 信息收集与漏洞扫描 — 任务5.2 Nmap识别主机、端口及操作系统
一、Nmap四大功能
主机发现(-sn)→ 端口扫描(-sS/-sT/-sU)→ 版本侦测(-sV)→ OS检测(-O)
二、主机发现
-sn 只发现不扫描 | -Pn 跳过发现直接扫
探测方式:ICMP / TCP SYN / TCP ACK / UDP / ARP(局域网最可靠)
三、端口扫描(核心)
-sS SYN半开(隐敲) | -sT TCP全开(留痕) | -sU UDP扫描(慢)
端口状态:open / closed / filtered / open|filtered / unfiltered / closed|filtered
-p 指定端口 | -p- 全端口 | -F 快速(Top100)
四、版本与OS检测
-sV 版本侦测 → 匹配CVE漏洞库
-O OS指纹识别 → TCP/IP协议栈"口音"比对
-A 综合扫描(= -O -sV -sC --traceroute)
五、扫描速度
-T0~T5(数字越大越快,也越容易被发现)
🔑 5.1暗中观察 → 5.2主动敲门 | ⚠️ 未授权扫描 = 违法!

六、教学反思预设

  1. 学生可能问:Nmap在Windows和Linux上有什么区别?
    → Windows下-sS需要安装Npcap驱动(WinPcap不支持SYN扫描);Windows普通用户自动降级为-sT;-sU在Windows上比Linux更慢。建议统一用Kali做实验。
  2. 学生可能问:扫描速度太慢怎么办?
    → ① 用-F只扫Top100端口(不用扫1000个);② 加-T4或-T5提速(T5小心漏报);③ 用-p指定关键端口而非-p-全端口;④ UDP扫描一定要限制端口范围。重点是让学生理解"精准扫描比地毯式扫描高效"。
  3. 学生可能问:Nmap扫描会被发现吗?如何避免被发现?
    → 会的,尤其是-A、-T5、-p-全端口扫描。避免方式:① 分阶段、慢速扫描(-T1/T2);② 使用诱饵IP(-D参数);③ 分片包(-f参数);④ 但强调——这些"规避技术"仅限授权演练,不可用于非法目的!
  4. 学生可能问:Nmap和之前学的ping/tracert有什么区别?
    → ping只能测连通性(通/不通),tracert看路由路径。Nmap不仅能测连通性,还能看端口、服务、版本、OS——比ping强大百倍。但行为也更"激进",从被动变主动。
  5. 督导重点注意事项:
    ① TCP SYN半开扫描原理必须讲透(三次握手→两次半开→RST断开),这是本节核心难点;② 法律红线多次强调——未授权扫描违法;③ 实操时间保证(≥12分钟),学生动手机率=抬头率;④ 5.1→5.2的过渡(被动→主动)要自然流畅。